flat7th

* 日々のメモ2011

created 2011-05-08 modified 2011-05-08 

memo/20110114
memo/20110116
memo/20110118
memo/20110119
memo/20110203
memo/20110209
memo/20110212
memo/20110216
memo/20110219
memo/20110220
memo/20110222
memo/20110224
memo/20110225
memo/20110226
memo/20110302
memo/20110304
memo/20110306
memo/20110308
memo/20110309
memo/20110311
memo/20110312
memo/20110313
memo/20110314
memo/20110315
memo/20110317
memo/20110320
memo/20110412
memo/20110414
memo/20110422
memo/20110505
memo/20110508
memo/20110509
memo/20110511
memo/20110513
memo/20110516
memo/20110517
memo/20110518
memo/20110519
memo/20110521
memo/20110526
memo/20110528
memo/20110529
memo/20110530
memo/20110601
memo/20110604
memo/20110611
memo/20110612
memo/20110616
memo/20110622
memo/20110624
memo/20110625
memo/20110626
memo/20110708
memo/20110715
memo/20110716
memo/20110718
memo/20110723
memo/20110724
memo/20110729
memo/20110801
memo/20110807
memo/20110810
memo/20110814
memo/20110828
memo/20110830
memo/20110831
memo/20110915
memo/20110920
memo/20111002
memo/20111003
memo/20111004
memo/20111006
memo/20111010
memo/20111011
memo/20111012
memo/20111013
memo/20111014
memo/20111015
memo/20111017
memo/20111024
memo/20111026
memo/20111027
memo/20111101
memo/20111109
memo/20111116
memo/20111121
memo/20111124
memo/20111126
memo/20111128
memo/20111202
memo/20111204
memo/20111206

0114

本日、私の大好物っぽいものがあることを知りました。
プロセス間通信の基盤ソフトで、エンコーディングはバイナリのようです。

リンク備考
Wikipedia:D-Bus
freedesktop.org dbus
D-Bus Specification の日本語訳
IBM 文書サイトの記事

Gnomeデスクトップ上のIPC基盤として使われているようですが、Linda的な使い方もできそうです。

このところ、Linuxのデスクトップ環境に関心を払っていませんでしたが、なまけてるといろいろ見落としますね。


2009年の仕事で、「ウェブサーバ(Windows)からDBサーバ(HP-UX)に要求を送り、RDB処理を実行、結果をウェブサーバに返す」なんていうものを作りました。そのとき独自のマーシャリング(シリアライズ)機構を考えて実装したりしました。私本人はいいものを作ったと今でも思っていますが、アレです。雇い主SIerのクローズドな製品の一部ですから、誰の目にも触れずメンテもされず使い捨てられるのでしょう。
上手な仕事のやり方を考えないといけない。






まったく別の話ですが、Facebookの中のひとの映画、明日公開ですな。コンピュータ偉人伝が好きなので、純粋に楽しみです。まずは変な情報を仕入れないで見てみたい。

FacebookのIPC基盤は、thriftというやつですね。ソーシャルwebサイト上での通信を想定してますから、
  • クライアントもサーバもWeb上に存在する、
  • 通信する双方が数ヶ月~数年の時間差を経て開発されるかもしれない
なんていう通信上の特性に対応する必要があって、そのため
  • APIコールの際、必ず「APIバージョン」をつける
ことが特徴的だ、と私は解釈してます。




また別のレベルの視点ですが、ブログページを独自に持ってるひとは、ツイッターを、単なる更新イベント送信ツールとして使うようになるみたいです。

ツイッターは140字に制限することが特徴でしたが、結局のところ、140字ではちょっとボリュームのあるおもしろいことを書くには足りないので、本文はブログに書いて、そのイベント通知をツイッターで行う、と。

ちょっと前に「RSS」や「RSSリーダー」でやってたことと似てると思います。

(なんて言うと、特定のひとからは「全然違うよ」と言われるだろうけど。情報の重み、時間の桁、受動/能動、...)

0116

アンドロイド端末を買いました。
書き込みテスト。

0118

リンク備考
私がクラウド依存を考え直す理由by Paul Carr

そういう感情を指して、日本人SF作家は「STAND ALONE COMPLEX」と呼んだんだぜ。
2002年の作品で。

リンク備考
STAND ALONE COMPLEXWikipedia

(すいません、私まだ、この作品の中身見てませんが)



僕ら、8ビットPC世代は、ネットワークにつながることに「とんでもなくあこがれた」んですよ。昔。高価だから。それはつまり「ネットワークコンプレックス」だったわけ。

だから、士郎正宗さんが上記の作品名を出したときに、すぐ「逆説」だと分かった。うまいなぁ、と思ったよ。センスがいい。

SFモノは往々にして暗い未来を描きがちなんだけど、彼は確か、漫画作品の中で「SFが厭世的なサイバーパンクばかり描いていてもダメだろ」というような独白をしていたと、記憶している。これもセンスがいいこと言うなぁ、と思った。当時、愚痴っぽいフォークロックソングを歌っていた自分を反省した。

私のなかで彼は「フィリップKディック氏に並ぶ大SF作家」の地位にいますよ。



Groupon騒動で、YouTubeに「謝罪に見せかけた宣伝動画」が上がってる。
  • 50%という高額な手数料について何も言ってない
  • 二重価格の疑惑に何も答えてない
  • 営業担当者の実態について何も答えてない
  • 「急成長」という、ポジティブな言葉で宣伝してる
結局、株価の下落を最小にして財産の保全を図り、詐欺まがいの商売をさらに続けたいだけじゃんね。素直にそう言えよ。

リンク備考
グルーポンの割引で買ったおせち料理が酷すぎると話題に痛いニュース
「二重価格」とは “Groupon系”サービスの注意点 (1/2)IT Media

関係ないんだけど、過去、神保町のどっかの焼き鳥屋でとんでもない接客されて激怒したのを、なぜかふと思い出した。
給仕の女性が終始馴れ馴れしい態度で、あげくに中ジョッキを底から押されて無理やり一気飲みさせられそうになった。「俺はお前に会いに来たんじゃなくて友達と久しぶりに飲んで話をするために来たんだ」と。飲食店としてそういう性格のひとは貴重だけど今は違う、とかそんな怒り方をした記憶がある。
誘ってくれた古い友人の顔を立てるために暴れなかったけど、いまだに許せん。
全然関係ないんだけど。

0119

「ソーシャルネットワーク」見ました。

どこまでが事実で何が脚色なのかよくわからなかったけど、コンピュータ偉人伝として普通に面白かった。役者さんも普通に上手だった。

才能ある人物のサクセスストーリーでは、主人公の周りで少し悲しい想いをする人たちが必ずいる。
才能のレーダーチャートはみんな違う。広がりも、平均半径も。範囲違いがあるからパートナーシップやグループメンバーシップが成立するんだけど、才能円の違いが、人間関係の微妙なすれ違いと、その結果として少しの悲しさを生じる。
そういう意味で「バスキア」を思い出した。

あと、カンフー映画を見て映画館を出るとき、誰もが感じるようなアレを、この映画を見たひとも感じると思う。

ま、それぞれの分野で頑張りましょう。あわてず、あせらず、あきらめず。



ところで、ハーバード大で講演するビルゲイツ役のひとが本人に酷似してたんだが、もしかして本人?

0203

我が母校、京都産業大学の計算機科学科は、日本で初めてのコンピュータ学科だったようです。Wikipediaによると。
へー。

...なんか、入学前に蛍雪時代でそんなことを読んだような気もしてきた。

0209

スマートフォン、っていうかAndroid携帯電話、使ってみたら便利だった。


便利なので欲が出てくる。

電車の行き帰りの時間に、Android端末(携帯電話)でいろんなプログラムのソースを読みたい。

google code search にHTTPでアクセスすればいいじゃん、ていう話ですが、それだと通信料がもったいない。

自宅ではプロバイダと光ファイバー契約していて無線LANでつながるし、10分や20分で1つのソフトのコードが読み終わるわけではないので、自宅でダウンロードしたものをテキストエディタで読めればいいんだが...


0212

オブジェクト破壊について、思う所があり、書きかけています。ゆくゆくは、「GCを用いないのに簡単に使えるスクリプト言語」を形にしたい。

+ アペタイト フォー デストラクション

0216

Androidにからんで、最近Javaをいじっているが、...

私はやっぱりJava嫌いだ。っていうか苦手だ。私には、Javaの原理主義的なオブジェクト指向は、古いオブジェクト指向時代の「手段と目的の履き違え」を引きずっているように見えてしまう。


時間のかかる処理の完了時の処理をするために、コールバック機構、デリゲート機構を作りたかったんですよ、今日は。

Javaでコールバックしたい場合は、(1)コールバックを分けたい単位でクラスを全部分けてやらないといけないみたい。つまりオブザーバパターン。

さもなくば、(2)リフレクションを使うか。

あるいは、(3)コールバックの呼びクチは1箇所に集約して、switch等で自分で分けるとか。


Javaではコールバックと言わず、デリゲートとも言わず、リスナー(クラス)っていうんだってさ。

Android関係のサンプルコードをみてると、やたら○○リスナーと言ってラムダ関数っていうか無名クラスが出てくるので、妙だな、単体テストしにくいだろ、とおもっていたのだが、デリゲートが使えないと知って少しだけ納得。


(1)のオブザーバパターンっていうのは、GoFのパターンの中でも「使える」パターンの一つで、M-V-VMパターンでも有効に使われてるように【プログラムの依存関係を逆転する(=プログラム変更の際の主従関係を逆転する)】ためのいい考えだとおもっています。
有効な例:これまでの3層レイヤ方式で、ロジックはデータを呼び、またロジックはプレゼンも呼ぶ、だと、一番偉いはずのロジックが、プログラム変更に際してはプレゼンとデータの両方にアタマ下げて従わなければいけない。M-V-VMでは、プレゼンとロジックの呼ぶ・呼ばれる関係を、オブザーバパターンで逆転することで、主従関係を(立場が強いほうから) データ→ロジック→プレゼン の一直線にしたと。
それはナイスな考えなのですよ。とくに、これからはスマートフォン対応などで、ロジックに対してプレゼンがマルチ(複数)になっていくから。

でもコールバックっていうのは、もっと細かい単位で使うもんだろ?と。

しかも、コールバックされた処理の中では結局何をやりたいかと言うと、ユーティリティの利用者側(=コールバックされた側)がガメていた(privateにしたかった)データをいじる訳だ。結果を格納するテキストボックスを更新する、とかね。
で、メソッド分割で作れるデリゲートと比較して、クラスが分かれる方式だと、せっかくのカプセル化を解かないといけなくなる。そうなると、もうどこにメリットがあるのか訳が分からん。

(2)のリフレクションって高価な手法だと思ってるんだが、間違ってますかね?

(3)のswitch文って結局アタマから総当たりでブランチしていくだけなので、非効率なのよね。メソッドポインタが使えればポインタ配列でO(1)でできる話なんだが。


結局、Javaでつくるとクラスが細かくなりすぎて、しかもぼんやりカプセルが開いたクラスが多くなって、「ソフトウェアをシンプルに保って管理しやすくする」「細かいことに目をつぶってザックリ理解しやすくする」というオブジェクト指向の目的からどんどん遠ざかっていく。

なんかいい方法ないのかな。


脱線:

普通、switch文を初めて見たら効率よく検索してるとおもうよね。私も昔そう思った。でも実際はif、else if、とアタマからブランチするように翻訳される。
新しいプログラミング言語の作者はなぜ、switch文を、テーブル検索するように翻訳しないのだろう?

C/C++はそう翻訳せざるを得ないんだけどさ。理由は、breakしないことをゆるしていて、判定する順番、ソースに書いてある順序が意味をもってるから。でも新しい言語はbreakなしを許さず複数のcaseに入ることを許さなければいいのに。

C/C++では関数ポインタ配列を簡単に書けるから、O(n)となることを回避する方法はあるんだが、javaは...

やっぱりJavaはフールプルーフを重視した言語なのだろうか。



まぁね、こういうこと考える事自体が楽しいからいいんだけどさ。



2011/3/9
「嫌いなものじゃなくて好きなもので自分を語れよ」
と、「国際問題をハスに流す萌えキャラ」に言われた気がするので、今後気をつけます。


0219

難しくてよく分かりませんが、twitterの140文字縛りの制限下で画像を伝えようという試みらしいです。

リンク備考
unicode - Twitter image encoding challengeStack Overflow、初期のMS Excelを作ったひとの記事



0220

ソフトバンクモバイルさんがフェムトセルを無料貸出するというアレの件で

リンク備考
ホームアンテナFT softbank

現場はお祭り景気でちょっとだけ盛り上がってるみたいです。なんか私も業務命令でアルバイトに駆り出される気配...

実際にはプログラム作るほうが割がいいのだが、助け合い精神もまぁ大事。情けはひとの為ならず。

0222

Androidで自分のページを見たときに、右のメニューが邪魔だったので、cssを変更し、ウィンドウ幅が狭いときは、メニューが隠れるようにしてみました。

@media print, aural {
DIV.adminmenu {display: none;}
div.sidebar {display: none;}
div.sidebar#ss {display: none;}
div.footer {display: none;}
}
@media only screen and (min-width: 951px) {
DIV.adminmenu {display: block;}
div.sidebar {display: block;}
div.sidebar#ss {display: none;}
div.footer {display: block;}
}
@media handheld, only screen and (max-width: 950px) {
DIV.adminmenu {display: block;}
div.sidebar {display: none;}
div.sidebar#ss {display: block;}
div.footer {display: none;}
}

サイドバーのページには、まず長いほうのサイドバーを
DIV class="sidebar"
でくくって書き、続けてちいちゃいほうを
DIV class="sidebar" id="ss"
でくくって書いています。



