2011年おつかれさまでした

今年は年明けから年末までいろいろあったよねー。

プライベートでも仕事でも結構チカラの要ることが多くて。

それでもなんとか乗り越えてきたんだなぁと改めて思った今日この頃。


年を越したら惑わぬ年齢まであと1年半ほど。

まだまだ惑うんだろうなぁと思いながらも、前に進んでればいいかな、と。


前へ、前へ!

たまには立ち止まって、振り返る事もあるだろうけど、

ひと息ついたら、腰を上げて、前へ!

少しだけ先に目標を置いて、その先にある、まだ見えないゴールに向かって、歩いていく。

どこへ行くのか?って?

さぁ、それはわからないけど、進んでいきたい方向にしか、ゴールはない。

進んでいった先に、ゴールは、必ず、ある。


んなわけで、来年もよろしくお願いします!

Best wishes.
 

Jobs

僕がはじめて買ったMacは初代Mac mini。

そしてMacBookをメインマシンにしてからもう4年。

UNIX OSのデスクトップ環境を、こんなにも洗練した環境にできたのは

やはり彼だからだったのだろう、と思う。

多くの人の生活スタイルを変え、新たな時代を何度も築いてきたのは

彼だったからできたのだろう、と思う。

大きな星が、また、ひとつ、消えてしまった。


ありがとう。

そして、これからも、AppleにはすばらしいProductを提供してほしいと思う。

そして、僕も、一つくらいは、何かを成したいと、強く、強く、思う。

 

AP合格!

というわけで、お昼休みに確認したところ、平成23年度特別試験の
応用情報技術者試験(AP)に合格してました!

こんな歳になって試験を受けなきゃならないわけでもないのに、
(今の立場上はマネジメントラインなので:-)自分たち主導で社内制度を
作ったのを機に、5年ぶりくらいに受けてみようと思い立ったけど、
そんなに勉強する時間も取れず(中弛みした<反省)、とはいえ
受けにいったら意外に手応えのある問題でして。

当日のうちに午前はクリアしたのを確認して、午後はTACさんので
ギリいけそうだと確認できたものの、やっぱ発表の日まではドキドキなわけで。

最近はWEB系の問題も増えてきてるし、時代についてきたのかなと。
(あー、自分がゲームじゃなくてエンタメ寄りだけどシステムとしては堅めなのに
なってきているからかもしれないけどね。)

で、APに合格すると、2年間は高度試験の午前Iが免除されるという特典付き!
(他のレベル3試験にはこの特典は無いのだー!)

というわけで、秋はなに受けようかなー?と思案中。

応募期限は29日くらい。

 

CentOS -> Scientific Linux

なんというか、CentOS界隈が不穏な状況なので、/.に書かれてた

Scientific Linux(6のx86_64)をVMにインストール中。

さほどCentOSとも変わらない(はず)なので、使うにしても困らないかな(Ubuntuみたいに:-)


っても、MacBook (Late 2007)なのでまぁ、それなりのパフォーマンス。

でも、どこか遠くのサーバより近くの仮想環境って感じで、いろいろ役立ってます。


でもねー、UNIX系(純粋じゃないにしても)を触ったのは

Linux Kernel2.2 ->SunOS 2.6 ->Linux2.4 ->Linux2.6 ->Mac OSX ->FreeBSD

ってな感じでして、実は現在サーバOSとしてお気に入りなのはFreeBSD。

お金かけられるなら今でもSunOS(あー、Solarisだね、2.6とかは)が堅いかなー、

というのはありますが。もちろんSPARC版だけですよ。x86はわかんない。


FreeBSDは、なんていうのか、ちょっと近寄りがたい雰囲気もありながら、とにかくシンプル。

そしてなによりもPorts。

Linuxってrpm -> yum/apt って感じで、まぁ、いわゆるバイナリをインストールしましょう、

って文化だと思ってて、使いこなせばいいんだろうけど、知識の範囲が狭い印象。

例えると、島国的、村社会的というのか。

たとえばyumを他のOSで使う事はないだろなー、って。

