僕の職歴4: ZSさんとの記憶

人物紹介の続きです。今夜はZSさんです。

ZSさんは僕が最初に配属された職場の上司でした。彼は本来はマネージャのはずだったのですがなぜかMIPSアーキティクチャのリカバリーシステムをがりがりコーディングもしていまいた。

最初の内は彼と僕は衝突することが多かった記憶があります。その1つはソフトウェア特許です。知財の方と一緒に僕が作っていたbootloaderの特許を掘り出す会議に彼と同席したのですが、僕はまだ学生気分が抜けておらず「ソフトウェア特許なんて御免だ」と感じていました。何を聞かれても「オープンソースコードを流用して作ったので新規性は何もありません」とオウムのように繰り返して発言しました。当然会議は決裂し、ZSさんは「もういい!」と叫んで会議室を飛び出していってしまいました。もちろん彼だって好きでソフトウェア特許など書きたい気持ちなどなく、仕事の1つとしてしかたなく推進していたはずなのです。当時はそんな簡単な事情も推察できないまま口論していました。反省しています。

衝突のもう1つはストレージのフォーマットについてです。bootloaderはかなり肥大化してしまい、出荷時のフォーマットではセカンドブート部分をハーティションの隙間に押し込めるのは困難でした。そこで僕はストレージを再フォーマットしてセカンドブートの置き場所をパーティション外に作る案を提案しました。ペアリーダのEさんは僕の案に同意してくれましたが、ZSさんは「フォーマッタが必要になる。空のFATパーティションなら最初のファイルエントリはパーティション先頭に配置されると仮定して良い。つまりセカンドブートの置き場所はパーティション先頭がふさわしい」という案を推奨しました。僕は「仕様にない挙動は仮定してはならない」という理由で彼の案を却下しました。Raspberry PiががりがりSDカードフォーマットを変更、というかイメージまるごとddしてしまっている現在から思うに、某アソシエーションの顔色など気にせずに、フォーマッタなんて作らずに、イメージをddする方式を大胆に選ぶべきだったのかもしれません。「第三の解」を見つけるようにこれからは気をつけようと思います。。。

そのうち、なぜかZSさんとは楽しく意見の衝突をできるようになりました。彼はプレイングマネージャなので超多忙だったはずなのですが、気軽に声をかけてくれました。彼の切り出しはいつも「最近どう?(ニコニコ)」で、意見に納得が行かないと「ナーンセンス! (ニコニコ)」。

彼との議論はいつもとっぴょうしもなく常識はずれでした。「なんでNetBSDはTCP/IPプロトコルスタックをモジュールにして着脱可能にできないんだろうね?だったEthernetのない機械ならTCP/IPなんていらないじゃん!」「なんでNetBSDは仮想メモリのON/OFF切り換えができないんだろうね?デバッグ時はMMUの保護はいるけどさぁ、出荷した後にSEGVとか起きてもどうしようもないじゃん。MMUはオーバヘッドだし。出荷前はMMU有り、出荷後はMMU無し、デバッグ時はMMU有り。なんでできないの?」当時はどれも荒唐無稽に思えましたが、今その真の意味をかみしめている日々です。

某社を辞める直前、小田急線沿いの事業所の休憩室で、「どう最近?」と聞かれて、「いやぁ大変ですよ、やることが山盛りで、、、」「そういえばさ、ウチで新しいプロジェクトをはじめるんだけど来ない?」「行きたいのは山々なのですが、、、まだ残した仕事があります。。。向こう1年は動けそうにないです。。。」この会話の数ヶ月後に僕は某社を辞めることになります。あの誘いに乗っていたら、今の僕の人生は全くことなるものになっていたと思うと複雑な気持ちです。

後になって知ったのですが、昔、彼は僕も学生時代に使っていたノートパソコン規格を某I社との共同会社で作っていて、(残念ながら)その共同会社が解散しまった後、本社に戻ってきた引き上げ組の一人でした。この「引き上げ組」人材は社内のどこでも活躍していた一種のブランド人材だったようです。どうりで仕事ができる人だったわけです。