あー、フッターを隠すとmomoseさんのコピーライトも消えちゃうのか。うーむ。プリント用がもとから消えるようになってたからよし、と解釈してみます。


0224

昔、あるラジオ番組で、電気グルーブの瀧さんと石野さんが出演されていたときの話。
どちらの発言だったかは忘れましたが

「猛獣だけがいて、猛獣使いがいない状態ですね」

という言葉がありました。

サーカス以外にも猛獣はいると思います。猛獣には猛獣使いが必要な気がします。


S.B.リップマン氏は、在籍していた職場のあるマネージャが「ソフトウェアエンジニアのチームリーダをやるのは、猫をたくさん飼うようなものだ」と言っていた、と著書の中で述べられています。

大変ですよね。


いろんな仕事がありますが、世の中の職業というのは、得意なことに特化することで成立していると思います。
特化しすぎると間口が狭くなるわけですが、「なんでもやります」という人は信用できない気がします。

「これが得意で、これが出来ます。これは出来ません」と明示するのも大事だと、この1年で痛感しています。

0225

facebookのニュースフィードのやつ、外部サイトのurlを書き込もうとすると、速攻でサマリーが表示されます。
多分、入力が完了してなくてもサーバ側にajax等で送信し、サーバ側ではダメモトでhttp get をしまくり、http200 が返ってきたらブラウザ側に表示するのでしょう。なんか面白い。

それを見て、Mathematica のコンソールが上記facebookと同じようにWebで出来たら楽しいのに、と思ったけど、ちょっと調べたらなんかすでにあるっぽい...。

Mathematica、おもちゃとして買うには高いしなぁ

と思って朝からOctaveをインストールしていじってました。plot と plot3 はできたけど splot ができない...
なぜなんだぜ



splot は出来てないけど、なんか出た。


絵が出ると単純に楽しい。

0226

リンク備考
MochaUIjavascriptのcanvasを使ったWebデスクトップメタファらしいです
もっとかんたんにJavaScriptに入門できるインタプリタjavascriptとcanvasでタートルグラフィクス。shi3zさんが仕掛けたサイトにalanさんが書いたもののようです

javascriptのcanvas、(訂正:HTML5のcanvasをjavascriptで操作する、って)よさそうですね。svgとか、flashのdraw機能とか、Web画面に線を引くやりかたの業界標準がなかなか定まりませんが、canvasが本命かも。


0302

おかげさまで確定申告書類できました。

申告書作成のWebアプリ、年々進歩していてすごいです。今年は住宅ローン控除の届けも作れるようになってました。

先日、申告書作成Webアプリの中のひとがガッチリに出演されてましたが、ありがとうございますとお礼を言いたいです。これからも頑張っていただきたいです。


ただ一つだけ難点が。
ディスプレイが2枚の環境だと、ちょっとだけ使い辛いです。

申告書作成のWebアプリは何かとウィンドウを画面いっぱいに広げてくれるんですが、それは「最大化」ではなく、自分で画面幅を拾ってウィンドウ幅を変更、とやってる。
「最大化」でやってくれていれば、PowerDesk等の設定で実際の1画面内で最大化、とかできるんですが、ウィンドウ幅を自分で変更されると、2画面の真ん中の切れ目に表示内容の中心が来ることを避けられなくて、ちょっとだけ使い辛いです。

中の人にディスプレイとDoubleHead2Goをプレゼントしたら改善してくれたりするでしょうか。うーん。
こまる状況の写真でもここにあげておこうかな。

0304



うわー、久しぶりにIEで自分のページ見たら全然表示できてない...



smb.conf のメモ。
create mode は、create mask の別名。以下同。

create mode
create directory mode
は、AND演算(ビットを落とすのに使う)。

force create mode
force directory mode
は、OR演算(ビットを立てるのに使う)。

sambaは ANDで落とす→ORで立てる の順番でビット加工する。



一日に複数回書くとごちゃごちゃになるな...



ベーマガ風のミニゲームつくるのが楽しいことを再認識。
マリオ式3パターン歩行の画像作るのに夢中になってたりする。
この楽しさを、オイラができる範囲で中高生に教えてあげられたらと思う...

こんなの作りました。↓
+ Canvasでミニゲーム


0306

あくまで例えばの話なんですけど、
例えば仕事でケータイキャリアのパケット交換システムの一部を作って、良く練ったフレームワークを作って、バグ率もそこそこで、要求性能の9倍を出しても、ほとんど誰も感謝してくれなくて放っておかれるし、
例えば仕事で文書登録システムの一部を作って、ホスト間通信フレームワーク部分を一人で作り上げ、プロジェクトでトップの生産性をあげても、ほとんど誰も感謝してくれなくてプロジェクトをたらい回しにされるし、
例えば仕事で護衛艦のシステムの一部を作って、1年で2人で36kstep作って、つまり一人当たりベテランの1.5人分以上の働きをして、バグ率も低く、速度要件を満たしても、ほとんど誰も感謝してくれなくてプロジェクトから放り出されるうえに、
例えば正社員を連続で病院送りにして産業医から目をつけられてる部署に回され、単価も下げられ、無茶なスケジュールの徹夜仕事で追い込まれるようなことがあったりなかったりした場合、
自分がやったことは一体何だったのか、誰かの為になったのかと深夜に考え込んでしまう訳ですが、

javascriptなんかでちっぽけなミニゲームを作ると、目の前で子供が面白がってくれるのがすごく嬉しくて、仕事量と感謝のされ方のギャップに非常に戸惑うのです。

2個目できました。↓
+ Canvasでミニゲーム

作ったものを誰かが喜んでくれる様を見るのって、こんなに嬉しいことだったんですね。しみじみ。


ていうか、プログラムできっちり成果出してるのにこれだけ冷遇されるからには、自分の仕事のやり方に、何かまずい点があるに違いない... と反省するのですが、いまいち確信が持てない。分からない。

対人コミュニケーションのやり方がまずい?
仕事への変なこだわりで使い辛い?
PMの気に障ることを言った?


分相応のいい仕事をしたい、という想いが、空回りしている気がしてならない。見た目で若く見られて軽んじられている気がしてならない。でもそれも本当のところがどうなのか、分からない。

考え込んでるとハゲます。冗談でなく。
どう生きたらいいのやら。




3/11追記

映画「ソーシャルネットワーク」を見て思ったこと。主人公は、訴訟してきた兄弟にこういいたかったんじゃないかと勝手に想像しました。

「アイデアがあろうとオマエじゃ作れなかっただろ? オレは作れたんだよ、こっちとそっちの間には深くて広い河があるんだよ」と。

なんか自分の過去の経験を重ね合わせてしまって、映画館でむず痒い思いをしましたよ。


私が独立するきっかけとなった「あるプログラム」について、そのときに籍を置かせてもらっていた会社から「ソースを置いていけ」と言われたときに、

「別にいいよ、アイデアも分かってて、ソースがあったとしても、この速さで動くこのプログラムを私がゼロから作った事実は消えないし、そこらにいるプログラマじゃ同じものは作れんよ」

と心の中だけでつぶやいて、誰にも言わずこらえたことを、ふと思い出しました。


実装者に対する社会的地位が向上することを静かに願っています。

0308

Fedora14になってネットワーク管理の仕組みがNetworkManagerに変更されましたが、/etc/hostsにおかしなエントリーを混入するバグがあったようです。

問題:
自分のホスト名が hoge.example.com だったとして、/etc/hosts には
127.0.0.1 localhost localhost.localdomain
::1 localhost6 localhost6.localdomain6
192.168.1.1 hoge hoge.example.com
と書くのが正しいのに
127.0.0.1 hoge hoge.example.com localhost localhost.localdomain
::1 hoge hoge.example.com localhost6 localhost6.localdomain6
と書かれてしまう。

解決:
Bug #234543 in netcfg (Ubuntu): “/etc/hosts: hostname alias of loopback”

によると、NetworkManager 0.8.1 で治ったらしい...

This bug is fixed in maverick. NetworkManager 0.8.1 automatically sets the /etc/hosts file properly.



CIFS(samba)のディレクトリをgnomeでマウントしようとすると gvfs-daemon が落ちてdbusがどうだかと不平を言う問題があって困っていたのですが、上記で治ったかも。


0309

地震のときはYahooの天気情報のサイトが一番早い。
なぜか気象庁のサイトより早い。
中の人、いい仕事してますね。

0311

ソフトウェアプロジェクトの発展を視覚化したもの、だそうです。

リンク備考
複雑に絡み合うコード……プログラムの進化を視覚化すると大変なことに – DNAデイリィ ニュウス エイジェンシィ

情報視覚化の話として面白いです。うーむ。

この視覚化されたものから、「次はどうすべきなの?」を、どう読み取れるのかが分からないのがアレですけども。

0312

家族全員無事です。@横浜市旭区

被災された方にはお見舞い申し上げます。
帰宅困難だったかたも多かったようでお疲れ様でした。

0313

幸い我が家では、棚類には固定具をつけていたこともあってか、本が1冊、棚から落ちただけで済みました。





微妙な気分になりましたが、平然と棚に戻しました。


現在も救助活動が続いていると思います。
現地で活動されているかた、頑張ってください。
こちらではピーク時の節電等、できることをやるつもりです。

福島の原発が大変なことになっているようですが、以前の現場で、福島コンピュータシステムさんの優秀な技術者の方に大変お世話になりました。狭い家ですが、2名程度なら寝泊り・入浴できる環境をご用意できます(横浜市旭区)。電気ガス水道、インターネットとPC、あります。

お困りでしたらご連絡ください。


0314

node.js について調べてました。

最近は、開発競争で優秀な人材がブラウザ実装に関わっていると見えて、javascript(ECMAスクリプト)の処理性能向上がすごいです。

で、とうとうサーバサイドでもjavascriptが使われるようになって、node.jsという基礎ライブラリが着目されているようです。

で、node.jsについてググると...



事実と想像をごちゃごちゃに混ぜて書いてる記事を発見。

http://www.atmarkit.co.jp/fwcr/rensai2/nodejs01/01.html


イベントループ

 このイベントループという技術は、C10K問題で有名になった技術です。

(略)

この問題を解決するアーキテクチャとして、イベントループが開発されました。



嘘はいかんよ。
嘘はいかん。

非プリエンプティブなイベントループのほうが、古い概念なんだよ。

マルチスレッドでスケール対応しよう、なんていう考え方は俺らからすれば驚きの新しい概念だったんだぜ。
いわゆる「リッチなハードでお気楽に高性能だそうぜ、ソフトで最適化なんて古いぜ」という、パラダイス脳の方々と、高性能ハードを何としても売りたかった方々が結託して言い出したことであって、ゲーム屋さんとか、組み込み屋さんとか、プアなハードでどこまでできるかっていう世界で食ってたひとはみんな、「それじゃ絶対うまくいかない」と思って見てたんだよ。
で、やっぱりね、っていうのが今の状況。

いつだったか、CPU屋が「ソフト屋はムーアの法則をあてにすんな」とか言い出したけど、それ自体がちゃんちゃらおかしいと。
もともと高性能なソフトの何たるかを体得してたソフト屋たちは、ムーアの法則なんか後出しじゃんけんの高飛車な発言だと思ってたのに、その尻馬に乗って金儲けをしようと某CPU屋と某OS屋が、ご大層にWebサーバだけじゃなく開発環境までつくって、若い技術者をミスリードしてくれたのが、ちょっと前までの「マルチスレッド型Webサービス」なんだよね。
で、(マルチスレッドを当てにして自分で考えないソフト屋を増やすことで)自分たちで自分たちの首を締めておいて、やっぱダメでした、という敗北宣言なんだよ。「ソフト屋はムーアの法則をあてにすんな」っていうのは。

昨今の(C10Kというキーワードに象徴される)イベントループ回顧は、マルチスレッド型がやっぱダメじゃん、ってなって古くから成功してるパターンに戻ってるだけなんだよ。

この森 俊夫さんって、多分若いかたなんじゃないかな。いろいろ勉強されてるんだろうとは思うけど、

想像と事実を混ぜて記事書くのはやめておいたほうがいいと思うよ。
自分のブログならともかく。

...

で次に、建設的な話。
俺らソフト屋はその「古い技術」に戻るだけじゃなくて、次を考えなきゃいけないんだよ。

イベントループ型の多重処理がなぜ速いかっていうと、単に「コンテキストスイッチが少ないから」だけなんじゃないんだよ。アプリ実装者自身が、そのアプリ固有の制約や特徴を見極めて、効率のよい「擬似スレッド」分割を考えるから(考えざるをえないから)速くなるんだよ。

でもそれは、大変なんだよ。お気楽にマルチスレッドとロックで処理するより。

しかも、古くからあるイベントループの仕組みそのままでは、せっかく安く手に入るようになった(擬似/実際あわせた)マルチコアのCPUを、使いきれない。


そこでどうするべきか:
(1)プログラマ自身に、並走していい処理と競合する処理の切り分けを考えさせるしかないんだよ。これは本質なんだ、って諦めて、渋々、嫌々、やるしかないんだよ。
(2)だけど全部では大変だから(複雑性爆発で手に負えなくなるから)、ある程度概念を区切って、一塊の処理群は必ず「単一のCPUコアで」「シングルスレッドのように」動くようにしてやらんといかんのよ。
その仕組みを今、俺らソフト屋は、作らないといけないの。分かるかい?


0315

『「30代」でやっておきたいこと』川北嘉則

半分ぐらい、同意できなかった。もしこの本を読んで90%、なるほど、と思う30代のひとがいたら、ちょっと危ない気がする。


「スティーブ・ジョブズ 神の策略」竹内 一正

