ページ

2010年3月31日

ステレオタイプなIT開発者像

外から見ていると実態がよく分からないので、ステレオタイプに物事を見がちです。僕の学生のころのプログラマは、髪の毛が金色で長くてポニーテールで、昼と夜が逆転していて・・・、と言うようなものでした。僕の20代のころは、髪の毛が長くて金色だったような気もしますが、それはプログラマとは関係ありません。ロータスに新入社員として入って、僕のプログラマ像に合致している人は見たことがありません。そんなものです。見た目のイメージであればそれほど問題になることはありません。

時々、IT系の人は人付き合いが苦手で孤独を好み、人と関わらずに仕事ができると思い込んでいる人がいるようです。まあ、人付き合いが苦手というか、割と寡黙な人が多いかもしれませんが、それはコミュニケーションを否定している訳じゃないです。それに、喋れば喋ります。特に技術的な話だと乗ってくる人が多いです。このあたりは、誤解していてもそれほど害はないかもしれません。

困ったものが、コミュニケーションが苦手、もしくはしたくないから、プログラマとかならやっていけると信じている人がいたりすることです。沢山プログラマがいれば、一人ぐらい混じっていてもいいですが、多分、大変です。ほとんどのケースがコミュニケーションなしで仕事はできません。それに、コミュニケーションできない人には大事な仕事は任せられません。アリエルというか、僕はプログラミングなどの能力よりもコミュニケーションできるか、を重視します。

ただ、コミュニケーションと言っても仲良しこよしにしたいわけじゃないんで、言いたいことは言って、衝突するのが一番いいかな。うーん、昔、Skypeの岩田さんと渋谷の路上で何かを食べながらプログラミングについて何か言い合いしていたような気がする・・・。



2010年3月27日

統計の出し方

先日の豚を食べる会の時に、僕が数ヶ月前に「グラフを出すだけじゃ意味がない」とTwitterで愚痴っていたと言われました。よく、そんな大昔のつぶやきを覚えているものだと感心しました。で、僕はどの件だったのかよく覚えていませんが、多分、この件だと決めてちょっとだけ。

統計のデータって言うのはとても有効だけど、反面とても危険です。読み誤ると間違った方向に進んだり、他の人の話を聞いているとわざと別の結論に導こうとしているだろうとことがあったりします。でも、今回はそういう話ではなく、作る方の話です。

作る方にとっても統計データって危険です。まず、統計データを作ること自体が目的化しやすいというのがあります。統計データを見せられることがありますが、そのデータから何も仮説や結論が出ずに、単に「出しました」で終わることがあります。確かに、データとして見せられると面白いこともあるんですがね。

統計データをむやみやたらと集めたり、加工するのは意味がないです。無限の時間があれば意味があるかもしれませんが、普通の人間には無理です。まずは、データを扱う前になんらかの仮説や検証したい事象があります。これを忘れると、データを集めることが自己目的化します。

仮説ができあがったら、その仮説を検証するためにどうデータを集めるか、もしくは実験するかを決めます。そして、実際にそれを行ってデータを集めたり整形したりします。最後に、そのデータを元に仮説があっているか判断して、次のアクションを決めたりします。大学でもやってきたことで、ごく当たり前のことです。でも、この最後の仮説の検証をできないのか、しないのか、他の人にやらせようとしているのか、この部分が欠落していたりします。そのような報告を聞くと、何が言いたいのかわかりません。

論文とは違うので、結論は間違っていても構わないのです。間違い、もしくは納得できなければ指摘されるし、指摘できないようなエンジニアのマネージャはいりません。

日本人は奥ゆかしいので、自分の考えを中々みんなに披露しないだけかもしれません。



2010年3月26日

犬が嫌いになった

今、家に犬がいます。先週末に家にやってきました。嫁の両親が旅行でいないので、2週間ばかし預かることになりました。もともと、僕は動物好きだったつもりです。でも、数日で嫌いになりました。

まず、散歩に連れて行かなくてはいけませんが、昼間は長男が学校が終わったら連れて行きます。でも、朝は時間がないので連れて行けません。仕方がないので、僕が連れて行くのですが、いつも起きていた時間だと遅れてしまうので、6時30分ぐらいに散歩に連れいていきます。つらいです。しかも、僕が散歩に連れて行くと、しっぽがたれています。奴も楽しくないようです。