2年前に自分の転職のお祝い会で再開したのですが、「岡部はまだふらふらしてるのかー。今度はちゃんと働かないとな!」といつもどおりニコニコしてアドバイスをくれました。ジョブホッパーにはジョブホッパーの論理や理由や信念があるつもりなのですが、いつか自分の信念について彼と話せる日が来るといいなぁと感じています。

広告

人類にとって乱数って大事だなと感じた話

ふとしたことで、「実は人類にとって大事なことの一つは乱数なのではないか」と感じたので、ここに雑感をまとめようと思います。

そもそも人は自由意志を持っているのか?

そもそも人は自由意志を持っているのでしょうか。何かを決断したり、何かを変えたり、何かを維持したりする意思はどこからやってくるのでしょうか。人はもちろん物理法則に支配されているため、その挙動は入力に対して加工して出力を作る単純な入出力装置のはずです。「自由意志」は存在する(ただし、ほんの0.2秒間だけ)という衝撃的な研究結果がありますが、とにかく人間が自由に決められることの量はわずかであることは間違いないようです。

ラジオ

前世紀において、多くの職場ではラジオがかかっていた記憶があります。なぜラジオを流すのでしょうか?それは当時において雑音を脳に入力するもっとも効率的な手段だったから、というのは乱暴な説でしょうか。そもそも仕事にフォーカスしたいのであれば、無音、つまり入力がない方がいいはずです。でも自由意志のない、つまりは創造性にかけた作業は当時においてもあまり価値がなかったはずです。

占い/ご神託/政治

もっと時代をさかのぼってみると、日本における祭事が乱数の利用の例に挙げられるでしょう。日本において祭事の一部は国内の困難を解決するための政治の役割をはたしていました。このような祭事において、解決策の決定の多くは占いという乱数に頼っていたはずです。誰にも決定できないからこそ政治にたよってしまってしまうわけですから、その政治は乱数に頼っても、創造性に頼ってもたいして結果はかわらないのかもしれません。なぜなら人間の創造性で解決できる困難であれば、政治に頼る前に解決できていたはずだからです。そのような場合に乱数による解決策の選択は機能していました。

散歩

多くの知識人が散歩を好むことは広く知られています。彼等は重要な決定をするときにも散歩をしながら会議をすることがあるようです。複数人での散歩はまた小さな決断と合意をしながら進みます。これは会話の歩調を合わせるのにも効果的です。

iPod shuffle

iPod shuffleは発表された時、個人的には「なぜ曲を選択できない音楽プレイヤーが売れるのだろう?」と首をひねりました。しかし僕の想像はまったく間違っていました。「多くの人はプレイリストをランダムプレイでしか聴かない」のです! その時に聴きたい曲をリコメンドしてくれるような高度な技術も考えられますが、その聴きたい曲が予想されるものであれば創造性に繋がる乱数を含まないことになります。つまり音楽は乱数で選択し、もし聴きたくない曲であればスキップボタンを押してしまえば良かったわけです。

対局にあるのがaliexpressで出品されている100円音楽プレイヤーです。これら多数の音楽プレイヤーには残念ながらランダムプレイの機能がありません。これではiPod shuffleの代替になりません。どうやら彼等は製品の重要な機能を見誤っているようです。

Spotify

Spotifyも賢くもランダムプレイをデフォルトとして採用しています。

Oblique Strategies

Oblique Strategiesはブライアン・イーノが考案した発想法です。彼の格言が書かれたカードの束から1枚カードをランダムに引き、その内容から着想を得ようというものです。少し作曲家向きな格言が多い気もしますが、僕達エンジニアにも流用できそうです。オリジナルのカードを使った方がおもむきがありますが、僕はAndroidアプリ版を使っています。

他にも脳に乱数を入力するアイデアはありそう

究極的にはホワイトノイズに行きつくかもしれないのですが、僕はまだそこまでの境地には至っていないようです。最近はLo-fi Hip Hopを聴くのがマイブームなので、その内ノイズだけ聴くようになれば面白いと感じています。

替え歌: 僕は今プログラマとして