ジョブズ伝記に、著者の豆知識とご高説がついてくる。ジョブズ伝記のうち、未読だったピクサーとかのところはおもしろかった。最後のほう、著者によるゲイツ批判は完全に蛇足。


「武士道セブンティーン」誉田 哲也

おもしろかったし、「武士道シックスティーン」ほど読み飛ばさず全行を読んだけど、うーん。前作のほうがインパクトあったなぁ。なんでだろ。普通におもしろかったですよ。おもしろかったんですが。


0317

アンパンが先かメルヘンが先か


「アンパンマン」が先か「詩とメルヘン」が先か、で、不覚にも私はアンパンが先だと、誤解していました。

リンク備考
アンパンマンができるまで

モラトリアム期に自己憐憫と救いの無い内省の歌を弾き語って京都市民の耳を汚していたころ、私は

タイトルにしてはダークな内容とたまにイヤミの無いエロティシズムがある大人向け絵本

を書店で見つけて、数ヶ月購読したことがあります。「詩とメルヘン」です。

編集者はアンパンマンで有名な、やなせたかし氏。

題名と裏腹の、ほの暗い表現がちりばめられていて大好きでした。投稿コーナーにて、たまに勘違いしたお花畑な投稿者がメルヘンチックな夢だけの作品を送ってくると、やなせ氏が「本書には子供っぽ過ぎる」と評していたのをよく覚えています。

私は当時、アンパンで売れたからこういう大人向けもやってみたくなって出したのか、程度に解釈していました。浅はかでした。

上記リンク先を読んで、納得。


以前、弟さんが特攻隊員だったと知って驚いたのですが、それだけでは片手落ちというか。
また、「手のひらを太陽に」もやなせ氏の作詞とのこと、不勉強にて知りませんでした。

自分、修行が足りないです。

そして

ネットを徘徊してこんなところへたどり着きました。

リンク備考
ナターシャ グジー さん演奏 いつも何度でも

現実が言葉に説得力を与えます。ハープのようなリュートのような不思議な楽器。美しいです。琴線に触れるとはこういうことだろうか。

東電と政府には慎重かつ正確な情報公開をお願いしたい… 枝野首相 頑張れ、超頑張れ

0320

自宅のメインPCは現在、
nVidia GTS8600 - Matrox DH2G で、2枚モニタで 2560 x 1024 にしている。

WindowsXPでは完璧に動作している。

Fedora14のGnomeでもだいたいうまく動いているのだが、Fedoraだと、まれに(emacsを起動したときが多い)、2画面のうち右側画面のさらに右半分くらいがおかしくなる。
なんでだろ。

以前は同じビデオカード - Matrox TH2G で3枚モニタにしていたのだが、WindowsXPでは完璧、Fedoraではまともに起動しなかった。

うーむ。Linuxの場合は、っていうか今なら、ATi(AMD)のRadeon系のビデオカードのほうがいいのかな。

メモリが足りない? 4GBさしてるけど、32bitのFedoraだから3Gの壁に当たってるから、もしかしたら64bit版で動かしたら改善したりして?

[keizo@haze2 ~]$ free
             total       used       free      shared    buffers     cached
Mem:       3096472    1040688    2055784          0      43784     635980
-/+ buffers/cache:     360924    2735548
Swap:      5177340          0    5177340



iBus-Anthyで常に半角スペースを入力するようにした。→tips:iBus-Anthyで常に半角spc
元ネタはubuntuの掲示板。



うぅぅ、なんか胃が痛い...
子供、嫁さんに続き腹に来るウィルスにやられたかも?

0412

google の検索で1位になると、なんかうれしい。

1語検索で1位だったら文句なくうれしいのだが、自分はまだ未経験。

2語検索で、以前から上位だったのは "word uml" ですが、最近は "C# テトリス" でも割と上位に入るみたいです。
うれしいです。

WordでUML、というと、ネコ社長のことを思い出します。
ネコ社長、仙台は無事でしょうか。ひっそりと心配しています。


あー、思い出した。自分の造語なら、1語検索で1位に入ってました。
「ハノイタワーチャート」
です。

最近はHTML5が速いから、canvasで再実装してみようかな。javaアプレットのソース、どっかいっちゃったのよねん。


0414

うーん、
若い人を育てるには、つたなくても面白いね、って言ってあげる大人が必要だ、ってこと?
=>wiae9 basic の記事

なんかゲームじゃないし、この子を推す意図を図りかねるな。中途半端な感想。
再帰下降法からスタートならまだしも


0422

降れば土砂降り。

もう少しどうにかしたい。

0505

電力云々でエアコン控えようとか言ってるが、そもそもオフィスでの夏の冷房は異常。
スーツにネクタイの奴に合わせるとか頭おかしい。

大体28度設定で暑いとか言ってるやつ、環境に文句言う前に、ちゃんとスポーツしてんのかと問いたい。お前の発汗機能が壊れてるだけじゃねぇのかと。

自衛のため暖かい格好をしても、トイレにいったり、昼休みに食堂に行ったりすると温度差で自律神経やられる。

因果関係の立証は困難ですが去年の夏には、普通に歩けないほど肩が痛くなり、注射+座薬でも収まらないという経験をしました。


別の話だが、店舗で機密性のないところでガンガン冷やしてるやつ、熱力学の第二法則も知らんのかこのクソボケ、と問いたい。

震災をきっかけとして今年、そして来年以降も冷房が弱くなることを期待します。

0508

ベルトコンベア方式

トランザクション=入力と出力データを保持できるコンテナ。
各機能がベルトコンベア上の部品を処理するようにトランザクションを少しずつ加工し、最終的に出力データが出来上がる。
何かが入ると何かが出て行くような、パイプみたいな処理、ルーターみたいな処理に向く。非同期処理に強い。単純なオブジェクトモデルに向く。


オブジェクトモデルAPIパターン

処理対象である実物が、多層的な1:M関係や、N:M関係を持っている。
ある実物をあらわすオブジェクトを定義する。
階層構造の上位オブジェクトが、その下位オブジェクトを保持しており、ちょうだいっていうと、ほれ、ってくれる。
複雑なオブジェクト構造を持つものとか、同期通信とか、すべてのオブジェクトがメモリ上にあって高速に応答できるような場合に向く。MS-Officeのプログラミングとか。


で、非同期でかつ複雑なオブジェクトモデルを扱おうとしたら、どうしたらよかろうね、って話。


ふむ。
通信部分を、今作ってるモノの1コンポーネントと位置づけるか、1個基礎よりのレイヤと位置づけるかで変わってくる。

ベルトコンベア方式だとこうかな
        ----------------
        |プロセスメイン
   ----------------------------
   |通信処理| 業務ロジック処理| データ管理
--------------------------------
|基盤(IPレイヤ、OSストレージ等)
--------------------------------

オブジェクトモデルAPIパターンだとこうかな。
        ----------------
        |プロセスメイン
   ----------------------------
   | 業務ロジック処理(メモリデータを含む)
--------------------------------
|通信処理     永続データ
--------------------------------
|基盤(IPレイヤ、OSストレージ等)
--------------------------------

んで、メモリデータの操作は、オブジェクトAPIにする。しかも非同期な通信だと、戻りがすぐに返ってこなくて、コールバック方式のやつになる。


何を言ってるんだか、ワケ分からんでしょうけど、自分の中ではなんとなく整理できそう。


0509

ちびっ子は猛烈な速度で学習しています。
3つ子の魂100までなんていいます。

そこでもうすぐ3歳のわが子に、エルシャダイのPVを見せてみました。すると...

だいじょぶだ、もんだいない

などと、期待通りにつぶやいてくれました。

やっぱりあのPVはインパクトあるし記憶に残るいいPVだなぁ。
社会不適合者で会社組織からはみ出して個人事業なんぞをやってる身には、

「人が持つ唯一絶対の力、それは自らの意思で進むべき道を、選択することだ」

なんていわれると、勝手に解釈してぐっと来てしまうんですよ。
自分を鼓舞するために何回も見てます。

でもあながち誤解釈でもないように思うんですよね。なにかのインタビュー記事で、作者氏が、あの台詞は「会社設立後、自分に何度も言い聞かせていた言葉で」「意図的に印象に残るよう作成した」とおっしゃっていたように記憶しています。

大丈夫だ、問題ない。大丈夫だ、問題ない。大丈夫だ、…


0511

3to7 というサイトをつくったらどうだろうか。

通勤電車でひらめくことってよくあるじゃんね。
でも空中で考えてるだけじゃなくて、メモとか、視覚に落とすとますますひらめく。


物事を整理すると、○○とはつまり、aaa、bbb、ccc、ddd、eee だ、なんていうことになる。

3個から5個程度だと、みんななんとなく納得する。それ未満でも超でも、ただの羅列。
だけど利便性をとって7個までは可。

これを、エバーノートみたいにメモできる。
箱と矢印。

箱は、スマートフォン上だとテキストボックス。

スマートフォンは画面が限られている。んだけど、

       周りにあるもの1
              |
            中心にあるもの
            /     \
     周りにあるもの2
                   \
                周りにあるもの3

なんていう風に行を変えつつ左右交互にアラインして書いてくと、上5個、下5個くらいまではかけるような気がする。

んでも、2個とか、8個以上だったらセーブできない。3個以上、7個以下だったらセーブできる。


他人が作った「○○とは」を見れる。

構成品(周りに書く言葉)と
構造体(中心に書く言葉)は
多層的にリンク。


自分のブログサイトのURLを登録できる。サーバは登録されたURLの単語分布を勝手に拾ってる。自分のブログサイトによく出てくる単語は、IME補完ですぐ書き込みできる。



            Love
              |
            Beatles
            /     \
        Peace      \
                  Understanding

で、ビートルズは愛と平和と共感から成る、と読む。


クライアントはIMAP4のクライアントを実装しており、Gmailからも透過的に見える。なので、会社についてからコピペが簡単。


なんてね。
こんなサイトがあったらオレがうれしいです。


0513

メモ。
http://www.anlyznews.com/2011/02/nodejs.html

前半部分、簡潔で、非常に秀逸。
後半部分、著者様の分析や感想に関しては、異論がある。

端的に書くと...

『俺はそんなに高性能じゃなくていいよ、いままでのマルチスレッドモデルでたかだか1000クライアントでアップアップしながらやりたい』と読める。それならそうすればよし。

それは、そもそもnode.jsが解決しようとしている問題自体が、自分には不要だっていうことなので、それならそれでいいと思います。

node.jsがやっている手法が、特定の高性能を要求される場面で役に立つのは、実証例がある。IPインフュージョンの石黒さんがZebOSで高性能ルータを商品化している。

イベントドリブンモデルが高性能で強みを発揮できるのは、1トランザクションがわりと短時間で、すごく多数のトランザクションが発生するようなシステム。つまりそれは、ルータとかそういうもの。
旅券発行システムとか、1ユーザがロックして1時間とかそういうのは向かない。
なので、
「node.js等のシステムが、どのようなターゲットのどのような問題を解決しようとして登場したものなのか、が、上記サイトの主さんのような聡明なかたにも、まだあまり認知されていない」
のだと思う。

あとでまた。

0516

node.jsについて思うこと

ソフトウェア構築のノウハウがまた一つ、進歩したのだと思う。
「第二次イベントドリブンブーム」と名前をつけたい。
つまり、呼ぶ側、呼ばれる側、の意識の転換が、また一つ進んだ。



10年以上前に起こった、呼ぶ側、呼ばれる側の転換:第一次イベントドリブンブーム

これが
             ユーティリティの利用
                  ->
ユーザプログラム ---- OS、ライブラリ
こうなった。
             イベント通知
                  <-
ユーザプログラム ---- OS、ライブラリ

今起こっている、呼ぶ側、呼ばれる側の転換:言うなれば「第二次イベントドリブンブーム」

これが
             ユーティリティの利用
                   ->
ユーザプログラムA ---- ユーザプログラムB(共通ライブラリ等)
こうなってきてる。
              コールバック登録
                   ->
ユーザプログラムA ---- ユーザプログラムB
                   <-
              イベントor完了通知

要は、「基盤ライブラリ」対「アプリ」の考え方で、アプリは相変わらずのんべんだらりとあたまから実行するスタイルが残っていたのに対して、最近はいよいよ、アプリのつくりも、コールバックを登録するようなAPIスタイルが流行り始めている、と。

かつ、コールバック スパゲッティにしないために... 例えば M-V-VM パターンを推奨している人たちは、
  • コマンドパターン
  • オブザーバパターン
を使っている。



関数を呼ぶ、呼ばれるの関係が、ある程度複雑になるのは、(実行速度の頭打ちという)問題を解決するのに必要な複雑性である、と思う。

その次の話として、依存関係までを複雑なスパゲッティにしないために、M-V-VMパターンではオブザーバパターンを使っている、と理解している。

オブザーバパターン:
オブザーバとは、直訳すると監視者。

オブザーバ基底クラス      サブジェクト基底クラス
================          -----------------  
データ変更したよ通知()      通知先リスト
                          -----------------
                          +ワタシに連絡してね登録()
                          #変更したから連絡するよ()
      △                     △
      |                      |
 画面描画用のクラス    1画面分のデータを保持するクラス
                       ---------------------
                       データA
                       データB
                       ---------------------
                       データのGetメソッド()

これまで普通に作ってた3層アプリだと、

画面描画用のクラス <---- 業務ロジッククラス ----> データ管理のクラス

と、業務ロジッククラスがデータと画面を呼ぶ(相手が公開している処理を利用する)つくりになってた。だけどこれだと、業務ロジックが画面とデータの双方に依存するので、画面とデータの変更に、業務ロジックがヘコヘコ頭下げて追随する構造になる。

なので仕様変更の手順は
1)データを変更
2)画面を変更
3)業務ロジックを変更
となる。

