2014年9月21日

売上大事だけど、それを中心に仕事すると失敗するという話

 会社をやっていると売上は大切だと思います。えぇ、とっても大切です。
でも、そこ(売上)を中心に仕事をするとプロジェクトが進まなくなるという状態にはまっています。

 間に入っているコンサルの人は、適切な見積を出さずに「やります」なんていうから、他の仕事をして(売上をあげるため)スケジュールを守ることができなくなるんですよね。

 その理由がお客が話が解らない人だからとか、お客の仕事が忙しいからとかとかになったりするんです。
 そもそも、そのお客の動きがわかっているはずなのだから(1年も前からお客と次のシステムの話をしているらしいので)、これくらい時間を取られるからこれくらいの見積を出さないとスケジュールに間に合わなくなるなとか考えるわけですよふつーは。
 それなのに、「自分はシステムを作らないから」とか、「お客が言ったことを伝えるだけだから」とかと単純に思って安い見積もりなんて出すから、他の仕事をしないとダメだになって、変な言い訳がでるんですよ。
 (思い込みかもしれませんが、プログラミングは必ずスケジュールオーバーするのが当たり前だと思ってるのかもね。そうじゃない人も居るのですよ。)

 打ち合わせに入りましょうか?と聞くと入らないほうがいいので、私でやりますとか言い出す(プロジェクトの最初のころの話です)。
 今では、どうやってプロジェクトを進めるかの議論を始めると面倒臭がって、いろんな言い訳をしはじめたり、打ち合わせに入っていいですよ(怒)みたいな話になってくるんですよ。
 どう思います?

 エンドユーザーの社長のすごいのは(嫌味ですが…)、「貴方はスケジュールを守りますか?」とかを一番最初に言ってきたんですよね。
 「てか、自分たちが守れない動きしてるんじゃねーの?」って返したいですわ。
 

今回の起きている問題