プログラマとしての技術の探求と家族と過す時間の価値の間で、「土日も研究開発しなければという思い」と「それでも皆と同じ変わらなきゃ。普通の家族の父にならなければという思い」の間で揺れています。

とりあえず「日曜日は家族と共に過す日。研究開発は日曜日には手を付けない」という方向でなんとか「変わろう」と思います。。。。そんな41歳です。。。

そんなあんまり韻をふんでいない替え歌をおとどけいたします。

僕は今いつの間にか
好きな事をして生きている
あこがれたプログラムを書く生活
夢や期待を形にして

僕の友達は悩ましげに言う
何をしたいのか分からない
俺は普通だから変態じゃないから
好きなものだって特別にはないんだ

だから君が羨ましいとやりたい事を探す僕の友は言う

僕の父さんは昔アナログエンジニアで
死ぬ前には喋れない人へのボランティアだった
そのボランティア運営にはWebページが必要で
「Webページを作らないか」と僕に頼んでいた

だから「お前なら俺より稼げるよ」と期待してと僕の父は言った

僕は今好きなことをしているのに
本当は家族の父として役目をはたしていた父にあこがれて
僕だけが止まっている気になるよ
変わりたい このままは嫌なんだ

変わらない 僕の生活は
それでも僕はあの悪夢と対峙する

分からない 明日やこの先は
それでも僕はあの悪夢と対峙する

それでも僕はあの悪夢と対峙する

「投信ブロガーが選ぶ! Fund of the Year 2017」に投票しました

「投信ブロガーが選ぶ! Fund of the Year 2017」に投票しました

と投票しました。

資産運用の方針(2017年版)

上記のような投票の理由は現在以下のような資産運用をしているためです:

A:B:Cを5:3:2の比率でドルコスト平均法で買う。

A. 「<購入・換金手数料なし>ニッセイ外国株式インデックスファンド」
B. 「ひふみプラス」
C. 「iFree8資産バランス」

ただし、A、Bが大幅に下落したときは現金資金とCを売って買い増しする。
東京オリンピックの1年前(2019年7月)から5年かけて徐々にひふみ投信を売って1割保有に。

なぜ上記のような配分にしたかというと、国別のGDP比率を手掛りに分散投資しようとする考え方に基いています。(経済学的根拠はないと思います。)

http://loloinvestors.com/2017/06/11/2017-6-automatic-order/

2016年の世界のGDP比率は「先進国54.8%、新興国38.9%、日本6.3%」です。
これを参考にシンプルな数字にすれば「先進国6:新興国3:日本1」になります。

http://ecodb.net/ranking/imf_ngdpd.html

世界の名目GDP(USドル)ランキング
* アメリカ 18,569.10
* 中国 11,218.28
* 日本 4,938.64
* ドイツ 3,466.64
* イギリス 2,629.19
* フランス 2,463.22
* インド 2,256.40
* イタリア 1,850.74
* ブラジル 1,798.62
* カナダ 1,529.22
* 韓国 1,411.25
* ロシア 1,280.73
...

ただし、以下の国は特別扱いにしています。

  • 日本: 自国であり、東京オリンピック需要が見込まれ、ひふみという優秀なアクティブファンドがあるために多めに保有
  • 中国: 現在は好調であるが、共産党政権の不透明な政治とグレートファイアウォールによる閉鎖されたネットワークのために少なめに保有

将来はどう運用するか

5〜10年先は資産の一部をETF運用に変更しているかもしれません。「バンガード・トータル・ストック・マーケットETF (VTI)」は信託報酬0.04%で、投資信託の信託報酬と1ケタ違います。これはデカい。“バフェット氏、米国悲観論者は「狂っている」”だそうで、冷静に考えてみると今中国が好調でも彼等の政治が変わらなければこれ以上の発展はないかもしれないとも感じます。もし米国楽観論を信じるなら資産の少なくとも半分はVTIで運用しても良いのではないでしょうか。

転職面接で聞いている質問のリスト

転職を8回も経験した某氏のいつものテンプレらしいです。都度更新する予定らしいです。

