そろそろ六本木
直接話した人もいて、秘密というほどのことも無かったのですが、ようやく六本木移転の話がオープンになりました。
中目黒オフィスから五反田オフィスに移って2年、今度は六本木オフィスです。社内で知る人は2人だけですが、実は中目黒オフィスの前に渋谷オフィスがありました。アリエルの公式オフィスではなく単に間借りしていただけですが。
渋谷、中目黒、五反田、六本木の4つのオフィスの位置を地図上にプロットしてみました。隠された法則性からアリエルの次のオフィス位置が予想できるかもしれないと思ったからです。半時計まわり以上の法則性は見て取れませんでした。
4点で囲まれた領土をアリエル所有と考えてみると、広尾、恵比寿、白金台が取れました。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/office-map/tbping
雑誌連載「Emacsのトラノマキ」の原稿(part7)公開
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/part7/tbping
「ビューティフルコード」を読みました
分厚くて読むのに躊躇していましたが、「 ビューティフルコード 」を読みました。
率直な感想を書くと期待ほど面白くはありませんでした。ただ、後半の数編が面白かったので読後感は悪くありません。書き手に大御所が並びますが、ありがたい話だと思って思考停止するより、書いてあること古くないか?と批判的に読むべきだと思います。
個別の感想です。名前とメインのプログラミング言語を列挙しています。
1章 ブライアン・カーニハン [C言語]
批判的に読むべきだと大見得切った直後にいきなりですがカーニハンの批判は書けません。Unixの神々のひとりだからです。聖域です。批判的精神は大事ですが聖域はそれを超越します。内容は正規表現の実装の話です。「 プログラミング作法 」から適当に抜粋しただけの手抜き...ではなく再利用記事です。つまらなくはないです。面白くもないですが。
2章 カール・フォーゲル [C言語]
subversionの実装の話です。何が美しいのか理解できませんでした。
3章 ジョン・ベントリー [C言語]
名著「 珠玉のプログラミング 」のジョン・ベントリーです。ビッグネームを冒頭に並べて気を惹こうという編集者のいやらしい魂胆が見え隠れしますが、名著は名著です。昔(http://dev.ariel-networks.com/blog/inoue.php?blogid=2&archive=2004-5-22)、アリエルでも「 珠玉のプログラミング 」を使って勉強会していました。みんな若かったです。「 ビューティフルコード 」の本記事(クイックソートの話)は、後半あまり面白くなかったです。
4章 ティム・ブレイ [Ruby]
かつてのSunのスターエンジニア、いつの間にかGoogleに移籍していたティム・ブレイです。Rubyの紹介記事みたいになっています。内容が薄すぎます。
5章 エリオット・ラスティ・ハロルド [Java]
JavaでXMLパーサの話です。つまらないです。Javaだからでしょうか?
6章 ミカエル・フェザーズ [Java]
またJavaです(題材はテスティングフレームワークFIT)。5章と同程度につまらないです。もしかしたらぼくはJavaを嫌いなのかもしれません。
7章 ミカエル・フェザーズ [Java]
寡聞にして、2006年までJavaの2分探索のコードに潜在バグがあったこと(http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html)を知りませんでした。それを知っただけでも読む価値はありました。内容はJUnitネタであまり面白くありませんでした。つくづくJavaと相性が悪いようです。
8章 チャールズ・ペゾルド [C#]
Cで速いコードを書いた話に続いてC#で書くと遅くなった話、仕方ないのでC#から.NET中間コードを実行時に生成して速くする話、という展開です。ネタとしては面白いのですが、遅い部分だけ素直にCで書けばいい気がしてなりません。
9章 ダグラス・クロックフォード [JavaScript]
JavaScript教団の教祖格ですが、ぼくはJavaScript教徒ではないので関係ありません。JavaScriptでJavaScriptインタプリタ(パーサだけ)を書く話です。難しいです。
10章 ヘンリー・S・ウォーレンJr [C言語]
ビットカウントの話です。ビット演算はいいですね男らしくて。後半難しくて理解できませんでしたが。
11章 アシシ・グルハッチ [Perl]
PGPの話です。信じられないほどつまらない記事でした。Perlのせいでしょうか。
12章 リンカーン・シュタイン [Perl]
これもつまらないです。コールバック関数(フック)で拡張できる仕組みを説明していますが、常識的すぎます。
13章 ジム・ケント [C言語]
CでCGI書いている時点で古いです。ぼくはCが好きなのでCを悪く書く気もないですが、さすがにCでCGIを書くと本質的でない部分に労力が割かれすぎます。
14章 ジャック・ドンガーラ、ピョートル・ラスツゼック [Fortran]
行列演算の話。全然わからないので感想はパス。
15章 アダム・コラワ [Fortran]
同じくパス。
16章 グレッグ・クローハートマン [C言語]
Linuxカーネルの話です。Cで継承およびリファレンスカウンタによるメモリ管理をする話です。古典テクニックですが、ここまで読んできた中では一番面白く読めた記事です。やはりCはいいです。
17章 ディオミディス・スピネリス [C言語]
FreeBSDの話です。ネタは微妙に16章と被っている気がしますが、こちらはあまり面白くありませんでした。
18章 アンドリュー・クッヒリン [C言語]
Pythonの辞書(ハッシュ表)の実装の話です。普通すぎて特に感想はありません。
19章 トラビス・E・オリファント [C言語]
18章に引き続きPythonネタですが、Python自体の内部実装の話なので言語はCです。面白くありませんでした。
20章 ロナルド・マック [Java]
EJBでSOAの話です。と言っても、載っているコードはただのサーブレットです。Spring時代の目で見ると古く感じます。
21章 ロジェリオ・アテム・デ・カルバルホ、ラフェエル・モネラ [Python]
Zope上に構築されたERP5の話です。ERP5の一部分の抜粋すぎて理解できませんでした。
22章 ブライアン・キャントリル [C言語]
Solarisカーネル内部の排他制御の話です。マルチスレッドがある局面で見せる信じられない難解さは伝わってきます。最終的な結論は実はあまり理解できていませんが。
23章 ジェフ・ディーン、サンジェイ・ゲマワト [擬似コード]
MapReduceの話です。単語の数え上げです。ごめんなさい、もう見飽きました。
24章 サイモン・ペイトン・ジョーンズ [Haskell]
排他制御をロックでやるのは難しすぎる、という話に続いて、HaskellでSTM(ソフトウェア・トランザクション・メモリ)の話です。途中までわかった気になりました。騙された気分とも言えます。22章でパズルのようなロックを見た後なのでSTMに夢を見たくなります。
25章 ケント・ディビィグ [Lisp]
Lispのマクロの話です。手段が目的化している懸念が消えません。
26章 ウィリアム・R・オッテ、ダグラス・C・シュミット [C++]
テンプレートメソッドパターンを中心に据えたフレームワーク設計の話です。昔は好きなネタでしたが個人的には多少聞き飽きた感が強いです。嫌いになったわけではなく、考え方(変わりやすい部分を外部に追い出す)がむしろ常識化して今更何も感じなくなりました。
27章 アンドリュー・パッツァー [Java]
JavaでRESTfulなWebアプリの話ですが、20章同様、アノテーションもDIもないコードは古く感じます。
28章 アンドレアス・ツェラー [Python]
タイトルは「美しいデバッグ」。DDD作者(のひとり)。まあまあ面白いです。
29章 まつもとゆきひろ [Ruby]
Rubyのデザインの話です。Ruby宣伝ネタです。お世辞ではなく面白いです。
30章 アラン・メータ [なし]
ユーザインターフェースの話です。タイトルは「世界につながる手段がボタンだけだったら」。特に感想はありません。
31章 T・V・ラマン [Emacs Lisp]
Emacspeakの実装の話です。defadviceを知らずに読めば感動したかもしれません。
32章 ローラ・ウィンガード、クリストファー・セイワルド [C++]
この章と次の33章が本書で面白く読めた双璧です。内容的には、ソースコードは「本のよう」であるべき、に始まるプリティコードの7ヵ条の話です。7ヵ条は以下のページで読めます(Webはアルファベット順なので"Blend In"から始まっています)。
本記事から引用します。
コードそのものがアウトラインの形をしていて、ページの左側をざっと眺めていくことで論理構造の大局観を得ることができます。
美しいです。
33章 ブライアン・ヘイズ [Lisp]
軽いアルゴリズム話。文章の展開がうまいです。よくできた短篇小説を読むようです。本記事で最後が締まりました。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/beautiful-code/tbping
「プログラマのためのUXチートシート」を作りました
かつて誰もがマイクロソフトのことを口にした時代がありました。ビル・ゲイツの小話を披露するだけで笑いが取れる時代でした。いい時代でした。
そんなマイクロソフトのサイトに「Windows ユーザー エクスペリエンス ガイドライン」があります。
忘れている人もいるかもしれませんが、Windows XPのXPはエクスペリエンスの略です。ところでWindowsって何ですか、とか言わないでくださいよ。WindowsはOSのひとつです。よく分からなければ、Ubuntuみたいなソフトの仲間だと思ってください。
Windows XPでの体験なんて悪夢のようだったと言う人もいるかもしれませんが、このガイドラインは素晴らしいです。どこでボタンを掛け違ったのかは分かりません。たぶん、プログラマがビル・バクストンさんの言うことを聞かなかったのでしょう。
長くて読むのが大変なので、心に残った部分だけを抜粋して「プログラマのためのUXチートシート」を作りました。
こういうのを真面目に考えている人がアリエルに欲しいです。どこにいるのか知っている人がいたら教えてほしいものです。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/ux/tbping
RESTの当惑
以前(かなり前ですが)、柴田さんから「 アプレンティスシップパターン 」を献本してもらいました。
先月ようやく読みました。章を忘れましたが「Web系のソフトを開発するならHTTPのRFCぐらい読め(意訳)」とあり、そうだそうだHTTPのRFCを読んでいないような開発者はWebを語る資格はない、と心の中で喝采をあげました。が、すぐその後に「RESTの論文も読んで当然(意訳)」とあり、心の中でまずい前言撤回となりました。
普段、なるべく一次情報に当たろうとは思っていますが、現実的には困難です。「HTTPのRFCを読んでいないような開発者はWebを語る資格はない」と偉そうなことを言いましたが、TCP/IP関係の全RFCを読まないとHTTPについて語る資格なしと言われたら、黙るしかありません。ちなみに、TCP関連だけでも http://www.networksorcery.com/enp/protocol/tcp.htm ぐらいあります。もっとも、このリストが正しいのかすら確証がありません。知らないことは多くあると思う、謙虚な姿勢が重要です。
「 アプレンティスシップパターン 」にRESTの論文ぐらい読めと喧嘩(?)を売られたので読んでみました。以下から読めます。
読んだ感想は、当惑です。
RESTとは何か、については5章の節タイトルと図を眺めるだけで一応分かります。上記リンクのクリックが面倒な人のために節タイトルだけ列挙しておきます。RESTとは何かと聞かれた時の回答にこれらを挙げれば教科書的には正解になります。
5.1.2 Client-Server 5.1.3 Stateless 5.1.4 Cache 5.1.5 Uniform Interface 5.1.6 Layered System 5.1.7 Code-On-Demand
なぜRESTかについては、読んでも腑に落ちません。1章は導入、2章は用語説明なので、なぜRESTかに答える鍵は3章と4章かと思うのですが読んでも理解できません。そもそも3章の比較(以下のリンク先にまとめの表があります)に直交性をまったく感じません。直交性がなくてもいいのか、と自問しつつも全体に腑に落ちません。
ぼくを最も当惑させるのは、この論文を先入観なしに与えられた時に正しく評価できる自信がないことです。RESTが概念として広まっている事実や、著者がApacheの有名人であることや、この論文がHTTP1.1の思想的バックボーンで著者自身がHTTP1.1の主要エディタであること、これらの背景知識がなかったとします。論文を読んだ自分の反応は、おそらく「つまらない。読む価値なし」です。こうなると、普段、自分が先入観なしに他の技術を評価できているのか怪しくなります。たぶんできていないのでしょう。こんな事実を突きつけてくる点で、実に困った論文です。
当惑の話は別にして、論文で興味深かったのが「6.3.4.2 Cookies」です。次のようにクッキー完全否定です。
cookie-based applications on the Web will never be reliable.
一部否定(クッキーに色々と状態を持たせるな)ならともかく、クッキーにセッションIDのような状態を持つことも否定しているように読めます。ここは同意できません。使える仕組みは使えばいいと思います。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/rest/tbping
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開
今月の「Emacsのトラノマキ」は 深町さん による「YASnippetですべての言語に"マクロ"を」です。マクロ好きな深町さんには、次にm4-modeでも語ってもらいますか。
さて恒例のバックナンバーの原稿公開です。連載第八回「EmacsでChangeSetベースのVCSと仲良くする」(Software Design 2009年12月号)の原稿です。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/part8/tbping
技術評論社パーフェクトシリーズ絶賛発売中
パーフェクトシリーズ第3弾の「パーフェクトPHP」の売れ行きが好調のようです。関係者のみなさんお疲れさまでした。PHPを学んだ後は「パーフェクトJava」でJavaも学んでください。現代プログラマは動的型言語と静的型言語は両方やっておく必要があります。
p.s. ちなみにシャープを#や#にするとリンクにできないので仕方なく「シャープ」と表記しています。Ploneの自由度の低さは絶望的です。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/perfect-series/tbping
ASCII.technologies誌にMapReduceの記事を書きました
ASCII.technologies ( アスキードットテクノロジーズ ) 2011年1月号のMapReduceの特集の記事のひとつを書きました。以下のパートです。
MapReduceプログラミングを助ける言語たち Part2: PigとHiveとデータ構造
PigやHiveなどの周辺ツールというお題をもらいましたが、好きに書いてくださいと言われたのでかなり自由に書きました。と言っても、記事の中でHadoopを全否定するほど自由奔放ではないですが。
最近、MapReduceやNoSQL周辺のイベントに行くと、「クラウドやっているんですか」や「井上さん、クラウドの人なんですか」と聞かれます。こう聞かれてしまうとムキになって「なんですか、クラウドの人って」と反論します。「そう、最近、クラウドの人になりました」とさらりと答えるのが大人になることなのか、果たしてそれは成長なのか、自分の中でも答えがでていません。
個人的には、移り変わる表層的なモノより変わらないモノ、普遍的なモノに触れていたいと思っています。しかし、普遍性の名の下で、単なる変化への拒絶になる懸念もあるのが難しい部分です。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/mapreduce/tbping
Re:「プログラマのためのUXチートシート」を作りました