エンドユーザー

  • 自分たちの業務を回すためのシステムを作っている意識がないらしい。(←一番問題)
  • お客が作ったシステムのテストをしないらしい。
  • 今までのシステムと違うから理解できないと言っているらしい。
  • 動かしてみないとイメージができないと言っているらしい。
    (修正してしたところを見ないと先に進めないらしい。アホか

コンサルティングのひと
  • 他の仕事で忙しいとか言って動かない(←一番問題)
  • プロジェクトを終了させるための動きができない
  • エンドユーザーが言っていることの本質をとらえられないからおかしなことを平気で言う
    (だから郵便番号と住所の入力方式で1時間も議論してしまう)
  • 営業のことをバカ(直接的には言わないが)という
  • リスケしてと言っても、責任を持ちたくないからリスケすら検討しない。

自分
  • スケジュールに間に合わないからといってコンサルを追い詰める(←一番問題)
    このままではまずいと思って言ってるのですが、文句に聞こえるらしい
  • メールでいちいち気持を逆撫でしているらしい。
  • 売上一番、仕事二番と考えている人の気持を理解する気持がない


対応案

  • コンサルの人はお金だけ回す人にする(抜けてもらう)
  • 自分が直接、エンドユーザーと話す
    自分が素晴らしい人間と思っているわけではなく、実際はどうなのかを感じたいということです。
  • エンドユーザの社長は、「鶴の一声」呪文を唱える
    ここは、結構なワンマン社長らしいので、これで営業の人も従うのではないかな?


 このプロジェクト2月ごろから始まって、10月カットオーバーの予定がいつ終わるのかがわからなくなっている状態。



一番気になるのは、このコンサルの人を慕って集まる人がいるのが不思議。
とっても世渡り上手なのか、集まってくる人たちが実体を知らないのか(一緒に仕事すればわかると思うケド)。

2014年9月19日

SONY DPT-S1 デジタルペーパー欲しい

 仕事柄(?)システム設計をする前に、いろいろと考えたり、メモしたりするのですが、印刷に失敗した裏紙を使うのですが、その紙を整理するのがとても大変だったります。
 間違って捨ててしまったり、どこかに紛れて見つからなくなったりしてしまいます。
打ち合わせとかに行くときはルーズリーフを使って打ち合わせ内容を書き留めたりもしてます。

 なにか、ひとつにまとめてたり、検索できたり簡単にできる方法はないかと考えていたら、ソニーが出していました。
個人で使うには結構高価ですが、ちょっと興味があります。


レビューの動画がありましたのでリンクを貼っておきます。
https://www.youtube.com/watch?v=tfxsRlX9cwE
https://www.youtube.com/watch?v=zJB4_wUsypY

ソニー デジタルペーパー DPT-S1

2014年9月11日

仕事用のホームページを作り直してみた。

 仕事用のホームページをWordPressで作りなおしてみました。
元々は、GoogleAppsのサイトで作っていたのですが、なんか上手く作ることができなくて、変な感じのまま放置していました。
 「こんな状態だったら、無い方がマシだわ」と思っていたのですが、この仕事をしているのに自分を紹介するホームページすら持っていないのは、ダメだなと思い、作りなおしてみました。

 内容とかデザインがかっこいいかというと全然そんなことはなく、伝えたいことだけをちょっとまとめただけなので何の見本にもなりませんが…。

 とりあえずは、今後のためのベースを作りましたというところでとどめておきます。

そのホームページはこちら↓
www.bs-factory.jp



環境とかやったこと

さくらインターネットのレンタルサーバーを借りてやってみました。
大規模なサイトを作るわけではないので、ディスク容量も沢山あるので複数のサイトを作ることができるようにしてみました。

 なかなか勝手がわからないので、WordPressの問題なのかさくらインターネットの問題なのかが解らないのがとても困りました。
 ですが、グーグル先生に聞いてみるとやっぱり同じことをされている方は沢山いるようで答えがありました。
 その参考にしたサイトのみの紹介をしたいと思います。


こちらのサイトを参考にさせていただきました。
http://lab.sonicmoov.com/know-how/wordpress-multisite/

2014年9月6日

今上映している映画がひと目で分かるアプリ

 久しぶりにAndroidアプリを作ってみました。
相変わらず、練習中なの?みたいな域を脱していないのですが、自分でもちょっと欲しかったアプリです。

 映画が好きなのでよく観に行くのですが、毎回映画館のサイト(通常はユナイテッド・シネマしか行きませんが)を見に行って何がやっているかな?ってのを観るのがちょっと面倒だったのです。

 じゃぁ、映画館のサイトの情報をちょっと整理してアプリで簡単にチェックできるようにすればいんじゃね?ってことで、ある技術の練習(Webスクレイピング)も兼ねて作ってみまいた。

内容は、映画紹介のページの構造を解析して、その情報(予告動画や公式サイト等)をDBに保存しておいて、Androidアプリで劇場毎に簡単に見られるようにするというものです。

あっ、ちなみにユナイテッド・シネマオンリーですので…。

ダウンロードは、こちらから

画面はこんな感じ


チェックしたい劇場を選択して


チェックしたい映画のサムネイルをタップしたり、ビデオカメラのマークをタップして、予告動画を見たりできます。

ダウンロードは、こちらから

2014年8月26日

便利ツール:Everything紹介

 ローカルディスク(NTFS)のファイルを超超高速に検索するツールです。
ダウンロードはこちら→http://www.voidtools.com/downloads/

 秀逸なのは、インクリメンタルサーチや、ファイルやフォルダ名に正規表現を使っての検索ができることです。
例えば、正規表現では、検索エリアに「2014[0-9]{2}01」と入力すると20140201や、20140801等、パターンマッチしたフォルダやファイルが超高速で一覧表示されます。

 初めて起動した時は、インデックスを作るので、ちょっと時間がかかりますが、インデックスができた後は、素晴らしく高速です。

 よく、ファイルを作るけど、直ぐどこに置いたか忘れてしまうような方にはうってつけではないでしょうか?

 ちなみに、ETPサーバという機能を使うと、複数のコンピュータでネットワーク上のPCにあるファイルの検索もできるようです(まだ、試していませんが)。
 ファイルサーバーにWindowsServerを使用している方は、便利ではないでしょうかね?遅いプロトコルでファイル検索をしなくても良くなるので。


2014年8月19日

CakePHPで設定を簡単に切り替える方法の提案

 システム開発をしている時に開発環境やテスト環境によってデータベースの接続先やログイン名が違うのが普通です。

 環境毎の設定ファイルを持つことで対応することも可能ですが、現在の実行環境の設定を変えることで簡単に設定を変更することができるようになったらいいと思いませんか?
 さらには、同じ設定は書かずに継承して使いたいですよね。

CakePHPで持っているConfigには、database.php、email.phpがあります。
database.phpを例に説明します。

以下のようにdevelop(開発環境)、test(テスト環境)、staging(ステージング環境)、production(本番環境)などのように、複数の設定を書いておきます。
各設定は、$defalutと違う部分のみ設定を入れておきます。
例では、開発環境のデータベースの接続先が違うので'host'の設定を入れてあります。

どこで設定をコントロールするかというと、Configureで設定された「environment」を読み込むことでDBの接続先を切り替えます。
enrivonmentは、bootostrap.phpの先頭(わかりやすいとこ)に書くことでそこだけ変更すれば、実行環境の設定を簡単に切り替えることができます。
実行環境がたくさんある場合は、設定を追加して__constructメソッド内で追加した設定を追加することで対応できると思います。

bootstrap.phpファイルの書き方の例
/**
* 
* Choose environment
* 
* production : 本番環境
* staging    : 準本番環境
* test       : テスト環境
* develop    : 開発環境
* 
*/
Configure::write('environment', 'develop');

database.phpの書き方の例
class DATABASE_CONFIG {
 // デフォルト設定
 public $default = array(
  'datasource' => 'Database/Mysql',
  'persistent' => false,
  'host' => 'db-server',
  'login' => 'DBのログイン名',
  'password' => 'DBのログインのパスワード',
  'database' => 'データベース名',
  'prefix' => '',
  'encoding' => 'utf8',
 );

 // 本番環境
 public $production = array(
 );

 // ステージング環境
 public $staging = array(
 );

 // テスト環境
 public $test = array(
 );

 // 開発環境
 public $develop = array(
  'host' => 'localhost',
 );

 public function __construct() {

  $environment = Configure::read("environment");

  $this->develop = $this->develop + $this->default;
  $this->test = $this->test + $this->default;
  $this->staging = $this->staging + $this->default;
  $this->production = $this->production + $this->default;

  if(!empty($this->{$environment})) {
   $this->default = $this->{$environment};
  }

 }
}

これで、違う環境で動かして、動かねーとか言ってんじゃねーよとかいって叱られなくて住みますよね。

2014年8月18日

iptablesにハマるの巻(MySQLにつながらない…)

 MySQLを使う必要があって、CentOS6.5にソースからインストールして見ました。
(なぜソースからというと新しいのが使いたかったからなんです。練習にもなるし)

 インストールが終わって(これも一時問題がありましが…)、ローカルホストからの接続は確認できたので、別のPCから接続を試みたとろこ繋がらない…。
 ちゃんと、CentOS側では、3306のポートは開けています。でも、繋がらない。

何がまずいのかわかりませんが、iptablesの設定の順番を変更することで解決しました。


filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [34:5744]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 3306 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [34:5744]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

なにが違うかというとハイライトしている行の設定を書く位置を変更しました。

なるほど、-A INPUT -j REJECT --reject-with icmp-host-prohibitedの後ろに書いたのは、全てREJECTされるらしいです。
なので、REJECTの行を後ろに移動したら動いたんですね。うん、うん。

教えて!gooに同じことで悩んでる人がいました。
http://oshiete.goo.ne.jp/qa/7530019.html


ほんとにこの書き方でいいのか、何が問題かはこれから調べて自分の知識にしていく必要がありんす。
もう少し真面目に本とか呼んで意味で覚えないとダメだなこれは。