A. 本棚を見せていただくことは可能でしょうか?
B. オフィスの中を見学させていただくことはできないでしょうか?
C. チームメンバーと30分程度雑談させていただけないでしょうか?
D. 以下を御読みいただき、御社のジョエル・テストの得点を教えていただけますでしょうか?
   http://japanese.joelonsoftware.com/Articles/TheJoelTest.html
E. どうやって成果を判断されるのでしょうか?
F. プロジェクトの納期が私個人の力で達成できない場合、どのような行動が望まれますか?
G. プロジェクトが失敗した場合、その責任は私がどの程度負うことになりますか?
H. 意見をエスカレーションさせるパスはどのように決まっているでしょうか?
I. 場合によっては自社開発したコードをオープンソースで公開することは許されますか?
J. コード検証などの先進的な品質向上技術の導入に社内工数を使うことは許されますか?
K. 加入している健康保険組合を教えていただけないでしょうか?
L. 社員の就業規則を見せていただくことはできないでしょうか?
M. 健康維持のために平日運動をしたいと考えています。例えば就業時間中に1時間だけ区民プールで運動するようなことは許されますでしょうか?
N. 現在 http://www.instabiz.jp/ を会社の補助で受けています。英会話レッスンの補助はあるでしょうか?

 

コミケ92 金曜日 東た11bでの同人誌に記事を書きました

c92-cover

コミックマーケット92 金曜日 東た11b参照透明な海を守る会というサークルで「簡約!? λカ娘 10」という同人誌が頒布されるらしいのです。その中で2つの記事を書きました。

1つ目は「Coq ダンジョン : 底抜けの壺の夢」という証明できない命題も証明できるCoqのタクティックを作ってしまおうというチョイネタです。CoqはタクティックがズルしてもGallinaの型検査ではじかれるから安心ですね!

2つ目は「静的コード解析はいいぞ!」というソースコードの検証手法の概要紹介です。特にVeriFastという解析ツールを使う意義を初心者にもわかりやすく導入したつもりです。短かい記事ですが。最近はVeriFastのような製品品質を静的な解析によって向上させる手法に個人的に興味があり、「静的コード解析の会」などというイベントを開催していて、次回は2017/09/23(土)に開催される予定です。

僕以外の記事についても(理解できる範囲で)解説してみます。

「モナドとひも」は@myuon_myonさんの記事で、主にモナドを圏論の図式ではない紐を使った図を描くことで理解を促進するこころみの紹介です。僕個人は日頃ヒューリスティックなブロック図を描いてしまいがちなので、形式的な図の描き方には興味がわきました。

「矢澤にこ先輩と一緒にモナドモナド!」は@public_ai000yaさんの記事で、「モナド上のモナド」について解説しています。本記事は圏論の知識が前提とされて個人的にはショック死しました。。。特にモナド合成とモナドモナドとの関連で今混乱しています。。。@public_ai000yaさんはコミケ当日ブースで売り子をしていただけるようなので直接質問するといいかもしれないですね!

「IST(Internal Set Theory) 入門 (後編)」は@dif_engineさんの記事で、超準解析のための内的集合論の入門記事の後編です。この記事の前編は「簡約!? λカ娘 9」に掲載されています。いきなり後編から読むのは辛いので、9巻も一緒に買うといいですね!9巻では無限に小さい数について考え、述語論理の導入から初学者を高階な数学の世界に持ち上げてくれます。僕も読み直さねば。。。

「VeriFastチュートリアル」は@eldeshさんの翻訳記事で、原文はこちらです。僕も少しだけ翻訳手伝いました。またこの翻訳はオンラインから全文を読むこともできます。VeriFastは先にも紹介した静的コード解析のツールの1つで、C言語やJavaコード中のコメントに特殊な注釈を設計者が書くことで、関数の事前条件/事後条件やポインタの安全な使用などをコードの実行時ではなく静的な検査によって網羅的に検証してくれます。Coverityなどの静的コード解析ツールと異なり、左記の注釈を人力でコードに追記する必要がありますが、(ある条件下では)エラーの見逃しや誤検出が起きないのが良い点だと思います。この正確な検証はVeriFastが分離論理という理論基盤の上に構築されていることに由来しています。