画面と業務ロジックの間の依存関係を逆転させるために、オブザーバパターンを使う。依存関係は
画面描画用のクラス ----> 業務ロジッククラス ----> データ管理のクラス
となり、仕様変更の手順が
1)データを変更
2)業務ロジックを変更
3)画面を変更
と、1直線になる。

つまりソフトウェア的な工夫をすることで、コンポーネント間の強弱関係っていうか、依存関係が、すこしすっきりする。



オブザーバパターンで、かつ命令を適切に伝えるために、コマンドパターンが必要になる、と理解している。

コマンドパターン:

命令のデータ化。関数の名前で処理を分けるところからもう一歩冗長化して、データの先頭が命令であるようにする。
んで、よくあるのは、そのデータ構造をリンクリスト状に数珠繋ぎにできるようにして、マルチステートメントも可能にすることだけど、それはどっちかというと枝葉。

まだこの辺未整理。




ハドソンだかジェンキンスだか

ビルド管理システムの新しいやつが流行ってるらしい。
ハドソンという名前だったのが、商標だかの問題で ジェンキンスになったとか。

どっちも微妙な固有名だ...。




推理小説

うーん、柚木草平シリーズの新しいやつ出てたのか。
しかも娘さんが事件に巻き込まれとるらしい...

読みたいような、少し離れたいような。


ふと思ったが、柚木草平シリーズって、男はつらいよと構造が似てる気がする。もちろん全然違うんだけど、ちょっと似てる。

世間では「ぼくなつ」っていうとゲームのアレだと思うんだが、自分にとっては「ぼくなつ」は樋口有介氏。

やっぱちょっと本屋行ってこよう。

0517

こころにうつりゆくよしなしごと


(1)
固定文字列を考えなしに#defineしないで欲しい。

他人のC/C++のプログラムをメンテしていて、たった1箇所でしか使わないのに
固定文字列を #define で定義しているものに出会うことがある。

意味無くね?

固定文字列で書いてあればその場で読めるんだぜ?
#define してあったら、調べるのに手間かかるじゃん。
そのわずかなストレスがプログラマ(主にオレ)のちっちぇヒープを浪費するんだ。
頼むからやめてくれないか。

例えば、数値定数でぱっと見て根拠が分からなくなりそうなものは、名前をつける意味で
#define してもいいと思う。んでも、それだって static const でよくね?
あるいは、static にする意味もなくて、単にスタック上にconstにしたほうが
速度上も(アドレスが近いから)有利なんじゃね?

とにかく、何も考えないで#defineするのやめようぜ。



(2)
文字列渡しのインタフェースは意外と使える。

C/C++が好きな人は、文字列渡しを嫌がって、enumを定義したがる。
文字列って意外と使えるよ。関数呼び出しのときはポインタ渡すだけで
済むしさ。ソフトウェアの歴史において、再利用が最もうまくいった例は、
パイプなんだぜ。アレって要は、文字列が渡るstdin/stdoutだけを定義しておけば
あとは若い二人で、あんなことやらこんなことやら何でもどうぞってこった。

SUNのRPCも、DCEのRPCも、CORBAも、DCOMも、結局あんまし爆発ヒットしなかったじゃん。
それに比べて、昨今のHTMLとか、JSONの大流行はどうよ。

文字列渡しも、意外と速いよ。

node.jsでも、socket.on('write',コールバック)なんていう風に、文字列渡しをうまく使ってるみたいだよ。

リンク備考
Node.jsとは何か、開発者ライアン・ダール氏が語る(後編)- Publickey


(3)
perlとか、phpとかでオブジェクト指向風のプログラミングを行うときに、
先人たちが考えたのは

連想配列 が オブジェクトだ ってことにしてしまおう

ということ。


でもjavascriptなんかもっとすごいね。
関数と連想配列とオブジェクトがみんな同じ概念で横に並んでる。

神林長平さんが「わたしを生んだのは姉だった。姉は私をかわいがってくれた。
姉にとって私はただ一人の息子であり、大切な弟だった」とかなんとか、
ホフスタッターもびっくりな面白い文を元ネタに、すごく面白い本を一冊書いてたけど、
javascriptも、ある意味ギリシャ神話にも負けない親子兄弟関係を内包する言語だと思う。

「オレの兄ちゃんはオブジェクトで、その定義は関数なんだ。
オレの姉貴は配列で、オレの弟は構造体だ。
分かるかな~、ワカンネェだろうな~、イェーイ」

おっと、結論から遠くなるといけねぇ。連想配列、使おうぜ。
Cが大好きな良い子の諸君は、2段階くらいのリンクリストでオープンハッシュして、僕と握手。

リンク備考
神林長平 - 言壺近未来のニューロコンピュータと言葉遊びでバトルするSF

...
わけ分からんよね。すみません。いろいろやられてます。

で、次


で次の話。

以前の仕事で、パケットデータがベルトコンベアみたいに
プログラムの猛者たちの間を通り抜けていく、っていう
構造でプログラムしたことがある。

そのとき、運び屋クラスを「通信アクション」っていう意味で
Transaction って名づけた。


通信アクション    //トランザクション
--------------------
入力バッファ      //イングレス
出力バッファ      //イーグレス
入力データ構造体  //リクエスト
出力データ構造体  //レスポンス
--------------------

こんなクラスにしてさ。各プログラムがこいつを引き渡していく。
  • Aさんが「入力バッファ」のパケットをアタマから解析して「入力データ構造体」を設定
  • Bさんが「入力データ構造体」を読んで「出力データ構造体」を設定
  • Cさんが「出力データ構造体」を読んで、出力バッファのケツからパケット設定

それでレイヤも多重にできるようにしたっけね。

で、今までさ、つよい型づけの言語が流行ってたさ。んでも今さ、
何度目か知らんけどまたjavascripみたいなvariant型の言語がキテルね。

上記みたいな、トランザクション構造体なんか、javascriptにぴったりなんじゃないかと
思うのよね。


まあそれで、またちょっと観点変わるんスけど、
javascripでLindaって、相性いいんじゃないすかね。
増井さま連載終了されたそうで、お手すきでしたら作ってくださらないかなぁと。全力で普及します。
(オマエがやれ?ぇぇ、そうですね)



0518

重い腰を上げてboost spiritに挑戦中

0519

コンパイル時間長いなー、スピリット。

0521

お気に入りキーワード増えました。sleep sort。ちょっと笑える

けど、まじめに考えると、オイラの考える"order by 発想転換論"(sortはクライアントで、随時やろうぜ)にもつながる。

二日酔いが抜けたらちょっとやってみようか...

0526

2ヵ月ほぼ最終退出でしたが今日は定時あがり。
なんだよ帰宅ラッシュかよ とか言いながら顔がにやけます。
定時あがりだと電車に綺麗な女性がたくさんいるので、オッサンはとても嬉しい。


0528

あれー?
Solid ってIBMに買収されてたんだ?

2008年...
うかつにも気づかなかった...

0529

やっぱりモニターは三菱が一番なんじゃないか。
1280x1024 3画面化するときに I-O DATA のアナログモニタを選び、自分の失敗を認めたくないためにいろいろと工夫してみたのだが、やはり

安物買いの銭失い

だったようだ。

以前から、職場でI-O Dataのモニタはゴーストが多いなぁ、という印象を持っていたのだが、公式ページには画像を改善したとか書いてあって、「ひょっとしたら良くなっているかも」と思ってポチってしまった。

甘かった。

I-O DATAのモニタは、以前の印象と変わらず、ゴーストで読みにくい。
次に買うときはデジタルだろうけど、I-O DATAのモニタは二度と買わないことにする。

なんでもアナログモニタは端子部分で高周波を反射してしまって、ゴーストが出るらしい。それを消すのにコストがかかるんだろうね。

EIZOもあんまりいい印象ない。

MITSUBISHIのモニタは、高いけど、結局長く使える。ダイアモンドクリスタの17インチ液晶、無理して買った覚えがあるこいつは、ドット欠けが出るくらい使い倒してるが、まだ現役で使える。

次にモニタ買う機会があったら必ずMITSUBISHIに戻るぞ、と。

0530

boost::spirit のドキュメントは、英語であることを差し引いても公式が一番分かりやすいかも。

0601

案件1個終わったー。

近年まれに見る“大変だったけど自分も得する案件“でした。IMAPのコマンドも大分覚えたし、作品のアイデアも沸いて来ました。

いつもこうならつらくても頑張れるのに。




0604

環境は人の成長に影響する。
人も環境に影響を及ぼす。

ころころ現場を変わるのは、大変っちゃぁ大変だけど、勉強になる。

いろんな職場にいろんなひとがいて、そこから学ぶことも多い。


0611

「カンブリア宮殿」という番組で はなまる学習会 という、首都圏で人気の低学年向け学習塾について取り上げていた。とても興味深い内容だった。

私は、子供との接し方がいまひとつ分からない。自分の子供だけでなく、子供全般の話。私は、子供に対して、「は~いナントカちゃ~ん、」などと子供扱いする大人を好きになれない。自分が子供のとき、そうされることはとても嫌だった。そうかといって、大人と同じように、特に職場の部下と同じように厳しく接するのもおかしい。ほめる、励ます、しかる、ふれることはとても大事だと思う。

はなまる学習会の高濱正伸さんは、「子供との接し方」がとても上手であるように見えた。その点だけでも、尊敬できる方だと思った。馴れ合うのではなく、甘やかすのではなく、突き放すのでも当然なく、接して、ほめる、励ます。うーん。自分が難しく考えすぎなのかな。いや、それを自然に高レベルでできるという、稀有な力がある方なんじゃないかと思う。

その、子供たちと上手に接する力を持っていて、かつ、親たちや教育界に対してとても真摯に分析しておられるように感じた。

はなまる学習会の目標について、分かりやすい言葉で表現すると「メシが食える大人に育てる」ことだそうだ。世の中は変わっていく。社会では初めて見る問題ばかり。そこで、「おっと、これは初めて見る問題だぞ、まてまて… そうだ!こうすればいい!」と考えられるようになって欲しいと。そのためには、【考えて「できた!」という快感】を教えてあげることだと。

とても興味深い取り組みをされていると思う。


さて、自分が今「メシが食える大人」であるかどうかは…この1年の状況を考えるとちょっと自信喪失してしまうが、自分でメシを食おうとしていることに関しては、独立以来10年食えていたこともあり、そのとおりだ、と言える。また、ソフトウェアのクラス設計というか、コンポーネントの構成設計を「できた!」と思う瞬間の快感は、言われてみればかなり強い動機づけを与えるものだと思う。

でも、いろんな意味で「食っていける、大人な」プログラマになるための方法は、「できた!」の快感だけではないような気がする。

自分の場合、技術に関しては「幼いころから接した絶対時間」貯金によって、コンピュータに触れること自体が次の技術を勉強する動機にもなる、というサイクルができた。なので、技術に関しては、少なくとも一人前になるまで(=1年のプロジェクトで5キロ10キロを分担できるようになるまで)は、そこそこ順調だった。

「食える」状態を維持するために難しかったのはむしろ、技術ではなかったように思う。これは、ある社長さんから指摘されたことではっきり認識したことなんだけども。上に立っているひとのその立場を尊重するとか、分をわきまえるとか、政治的に落としどころを用意した上でハナシをするとか、そういう「泥臭い」知識を身につけることが必要だったように思う。そして、今もそれで苦しんでいる。

まだ出口は見えないけど、出口のありそうな向きは考えていて、少しずつ進んではいますよ。メシが食える大人であるために。


0612

あれ?
HTML <input> の textarea がリサイズできるぞ?
いつからだろう?



良いワーム、悪いワーム、普通のワーム


高木先生の日記を見たものの、あんまり理解できていない私。ウィルス作成罪とか、ソフトウェア特許/数学特許の問題とか、法律関係もこつこつ勉強しないとなぁ。

リンク
ウイルス罪法案、どうしてこうなった

これ、故意に悪いことをしてやろうとしてプログラムを作ることは社会悪として定義しようぜ、という試みだけど、故意に、とか、悪いこと、とかあいまいすぎて困っちゃう、という話だと思っています。

で、その点についての高木先生の日記で、
  • ワーム = 自己増殖可能
  • トロイの木馬 = 増殖するには起動が必要
と分類されているようなので、そこだけを見ての、ワタシの率直な感想を書きますと...

良いワーム って、結局作り出せないんだろうかね

ということ。

コンピュータの黎明期には、将来のコンピュータソフトやネットワークについて空想を膨らませて、「自分で考えるコンピュータ」やら、「遺伝子のような何か」を持っている、「生命のようなプログラム」の出現にワクワクする期待感があったように思います。
フジテレビあたりで深夜にやっていた番組(CMに入るときに確か「アインシュタイン」とか言っていた)で、人間が次に宇宙を作れる、つまり神になれるとしたら、それはコンピュータの世界の中ではないか、などと言っていた。
実は昨日、レンタルビデオ屋さんで「トロン レガシー」という映画を借りて観たのですが、これも、コンピュータ世界上に、人間のように活動するプログラムが生じて、社会を構成する、というハナシです。
学生のときに読んで面白いと思った書籍で、ちょっと思い出せないんですが、パラサイトイブと同時期に出版された本で、「四肢に不自由を持つ天才プログラマが、コンピュータ上にワームを生み出した」というハナシがあって、たいへん興味ぶかく読みました。


ところが、2011年の現在、「良いワーム」というものは開発されていませんね。

どんなSF作品でも、だいたい「自律性や自己増殖能力を備えたコンピュータプログラム/システム」は、人間にとって都合の悪い動作をする、ことになります。ウォーゲーム、ターミネーター、ロボコップ、...

