成果とモチベーションを把握する

私も今年で社会人5年目の27歳。この約4年という期間の中で何を成果として残してきたのか、何のために様々な事柄に挑戦してきたのか、一体どうなりたいのか、などとしばしば考えることが多い。
今までの実績や様々な出来事に対する自らのモチベーションなどは、頭の中に漫然と存在しているが、そのままでは客観的かつ論理的に整理することができない。まずは頭の中にあるこれらの情報を直接見える形に外に出力してあげる必要があると思っている。具体的に試している方法は以下のような形。

3ヵ月毎に振り返る

たった3ヵ月である。社会人になってからというもの、時間の経過が異様に早く感じるのは私だけではないだろう。しかし、この短い3ヵ月というスパンで実績を振り返るのである。私自身、スケジュール表などを見ながら記憶を思い出す限界が3ヵ月であると感じている。半年前の出来事で鮮明に思い出せる事柄はそんなには多くないと思う。
また、株式会社に属している人であれば、経営者は株主に対して業績を報告するという決まりごとがあると思うのだが、これが最近は半年毎から3ヵ月毎(クウォーター管理)になってきている。
システムエンジニアとして働いているものにとって(そうでなくても)、私生活の時間よりも会社で過ごす時間の方が多い人がかなりいると思われる。会社でやってきた内容の多くがダイレクトに人生経験に直結するのではないかと考えている。そういう意味では、会社のクウォーター管理に合わせて自らも振り返るということは実は理にかなっているのかもしれない。

モチベーションチャートを作成する

転職前の会社の研修にて、モチベーションチャートなるもの(名前は忘れましたので私が勝手につけました)を描いて発表するというものがあった(おそらくリクルート社の研修)。作成する図の内容は以下のような形。

  • 縦軸にモチベーション度合、横軸に時間を取る。
  • モチベーション度合は正と負の値を取り得る。
  • モチベーション度合を時間軸に沿ってプロットし、曲線を描く。
  • 縦軸(モチベーション度合)の最大値・最小値・振れ幅は自由に設定可能。
  • 描いた曲線の任意の箇所に、その時のイベント(仕事内容や気持ち)を吹き出しで記述する。


具体的には以下のような形。


ここから様々な事を読み取ることが可能です。自分が今現在何に興味があり、何をしているときが一番楽しいのか、逆にこれをしているときはモチベーションが低く向かない仕事だ、などです。
あくまで"過去の"自分の変遷や現状分析に使用しています。実際に現状を見える化してからこの先どのような目標を立てるかを考えていきます。

SWOTマトリックスを作成する

SWOTは今や様々な分析に使われている手法ですので、あまりここで言及する必要はないかと思います。私はこのツールが客観的にかつ冷静に判断可能である良いツールだと考えています。作成したモチベーションチャートを参考にしながらマトリックスを作成していきます。

  • 内部分析をする:自分の今の強み、反対に弱みは何であるのか。
  • 外部環境分析をする:今現在自分を取り巻く環境はどうであるのか。どういった機会(チャンス)があるのか。逆にどういった脅威があるのか。


上記事項をマトリックスの外堀に配置し、突き合わせます。突き合わせて出てきた項目は以下。

  • 積極的攻勢:社内に優秀なエンジニアがいる(機会)ので、コミュニケーション能力(強み)を生かし、積極的にコミュニケーションをとって知識を盗む。
  • 段階的施策:現在参画中のプロジェクトでプログラマとして配置されている(機会)ので、実装経験不足(弱み)をカバーしていく。
  • 差別化施策:現在参画中のプロジェクトマネジメントに問題がある(脅威)が、自らのプロジェクトマネジメント経験(強み)で、マネジメントについても意見をし、プロジェクトを良い方向へ導く。
  • 専守防衛:プロジェクトマネジメントに問題がある(脅威)が、プログラミング経験が不足している(弱み)ため、技術的な面については、積極的な意見などは行わず、聞く姿勢を大切にする。


具体的なマトリックスについては以下のような形。


マトリックス中で色づけされて強調表示されている箇所は、今後の重点目標として記しています。