それから、犬は吠えます。夜寝ていると、遊んでくれと吠えます。家にやってきたときは、結構な頻度で吠えていましたが、翌日ぐらいには頻度は減りました。でも、朝の4時とか5時ぐらいから吠え始めます。うるさいので、起きて頭をたたいたり、蹴飛ばすとと30分ぐらい静かになります。おかげで寝不足です。

それから、この犬は我が家の人間様よりいい肉を食っていました。やってきた日に犬用の餌として渡された肉は、グラム単価が我が家で買う肉より高いです。たまにステーキ肉も食っているようです。でも、犬の餌用に渡された肉は、我が家の人間様のディナーになりました。おいしかったです。

犬がいると、子供がうれしがって、なかなか寝ようとしません。

 

犬がいてもいいことはありません。ちょっと犬が欲しいと思っていましたが、絶対に飼わないことにしました。



2010年3月23日

NHKスペシャル「マスメディア崩壊」を見ました

NHKスペシャル「マスメディア崩壊」を見ました。とても面白かったです。まじめな議論を期待している人は見る価値はなかったと思います。ちゃんと論理的にお話をしているのが佐々木俊尚さんだけでした。テレビの代表と新聞の代表がネットを使ったことがなさそうなおじいちゃんという凄いキャスティングはなかなかのものです。さらに、おじいちゃん達の言っていること、わけわかんないし。日本は外国とは違うから大丈夫とか、ネットと融合すればいいんでしょ?みたいな感じかな。

朝生と違うのは、おじいちゃん達がいたらから白熱(?)できなかったからでしょうか?日経のネットへの進出をテレビの人が褒めると、佐々木さんが「料金体系がそもそも間違っているでしょ」で議論が終わっちゃうのは、テレビの人がおじいちゃんだからでしょうか?

これをみて、やっぱり朝生の方が、面白いな〜。

pythonでCGIを書いた

生まれて初めてpythonでCGIを書きました。本当の素のCGIです。書いたのは数週間前ですが・・・。ちなみに、perlではCGIを書いたことがあります。

面白いことは何もありません。環境変数から値をとるだけです。printで出力するだけです。cgiモジュールのFieldStorageでPOSTのパラメータを取得できます。wsgiとかはとある事情で使っていません。

2000年のころにタイムスリップした感じがします。やっぱり面白いことはありません。

2010年3月19日

ちょっとだけctypes

最近、あんまりブログ書いていないので、とりあえず書きます。最近、というかちょっと前にお仕事でやったことのまとめです。

まず、僕はctypesが嫌いです。嫌いというよりは怖いです。Cと同じように簡単にいろんなものが破壊できます。でも、Cのライブラリを呼び出すのがとても楽チンで便利です。

まずは、僕が書いたコードです。


import ctypes
mylib = ctypes.cdll.LoadLibrary("libmylibrary.so")
result = mylib.my_function("arg1", 1)
:

うーん、説明するまでもないですね。LoadLibraryでライブラリをロードしています。これは、もう少しいろんな書き方ができますが、やっていることは本質的に同じです。
で、あとは、ロードしたライブラリの関数がそのまま、コールできます。引数は文字列や数字であれば大体自動で変換してくれるので、あまり気にする必要はありません。戻り値も数字であれば気にする必要がありません。数字以外の戻り値は、関数におまじないをすれば大丈夫です。

とっても楽です。でも怖いです。

ありえるえりあ勉強会#3 Emacs編 vol.2

「今日はありえるえりあ勉強会#3 Emacs編 vol.2」でした。タイトルなが!多分、何人かは会場にたどり着けずに帰っちゃったんじゃないかと予想。その辺は、準備不足ですね。でも、今回の会場はワークス(アリエルの親会社)の会場を借りた初めての勉強会なので、仕方ないです、と自分を言い聞かせています。

さて、一番最初は開発部長のよく分からない話でした。いや、本当に分からなかった。何を言いたかったのだろう?ネタだったんだろうか?

その次は菅原さんのライブコーディングでした。まあ、その場でコードを作り上げていくのを見ているのはとても面白いです。どういう風に考えながらコードを書いていくのか分かるし、この状況でさくさくコードを書いていけるのはすごいとしか言いようがありません。でも、もうちょっと喋りながらじゃないと、静かになりすぎです。もう少しフォローできればよかったかな。