SF作家の皆さん、SFでのコンピュータの役割って、この線で確定してしまうのでしょうかね。


甲殻機動隊の士郎正宗さんは、もうすこし中立的な視点で描かれているような、気がします。つまり、コンピュータシステムやプログラムを、猥雑で、いいこともわるいことも両方あって、それを当たり前として人間が関わっている世界、を描いているような気がします。


突飛ですが、昔、萩本欣一さんがホストを勤めたテレビ番組で、
「良い子、悪い子、ふつうの子」
というコーナーがありました。
萩本さんのこれまでの活動、今の野球活動をなんとなく聞き知る限り、彼は性善説と性悪説とどっちを信じるか、と聞かれたら、彼独自の言葉で、そういう質問をすること自体を戒めながら、信じることの大事さを解くのではないか、と勝手に妄想してしまう。


なんか整理できないですけど、悪いワームと同程度にいいワームも登場して均衡して欲しいという期待を持っています。


0616

調べ物をしていて、えーと、glib では チャンク の仕組みがあったよなーなどとググッたら、自分のページが出来てきました。

リンク
+ GLibメモ

んで、ほうほう、などと記憶を思い出しながら読んでいたのですが、

(図を入れる)

などというやる気のない記述が2箇所あってガックリ。

んで、1箇所は更新しました。


しかし自分にしか分からないページであることには変わりなかった...

0622

アイデアメモ。
文字でもグラフィックでも返せるコマンドシェル、についてのアイデアメモ。

zebraの例


zebraという、CISCOルータのようなソフトウェアルータを作れるソフトがあります。これは本当に良く出来ているソフト。商用版はZebOSなんだけど、基本思想はzebraでできあがってるので、今日の話ではとくに区別しません...。

ルーティングプロトコルは複数ある(ripとかbgpとか)ので、プロトコルによってデーモンを複数に分割している。
それぞれのプロトコルデーモンは、CISCOルータのようなコマンドをそれぞれ(専用のTCPポート番号で)受けることができるんだけど、CISCOルータでは、いろんなプロトコルのコマンドを、別にtelnetしなおさなくても打てる。
zebraでも、複数のデーモンに役割分担されているコマンド群を、一括して引き受けてくれるシェルデーモンがいる。


1.1 のコマンドが、デーモンXの分担である場合、
1.2 には 1.1 と同じ内容が流れます。
2.1 デーモンXは、コマンドの処理を実行し、コマンドの応答をシェルデーモンに返す。
2.2 シェルデーモンは、それをそのままクライアントへ返す。

コマンドがYの分担のものだった場合、XでなくYへ流れて以下同様。

ここまでが前提のハナシ。

ええと、続きはこっちに書きました...
+ 文字でもグラフィックでも返せるコマンドシェル


0624

議事録の件、頑張って要約したつもりだったんだけど
まだ途中経過が多いと指摘を頂きましたよ。

本質を見抜く訓練は、一生必要みたいです。

本日は実に楽しいお酒でした。


皆で歳をとって、仕事を持って、生きていく。
明日の自分が笑える様に、頑張って行きましょう。


0625

今井食堂のサバ煮定食を食べたい。

0626

日本の学校給食が海外で話題になってたそうです。

リンク備考
らばQ - 海外で衝撃「日本の給食はなんて健康そうなんだ!」

この中で出てくる「ジェイミーのスクールディナー」、ツタヤさんのレンタルで見ましたが、よいです。
でも回転率が悪いからなのか、今はもうなくなってしまいました。

ツタヤの社長さんへ届くといいな:
私は学生時代には(FCの店だけど)ツタヤさんでアルバイトをさせてもらっていました。
親になるとまた、視点が変わりますが、便利に利用させてもらっています。
いまや全国にこれだけあるツタヤ店舗は、市民が手軽に使えるビデオライブラリーっていうか、もはや私立の図書館になっているとおもうんですよ。
よく回転する娯楽コンテンツが大事なのは分かりますが、それだけでなく、ツタヤ社長として若い世代に伝えたい作品を、店舗においてください。
「ジェイミーのスクールディナー」は、撤去して欲しくなかった作品の一つでしたよ。

ま、ニッチな作品はツタヤオンラインでカバー、なのかな。

0708

だいぶ前の話。ビリージョエルが In The River Of Dreams を作ったときの話を取材したドキュメンタリー番組を、NHKで放送していた。たまたまソレを録画して、観た。大変よい内容だった。


音楽学校で講演をするシーンがあり、学生からの「転機になったと思う曲は?」
の問いに、彼は うーん、あー、Summer, Highland Falls だと答えて、弾き語りで歌いだした。

僕は、それまでビリージョエルを熱心に聴いていなかったことを後悔するぐらい、電流が体に走ったかのように、その曲にいたく感動した。

「いい時代じゃない、と皆は言う。でも僕が知っているのはこの時代だけだ」


…そのシーンがあまりに印象的だったので、曲が収録されているアルバムを調べてCDを買ったが、実は、彼が若いときの録音は、あまり好きになれなかった。くだんのドキュメンタリーでの演奏がとてもすばらしいと感じた。

なぜだか分からない。

ビリージョエルは若いときの録音より、年をとってからのほうがすばらしいと、僕は思う。なぜだか分からないけれど、僕はそう思う。

リンク備考
Billy Joel - "Summer, Highland Falls"


はなまる学習会の高浜さんの言葉が去来する。

あなたに合う場所なんか、何処にもないよ。
あなたがそこへ行って、あなたがそこを良くする事しか出来ないんだよ。


先日Webページで見た、欽ちゃんが言ったというコトバ。

嫌な仕事しか、来ないよ。でも、チャンスはそこにしかない。


今の現場には問題が山積しています。
昔なら、とっくに飛び出しているような環境でも、歳をとったせいか、困難の一つひとつがとても大事なことのように思える。そして、今の自分ならそこにある大事なことを、若い子に教えてあげられるような気がする。

オッサンになったねぇ。オイラも。



本日もほぼ終電近くで帰ったわけですが、電車内の広告が「タフマン」でジャックされていました。
アメコミ風な表現で、普通の人々のふつうの優しさをたたえる内容でした。
ちょっと感動しました。



先週末、ちびっ子と、「海賊戦隊ゴーカイジャー」の映画を観て来ました。
アクションシーンがたくさんあって、武術好きにも楽しめる内容でしたが、それより何より、映画のテーマが(こてこてながら)「頑張ろうと思う心」「諦めたらそこで終わりだ」的な内容で、とてもいい時間を家族で過ごせました。

ゴーカイジャーいいですよ。
ゴレンジャーにまでさかのぼって引用することで、石ノ森先生のご遺族に、多少なりともお金が流れるようになっている。

そしてテーマソングでは「やりたいことをやってやれ、道なき道を行け」といわれ、

挙句には、古谷徹さんに アムロの声で

「君が諦めたのでは、手に入らないぞ」

とか言われたら、頑張るしかないじゃないですか。
えぇ、頑張りますよ、明日も。
ボクが諦めたのでは、手に入らないですからね。


0715

あ...ありのまま今日起こった事を話すぜ

1つのプロセスの中に、外部からのイベント受信で起動されるコールバック関数が複数ある。
この設計で、コールバック関数の数だけ そのプロセスの設計書を書けと言われ、固まってしまった。
何を言っているのか意味が分からないとおもうが、私も分からない。

頭がどうにかなりそうだった…

烏合の衆だとかド素人だとか、そんなちゃちなもんじゃぁ 断じてねぇ

もっと恐ろしいものの片鱗を味わったぜ...

0716

楽天booksで
「ハッカーと画家」
「月は無慈悲な夜の女王」
「窓の外は向日葵の畑」
をポチりました。

0718

最近は横浜から東海道に乗って現場に通っています。
毎朝、横浜駅の南口から入って、東海道線のホームに上がるエスカレータ付近で

"ゆっくり"がアナウンスをしている

ような気がするんだが、真偽のほどはどうなんだろう。
だれか知っていたら教えてください。

0723

コンピュータシステム屋さんとしてのイメージ喚起力について。

「ハッカーと画家」読みかけです。この本には、いわゆる天才系のプログラマの話が書いてあって、面白い。んで、この本のひとも、下記のリンクの記事のひともそうなんだけど、やっぱり天才系のひとは脳内のイメージ喚起力がすごいなと思う。

リンク備考
[脳内プログラミングのススメ 1/2] 「キータッチの速さ?無意味だ」UEIの水野CTOが断じるワケエンジニアtype

記事によると、「そろばんをイメージして暗算するのと同じで、アタマの中でPCを起動し、エディタを開き、hoge って入力してみる。ディスプレイに hoge って出たら成功」とある。

そろばんと同じか、うーむ。そう言われると、もしかしたら、訓練すれば自分でも、いつかはできるようになるんじゃないか、って思ったりする。


あるとき、身近にいた天才系のハッカーが「映像やイメージで脳内にモノを置くのが大事なんだぜ」と言っていた。そのとおりだと思った。で、「図解」のHowTo本を買って練習したこともあった。いまいち身についてないけど、今でもそこは頑張りたいと思っている。

改めて考えを整理してみると、私も「システムを理解するには 役者 と 台詞 を把握だ」と日々、自分に言い聞かせている。
コンピュータシステムってのは、個々のプロセスなりサーバなりのシステム要素がメッセージを交換して、大きな仕事をやり遂げるわけだけど、ドカタとして新しい現場に入り、そのシステム全体が一体なんなのか、というのを最初の1週間、1ヶ月で把握するのに、舞台役者が丁々発止でやり合っている舞台のイメージを浮かべながらドキュメントを読むようにしている。

あるシステムがあって、これは何なのか、を理解することは、ある芝居があって、一体この芝居は何がテーマで、誰に、何を伝えたいものなのか、を理解するのと一緒だと思う、ということ。

あと、箱と矢印の図を描くときに、私はよく箱に顔を描くわけだが、顔を描いてキャラクター化して、現実に近いモノの例え(メタファ)として脳内に構成しようとしているから、といえなくもない。


話題がちょっと違うけど、いわゆる「できるビジネスマン」は、その日に他人と会う打ち合わせや、チームメンバに自分が行う説明会を、通勤中の電車の中、脳内で早送りで実施しているのかな、とも思った。


自分はどっちかというと、天才系の仕事方法は無理と思ってたけど、諦めず脳を鍛えることを続けて行きたいと思いましたよ。
まずは脳内PCでHello Worldプログラムを実行してみるところから、かな。


// 全くの蛇足だが、「システムを芝居でイメージ」しているときには、なぜか役所広司さんがよくキャスティングされている。私は役所さん時代の「ガイアの夜明け」の小芝居のシーンが大好きだったのだなぁと、いま気づいた。


0724

自分の常識は、他人の非常識。
他人の常識は、自分の非常識。


なんか、今回の現場は、悪い意味でびっくりすることが多くて
精神がやられます。


可変長データを扱う共通ライブラリがなくて、
あるのはカンマ区切り文字列を操作(追加、挿入、削除)する関数だったり。

基本的に、オブジェクト手法を分かってるひとがほとんどいないレガシーなメンバーが多い状況で
「割り切って構造化手法で開発したい」のか「オブジェクト手法で開発したい」のかも
考えが統一してなかったり。

回りのメンバーも、前提知識や実力が、バラバラもバラバラ。
もうね、...



また体調おかしくなるかも。

0729

「ハッカーと画家」読んでいると、自分が設定していた問題が間違っていたか?と分からなくなる。


あるプロジェクトが終わって1年以上経ってから、生産性はあなたがトップでしたよ、と聞かされたことがある。でも、その人の奥歯に物が挟まった様な言い方から、あぁ、自分は何かやらかしたんだな、と悟って、微妙な気持ちになった。

その後ある社長に言われて軽く衝撃を受けたこと。
「ほとんどのフリーランスは、実際にはただのフリーターだ。あなたは技術を伸ばしたいと言うが、実はあなたに今求められているのは、この人には常識が通じないなと思われない事ではないか」と。
猛省しました。

そして、非常識と思われないよう自分の行動を省みることにしたわけですが、はて。




「ハッカーと画家」には、普通のひとが使わないツールを使えとか、書いてある。そしてそれは、以前の自分が目指していたことだったことを、思い出した。

発想豊かな人物であるには、思考を自由に、そしてちょっとだけ変人であることを恐れずにいろ、と。

たしか、「2+2を5にする発想」(講談社ブルーバックス)で読んだのだと思う。
「2+2」を5にする発想―創造力を呼び覚ませ! (ブルーバックス) [新書]


私が出た渋谷幕張という高校は、いつの間にか千葉県でトップの偏差値になってしまったようなのですが、私が入ったころは今ほどレベルが高くなかった。そして、海外留学に熱心な、そこそこレベルで、文武両道の学校といわれていた。
実際入ってみると、自由な校風があり、そして何より「ちょっとアタマがよくて、ちょっと変わった、面白いヤツ」がたくさん居ました。そんなクラスメイトに刺激を受けて、自分も頑張りましたよ。
私は8歳からプログラミング初めてたけど、ある程度まともなものを1本書けたのは、高校に入ってからだったし。k-compilerでテトリスをつくったんですよ。今となっては思い出せない超スパゲッティプログラムだったけど。あと、空手道部に在籍し、団体型で県優勝し南関東大会まで行きました。プログラムと武道が好きなのは昔からってことだなぁ。

で、ね。昔は「ちょっと変わった面白いやつ」を目指していたことを、まざまざと思い出させられましたよ、「ハッカーと画家」を読んで。


人は人、自分の姿勢はしっかり自分で保たなければいかんのだが、はて、と

常識の通じる大人なシステム屋を目指してよかったのか、
常識を超える位置のハッカーを目指してたんじゃなかったのかと。