SRPMもあるけど、使った事無いし。(あぁ、それは個人の力量の問題?:-)


それに比べてPortsはソース持ってきてその場でビルド、を比較的お手軽に実現。

yumみたいに提供が遅い感じが全くないし。印象だけど。


また、いくつも似たようなディストリビューションがあって迷っても迷わなくても

結局長いものに巻かれる感じのLinuxに比べて、一枚岩的なのもFreeBSDが

不惑な感じでいいです。


それに、インストールも一瞬で済むしね。


あ、インストール終わったー。つかってみよー!(っておぃ;-)

 

どのBTS使ってますか?

まだ使ってない、んです。

というか、有効には使えてない、かな。

Redmineは入れてからそこそこ経ちますが、まぁ、有効に使ってる人は使う、
使った事の無い人は使い方がわからないから使わない、
まぁ、そんなものでしょう。

新規じゃなくて改修についてはBugzillaがいい、という話もあり。

じゃ、GWあけにBugzillaも入れてみますか、と自宅環境で検証できたところ。
ほんと、最近のアプリケーションは至れり尽くせりです、楽になったもんだ。


乱立するのは避けたいけど、こっちにしてみればどれでも同じです。

使えるのは使いたいと言った人だけになる可能性大だからね。

入れても使わないのは、教育しないから。

使える人は使うけど、使えない人のサポートまではしない、というのが構造的な問題。

使わない人の理由は、
使い方がわからない、
使うメリットがわからない、
覚えるのがめんどくさい、
というところか。

結局メールか口頭で伝えれば、伝える方はそれでおしまい。だって、伝えたもの。


どっちが悪いってわけじゃないけど、結局使ってほしい人が努力しないと、
使った事の無い人が努力するわけがない。

だって、変化は苦労につながるから。

逆の立場だったらどうでしょう?よくわからない事に時間を使いたくないよね?

その苦労をしてまでも、便利だ、楽だ、良くなった、という実感を想像させる事なく、
新しいプロダクトの導入なんてできるわけがないし、導入しても根付かない。


というわけで、何かを導入したい人は、永遠に続く教育のコストまで含めて
そのプロダクトを導入する価値があるかどうかを判断するべし、と。

さて、このてんまつはどなりますやら。

が、とにかくやってみる事は大事です。
 

PHP高速化の手法について(2011/5)

PHPの高速化の手法について改めてまとめてみる。

歴史の長いPHPの高速化手法はいくつかに分かれていて、

1.事前コンパイルしてキャッシュするタイプ
  リクエストの度に実行されるコンパイル時間がオーバーヘッドなので
  (事前|初回実行時)にコンパイルして、同時に最適化を行い、
  それを(メモリ|ファイル)にキャッシュしておくことで高速化を図る。
  古今東西PHPではいくつも出ては消えの古典的かつ安定している(と思われる)手法。

2.高速な言語に変換しちゃえ
  インタプリタで実行じゃなくてコンパイルする言語に変換して実行すれば速くね?
  というアプローチ。
  調べると結構あるみたいだけど、寡聞にしてHipHop for PHPくらいしか聞いた
  事がありません。日本国内での利用実績ってあるのかなぁ?

3.FAST CGI的なアプローチ
  常駐しておけば1.よりも速くね?という、FAST CGIの手法をお借りしてみました的手法。
  まぁ、PHPもFAST CGIで動くわけですが、それよりも速い、のだろうと思われ。

というのが主な分類かな。

一つの言語でこれだけ多岐にわたる高速化手法が選択できるって、
ステキというかなんというか。。。選ぶの困っちゃうよね。

で、ちゃんとしてるところはもうPHP5.xだと思うんだけど、まだ4.xな環境も
存在するだろうということで、わかる範囲で4.xの対応状況も併記してみる。

ではいってみよー!