上記同人誌の一部のページは立ち読みできるので、気になったら是非サークルブースにおこしいただけたら幸福です。

プロプライエタリな会社でオープンソース運動をしすぎて怒られた時の謝罪メールテンプレ

[雑談] 僕のオープンソースに対する思い入れについて共有させていただけないでしょうか

少し長い雑談メールをお送りすることをお許しください。

僕はときおりオープンソースについて強い信念をもって主張することが
あると思います。そんな時
「なぜこの人はこんなにオープンソースに思い入れがあるんだろうか?」
と理解に苦しむ場面があると思います。今日はそんな僕のオープンソース
に対する愛着についてどんな理由があるのかについて説明したいと思います。

僕は20世紀MSXユーザとして育ちました。MSX-FANという雑誌があり、
その中で紹介されているコードは紙面にコードが掲載されていて、その
コードを写経して動かしていました。BASIC+マシンコードのプログラム
が多かったですが、それを意味もわからずに写経するのが小学生時代の
僕のプログラミングのルーツでした。そうしてご承知の通りMSXは終焉を
迎えました。それでもMSX-FANは発行し続けたのですが、ついに雑誌さえ
廃刊になりました。その最終号に
「これからMSXユーザはどこへ向うべきなのか」
というコラムが掲載されました。その中に
「GNUプロジェクトは多くのソフトウェアのソースコードを公開している」
「次のMSXユーザの楽園はGNUプロジェクトの菩提樹の下にある」
そのような主張がなされていました。もちろんこれは単なるコラムで
MSXコミュニティの総意ではありません。しかし中学時代の僕の心には
GNUの旗の下で一生を終えるのだ。というかすかな信念が植え付けられ
ました。

大学に入学して、学校から勧められたのはMacintoshでした。品質の悪い
OSでしたが、GUIには関心してCodeWarriorのC言語コンパイラを買って
なぜかPascalで書かれているGUIフレームワークのAPIをC言語からたたく
という謎のプログラミングモデルに悩んでいました。

大学時代後半になるとWindows 2000を使うようになりました。驚異的な
品質のOSでしたQuake3をビデオカードの上で動かしていてもまったく
ブルースクリーンになりません。マイクロソフトが設計するソフトウェアの
品質が如何に高いのか。その高品質に対する記憶は僕の心の奥深くに
注入されました。しかしマイクロソフト製品を使うのはGNUプロジェクトの
信念に反しています。僕は葛藤しながらもWindowsを使っていました。

Windowsユーザであると同時に僕はSlackwareというLinuxディストリ
ビューションを大学の友人に紹介してもらいました。そのLinux OSの上
ではGNUプロジェクトの製品がもれなく使えました。完全に自由な
エコノミーが広大な空間にひろがっていました。その全てのソースコードは
公開されていました。
「僕はこのコード全てを一生のうちに読むことができるのだろうか」
そんなみはてぬ遠い展望に僕は目がくらむと同時に大きな希望を感じ
ました。

ところがご存知の通りSlackwareの品質は劣悪なものでした。まずデバイス
ドライバがまっとうに動くことなどありません。ユーザは自分のPCで
デバイス動かないことをあたり前のように経験し自分の責任で不具合を
修正することが求められました。Windows 2000の高い品質を知っていた
自分としては、悔しいけれどLinux OSを大学の実験のようなクリティカル
な用途に使えず、あくまでもホビー用途にしか使えないなと感じていました。

そんな葛藤をかかえていたところにLinux japanとう日本の雑誌に
Debian GNU/Linuxディストリビューションの特集が組まれました。
Slackwareの他のディストリビューションしか知らなかった僕は軽い
気持ちでその特集を読みはじめました。dpkgというパッケージマネージャが
ディストリビューションの全てのモジュールをパッケージとして管理する
というしくみに関心しました。Linux kernelでさえdpkgで管理する1つの
パッケージに過ぎないのです。しかし技術面よりも強く感銘を受けた
のはそのプロジェクトの哲学でした。