重点目標設定をする

上記のマトリックスでの強調表示部分を重点目標として列記します。




いかがでしょうか。私自身はこのやり方で自らの成果とモチベーションを確認しつつ、目標設定をしていますが、あまり厳格にやっているわけではありません。大切なことは、頭の中にあるものを外に吐き出してみることだと思っています。

今回は成果とモチベーションについての内容でしたが、これに限らず、考えがまとまらないときなどは頭で考えるのではなく、何かしらなぐり書きでもよいので目に見える形にすることを心がけています。

ソフトウェア開発会社の新入社員教育

新入社員教育のカリキュラムとして、社内用業務アプリケーションソフトの開発が行われた。直感的には、本カリキュラムの目標は下記のようなものであるだろうか。

  • ソフトウェア設計手法の習得
  • プログラミング技術の習得
  • テスト手法の習得


しかし、それでは学生が勉強をすることと変わり映えがないと思う。やはり学生と社会人との大きな違いはお金なのではないか、と思う。学生は”お金を払って”勉強する。社会人は仕事の成果の対価として”お金を受け取る”という点である。


実際に研修が終わり、ソフトウェアも無事リリースされ、動作も特に問題ない。よかった。。。で、終わらずにさらに一歩踏み込んでほしいと思う。具体的には、下記のようなことを問いたい。

  • その製品をあなたはお金を払って買いますか?
    • 5人×3ヵ月=15人月。ひとり分の給与を20万円とすると、300万円。
    • 会社としては、利益が必要。300万円*120%=360万円。
    • あなたは買いますか?なぜ買わないのですか?
  • 画面仕様書1枚書くのに1時間かかりました。
    • 給与20万円/月 ÷ 20日 ÷ 8時間 = 1250円/時間
    • そのドキュメントは1250円を払うだけの価値はありますか?払いたいと思いますか?なぜ払わないのですか?


実際には企業向けなので、この価格では個人では当然買わない(買えない)とは思う。しかし、この金額が動くのだということを意識して欲しいと思う。


さらに、どの状態をもってプロジェクト成功とするのかを意識してもらいたいと思う。

  • プロジェクト成功の条件
    • その製品を利用することによって、今までの業務より効率的になったかどうか。
    • 今までの手作業の業務と比べて、システム化してよかったですか?もっと手間(システムメンテ・システム利用のための教育コストなど)が増えましたか?
    • 新システムはどの程度利用されていますか?


たとえソフトウェアが正しく動作したとしても、ソフトウェア導入により逆に手間が増えたのならプロジェクト失敗である。使えないソフトウェアとなり、開発に投資した費用は無駄になる。


ソフトウェアは作れば良いのではない。作らなければならなくなった状況が間違いなくある。目的を常に意識し、明確化することで、品質は格段に上がっていくと思う。


是非、新入社員の方々には一つ一つの作業の目的を掘り下げて考えることを意識して行動してもらいたい。


かくいう私自身もこういった機会に自らの行動を顧みて、しっかりとしたお手本となるように行動していかなければと思う。

コンタクトレンズのビラ配り

コンタクトレンズのビラ配りは、経営者にとって投資効果の高い選択肢なのか。ビラを配る理由について、低脳な頭で仮説を立ててみた。


そもそも、コンタクトレンズ(もしくはメガネ)を欲している人はビラなど見ずに直接店に行くものではないのか。にも関わらず、不特定多数の人にビラを配ることに高い投資効果を感じているのだろうか。

  • コンタクトレンズ購入対象者
    • 視力に異常が見受けられる人。
    • 視界を良好にしたいひと。良好にしなければならない人。(運転免許の取得、手元が細かい作業を要する人、など。)
  • メガネを所有しており、コンタクトレンズへ代えたい人。
    • 視力に異常がみられない人。
    • 視界とは関係なく、ファッションの一部として取り入れたい人。


ビラ配りのような数を打てば当たるやりかたで、上記のような人物に確実に手渡すことができるか。