1.事前コンパイルしてキャッシュするタイプ

  APC
    3.1.8(release 2011/5/2)はPHP5.1以降をサポート。
    PHP4.xについては3.0.x台は使えた模様。

  eAccelerator
    0.9.6.1(release 2010/05/31)はPHP5.3/5.2/5.1をサポート
    0.9.5.1(release 2008/5/18)はPHP5.2/5.1/4.xをサポート

  XCache
   1.3.1(release 2010/11/27)はPHP5.3をサポート
   1.0系は4.3.x/4.4.xをサポートしている模様だが。。。 

  Zend Optimizer
    本家本元の最適化モジュール。
    5.2までに対応するものは無償でダウンロードできますが、
    5.3以降に対応するものから、ZendServerという有償プロダクトに
    同梱されるものとなりました。(ZendOptimizer+という名称に変更)
    もちろんPHP4.xにも対応。

2.高速な言語に変換しちゃえ

  HipHop for PHP
    C++に変換する、らしい。Facebookの中の人が作成。

  quercus
    Java内でPHPを実行できる、らしい。

  Phalanger PHP compiler
     .NETに変換する、らしい。

  Roadsend
    PHPの別実装らしい。
    FASTCGI向けのバイナリが生成できる、のかな。

  phc
    PHPのコンパイラ。
    .phpからCのソースを生成して、.so(shared object)を生成できるらしい。

3.FAST CGI的なアプローチ

  GreeFastProcessor(GitHubはこっち)
    0.1(release 2010/10/20) バージョン互換は書いてないなぁ。。。
    5.xで動くと思われますが、、、
    GREEの中の人が作成。

  FastCGI ProcessorManager(PHP-FPM)
    ここに混ぜてもいいものかと思いつつ。
    PHP純正のFASTCGIの別実装、とのこと。
    実際にはこれ+1.のアクセラレータで高速化らしい。


さーて、どれを使うかなー、と思ったあなた、まずは1のどれかを入れてみるのが
手っ取り早く高速化の恩恵を受けられますよ。

3.については最終的に1.と組み合わせて使う事で効果が増すのではないか、
という所なのですが、やってないのでなんともです。(だれか〜)

あとはどのWebServerと組み合わせるのか、は結構キモなんですが、
ほとんどの人はApacheだと思うので1.止まりかなと。

うーん、のこりのGWはなにしよっかなー。
 
というわけで、毎年の行事(神田明神への初詣と車のお祓い)もとどこおりなく済ませて、

お正月だなぁ、とのんびりしている今日この頃です。


さて、急に思い立った今年の目標です。

シゴトの目標は
・方向性を指示してその方向にきちんと進んでいるかを確認、調整するだけにする。
・自分でコードを書かない。(便利ツールは書くけど)
・今やってる全てのシゴトを部下に引き継ぐ
でいきたいと思います。

本来は管理職なので、管理する事に重点を置きます。
と、次に進む為には現業をやり続けてるわけにはいかないので、さっさと
そのあたりは部下に継承しちゃって次に進んで、のサイクルを作る。
それに、人材は育てる、というのはやっぱ難しいので、自ら育つような方向付けを
するようにすべきだなぁと。


プライベートの目標は
・コードを書く
 AppStoreで儲けてウハウハな人生を!:−)
・コードだけじゃなくてメロディも書く
 最近は音楽系も再開したいなぁ、と思ってたりする
・(もう一つはまだ決めてない。。。)
ということで。

さて、来年の今頃はここにどんな事書いてるかなー。


そんなわけで、今年もよろしく御願いします!

 

2010年 ありがとう

そんなこんなで2010年も残す所あと25時間となりました。

ここ数年は転職したこともあり、年末年始はPC張り付きな状態なのですが、