それでふと思った。ここのサイト名(Adult-Oriented Punk!)からして、大人とガキの間の、自分に都合の良い位置を得たいという安易な想いがあったんだろうかな、と。




今、自分はドカタ産業の末端にいるわけですよ。指揮命令権のない、お金の流れ的にはとなりの位置にいる、別の協力会社員の指導をなぜかしながら、そして正社員リーダの代役をやりながら、自分のタスクが終わらないので徹夜で作業をこなしていたりするわけですよ。なんでこうなったんだろう、と、タスクの切り出しとかいろんな失敗を反省するわけですが、そんな「似非サラリーマン」な生活をしている場合じゃ、なくね?オレ、と。



0801

ぐぁぁぁ

あああああああああああああ


これでいいのか、いいのか?


0807

樋口有介氏「窓の外は向日葵の畑」読了。

良くも悪くも「ぼくと、ぼくらの夏」路線。

やはり、ミステリーのトリック云々ではなく、父子とその周りの美女たちとの軽妙な会話や、下町の細かな描写を、ニヤニヤしながら楽しむ本ですな。

0810

自分の思い通りに作るには自分のプロジェクトじゃないとだめだね。
趣味でやりますよ。

0814

他人をどうこう言う前に、自分が世界を変えろと。そうだよね。


「俺は六本木の某ベンチャーで働きますw」 とか言ってる奴はバカ

最後まで読まないとオチがわからないのでご注意を。

0828

池井戸潤 下町ロケット
樋口有介 ピース

失礼ながら、樋口さんの本が平積みされてるのを初めて見ました。

0830

なんかとても大事なことに改めて気づかされた気がする。

リンク備考
善良で空気の読める人たちがブラック企業をつくる
世の中の仕事の絶対量に対して人が多すぎるのか
Wikipedia ラッダイト運動

自分も一所懸命に「空気を読んで」ブラック環境を作っていた。世の中の大変なことを自分が背負い込むことはできないし、ソレをやったところで結局、誰も幸せにならないんだね、と気づいた。頑張ることは必ずしも正義じゃない、と。


ソフトウェア開発プロジェクトでは、マネジメント(の担当者)によって、バグ検出目標値やら、さまざまな指標値が定められる。

くだんの目標値・指標値ってのはある意味では、ある工程で、100%の仕上がりを待たずに次へ進んだほうが、全体として効率がよい、という経験則を含んでる。
単体試験工程ですべてのバグを出して、結合試験・総合試験でゼロを目指すのも非効率だし、単体試験を拙速にやって結合・総合試験で苦労するのも、非効率。「一番効率がいいどこか」を、過去の経験からエイヤで選んで、そこまでできていたら次へ進もうよ、というもの。

なんだけど、マネジメントが計画したテスト方法や手順・人数・時間数と、バグ検出目標が、あっていないことが、よくある。そういう状況で、現場のメンバーが独自の判断で休日出勤や自主的な超過残業で追加の作業をやって品質を高めてしまうようなことがあるけど、それをやってしまうと、マネジメントの失敗が数字に出てこなくなってしまう。現場の職人の行過ぎた職人根性は、プロジェクト全体でのマネジメントの失敗を隠してしまって、次のプロジェクトの投入工費の見積もりを、悪化させてしまう。

だから私は、マネジメントの計画が悪いときには、プロジェクトをコケさせることも、重要だと思う。


マネジメントの失敗をプログラマが全部背負い込むことは、ないんだよね。

その行過ぎた職人根性が、先のアノニマスダイヤリーで指摘されてる「善良な労働者がブラック環境を作り出してしまう」ということじゃないかと、思ったことですよ。


特に、
一定レベル以上のマネジメントに自分がクチを出せないような場合は。



0831

仕事でフレームワークとかプロトとかやるチャンスはJavaのほうが多い...
ということで観念してJava案件へgo

今からそんなの読んでるのかよとか言われそうだが、Struts2系やらハイバネやらいろいろ書籍購入。

RESTfulやってみたいけど今回はSOAPで確定らしい。


0915

未来のWebアプリのつくりの話。
私は、サーバ側DBは未ソートで(= "order by" を行わず)ポンポン返して、ブラウザ側で最終ソート(挿入)を行うようなつくりが増える気がしていた。カンだけど。

クライアント:こんな情報ください
サーバ:ゼロ件状態の画面返す
サーバ:クエリ開始
サーバ:ある程度範囲限定し、最終ソートは未実行でポンポン返す
クライアント:サーバから受けたデータを表に挿入する


で、ブラウザ側でのデータ操作ライブラリが実装されつつあるらしいから...

HTML5 IndexedDB
リンク備考
A Simple TODO list using HTML5 IndexedDB
IndexedDB - MDNMozilla Dev Net

予想は間違いではなかったかもしれん。急いで勉強しないと...。

futomiさん のツイートによると、Windows8 の IE10 には実装済みだそうです。
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!かも?


0920

ぐぉぉぉ

春だけじゃなく秋にも花粉で悩まされる体質になってしまった...

さらに、掌蹠膿疱症が悪化して、むちゃくちゃ痒い。

うざい、超ウザイ。



1002

家族と、箱根の彫刻の森美術館を見学しました。
以前とはいろいろと配置が変わっていた。

網を使った巨大遊具、
ポリカーボネイトを使った巨大遊具、
それから室内の遊具も、
子供たちはいい顔で楽しんでいた。

リンク備考
箱根 彫刻の森 美術館






樋口有介さんの「ピース」。まだ読み終わらない。

リンク備考
Amazon 樋口有介 ピース (文庫)

樋口さんの本にしては暗鬱とした部分が多めににじみ出ていて(だってバラバラ事件なんて、初めてでは?)、なかなか読む手が進まない。
ただ、マスターの甥っ子が、独りドライブ先で偶然出会った老人と語り合う下りは、なんか好きな感じだった。
学生のころの出来事を、思い出した。



学生のとき、ちょっとだけ自転車競技をやっていた。
高校3年の最後、私は推薦枠を使って妥協ぎみの学校選びをして、1月には受験を終えていたので、残った時間でたっぷりとアルバイトをした。バイトの目的は明確だった。ロードレーサーが欲しかったのだ。

京産大の自転車競技部は、たいしたコーチがいないのに強いという、変なクラブだった。学校のすぐ裏が自転車ツーリングにもってこいの山だし、その他にも、走る場所にはまったく困らない場所だったから、今にして思えば環境がよかったのだろう。体育会なので、平日は1日30km、水曜と土曜は100kmほど、みっちり走る。あるとき、あれは土曜だったか、福井のどこかで集団走行についていけなくなってはぐれてしまい、途方にくれたことがある。まあ走っていればなんとかなる、程度の気持ちで、実際、無事に大学まで帰り着いた。

結局、自転車競技部はやめてしまったのだが、だいぶ後になって250ccのバイクを手に入れてから、同じあたりを走り回ってみた。ずいぶん遠くまで自転車で来たもんだと、なかば呆れたのを思い出す。
知らない道で最初にさまよったときと、後でバイクで走ったときと、そのどちらも、孤独・不安と、自由・気楽さの入り混じった、なんとも表現しづらい感覚になったことを思い出した。

今私は個人事業でプログラマーをやっている訳だが、一人でやっていると、自分の力のあるところ、ないところ、こだわりとわがままの境目などが、たびたびわからなくなる。家庭を持って、責任ができて、それでもときどき、いやむしろ今現在も、あのときのような「孤独の不安と自由な気楽さ」を感じているように思う。
樋口さんの小説を読んでいて、ふと思い出したことでありますよ。


1003

さぁ、下期も頑張ろう!

とりあえずは、AMDの新しいCPUを買ってみたのでPC組み立て中。
今我が家には、稼働中のPCのCPUコアがいくつあるかというと...

嫁さん用 6 (PhenomII)
自宅サーバ 4 (Atom)
自分の作業用A 2 (Core2)
自分の作業用B 1 (Pentium4)
新PC 3 (AMD A6-3500)

14 個もあるのか...無駄、かな...
自分用を、世代交代する方向なのであれです。そんなに間違ってないと思います。


1004

Fedora16がそろそろベータになろうかという次期だけど、Fedora15をインストール中。

インストール直後のupdateはyum でないとダメらしい。

おお、ちゃんとFirefoxが7.0になったぞ。
gnome3って一部で酷評されてたみたいだけどわるくないじゃん。



初期設定項目メモ
CapsLockの件システム設定→地域と言語→レイアウト タブ→オプション→Ctrlキーの位置
Ctrl Spaceでemacsで選択開始したい件Antyのアイコン右クリック 設定→一般タブ→キーボードショートカット の 切り替え ...
全角スペースを使わないあれ?Fedora14のときどうしたっけ?



古いほうもアップグレードしてみる。と...こっちはGPUが認識されてるので...

うあー、Gnome3なかなかカッコいいぞ。

左上の「アクティビティ」をクリックすると、昔ながらのメニューが出るんじゃなくてこんな画面がぬぅーっと出てくる。



でもそろそろ、デスクトップ環境のデザイナさんは、2画面、3画面なひとのことも考えてほしいです。アイコンが画面の中心線上に配置されると、水平方向の画面数が偶数の環境では、ちょっと見づらいのです。かと言ってそのために3画面に戻すのもアレです、最近ゲームやらないから意味ない。

と、学生のときに、学部の同級生が他人のXの画面に雪を降らせたりサンタを爆走させたりして遊んでいたのを思い出した。そもそも、Xってマルチスクリーンと親和性が高いはず。
もしかしてXのスクリーンを2画面として認識させると、何かが変わるかも? いや、まぁこれでいいや。



