去年の振り返りと今年の目標

明けましておめでとうございます!
今年最初のブログという事で、去年の振り返りと今年の目標をお題にしてみました。

まずは2010年の振り返り

多くの人と接点を持つ

会社に所属していた時も多くの人と会っていたつもりだったが、
いざ独立してみると井の中の蛙だったなぁと実感した。
それを踏まえて色々な所へ顔を出し交流する機会を増やしてきた。

新しい試み

常に学び成長する状況を作り出す為に、プロジェクト毎に新しい技術や試みを
1つか2つは取り入れるようにしている。
この目標については達成する事ができた。

交渉力と提案力

色々とお声がけ頂いたが実際にスタートを切れなかった仕事もあった。
先方都合もあったが提案不足だった感も否めないし、交渉事の難しさも実感した年だった。

自社コンテンツ

本来、独立した理由は自社コンテンツをやること。
日々の業務に終われてしまい、ここに費やす時間が少なすぎた。
マネージメント力とコミット力が不足した結果だったと思う。

アウトプット不足

社外へのアウトプット量が満足いくものではなかった。提案、アピール、開発量など。
多くの事に手を広げすぎてしまい、リソースが散漫になり選択と集中が出来ていなかった。



次に2011年の目標

体制の強化

強みを強化していくために体制の強化は必須。右腕になれるべき人材を見つける。
昨年以上に人との接点を増やす事を具体的アクションとする。

自社コンテンツのリリース

日々の業務に追われて自社コンテンツにかける時間が取れていなかった。
上半期にはリリースするべくアクションをとっていく。

マネージメント力とコミット力の強化

この2つはあらゆる事のベースになる力だと考えている。
マネージメントでリソースをコントロールし、コミット力でアウトプットへ繋げるアクションをする。
今年のアウトプットとして結果が出てくる。



以下個人的な目標

旅に出る

忙しさを理由に去年は旅行に行けませんでした。
仕事ばかりではなくプライベートも充実させたいと思いますので旅に出るを目標の1つにしておきます。

本を読む

移動中もノートPCや(仕事で)ゲームしたりなど本を読む機会が減りました。
知識の基礎になるものだと考えていますので、しっかり本を読む時間も作ろうと思います。
月2冊を目標。

嫁と同じ趣味を持つ

特に深い意味はないのですが、嫁と共通の趣味といえば旅行と映画ぐらい。
もうちょっと同じ趣味があってもよいかなと思ったので目標の1つに。


以上、こんな感じですが本年も宜しくお願い致します。

EC2のmicro instance

ひっそりとAmazon EC2micro instanceなるモノが追加されていました。

スペック

Memory:613MB
CPU:最大2ECU
OSは32/64bit利用可、I/Oパフォーマンスは低め

近場のシンガポールIDCだと$0.025/hourとなっているので、もし国内にAmazonIDCができると$0.030/hourぐらいになるのかな。

シンガポールIDCで試算すると

EC2 $0.025 * 788 = $19.7
EBS $0.10 * 10 = $1
$20.7 * \85 = \1760

と、2000円/月を切る価格となる。
(ストレージ10GB、レート\85/$、データ転送のコストは除外)

国内のレンタルサーバクラウドだと同環境レベルで6000〜15000円/月ぐらいのコストになる。

使い込んでみないとなんとも言えないが、ちょっとした開発環境や小規模の会社ホームページにはいいんじゃないだろうか。

Subversionのサーバに?と思ったがデータ転送のコストを考えると割高かも。

Closure Linter

Google製のJavscript文法チェッカー「Closure Linter」を使ってみました。

Publickeyでの紹介はコチラ


試しに開発中のプロジェクトで使っているJSファイルをかけてみると・・・

$ gjslint /home/webapps/js/common.js
$ /home/webapps/js/common.js: 529

529行も出てきやがりました!!

といってもインデントが合ってないなどフォーマット的な指摘がほとんどです。

フォーマット以外での指摘点としては、「セミコロンが抜けている」ぐらいでした。

フォーマットの整形は下記のコマンドで行う事ができます。

$ fixjsstyle /home/webapps/js/common.js

比較用に「Javascript Lint」でも試してみました。

make -f Makefile.ref
Linux_All_DBG.OBJ/jsl -process /home/webapps/js/common.js
... 詳細 ...
0 error(s), 15 warning(s)

こちらはセミコロン以外にも変数の重複定義なども検出しよりコード品質を重視した検査となります。

Javascriptは適当に書いても動いてしまうケースがあるので、こういったツールを使って品質向上は必要ですね。

XDev2010

残暑?の中、XDev2010へ行ってきました。

雅叙園はいつ行っても緊張しますな。

ざっと見渡すとソーシャルアプリ系のイベントとは違って、年齢層は高めな参加者が目立ってました。

経営者っぽい人なんかもちらほら。


今回参加したセッションはこれ↓

  • 「C-2 クラウド 構成・運用管理」
  • 「A-3 仮想化」
  • 「A-4 システム基盤 仮想化」
  • 「B-5 クラウド 品質/テスト」(途中退場)


そして以下ざっくりまとめ。

  • JSR-174,JMXデバッグに便利そう
  • どの説明もJavaをベースに話してる感じだった
  • フジフィルムのサーバは約380台(なんか少ない)
  • キャパシティプランニングが大事よ
  • セルフサービス式で社内に仮想化を導入(インフラだけ用意みたいな)

これから仮想化を導入的する人向けな話が中心でした。

技術よりは運用によった内容が多い感じ。