まぁ、それもいい経験かな、と。脂ののってる年代ですから(^^;



今年はいろいろありまして、年末年始休暇の直前に大きなトラブルもあったりはしたものの、

それとは別に夏前から大きな仕事が無事に動き出し、そして今の所その作業が半分くらい

済んで、年度内には仕上げてしまうというフェーズのど真ん中にいたりするわけですが、

週に2〜3回の緊張感と進んでいってる達成感が、なんというか、心地よく。


来年からはこれをステップにどういう方向に転がして伸ばしていこうか、というのが

今からワクワクの要素だったりするのですが、経営環境も影響してくるので

そこんところもどううまく捌いていけるのかってのものっかってきたりしていて、

トシを追う毎にどんどんチャレンジ要素が増えていってるなぁ、って思います。

それもまたたのし。

まだまだこぢんまりと収まるようなトシでもないしね。

これからだよ、これから。まだスタートラインにも立ってない。



そして今年後半は「はやぶさ君」に励まされてどうにかやってこれたなぁ、というのが

偽らざる心境ですね。

彼はたった一人で、何億キロと離れた宇宙空間で、アンテナ一つを頼りに、

はじめてのおつかい(そして最初で最後のT_T)を見事にやり遂げたわけで。

彼にタチコマ達の映像を重ねた人も多かったんじゃないでしょうか?



「はやぶさ兄さん」は彼のあとに続く「イカロスくん」「あかつきくん」そして「みっちー」の

希望の星として、今もあの空で輝いています。(そして、僕の希望の星でもあります。)


だから、ぼくも、諦めなければミッションが達成できると信じて、来年も頑張ります!
(たくさんの仲間もいるしね!)


今年もありがとうございました! > all

そして、来年は今年よりもさらに良い年にできるよう、全力で頑張ります!

 

あれから2ヶ月かー

2ヶ月前のiPhone/iPadアプリ熱も冷め(てるわけじゃないんだけど、シゴトがー)、起きたら仕事、
帰ったらばんごはん食べて寝る、だけの生活が続いたり続かなかったり。
あ、もちろん風呂にも入ってるさー!

いそがしいのはありがたい事だと思いつつも、いそがし過ぎるのもいかがなものかと思ってしまうのはしょうがないよねー。年もトシだしね。:-)

とはいえ、たぶん社内的にも数年に一度の大きな動きが、年内で数的には約半分が完了し、残すは年明けにボリューム的に大きめのモノが控えているわけですが、当然避けて通る事はできず、短いながらも年末年始の休暇でリフレッシュして、今年度をどうにか乗り越えるのが当面の目標。

年取ってからの方がタフになったし、いい意味?でイイカゲンにもなったし、やりすごせるようにもなったし、このタイミングだからできるのかもしれない、と思ってたりする。

正直、一瞬絶望したり、諦めそうになったりもするけれど、仲間の顔を見て、みんなで一緒にやってるんだな、だから、ヘコんだ時には誰かに頼って、凹んだ仲間がいたらそこをカバーして、そうやって、ゆっくりでもいいから、前に進んでいけることが、とてもステキな事なのだと、思えるようになった。
そして、それでいいんだ、って思えるようになったのがここ数年の変化。

若い頃は、自分一人で何でもできるさ、って思って、当然最終形がどんな形でも、できる事はできるし、でもそれなりで自己嫌悪したりすることもあったりするわけだけど、やっぱ、若かったんだなー、って、思ったり。:-)。

それに、次に進みたいから、今の苦労が受け入れられるんだと思う。

だってさ、もっともっとやらなきゃいけない事があるし、それを超えて更にやりたい事があるわけで、だから、毎日、一歩でも、半歩でも、前に進む努力を惜しむつもりはない、かな。
 

そしてブラッシュアップ

メモリリークを検出してみました。

実行 -> パフォーマンスツールを使って実行 -> Leaks

なんということでしょう!

textView.text = [[NSString alloc] initWith~]

 とかすると思いっきり漏れてます。そらそうかー、参照してるだけだし。

というわけで、

NSString *tmp=[[NSString alloc] initWith~];
textView.text = tmp;
[tmp release];

ですよ。

いや、@propertyの書き方とかにも寄るのかもしれませんが(retainじゃなくてassign)

うーん、その辺はやってみよう。

あと、AVAudioPlayer alloc も、play したあとにstopしないでreleaseすると

音は止まるけどリークするんですねー。

というわけで、Leaksはそこそこ早めに使った方が便利だってことはわかりました。

あー、もちろんこれで今あるリークは全部つぶしました。:-)