Hatena::ブログ(Diary)

mooz deceives you

(about 'mooz) ; => "See http://mooz.github.com/index-ja.html"

December 30 (Fri), 2011

2011 12/30

およそ一年前,元旦から 2011 01/01 - mooz deceives you という記事を書き,昨年の出来事と本年の抱負について語った.そこでは主に「学術的な方面でのインプットとアウトプットを行なう」「自分に対する投資を惜しまないこと」「本を読むこと」「静的型付け言語である程度大きな物を書く」「型推論の勉強と補完フロントエンドの作成」ということをあげたようだ.果たしてそれらは実行に移せていただろうか.

この m10n では本年を振り返る体で,最近の脳内状況を吐き出していきたい(だらだらと書いたところ,予想以上に長くなってしまった).

作成したもの

年月を顧みる上で外せないのは自身の書いたコードだろう.ここではそのマイルストーンの中から,何からの形式でウェブへ公開したものをとりあげ,想い出などを綴ってみることにする.

percol

no title

canythin や zaw.zsh などに刺激を受け,今年の 2 月頃より作り始めたツール.この percol については記事を書くつもりでいたが,もう少し完成度を高めてからにしようと考えていたところ,結局ずるずると一年近くが過ぎてしまった.

そもそも percol とは何か.コマンドライン版 anything.el / unite.vim といえばキャッチーでわかりやすいだろうか.私は「UNIX のパイプに新風を」と喧伝しているが,実際のところは

  1. 入力を行単位で分割し
  2. インタラクティブに正規表現マッチングをかけて絞り込みを行ない
  3. 選択した行を標準出力へ吐き出す

というシンプルなツールだ.percol には勢い余って「アクション」や「マーク」の機能も設けてみたが,これはあまりコマンドラインと相性が良くなかった.何かうまいインタフェースや利用例を皆様にお教え頂きたいところだ.

開発を始めたきっかけを思い出してみる.先に述べたように,canything, zaw.zsh という先行のソフトウェアがあった(dmenu やその派生ソフトウェアまで含めると数知れない).ではなぜ,再び同じようなものを作ろうと思い立ったか.まず canything (C による実装) は日本語の入力に対応していないように見え,バッファのサイズが定数で固定されていた.また zaw.zsh (zsh スクリプトによる実装) は実装言語の特性を生かした zsh との密な連携が素晴らしいのだが,実装言語の特性により大量のデータを流し込んだ際の速度に不満がある.こうした理由から,そこそこ高速で日本語入力にも対応し,なおかつカスタマイズの楽しさを持ったもとを作ろう,と考えて Python による実装を開始した.curses を触ってみたい,という不純な気持ちも多少あったように記憶している.

開発の過程では様々なことを学んだ.Python のつまらなさ(基本的に Python は面白くない言語であると感じた)と幾分かの面白さ(果たしてそれは言語としての面白さだったろうか? 今となっては分からない),tty や curses に関する知識,コードを設計するに際して用いた MVC モデル,など.独自のマークアップ言語を作ったり,日本語の入力へ対応したりと,様々な試みを行なう日々は刺激に満ちていた.あれは間違いなく coding youth であったと思う.願わくばいつまでもその youth の中にありたいものだ.

shadow.el

no title

shadow.el に関しては以前に次のような記事を書いた.便利であるとは思うが .shd ファイルを用意するのをついつい忘れ,ほとんど利用はできていないのが実状だ.

Shadow.el - Emacs に Shadow.vim を - mooz deceives you

私にとって Emacs Lisp はたまに触るから良いのだと思う.そのようなわけで,この shadow.el から今日に至るまで,Emacs Lisp とはやや距離を置いてきた.そろそろ何かをはじめる時期なのかも知れないし,まだその時期ではないのかも知れない.

Rios::Proxy

no title

Ruby 会議の LT に申し込んでみたらどうか? というお誘いを頂き,無い知恵を絞って開発を行なったのがこの Rios::Proxy だ.これについては Ruby 会議で実際に発表を行わせていただき,それに関する記事も書いた.

Rios::Proxy について #rubykaigi 2011 で発表しました - mooz deceives you

Ruby 会議での LT 発表は,様々な点で想像を上回っていた.あれほど大人数の前で発表を行なう機会など,そうそうないことだろう(中学の時分に行なった合唱コンクール以来の体験だった).旧知の人々を含め様々な人と交流するきっかけともなった.

Rios::Proxy からも様々なことを学んだ.C による Ruby の拡張ライブラリを含んだ gem の作成方法や pty の利用方法など.しかしながら,それ以上に大きな収穫が,この開発には隠れていた.それは『デーモン君のソース探検』との出会いだ.

そもそも pty の使い方を探ろうと考え,以前から読もうと考えていた『デーモン君のソース探検』を購入したのだが,これが名著だった.全く素晴らしい本だと思う.著者の氷山素子さんという方は謎の人物で,検索しても素性に繋がる情報が出てこない.ニコラ・ブルバキのごとく,ハッカーらによる筆名なのではないかと邪推しているが,実際のところは分からない.これを読んでおられる方でご存知の方はいらっしゃらないものだろうか.

org.js

org.js

org-mode の記法でメモを取るようになってからしばらくたつと,そのレンダリングをブラウザ上でやりたいと思うようになった.いちいち Emacs を使って変換を行なうことが,馬鹿馬鹿しく思えてきたのだ.それはちょうどスマートフォンを買った頃でもあり,Dropbox 上に置いた org-mode のファイルを綺麗に整形してスマートフォンで読みたいという欲求も出てきた.Android ということで素直に行けば Java で実装することになるところだが,応用範囲を考えると JavaScript による実装の方がよかろうと思い,結局は実装言語として JavaScript を選んだ.

はじめ JavaScript 用のパーサジェネレータを使う練習にでもと思い org-mode 記法の文法を探したが,どうも求めるものは見つからない.その実状は Emacs Lisp で書かれた一万行以上のコードが唯一の正典であるという由々しきものだった.Ruby や Python で書かれたパーサも存在したが,期待するほど出来が良くない.そうして色々と調べた末に,手書きでトップダウンパーサを作成する決断をした.

あの選択は誤りであったと今になって思う.世にはびこる部品の欠けた org-mode パーサを一つ増やしてしまう前に,org-mode 記法の文法を作成すべきではなかったろうかと.文法の作成などより,実装の方が何十倍も楽しいことだろう.しかし,いつまでも楽しさだけを追い求めていて良いのだろうか?

以前,次のような文章を書いた.

そして何が残る? - mooz deceives you

己の楽しみのために,信頼性のない,利用者を混乱させるだけの選択肢を今までいくつ増やしてきたろうか.そう自問し,もはや興味を失ってメンテンナンスを行わなくなったコード片に思いをめぐらせる.

「頼むから,あのようなコードが利用されませんように」

そう願わざるを得ないという現実は,コードを書く人間としてあまりに悲しい.

今年出会った方々の中に,自身の作成したソフトウェアのメンテナンスに非常な責任感を持つ人が何人かいらっしゃる.幸いにもそうした方々と共にコードを書く機会に恵まれ,問題意識は高まる一方だ.狼少年にならないためにも,投げ出すコードの数は少なくしていきたい.

学術的なインプットとアウトプット

主にデータベースシステム,データストリーム処理,OS,ストレージ,ネットワークなどについて学んでいたように思う.その際 Evernote や Dropbox を使い,学んだことはできるだけ情報として残しておくように気を配った.個人的な話にはなるが,私は自分の脳というものをあまり信用していない.勝手に記憶が脳から抜け出していってしまっても,彼らを攻めることはできないと考えている.

アウトプットを,今この文章を書いている存在として目に見えるかたちで行えなかったのは,反省すべき点であったかもしれない.しかし適度な分離を行なう上では,ある程度,仕方のないことなのだろう.人に講釈を垂れたり,ペーパーを書いたり,勉強会へ参加する機会などには恵まれていた.これは昨年と比べ,大きな進歩であると思う.

アカデミアに対して思うことは多い.よく「象牙の塔」という言葉で表現されるその世界は,私に古代ギリシャのウロボロスを想起させる.己の尾を喰らう蛇.学会へ参加するたびに,そのような印象を抱く.多くの人々が感じる,アカデミアとエンジニアリングの間に感じる隔たり.その狭間を埋めようなどという,大それたことは考えていない.イソップの寓話に,鳥にも獣にもなれないコウモリの話があった.私は,このコウモリが嫌いではない.そういったスタンスで関わっていくことが,私にとって満足の行く結果に結びつくのだろうと考えている.

最近では,基盤システムの実装を全くの趣味として始めた.言語としては C++ を使っているので,昨年の目標であった「静的型付け言語である程度大きな物を書く」がようやく始まったかたちになる.とはいっても,まだ実装を始めたばかりで,コードも数千行程度.この目標は,来年に持ち越しだろう.とにかく,このおかげで最近は毎日がとても充実している.やっぱりコーディングって面白っ!

著作

幼少よりの夢として「著作を上梓する」というものがあったのだが,様々な方々のお力添えがあり,それが今年かなってしまった.あっけのないものだと思う.でも,とにかくかなってしまったのだ.これに関しては以下の記事で触れた.

Mozilla 勉強会で ECMAScript 6 の WeakMap について LT しました - mooz deceives you

「コツコツが勝つコツ」という,中学の時分に恩師に教えて頂いた安っぽいフレーズを,何度も思い浮かべたものだ.私はただ自分の楽しみのためにコードを書いてきたが,それがこうした結果に繋がった.本当に恵まれているものだと思う.となれば,今度はお返しだろう.持続可能な開発.これを念頭に置いて開発を行っていきたい.

sayusayu 2012/08/30 15:54 kainさんが報告されてますが、Firefox15にするとログインできません。
gpum以外のアドオンを無効にしましたがやはり駄目です。
以前のバージョンから上記の報告にもあるように既読にできなくなっていたのですが、そのまま使用していました。
もうアップデートはされないんでしょうか?
非常に便利なアドオンで重宝していたので、対応して頂けるとありがたいのですが…。

sayusayu 2012/08/30 15:56 違うところに書き込まれてしまったようです。
すいません。