そのDebianプロジェクトの哲学について調べているうちに僕は1つの文書
を発見しました「Debian宣言」です。以下にそのURLと文書の要約を引用
します。

https://www.debian.org/doc/manuals/project-history/ap-manifesto.ja.html

## A.1 Debian Linux とは何か?

"今までに開発された他の Linux ディストリビューションのように限定的な
個人やグループが開発しているものではなく、Linux と GNU の精神に則り、
オープンに開発されています。"
"Debian は、市場で十分な競争力を持ちえる、商用ではないディストリ
ビューションを作り出す試みでもあります。"

## A.2 なぜ Debian を作成するのか?

"大抵の Linux ユーザは、ディストリビューションを通して Linux なるもの
の最初の感触を得るものです。また、多くのユーザが、このオペレーティング
システムに慣れてからも、便利さを求めてディストリビューションを使い
つづけるでしょう。"
"ディストリビューションが明らかに重要であるにもかかわらず、開発者達は
ほとんど注意を払わずにいます。単純な理由によります。ディストリビューション
の構築は易しくもないし、魅力的でもないからです。"
"多くのディストリビューションがかなりよいシステムとして発表されました。
しかし、時が経つにつれて、ディストリビューションの保守から次第に関心を失い、
二の次になってしまいます。"
"これら配布業者は、より多くの雑誌で派手に広告を出してもかまわないだけの
金を努力して実際に稼ぎ出しています。単にあまりよくわかっていないだけの者が、
容認できない行動を助長してしまうという古くから見られる事例が見てとれます。
あきらかに、この状況を改善するために何か手を打つ必要があります。"

## A.3 Debian はこれらの問題に終止符を打つためにどのように努力するつもりなのか?

"Debian の設計過程は、オープンです。システムが最高の品質を持つことと、
ユーザの共同体の要求を反映させることを保証するためです。能力と背景に広がり
がある他人を巻きこむことで、モジュール化して Debian を開発することが可能に
なりました。ある分野の専門的知識を持つ者が、その分野を含んでいる Debian
の個々の構成要素を開発したり保守したりする機会が与えられるので、
その構成要素の品質は高くなります。"
"Linux が商用の製品ではなく、今後も決してそうはならないこと、しかし Linux
が商業的な競争に決して勝てはしないとは意味しないことを世に知らしめることに
なります。同意しない人は、GNU Emacs と GCC が成功していることを理由付けして
いただきたい。これらは商用の製品ではありませんが、商用であるかどうかにかかわ
らず市場に甚大な影響を与えてきました。
"Linux 共同体全体とその未来に迷惑をかけて自分が裕福になるという破壊的な目標
を目指すかわりに、Linux の未来に集中するときがきました。Debian を開発し配布
しても、この宣言で概略を述べた問題への回答とはならないかもしれません。ですが、
少なくとも、これらの問題が解決すべき問題として認められるくらいには Debian
を通して注意を引きたいと望んでいます。"

衝撃です。僕の目から入ったこの文章は確実に僕の心臓と脳を打ち抜きました。
もっと要約してしまえば彼は
「品質なき世界に我々は死するとも正義をなす!」
「品質に対する正義とは何か?それは我々がなにもかも定義するのだ!」
と宣言しているのです。プロプライエタリな製品を作っている人間にとっては
破壊者に見えるでしょう。しかし十字軍もイスラム教にとっては破壊者だったのです。

その後の歴史については解説する必要はないと思います。今皆さんがLinuxデスクトップ
を使っている際に選択するディストリビューションはUbuntuでしょう。そしてその
Ubuntuの品質の根っこは今もDebianプロジェクトが粛々と作りこんでいるのです。
僕の私見ですが、今もDebianプロジェクトを推進できたのはDebian宣言にある
品質に対する強い哲学と信念のおかげだと感じています。

ときおり僕が
「会社での生産物をオープンソース化した方が良い」
と主張するのには上記のような背景があります。今後もご迷惑をおかけすることも
多いと思います。その際には都度適切な方法でしかりつけていただけたら幸福です。

以上よろしくお願いいたします。