その後は、松山さんのお話です。2時間喋れると言っていましたが、2時間喋るより、30分とか45分で喋る方が大変です。もう少し時間配分があれば、もっと面白かったのに。まあ、今日聞けた話もそれはそれで面白かったんですが。

その後、ライトニングトークとか言いながら、関係者ばかりが喋っていました。ドラ娘はなぜか評判が良かったようです。で、最初の人はvimです。喋った人はIPA未踏ユースでスーパークリエータの称号をもつ人です。でも、なぜ、Emacsの勉強会にvim?しかも、それ、Emacsでできるよ。

そのあと、また菅原さんのお話で、Emacsでお絵かきです。うーん、すげー。でも、Emacsだらかすげー、なんですが。

最後は吉岡さんと言って、Eclipseのプラグインを開発するのが好きな人です。で、Emacsの話かと思いきやEclipseの方が凄いでしょ!とけんかを売っていました。でも、最後がなぜEclipse?Eで始まっているから間違えちゃったんでしょうか?それから、けんかを売ろうとしたせいか、しゃべり終わるとどこかに行ってしまいました。

参加者はEmacsの勉強会なのにvimとかEclipseとか、頭の中が???になったんじゃないかと思います。それがアリエルの狙いでした。

次は関数型言語いろいろの戦いをやるか、ちょっと世の中に流されてJavaなんかどうかな〜と思っています。Javaと言っても、書き方とかライブラリの紹介じゃなくって、jvmの落とし方とか、gcをはあはあ言わせる方法とか、バイトコードの歩き方とか・・・。



2010年3月17日

geekは褒め言葉だったのか・・・

多分、僕がgeekっていう言葉を始めて聞いたのは90年代後半だったと思います。10年ちょっと前ですね。外国の人がgeekって言っていて、どういう意味か聞いたような気がします。その時の僕の理解は、コンピュータオタクでした。まあ、ハッカーのように格別、いい言葉でもなかったように思います。それ以降、ずっとそう信じ込んでいました。

それからもう、10年以上たっています。wikipediaは沢山書いてあるので、はてなキーワードをみると、


 英語で変人を意味し、転じてオタクを意味するようになった語。とくにコンピュータオタクを指すことが多い。

日本語の「オタク」と同じく昔はネガティブなイメージを持つ語だったが、最近は褒め言葉として使うこともある。ネガティブなコンピュータオタクを指す語は現在ではnerd。


とあります。褒め言葉だったんですね。ハッカーとの比較はよく分かりませんが・・・。

で、とあるサイトではgeekを募集しているようです。えっ、全部画像なんですけど・・・。geek 募集でググるとこれがヒットします。ひねりがなくてつまらないです。でも、これは人を欺く仮の姿かもしれません。画像に何かおもしろい仕掛けが潜んでいるのかもしれません。HTTPヘッダーも調べてみました。僕は本当の姿を見つけることはできませんでした。geekへの道は遠いのかもしれません。

※ 怒られると困るので、一応言っておくと、ワークスのgeek(?)が集まっている部署はそれほど悪くはないかもしれません。EC2とかクラウドで遊べたりするし。でも、アリエルの方がもっとおもしろいよ。



2010年3月9日

iPhoneのRSS Reader何使ってる?

今更ですが、iPhoneでRSS Readerは何を使っていますか?僕の用件は、まず、Google Readerと同期できることです。PCとiPhone好きなデバイスで読みたいので、データが同期されていることは重要です。次に、通勤時間で使うので、オフラインでも使えることです。通勤で使う東海道線は、時々電波が途切れるので、オフラインで使えないと悲しいです。

iPhoneを使い始めた直後は何を使っていたか覚えていません。そのあと、bylineを使っていました。基本的には満足だったのですが、記事を読んでいてTwitterやinstapaperに送りたいと思っても、できません。他のReaderができるのに進化に取り残された感じです。さらに3.0がでるとかなり長いこと言っていますが、中々出てきません。

そんなこんなでFeedsと言うのに乗り換えました。でも、この人はTwitterやInstapaperと連携できるのはいいのですが、オフラインがいまいちです。既読にしたときやinstapaperに登録するときにオンラインじゃないとうまくいかなかったりします。そこは我慢するとしても、記事を読んでいる最中に「データを同期している」みたいなメッセージがでて、うざいです。処理を中断されたみたいでいやです。