なので、まとめもシンプルになっちゃいました。

もう少し実践的なネタがあればなぁと期待してたのですが。

Adobeのセッションも参加したかったのですが、打ち合わせがあったため残念ながら参加できず。

次は今週末のmixi meetupかー。

求められる人材

コンテンツ開発において求められる人材を考えてみた。

「いかにその開発において中心的立場になれるか」ってのをイメージ。

私自身の経験と主観で書いてますのであくまでも参考に。

隣のスキルが使える

隣のスキルとは、自分の売りとなるスキルに関連するスキル。

プログラマーならインフラやサーバ、セキュリティ

企画ならマネタイズ、マーケティング

ウェブデザイナーならJavascriptマーケティング

とかですかね。

具体的にコレというよりは仕事の幅がどこまであるか。

幅が広いと包括的に見てもらう事ができ、よりコアな話もしやすくなってきます。

逆に幅が狭いとどうしても作業員的な使い方になってしまいます。

ビジネス視点を持っている

職人気質なタイプほどこだわりを捨てられずに衝突するケースがあります。

例えば、コストを1000万かけて900万しか売り上げがでないと赤字になる。

「だから改善しないとね」と考えられなければビジネスが続きません。

「売れればなんでもいい」も製作者としてはつまらないのでバランスよくですね。

柔軟性がある

度重なる企画や仕様変更。常に求められるスピード感。

現場ではこういった状況が日常茶飯事(よしと思ってるワケではないが・・・)

こんな状況に対応できる柔軟性は結構大事。

生真面目にやると動きが悪くなるし、適当すぎるとアウトプットがでなくなる。

私の場合はカチッと切り替えて対応しています。

コンテンツが好き

興味ある仕事だからこそ親身に取り組めるのではと思っています。

興味ないものに対し「もっと真剣に考えて」と言われても無理な話です。

しいて言うなら、100本のゲームをやるよりも、1本をやり込む人のほうがいいアウトプットを出すような気がします。

業界知識がある

流行り廃りなどの情報や知識を持っている方はアイディアも幅広いです。

比較対象があるためアウトプットの質が高くなるんじゃないかと。

逆に流行りネタしか知らないとしんどいかも。

人脈がある

物凄い強力な人脈というよりは同業者の繋がりみたいなイメージ。

横の繋がりがある人は知識もあり、困った時に動ける人が多いです。

広告マンによくある「○○さんと飲んだ」的なノリはマイナスだったりしますが。

自己管理ができる

基本的な事だけども問題発生の頻度としては高いです。

チームで仕事する時には特に重要。

不安定なタイプはリスクがあるため重要なタスクを任せられなくなります。


全てバッチリだぜ!なんて人がいましたら是非ご連絡下さい(w

複数の環境へ対応する

コンテンツの規模がある程度大きくなるとリソースによって参照先のサーバを変える事があります。

画像ファイルはAサーバ、HTMLはBサーバといった具合でしょうか。

これだけなら普通にHTMLファイルを書き換えてしまえばよいですが、実際には

  • プロダクション環境
  • ステージング環境
  • 開発環境

と複数の環境があり、参照先をファイルへ直接書いてしまうと対応しきれません。

これらの対処方法としてPHPSmartyを例にまとめてみました。

以下、用意するもの

HTMLファイル(Smartyのテンプレート)
{load_configs="config.ini"}
<a href="{#server_api#"}/ad/jump/id/{$id}">
<img src="{#server_img#}/img/banner.png" />
</a>
設定ファイル
server_api = http://api.hogehoge.jp
server_img = http://img.hogehoge.jp
phpファイル
$smarty = new Smarty();
$smarty->configs = "configs";
$smarty->assign('id', $id);

出力結果

<a href="http://api.hogehoge.jp/ad/jump/id/12345">
<img src="http://img.hogehoge.jp/img/banner.png" />
</a>

設定ファイルも切り替える

しかし、この形だと環境毎に設定ファイルが必要となります。
シンボリックリンクを使ってここも柔軟性を持たせていきます。

プロダクション環境

configs_prod/config.ini

server_api = http://api.hogehoge.jp
server_img = http://img.hogehoge.jp
ステージング環境

configs_stage/config.ini

server_api = http://api.stage.hogehoge.jp
server_img = http://img.stage.hogehoge.jp
開発環境

configs_devel/config.ini

server_api =
server_img =
シンボリックリンクを張る

ステージング環境であれば

ln -s configs_stage configs

プロダクション環境であれば

ln -s configs_prod configs

こうする事でシンボリックリンクの張り替えのみで環境の切り替えをする事ができます。

開発時にはあまり意識しないかもしれませんが、運用フェーズを考えるとこういった対応は重要な要素となります。

PDOのrowCount

ブログ移転記念?に記事を書いてみた。

PHPのPDOで気づいた点。

PDOStatement->rowCountはUPDATE,INSERT,DELETEで更新された行数を取得するメソッドですが、MySQLの場合は実際に変更された行数が取得されるとのこと。

INSERT,DELETEは問題ないですが、UPDATEの場合は更新内容が更新前と同じだとrowCountは0を返してきます。

http://www.php.net/manual/ja/function.mysql-affected-rows.phpに下記の記述があります。

UPDATE を使用する場合、MySQL では新旧の値が同じときには更新処理を行いません。

レコードをUPDATE→更新が0件だったらINSERTというロジックを使っている場合は要注意。

対策としてはUPDATE時には最終更新日みたいなカラムを更新するようにしています。