確かに、一昔前に比べればコンタクトレンズの普及率はだいぶ高くなっているので、マーケットの規模は案外大きいのかもしれない。それこそ不特定多数の人物に配ればお目当ての人に渡せるのかもしれない。

  • 特性からみてとれる消費者のニーズ
    • 消耗品のため、より安く購入したい


あとは、メガネとは違ってコンタクトレンズは消耗品という側面があるので、消費者からみればより安く購入したいというものもあると思われる。
競合他社を考慮した価格設定や宣伝は、コンタクトレンズの売上に大きく影響してくるような気がしてきた。


実際のところはどうなんでしょう。

文字コードについて

PHPの内部文字コードEUC-JP
最終的なhtmlの文字コード:Shift-JIS
とした場合、各種設定は下記のようになるようです。

PHP側の文字コード指定

php.iniファイルで下記のように定義

mbstring.internal_encoding = EUC-JP
mbstring.http_output = SJIS

つまり、PHPの内部処理には『EUC-JP』を使用し、最終的なhtmlへのアウトプット時には『Shift-JIS』に変換して出力するように設定しました。

CakePHPフレームワークでの文字コード指定

app/views/layouts/default.thtmlで下記のように定義(default.htmlはcake/libs/view/templates/layouts/default.thtmlをコピー)

<?php echo $html->charset('shift_jis'); ?>

php.iniでの設定通り、htmlへのアウトプットの文字コードを『Shift-JIS』に変換するように設定しました。

.thtmlをどの文字コードで保存するか

上記の設定より、私は当然『Shift-JIS』にて.thtmlファイルを作成するものと思っていました。
しかしながら、『Shift-JIS』にて.thtmlファイルを作成すると、文字化けが発生してしまいました。
原因は、どうやら実際はthtmlはphpにて処理(つまりこの場合、EUC-JPで処理)され、htmに変換されるようです。
つまり、thtmlファイルは上記設定では『EUC-JP』でファイルを作成する必要があるようです。
(php.iniでmbstring.internal_encoding = UTF-8とした場合は、thtmlファイルはUTF-8で作成することになると思います。)

もっと汎用的な言い方では、thtmlファイルはPHPの内部エンコーディング設定と同じ文字コードで作成する必要がある、ということになるでしょうか。

flashメソッドの文字コードを変更する

http://tatsuyakun.jp/2008/04/cakephpflashsjis.html

flashレイアウトを変更するには

app/view/layouts/flash.thtml

を作成すれば自動的にオーバーライドされます。

オーバーライドされる側の元のオリジナルレイアウトは以下

cake/libs/view/templates/layouts/flash.thtml

ちなみに、こちらも『Shift-JIS』へ変更しました。

<?php echo $html->charset('shift_jis'); ?>

CentOS5セットアップ on VMwareServer

web開発のために、WindowsVistaマシンにVmwareServerをインストールし、その上にCentOS5をゲストOSとしてセットアップした。


参考ページ:
http://labs.unoh.net/2006/11/vmwarecentos.html


上記ページではCentOS4.4ベースですが、Apacheが2.0であることやPHPのバージョンが4であることが引っ掛かり、CentOS5を導入することにしました。キモは、GUIセットアップでは最小構成でインストールして、セットアップ後に、yumで一気にアップデートをかけるということでしょうか。
これには納得です。


ただし、ゲストOSをインストールする際、「新規ファイルシステム作成のための有効なデバイスがみつかりません」とエラーが出力され、インストールできませんでした。


解決方法は、「新規ファイルシステム作成のための有効なデバイスがみつかりません」で検索をかければ出てくるのですが、「新規仮想マシンウィザードで「標準」ではなく「カスタム」を選択し,「SCSI」を「IDE」に変更する」と解決するようです。

Apacheの設定

久しぶりに設計から離れて、実機を触りました。
といっても、ApacheのVirtualHostの設定をちょいちょいと書いてみただけですが。
すごく久しぶりだったので、調べまくって&人にききまくってしまいました。
パニクリました。


土台の知識・経験がないままPLを続けていくわけにはいかないよなぁと、改めて思いました。
趣味プログラマー復活しなきゃ。