で、今はMobile RSSの無料の奴を使って試しています。昔使ったときは、オンラインじゃないとまともに使えなかったのですが、最近の奴は「greate offline integration」とか良くわかんない売り込みをしています。まあ、きっと、まともになったのでしょう。画像もキャッシュされるみたいで、いいです。Feedsのように処理を妨げることもないし、無料版の広告もいやにならないです。でも、常用するなら買うつもりなんですが、料金体系がよく分かりません。有料版に350円のものと600円のものとあって、違いが分からないです。よく分からないときは高い方を買っとけなのか、安い方でも十分なのか、わかりません。とりあえずは、一週間ぐらい様子を見るつもりです。



ニクキュウグミだじょ〜♪

PythonとC#の戦い

2chのPythonのスレッドを見てみると、今までは割と閑散としていたのに、週を開けるとなぜかスレッドが伸びています。PythonとC#が戦っています。多少の誤解があったとしても戦っている方がおもしろいです。でも、途中で飽きて、あとは流し読みですが・・・。ちなみに、僕は「まいくろそふと」の開発環境は好きです。C#も好きです。C#はbetter Javaと思っています。でも、Windowsでしかちゃんと動かないので、あまり使う気はしません。Windows固定であれば、いい言語じゃないかな?

戦いを見ていると 、うーん、何で戦っているんだろう?GUIプログラムの作りやすさで盛り上がったときがあるみたいです。僕は、PythonとかC#とか言う以前に、Windows GUIプログラミングに関してはVisual Studioはすごいと思うので、それに対抗するは大変です。言語の優劣ではなく開発環境の優劣でVisual Studioが優れています。最近のことは知りませんが、数年前まではそうだったと。で、GUIの書きやすさはかなりIDEが吸収するので、そこでプログラミングというくくりで競ってもあんまりうれしくありません。

で、本質的な難しさはロジックをどう書くかと言うところで、そこにはあまり言語による違いはないです。僕は動的言語で大規模な開発をしたことがないので間違っているかもしれませんが、ある程度の規模で、ある程度プログラマーの質にばらつきがあると、動的言語ではつらいのかなと思ったりします。静的であれば大丈夫かというと、そうでもないですが、どちらがより安全かと言うことで・・・。数人で高いスキルがあれば、動的な言語の方があっているかもしれません。僕が想定しているプログラマーのレベルが低すぎるのかもしれません。

まあ、PythonかC#か、ぐだぐだ考えるよりは、全部やっちゃえ。



2010年3月6日

組織の形態とプロジェクトの進め方


読んでいないSoftware Designがいつの間にか結構たまってしまって、集中的に読んでいます。そんな風に雑誌を読むものじゃないとか、言わないでください。今は3月号を読んでいるので、やっと追いつきました。ためるとつらいです。最近はSoftware Designも新鮮さがないと感じることもあるんですが、自分が原因なのかもしれません。

その中でもいつもおもしろいと思うのがSoftware Designerです。今回は、Apacheの人です。「組織の形態とプロジェクトの進め方の理念」については、とてもおもしろいし、参考になります。


一人の人物にあまり依存しすぎると、コードやプロジェクトは低迷し、やがて死を迎えます。

最良の方法はグループに依存することです。

とても耳が痛いです。社内でも現状、特定の人たちに依存しすぎています。その人達がいなくなると、完全に止まると言うことはありませんが、量的な問題で依存度が大きすぎるかもしれません。問題自体は気づいていましたが、なかなか脱却できません。一応は、依存する人を特定の一人から最低二人という形にはなっていますが、グループに依存するってどういうことなのか、わかりません。依存する人を複数にすればいいだけなのか、グループとして何か依存できるような形態があるのか・・・。

ステレオタイプな隠遁生活者のようなソフトウェア開発者ではつとまりませんね。オープンソースのコーディング業務には、ソーシャルスキルと高度な人間的知性が要求される

 

まあ、 オープンソースに限らず会社の中でも同じでしょう。おもしろいですね。




2010年3月4日

スパイスの足りない開発

社内で時々、「開発は顧客志向が足りない」とか言われます。多分、顧客志向は、言い出した人がいい言葉を思いつかなかっただけで、問題の本質ではないです。まあ、それを問題の本質のように考えてしまう人もいます。すると、話がかみ合わなくなります。顧客志向が本質じゃないというのは、僕は今のところ、ほとんど顧客のことを考えていません。僕が見ているのは、営業とサポート、コンサルの人たちです。