うわーん、調子こいて作業してたらWindows側のMBR壊した(号泣


1006

Steve Jobs 氏が亡くなりました。

書籍やメディアを通して中学・高校生のときから影響を受けました。

私が千葉をでて京都の大学を選んだのは、Jobs氏が
「大学に入るなら親元を離れて遠くへ行かなければ意味が無い」
と言っていたのをまねっこしたのでした。

なんだか喪失感でいっぱいです。
Rest In Peace.



極東の国の片隅で誰も知らんプログラマがしょんぼりしてたところでどうなるもんでもないので、気分転換してきました。

茄子味噌パイうめぇ


巨峰アイスうめぇ


湖は水がたっぷたぷでした。



私はもうすぐ40歳なので、大型二輪の免許をとるなら早めのほうがいいな、そして趣味のエンジン付きの乗り物を何匹も飼える経済力はないので、どうしようかな、などと思っていたのだが、やっぱり4輪は4輪で楽しいや。
メット不要だし、暖房あるし、音楽聴けるし、買い物した荷物を隣に置けるし。
んで、限界をちょっとだけ超えた操作をしてもコケないし。

キヨナリ氏の2008年スーパーバイク、Wetでの神がかり走行動画(1000ccのレーサーをモタードのごとくスライドさせつつコーナリングして、まわりの全員が「ありえない」という顔をしている)を何度も見ているのだが、あんなことが自分にできるとは到底思えない。てことは、限界オーバー=ズザーなわけで、そういった意味でも大二は止めておいたほうがいいのだろうかと思ってしまう。



帰ってきて、さぁ仕事、仕事。と思って、HTML画面っていうかjavascriptアプリでドラッグ&ドロップをやろうとして、お勉強中。

HTML5もやりたいし、PythonのGTK GUIもやりたいし、Qtもやりたいし、オレ様言語も、あれも、これも、なんか、やりたいことっていうか宿題が、いっぱいだ。いっぱいいっぱいだ。でもこの、学びたい技術に追われる感覚が久しぶりで、精神的には超健康。


バイク関係のWebサイトを検索していたら「人間は行きたいと思う方向にしか行かない」という言葉を見かけたが、全くそのとおりだと思う。コーナリング中に外側のガードレールを凝視したら、バイクはそっちへ飛んでいく。
あと、確かシアターブルックの歌だったけど、いいこと言ってたのを今思い出した。
「走りつづける彼のバイクの色はオレンジとブルー 当たり前のように、彼のバイクにはバックギアはない。前にしか走らないぜ」

仕事の峠にも難所のコーナーがいくつもあって、よそ見すればアウトサイドは谷だったりする。ときどきはガードレールに花束がそえてあったりするかもだけど、とにかくコーナーの先を見て、自分の走行ラインを頭に描いて、前を見て走らないといかん。

1010

いわゆるヘックス移動の画面みたいなものを構想していて、ちょっと飽きたので

テトリスのテトラミノみたいに、六角形を5個つなげて
・回転してできるものは同じとする
・鏡像は別ものとする
だと、単位図形はいくつあるか

を数えていた。

32個 出てきたが、これって正しい?




別の話。

六角形のセルを描くとき、縦がまっすぐになるパターンと横がまっすぐになるパターンがある。
(罫線文字での表現だと苦しいがこういう感じ。ニュアンスで読んで欲しい)
縦がまっすぐ
└┘┌┐└┘
┌┐└┘┌┐
└┘┏┓└┘
┌┐┗┛┌┐
└┘┌┐└┘
┌┐└┘┌┐
横がまっすぐ
┐┌┐┌┐┌
┘└┘└┘└
┌┐┏┓┌┐
└┘┗┛└┘
┐┌┐┌┐┌
┘└┘└┘└

それで、いろんなゲームのタイプで縦と横どっちのパターンがいいか、などと考えている。

  • 落ちものゲー
  • パンドラプロジェクトとか、カルネージハートとかの「電子ブロック」型ゲーのロジック配置画面
  • 大戦略とか信長の野望みたいな戦略ゲー

落ちものは縦かな、その他は横かな、などと考えている。

考えているだけだけでいつ形になるか分からないけど。

1011

まずい。xorg.conf の編集ノウハウがすっかり新しくなってて浦島太郎状態だ...

モードをxorg.confに書いても効かないとか、そもそもlivna-configっていつ走ったんだか、とか。


1012

なんか少しずつ分かってきた…Fedora15の話。

A6-3500のPCは、普通のGnome3より、Gnome3+Compiz(3Dデスクトップ)のほうが、圧倒的にサクサク動く

と。

あと、普通のGnome3だと、ツールチップ領域が、領域の横幅がある値の範囲だとテクスチャの貼り間違いみたいに45度傾いて表示される現象が出ていたのだが(どうやらCatalystドライバ11.xのバグらしい現象で、現在の最新11.9でも直ってない)、Compizだとそれが回避できてる。

うーむ。それでも、CompizだとたまにPCがフリーズしてしまって、他のPCからpingも通じなくて、リセットボタン押すしかなくなってしまうことがある。いったいどこに地雷があるのか分からないので危険だ。

悩ましい…

1013

訃報: C 言語の開発者、デニス・リッチー氏が死去
K&RのRのかたが亡くなられたそうです。
私は「C言語のお父さん」として認識していましたが、C言語のお父さんであるということはつまりUnixのお父さんでもあったということを理解しました。

ご冥福をお祈り致します。

1014

あれー、なんかハード選択を誤ったかも。->A6-3500

古いnVidia 8600GTSのマシンのだと全然問題なく動くなぁ。


Fedora15、A6-3500の話。

問題GNOMEClassic GNOME with CompizKDE Plasma Workspace
普通のウィンドウ移動がもっさりの件NGOKOK
ツールチップやemacsの日本語入力の小さなウィンドウが、横幅によっては45度斜めに表示される件NGOKOK
日本語入力しようと[半角/全角]ボタンを押下すると、デスクトップ画面全体が壊れる件NGOKOK
ログアウトするとPCがhang upする件OKNGOK
gpk-application (packagekit、アプリケーションの追加/削除) で、認証エラーになる件OKNGOK


ということで、「Compiz にすりゃぁ解決するわけでもない問題」がいくつかあって、それら問題は、KDEだとおおかた発生しないことがわかった。今はこのマシンでは、KDEに逃げたほうが、いいみたい。

んでもCompizはとてもCoolだった。もうすぐFedora16が出るからそのときまたチャレンジしてみよう。


いつか、だれかの参考になるかもしれないので、型番をこの辺にメモしておきます。
要素名称
CPUAMD A6-3500
マザボGIGABYTE A75M-SV2
メモリCFD PC3-10600 4GB x 2
HDDWD WD20EARX-00PASB0
光学ドライブLITEON iHOS104 読込専用
電源ケース付属の300W

xorg.conf

Xの画面が出なかった件。
livna-config-displayがちょっとおバカな動きをしていて、ScreenセクションのIdentifier "Screen0" を、重複定義していた。
"Default Screen"側の定義を手で削除したらうまくいった。

Matrox DualHead2Go Analog (USB電源供給) -> I-OData LCD-A173 x 2

Section "ServerLayout"
	Identifier     "Default Layout"
	Screen      0  "Screen0" 0 0
EndSection

Section "Files"
	ModulePath   "/usr/lib64/xorg/modules/extensions/catalyst"
	ModulePath   "/usr/lib64/xorg/modules"
EndSection

Section "ServerFlags"
	Option	    "AIGLX" "on"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Matrox"
	ModelName    "Matrox DH2G Analog"
	HorizSync    31.5 - 80.0
	VertRefresh  60.0 - 60.0
	Gamma        0.7 #効かない
EndSection

Section "Device"
	Identifier  "Videocard0"
	Driver      "fglrx"
	Option	    "OpenGLOverlay" "off"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Videocard0"
	Monitor    "Monitor0"
	DefaultDepth     24
	SubSection "Display"
		Depth     24
		Modes    "2560x1024"
	EndSubSection
EndSection

Section "DRI"
	Group        0
	Mode         0666
EndSection

Section "Extensions"
	Option	    "Composite" "Enable"
EndSection



vieraにはこんな感じで表示できた

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Panasonic"
	ModelName    "TH-37LZ85"
	HorizSync    48.3 - 48.4
	VertRefresh  59.9 - 60.1
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Videocard0"
	Monitor    "Monitor0"
	DefaultDepth     24
	SubSection "Display"
		Depth     24
		Modes	"1280x1024"
	EndSubSection
EndSection

他は上と同じ



こういう、「環境設定ばっかりやっててソフト作らない人」って嫌いだったのよね。今自分がそうなっててちょっと鬱。

ソフトウェア作る作業に入ろう。

1015

「ポモドーロ法」pomodoro techniqueという、
25分単位で集中して作業するやりかたがあるらしい。

おもしろそうなので取り入れてみよう。

リンク備考
pomodoroでググる

1017

Fedora15 fglrxドライバの問題、おかしなところを見つけて暫定対処したが、
(/etc/authatieventsd.sh が、おかしなXauthorityファイルパスを見てるため、終了せず固まってる。F15のGnomeのXauthorityファイルは、 /var/lib/gdm/$1.Xauth ではなくて /var/run/gdm/auth-for-(username)-*/database が正しい...ようだ。だが、usernameのところ、自分のユーザ名と"gdm"の2つがあって、どっちが正しいのか不明。
あと、`pidof X` とかやってるところがあるけど、Xのプロセス名はXじゃなくてXorgが正しい。)

それでもcompizでログアウトするときに画面が乱れてハングする問題は解消せず。

kdeも、ちょこちょことUIの飾りが出てうっとおしい(長時間処理のときにマウスの横に変なのがぴょこぴょこして、非常に目障りだ。ダサくカスタマイズしたWindows95みたい)。
ウィンドウズの真似をしすぎていてセンスを感じないし
スタートメニュー相当のUIがいつももたついてイライラする。

ということで御大にならってxfceに逃げることにした。軽量で、なかなかよろしい。

1024

シモンチェリ選手が亡くなったとのこと。24歳だったとのこと、残念です。
ご冥福をお祈りいたします。

MotoGPの運営者は死亡事故が続いていることに対し、何らかの対策をして欲しい。

1026

ここ数日、地図表現を4角のマスに区切るのと6角のマスに区切ることの意味を考えて、充填とか同心円とか2次元チューリングマシンとかで頭ぐちゃぐちゃ。







果ては、神はメイン動物に4本足と6本足と2アーキテクチャ用意してて、美しいけど非効率なものと効率に優れた実装で、どっちが勝った、とか妄想して発散。

ウラシマ

放っていた技術知識を、久しぶりに見てみたらすごく進んでいて「浦島太郎になった気分」になることがある。

Σ (゚Д゚;)ハッ!

私は自分で気づかないうちにとても高速に移動していたのか

...

1027

わたしWindows環境はいまだに XP 32です。
gdi++.dllを使うとフォントもきれいになって、買い替えタイミングが分からない。

cmd.exeはgdi++でもきれいにならなくてなんだかなーと思っていましたが、下記はよさげです。

リンク備考
SourceForge consolecmd.exe ラッパー


1101

そろそろ8ビット時代のCOLOR文の
1=青
2=赤
4=緑
から脱却しようと思う。

1=青
2=緑
4=赤
としてみる。

1109

Fedora16 リリースされたので早速。

当初、Fedora15からアップグレードしたのだが、間違ってブートローダを壊してしまった。
しかたがないので、DVDから全部再インストール。

で、Fedora15から(?)変わったところについて。

useradd でユーザを追加する際、最小のuidが500から1000に変わったみたい。

これまで、自分の通常利用のuidは1000未満のある値で統一していたのだが、これまでと同じuidでユーザを作成しても、なぜか GDM のユーザ一覧画面にでてこない。

どうやら、GDMのユーザ一覧には、uidが1000以上のユーザでないと表示されないっぽい。
変化を受け入れて今回から1000以上でいくことにした。


1116

Fedora16 phpの警告の件。

/var/log/httpd/error_log
PHP Warning:  date(): It is not safe to rely on the system's timezone settings.
と出る。

/etc/php.ini に、
date.timezone = Asia/Tokyo
を書いて対処完了。

旧サーバ(Fedora14)を見たら同じように自分でいじった痕跡があった。もず。

1121

1124

「ぼくがかんがえたさいきょうのポケモン」的

ぼくがかんがえた、さいきょうのポケモン 的な

ぼくがかんがえた、クラウドのアーキテクチャ。




説明

業務サーバは、アプリの動作処理をするけど、内部にデータは持たない。なので、処理サーバと呼ぶ。
処理サーバについて、今一般的なWebアプリの考え方だけでなく、Apache James のようなメールアプリの考え方もよし。
リンク備考
Apache Jamesメールベースのアプリサーバ

gmailのストレージを、内部でつなげて共有フォルダ的に見せるアプリがある。あんな感じで、もっとシンプルに、gmailのメールフォルダ(IMAPのMailBox)をキーバリューストアとして、アプリケーションデータを保存する。もし外部にデータを置くのが心配なら、自前でIMAPサーバ(dovecot とか)を立てればいい。
リンク備考
GMail Drive shell extension

データ収集は、外部WebからデータとってくるならHTTP。2chのdatをとってきたり、株価をとってきたり。
ハードの状態を知りたければ、対象ハードにSNMPエージェントを入れて、処理サーバ側をSNMPマネージャにする。あるいは書籍「Linux組み込みシステム (クレイグ・ホーラボウ 氏)」に出てくる例のように、ミニLinuxでbashで簡易CGI書いてHTTPサーバにしてもいい。
リンク備考
Amazon: Linux組み込みシステム (著者 クレイグ・ホーラボウ 氏)話題それますが、この本、超おすすめです。雪山に組み込みLinuxを置いて、気候センサの値をbashのCGIで出力して、ふもとのPCからwgetで取得する話が出てきます

「アプリ固有の矩形領域」とは、パロアルトGUIアプリで、3Dの手が握ったり開いたりするビュー部分のこと。ちょっと前でいう、HTML要素だけでは書けなくて、JavaAppletとかFlashを使ってたような部分。ニコニコ動画やYouTubeのFlashもそうです。
リンク備考
JavaApplet:ハノイタワーチャート手前味噌ですみませんが「アプリ固有矩形領域」のサンプルです
JavaApplet:人間関係グラフ手前味噌ですみませんが「アプリ固有矩形領域」のサンプルです
ブラウザだけで3D表現できる「WebGL」体感デモ各種techwave.jp


この方式のポイントと、ねらい

この方式のポイントねらい
データをクラウドに置くどの端末からも同じ情報が見える
処理サーバは処理に専念しデータを持たないデータ管理コストを利用者とGoogleにゆだねる(ただしリスクもあり)
データアクセスのプロトコルとして、IMAPrev4を利用プロトコルが枯れていて実装ノウハウ豊富。telnet端末でデバッグ可能。メールソフトでDrag&Dropすればテストデータ格納が可能
利用者ごとに縦割り負荷分散をこころがけるつくりとするスケールアップでなくスケールアウト型のシステム構築を促進
(処理ステージごとに横割りプロセス分割する)マルチコアCPUを有効活用
MVCやMVVMの本質的な狙いである、1個のモデルに複数のビュー、のつくりとするモデルやフレームワーク重視のシステム構築を促進
アプリ固有矩形領域を重視旧来のHTML要素だけの純朴なWebアプリから脱却し、アプリ固有矩形領域を皆が書く時代に対応。その職人も育つ

図の作成には UMLmemo を利用させていただきました。作者 a.sakamoto さんありがとうございます。
UMLmemoVector

1126

UIについて


UI研究してるひとが作ってくれた、最新の[まとめサイト]ないかな。

  • タッチパネル、マルチタッチが普及する時代のUIはどう淘汰/収斂されていくか
  • 3Dアクセラレータが小端末でも当たり前になる時代、UIのビュー部分はどう淘汰/収斂されていくか

この分野での日本のトップランナーは増井先生と暦本先生と認識しています。
や、ほんと、どんな風になっていくのかワクワクしています。


話題飛ぶけど、そのうちキーボード(PCのUIのキーボード)もスマートフォンみたいな
「タッチパネル+押した感覚は振動で」
となるのかな。

さらに話題飛ぶけど、
アキバ系の野生のUI研究者さんのサイトがあったけどどこだったかな…
初音ミク風デザインのタッチディスプレイ型ショルダーキーボード(楽器のキーボード)とか
超クールだったんだが…
あとiMacをハムスターの飼育箱に改造するとか…

→ネットでは「あの楽器」と呼ばれてるらしいことまでは分かった
あの楽器ニコニコ大百科


SELinuxとシンボリックリンク

SELinuxとシンボリックリンクは相性が悪いみたい。

/opt を別ディスクとか別パーティションにして、
/home を /opt/home へのシンボリックリンクにしていたわけだが...


なんかSELinuxでおかしな動きをするなぁと思ったら、
restorecon でコンテキストを修正しようとしたときに、うまくマッチしてくれないらしい。

[やりたかったこと]
(1)sambaで、全ユーザ共有のフォルダ "export" を用意する
(2)各ユーザのホームディレクトリをsambaで見えるようにする

[やったこと]
新規ユーザつくるときにはグループを同じにする
useradd -u ユーザID -g グループ名 ユーザ名
とか。

/etc/samba/smb.conf を編集。
[export]
       comment = export
       path = /opt/export
       writable = yes
       create mask = 0664
       directory mask = 0775
       force create mode = 0664
       force directory mode = 0775
とか。[homes]も同様。

/opt/export のグループを設定した。
chgrp グループ名 /opt/export
chmod 775 /opt/export

[export]用のSELinux設定をした。
semanage fcontext -a -t samba_share_t /opt/export  # ポリシーにタグ(-t)を追加(-a)して /opt/export がsambaの共有フォルダ(samba_share_t)だと定義
restorecon -RF /opt/export  # タグをつけなおす

[homes]用のSELinux設定をした。
setsebool -P samba_enable_home_dirs 1


こんな感じで、Enforce で動くようになった。のだが、...


/homeを/opt/homeに引っ越した
cd /
tar -cf - home | tar -C /opt -xf -
mv home home.dis
ln -s /opt/home /home
rm home.dis


で、
restorecon -RF /home
とかやったんだけど、なんかこの辺から意図したようにタグが直せなくなってきた...


どうやら、シンボリックリンク先(/opt/home) に、/home以下の(暗黙の)ポリシーがマッチしなくて、うまく設定できないっぽい。


そんで
(これやったらダメです。)
・semanage で /opt/home(/.*) にポリシーを設定して
・restorecon で 一括で修正したら、
/home/だれそれ/ 以下の .hogehoge等、.で始まってるファイルのコンテキストタグを一括設定しまった。
もとの状態がどうだったか、もはやわからない。

そんで
・/home 以下の実ファイルに戻して
・restorecon -RF /home
したけど、
もはや元には戻りませんでしたとさ、お し ま い。(俺のデータも)。# ←まんが日本むかしばなしの市原悦子さんの声で


ちゃんと修正するには、
・別マシン(or VirtualBox等の仮想ホスト)にクリーンインストールして、
・同じようにユーザ作って、
・新しいマシンでどう設定されているかを見て、
・ちまちま直せば
いいんだろうけど、うーむ。


結論:SELinux、まだ使いこなせねぇ。ディストリのつるしでそのまま使うならいいけど、ちょっと工夫しようとするとすぐトラブルになる。またPermissive運用か...。

ひとりごと
SELinuxを有効にして、守れるセキュリティに対して作業コストが高すぎる件、コスト回収できてる人ってこの世にいるのか?
こんな調子だと、RAID3(検算にパリティ符号を使うけど、計算コストが高すぎて誰も使わない)みたいに、廃れるんじゃないかな。
全ファイル・ディレクトリに対する、ユーザごと、グループごと、ロールごとの細かいセキュリティなんて、それこそ機密文書ファイルの管理データベースとかでなければ、有効活用できないんじゃないだろうか(過去に関わらせてもらった案件でそういうのがあった)。


メモ:
SELinux のコマンドメモ
コマンド
{get|set}enforceSELinux全体の状態を操作
restoreconポリシーにしたがってタグを直すとか
{get|set}sebool
semanageポリシー(ファイル名のパターンと、それが持つべきタグ の集合)とかを編集する
chconchown とか chgrp の SELinux版
ls -Zls の SELinux版(ていうか...)

リンク備考
SELinux基本設定(CentOS5の場合)2009年1月参考にさせていただきました。ありがとうございます。
BIG-IP と SELinux - 2done.orgちゃんとSELlinuxしてる例、かな

1128

ふむ、php5では変数にクラス名を代入して、その変数を指定してオブジェクトを作成できることが、仕様として明確になったようだ。
$name = "MyClassName";
$obj = new $MyClassName();

以前調べたとき、php4ではマニュアルに「動作未定義」と書かれているものの、ちゃんと動く、という状態だったと記憶していたのだが、いま調べたらphp4のマニュアルには"ユーザ記述"として、できるよ、と書いてあった。

リンク備考
http://www.php.net/manual/ja/language.oop5.basic.phpPHP5
http://www.php.net/manual/ja/keyword.class.phpPHP4



話題飛ぶが、phpでコールバックイベントループを実装できるか試してみた。単に登録してコールバック起動するだけはできた。
コールバックを起動するには、
call_user_func(array($オブジェクト, $メソッド名文字列) 【,$パラメータ1【,...】】);
でいけるようだ。

リンク
http://php.net/manual/ja/function.call-user-func.phpPHP5

イベントのリストは、単にarrayを使ってやればよくて、
//イベントリストの初期化はグローバルで
$gイベントリスト = array();

//イベント構造体をこんな風に定義して
class イベント
{
    var $時刻_;
    var $オブジェクト_;
    var $メソッド名_;

    function __construct($時刻, $オブジェクト, $メソッド名)
    {
	  $this->時刻_ = $時刻;
	  $this->オブジェクト_ = $オブジェクト;
	  $this->メソッド名_ = $メソッド名;
    }
}

//登録するときは
...
global $gイベントリスト;
array_push($gイベントリスト, new イベント(0, $オブジェクト, $メソッド名));

//取り出しと実行 ループ は
...
global $gイベントリスト;
while (count($gイベントリスト) > 0) {
  $先頭 = array_shift($gイベントリスト);
  call_user_func(array($先頭->オブジェクト_, $先頭->メソッド名_)); //引数なし
  $先頭 = null;
}
こんな感じでいけた。

あとは
$gイベントリスト はグローバルで大丈夫か検討しよう。
タイマイベント のウェイトどうしようかな。

ただし基本、phpって1コール1応答モデルだから...意味無いのかな。もし、クライアントに応答を先に返して、サーバ側は内部処理を続ける、ってなことをやるにはいいかもだけど。
セッションオブジェクト上にイベントリストを持てば?と思ったけど、そうすると多重呼びの管理をしないといけない。
うーむ。



さらに話題飛ぶが、phpでは日本語識別子(UTF-8)が普通に動くようだ。

1202

以前、【+ 日本語コーディングしようぜ】という文書を書きましたが、ちょっと追記します。


ソフトウェアを設計・製造するという作業は、そのほとんどが、「概念に名前をつけて、コトバ(仕様書、設計書)に定着させる」作業です。
よいソフトウェアとは、利用者の要求を満たすのみでなく、その設計においても優れているものです。概念や構造が整頓されていることにより、より高い抽象度で概観することができる、可読性・可変更性が高い、そして可管理性が高いものです。しかし私たちは往々にして、よくないソフトウェアをつくってしまいます。

ソフトウェア上の概念に「適切な名前をつける」ことで、多くの問題が解決します。適切な名前をつけるには、プログラミング言語以前に人間が話す言語のセンスが必要だと思います。私たち末端の開発者が、より高いセンスを持っているのは、英語なのでしょうか、母国語なのでしょうか。
昨今、社内の公用語を英語にする、等の先鋭的な試みをされているIT企業もあると思いますが、それは日本の一部を構成する日本の企業として、日本人の雇用に貢献するのでしょうか。そして、日本の社会の豊かさに貢献するのでしょうか。
私は視野の狭い井の中の蛙かもしれません。しかし私は、ベターな道を探したいのです。


25年以上前の話ですが、あるNHKの番組がありました。案内役として坂村健先生が登場し、当時のコンピュータの状況を説明し、未来のコンピュータの姿を模索する内容でした。
番組の中で坂村健先生は、「人間がコンピュータの言語を学ぶのではなく、コンピュータが全ての人間の言語を学ぶべきだ」とおっしゃいました。
人間がコンピュータを操り、人間の世界を豊かなものにするのか、あるいはコンピュータが人間を操るのか。コンピュータは媒体であって、通信の両端には人間と人間がいます。そのことを坂村先生は強く訴えていたように思います。

坂村先生。先生はその後「超漢字」を開発されたり、コンピュータが扱う文字がユニコード化していく流れの中で、字体の細かな違いが淘汰されてしまうことに対する、文化的な観点からの懸念を発信されていたように解釈しています。25年経って、世界はどうなったでしょうか。貿易はますます盛んになり、情報の往き来も増えましたが、まだ国境はなくなっていませんし、コンピュータが全ての言語を学ぶにも至っていません。それでも、UTF-8には皆が納得できる妥協案としての光明があり、そろそろ成果を収穫できる季節に来ているように思います。


私は日本語コーディングが大好きですが、共通語としての英語の有用性については私も否定しません。
FastDBという、ロシアの方が作成されたオブジェクトDBMSを利用させていただいて、マニュアルの一部を日本語に翻訳させていただいたものをこのサイトで公開していますが、もしFastDBがロシア語で書かれていたら、私にはお手上げでした。英語で書かれていたからこそ、読むことができたのです。
Linuxの開発がフィンランドの言語だけで行われていたら、今のように花開いてはいなかったことでしょうし、私自身もLinuxからの多大な恩恵を、受けることができなかったと思います。
また、日本語で概念を整理した後、英語の識別子を考えるときに、より適切な言葉を思いつくのもよくある話です。複数の言語で考えることで、より一般的な概念に発想が着地することもあるでしょう。
さらに、自分が書いた文書を英語に翻訳することを経験することで、分かりやすい日本語で書くことを心がけるようになる、という作用もあります。


私が問題視しているのは、プログラム上のあるカタマリについて、その名前と実態が乖離していて、それがソフトウェアの「可管理性」の品質(手に負える状況である)を損ねている状況 なのです。そしてそのような状況は、母国語でプログラミングを行うことで、かなり改善されるのではないか、と考えているのです。


私は、インドのプログラマはインドの言語で、タイのプログラマはタイの言語で、日本のプログラマは日本の言語で、プログラムを記述することが、アメリカ シリコンバレーのひとり勝ちに対する小さな反論になり、ソフトウェア文化のさらなる発展、あるいは世界の"グローカル化"(→wikipedia) のきっかけになるのではないかと考えています。
英語以外ではコンパイラがまともに動かなかった10年前なら、日本語の識別子を用いる、なんていう案は、職場の上司のゲンコツ一発で却下されてしまう意見だったと思います。しかし、状況は日々変わっています。

日本人は日本語でコーディングしようぜ。まずは小さなところから。

1204

ソフトウェア開発のやりかたは、

(1) カンに頼る状態

(2) 経験で管理された状態

(3) 文書で定義された状態

(4) 定量的に管理された状態

(5) 継続的に最適化し改善する状態

と、成熟していく(wikipedia:CMMI)。現実は、(2)とか(3)のあたりでウロウロしている現場が多い(俺らみたいな外注人材が多いとそうならざるを得ないよね)。

私自身(個人)の開発プロセスは、いまだ文書化されておらず、(2)の状態だ。
ならば次にやるべきことは、まずは(3)をクリアすること。


と、いうことで。ToDo。

設計ドキュメントの目次体系と、各節で書く内容(=端的には一覧表の見出し)を、ある仕事のときにまとめたことがある。あれ思い出して、自分の資産にしよう。

小プロジェクトとかは、思いついたが吉日で、鉄が熱いうちに小さくても動くものを作って、肉付けしていくほうが、情熱が冷めにくい。あれって、真理だと思うから整理しよう。

(大プロジェクトだって、小プロジェクトで出た"芽"を育てて開始するほうがいいはず。Nothing comes from nothing だし)

1206

オブジェクト指向の一つの華、「カプセル化」について。

リンク備考
「ぐへへお姉ちゃんパンツ何色」から始めるクラス解説 小人閑居して

読み物として面白かった!

文書として面白い。内容も間違っていないと思います。けど、getter、setterが活きる本当の例としては弱いかな、と思います。


私がカプセル化を例で説明するとすれば、以下をあげます。

具体例備考
壁掛け時計の時刻設定を、実行できるひとを限定するカプセル化が活きない、悪い例
オフィスのエアコンの温度設定を、実行できるひとを限定するカプセル化が活きる、良い例

壁掛け時計は、全員が針を設定することができますが、全員が正しい時刻にあわせたいので、問題がおきません。過剰に冗長なプログラムは悪です。setterに意味がないのでgetterにも意味がありません。

オフィスのエアコン設定は、全員の希望温度が違います。そのため、折衝役となる人物を立てることに大いにメリットがあります。

ノウハウとして抽象化すると、「プログラミング対象に対して 自分のアタマでよく考える プロセスが大事」であって、「カプセル化やgetter/setterが、ソフトウェア開発技法として有効であるとは、必ずしも言えない」となります。


話題が飛びますが、別の例で、シングルトンパターンていうのも、ほとんど役に立たないと思っています。通常はAPI仕様書に、「このオブジェクトは1プロセスで1つだけ作成すること」と書けばよい。
シングルトンが活きるのは、ソースを公開しあわない他チーム(他社)にAPIを提供する場合で、利用側チームのプログラムの「使い方違反」のバグ対応に徹夜でつき合わされないよう、予防線をはる場合です。
互いのソースが読める環境では、利用側のソースをみて「プロセス内で2個つくってるよ、利用法の誤りです」と言えるでしょう。
また、シングルトンパターンを実装しさえすれば、プロセス内で1つしかオブジェクトができないということを、ドキュメントに書かなくて済むわけではありません。
なので、シングルトンはほとんど役に立ちません。


私は、若いころはオブジェクト指向大好きで妄信派でしたが、現在は、5kステップ以下のプログラムではオブジェクト指向の有効性は疑わしく、2kステップ以下では意味がない、と思っています。
大事なのはオブジェクトという分析軸だけに固執せず、何が共通で何が可変なのかをよく考えて、プログラム構造にとりいれることだと思います。

リンク備考
新装版 マルチパラダイムデザインジェームス・O・コプリン (著)。オブジェクト指向の先を論じている良書です。



追記: 2013/2/6

人間は、シンプルにバイクや自転車の絵を描いてだれかに伝えようとしたとき、横から見た絵を描くと思う。

これって、実はすごいこと。どの方角から見た絵を描けば、そのものの特徴を一番分かりやすく表現できるかを瞬間的にぐるっと検索して、よし、ここだ、と決めて、イメージを紙に投影する。

(memo/20120618から引用。)


オブジェクト指向や、ソフトウェア工学にもそれと似ている部分があります。作ろうとしているソフトウェアは、分子構造の立体モデルみたいにボコボコです。それを一体どの方向からソースコードに投影すれば、シンプルかつ特徴を捉えた投影になるのか。それを考えることが大事なんですよね。