社内で問題なのは緊張感と言うか、当事者意識だと思っています。ある程度大きな組織だと違いますが、ベンチャーなどの小さな組織だととても重要です。たとえば、社内の誰かが困っていても(質問してきても)、何もしようとしません。他の誰かが答えてくれるだろうと思ってか、何もアクションがとられません。また、自分のやるべきことを限定して線引きしてしまっているからです。まあ、もう一つの原因は、スーパーマンがせっかちにも他の人がやらないことをやってくれちゃうからです。(スーパーマンは僕ではないです)

僕は自発的に解決されることを期待して、自分ではなるべく作業しようとしませんでしたが、やっぱり、言わないの無理なのかもしれません。自発的な行動が起こる前にスーパーマンがやっちゃうかもしれません。

解決策として、顧客志向だからと言って顧客先に営業なりコンサルト一緒に行けばなんとかなると幻想を抱いている人もいます。僕は実際に客先に行くことがありますが、そんな風についてこられても迷惑です。気分転換にはなるかもしれませんがね。当事者意識がなければ、同じ時間と空間を共有しても何も変わりません。

と言っても、実際の顧客からの緊急時のプレッシャーにさらされていると、何かが変わるのも事実です。でも、それは顧客先に出向くこととはそれほど関係がありません。

まあ、ブランチのメンテナンスでとっても忙しいときに、営業の案件でついて行ったり、○×表みたいなのをちょめちょめしたりしていて、さらに何かトラブルがあってそのサポートを行っててんぱっている時に、のどかな笑い声が聞こえてくると、イラッとすることがあるので、単なる愚痴かもしれません。

まあ、開発だからとか、いろんな理由で変な線引きをせずに、もうちょっと手を出せばいろんな世界が広がるのになー、と。会社を立ち上げた直後って言うのはそういう線引きがない世界だったなー、と。



2010年3月3日

プログラムのレイヤーとかインターフェースとか

いつのころからか、プログラミングするときにはインターフェースとかAPIのレイヤー構造を意識するようになっていました。アリエルの年寄り連中も常にこのあたりを意識して設計したりプログラミングしたりしています。アリエルのプログラマ達は優秀な人が多いです。業界の平均的なプログラマよりレベルが遙かに高いです。それでも、全員がインターフェースやレイヤーを意識できるわけではありません。

年寄り連中(と言っても30代後半ね)は、C/C++のようにヘッダーファイルと実際の実装が分離された仕組みで育ってきました。インターフェースやレイヤーを意識できるかどうかの違いは最初はCなどの経験のあるなしが大きいと思ってましたが、それは幻想でした。Cをやっていても意識できない子はできないのです。まあ、それでもそこそこのプログラミングができるのはすごいと言えばすごいのですが・・・。

経験の違いかと思ったりもしました。半分は正しいと思います。でも、アリエルの20前後の若者は、このあたりを意識できるので、単純に経験だけではないようです。学ぶための何かがあるんじゃないかと年寄り連中は考えました。

年寄り連中はそこで頭を絞りました。自分たちがやってきた遠い過去を思い出そうとしますが、どうすれば、もしくはいつから意識できるようになったかわかりません。プログラミングの本も、このあたりを書いてあるものは見かけません。アーキテクチャの本もちょっと違います。で、記憶の断片を寄せ集めると、MFCが良くも悪くも刺激になったんじゃないかと、冗談交じりになりました。

MFCは美しくはないし、バグも多いし、Win32 APIのC++のラッパーでしかないので、自分たちでその大体を作ろうというモチベーションになって、そこでの試行錯誤で学んでいくことが多いのではないかと。そうこうするうちにWin32 APIには何とかExとか何とかEx2とかAPIがぶざまに拡張していく様をみて、設計の難しさや一度作成したAPIの変更の難しさ、互換性をどう維持していくのかとかを学んでいったんじゃないかと、勝手に分析しています。

これが真実かどうかは分かりませんが、こんなことをやっている時間は今はないし、効率的でもないです。口で言っても実感が伴わないと頭の中の知識でしかありません。

年寄り連中は困り果てて、そのうちその辺が意識できる若者に教えを請うのかもしれません。でも、ちょっと前にちらっと探りを入れた限りでは、彼らもなぜそうなったのか、わかっていないようです。当たり前のことを当たり前にやっているだけなのかもしれません。質が悪いです。