パスワードを忘れた? アカウント作成
13720964 journal
日記

m_nukazawaの日記: 技術書典5にクロスプラットフォームな本で出ます (原稿一部公開)

日記 by m_nukazawa

技術書典5は 2018/10/08 (月) 開催です。興味がある方はもうそろそろ予定を空けておきましょうということで。

技術書典5に「クロスプラットフォーム・デスクトップアプリケーション・フレームワーク・クロスレビュー本(仮)」で出ます。
GTK,Qt,Electron本です。興味があればどうぞ。
https://techbookfest.org/event/tbf05/circle/29300002

本書、原稿の草稿を書き上がり次第公開というのをtwitter上でやっていました。宣伝目的半分であわよくば指摘等反応が欲しかったわけなのですが、執筆の折り返しあたりで草稿が箇条書き以下の虫食い状態になってしまい、それがいつのまにか入稿原稿に化けて、草稿公開のタイミングが失われてしまいました。
で、もう草稿ではなく入稿原稿なのだけれど、あの話やこの情報はWebに公開しておきたいという気持ちがあるため、ここでは「はじめに」章を公開する次第です。
今まで草稿は自分のブログで公開していたのですが、(自分の中での)使い分け的に本章はスラドの日記に貼り付けるのが適当だと考えた次第。

というわけで以下、印刷原稿より「はじめに」章。

# はじめに
今や私は、GTKのことをそれほど愛していないと思う。
yatteiki.fmに影響されて技術書典にエントリしたくなり、本を書くためにテーマを考えた。本書はテーマ未定でスタートした。
今をきらめく機械学習について書くことができたらどんなによかったかと思う。売り上げとキャリアを考えるならば間違いなくその方が良い。だが現在取り組んでいる課題『任意のキャラクタ画像を鳩羽つぐへ変換する』はまだ成功していないし、書く価値のある有意な知見をまだ得られていない。筆者は情けないことに金欠で、両親にせがんで得た貴重なAWSレンタル料は今のところ、西荻窪人のイデアをサルベージすることに失敗しGPUサーバとオレゴン州を少し温めただけに終わっている。
私が技術同人誌として書けるテーマは何だろうと考えた時、GTKとの出会いをきっかけに始まる、クロスプラットフォーム・デスクトップアプリケーション・フレームワークを使ったアプリケーション開発経験に思い至った。
本書がGTKだけでなくQt,Electronを扱う最大の理由は、預金通帳を見て印刷代を回収しなければと痛感したからだ。
今や死に体のGTKについてただ書いても需要がないことは明らかだ。デスクトップアプリケーション全体が下火であることに変わりはないが、今を輝くElectronを話に混ぜておけば少しは売上もマシになるだろうと考えた。
しかしそんなことより私にとって何より憂鬱だったのは『クロスプラットフォーム・デスクトップアプリケーション・フレームワーク』というムヤミに長い題材名を、どうやって表紙デザインに押し込んだものかというレイアウト上の問題だった。
それにテーマを広げると書かなければならない文章量が増える。

「デスクトップアプリケーションは死んだ」というのは、もう10年も前にジョエル・スポルスキが書いて終わった話だ。キャッシュフローと主戦場はAjaxなWebサービスに移り、今はSPAとモバイルアプリケーションが主役の座を争っている。アルミ削り出しのクールなMacBookはちかごろの若者の目にはオッサンがみんな持っているダサい仕事道具に映ると言う。パソコンなんて重くて不格好なものは変人のギークだけが持つアイテムに回帰していくのだと語る人もいる。

ではなぜ今さらデスクトップアプリケーションについて書くのか。
タイトルが長いと文句を言いながら、『クロスプラットフォーム』の単語を削ろうとしないのは何故なのか。

デスクトップアプリケーションについて書くのは、単にそれが個人的な憧れとノスタルジーの対象だからだ。他の何者でもなく、Joel on Softwareが私をソフトウェア開発者にしてくれた。大学の図書館で、メモリを128MB乗せた小さなIBM Thinkpadの狭く荒い画面でWebを開き、トラックポイントを指で押さえながら何度も読み返した小気味良いJoelの語りを、今でも懐かしく思い出す。これから自分が大人になってどんな仕事をするのか、どのように仕事を進めるべきかを、あのブログ翻訳が教えてくれた。

クロスプラットフォームの題目を削らないのも同じような理由だ。ただしこれは、本当には私の望みではなかった。
Windows陣営の勝利が盤石となった時代に、オペレーティング・システムが普及するか否かを決めるのはプラットフォーム自体の良し悪しではなく、擁するアプリケーションの豊かさであることが判明した。クロスプラットフォーム・デスクトップアプリケーション・フレームワークは、Windowsが持つ豊かなデスクトップアプリケーション資産に対する、UNIXデスクトップ界隈の憧れを背負っていたと、私は勝手に思っている。
かつての私もまた、フリーソフトとオープンソースのアジに乗せられてWintel連合崩壊の日を夢見る愚かで若く感化されやすいコンピュータ・サイエンス学科生だった。いずれつまらない職業プログラマになってつまらないプロプライエタリ・ソフトウェア開発をする未来が来ることを予感していたが、LinuxデスクトップアプリケーションOSSを書く自由ソフトウェア戦士に憧れていた。

本書はもしかすると、輝かしい過去の巨大IT産業文明が後方互換性という汚染物質を撒き散らしながら崩壊した後に墓所として建立された、というのはどうだろう。
Wintel連合とUNIX戦争がソフトウェア業界という大地につけた深い傷を癒やすためにgoogleという攻撃的な生態系が生まれ、開発者がゆるやかな世代交代を終えた時、Microsoftはデベロッパーフレンドリーなプラットフォーム・ベンダに生まれ変わり、ウォーターフォールを知らずアジャイルプロセスとCIテストによる穏やかな開発だけを楽しむ新たな開発者たちで地上は満ちる。
本書に書かれている文字を読み未来へ伝えるのだ開発者たちよ、ここには旧世代の知恵が書かれている。いつなのかは言えぬ、だがいずれ闇は終わり輝かしい新時代がやってくる。本書はそのために必要な知識を胎内に宿している。
閑話休題。最近ナウシカ読み返したんですよ。

墓という比喩はあながち間違いでもない。デスクトップアプリケーションを書き続けたいと望んでいても、さすがにそろそろ周回遅れでもいいから機械学習に本腰を入れろという無言の空気を感じる。(ところで機械学習に必要なAWS代はその空気ではなく両親が出している)

本書を書きながら私は、まるで別れをテーマにしたつまらないフランス映画を見ている気持ちに襲われた。冒頭のシーン、別れの手紙を書きながら男は色あせた過去の日々を思い出す。当時顔を真っ赤にして怒った彼女の悪ふざけも、今にして思えば俺は心の何処かで楽しんでいた、といった風に。
しかし別れの手紙にしては、本書は丁寧さに欠けると言わざるを得ない。
私はソフトウェアドキュメント中のソースコードはすべてユニットテストされているべきだという意見に賛成だが、本書ではソースコードの検証をしていない。人の記憶は信用ならないものだが、出典確認もほとんど出来ていない。昔はてなブックマーク経由で読んだ記事をソースに書いてみたものの、同じ記事を再び見つけることができなかったという箇所がままある。本書はポエムおよびエッセイを自称しているのだけれど、「要出典」でページが埋まってしまわないための言い訳としての要素が大きい。

そもそも本書、書いてもわりと良いことがないのだ。テーマに対する網羅性と正確性に欠けることが明らかになるだけだ。テーマに対する熱意不足が端々で漏れ出ている。印刷費回収のメドは最初から無い。間違いに対してマサカリすら飛んでこないマイナジャンルの悲しみを身に沁みて感じる羽目にもなるだろう。機械学習の本を書いて出せば箔が付いて良いのかもしれないが、GTKについて書くことは、預金通帳と今後の人生に対して良いことが何もない。
趣味というのは心,身体,生活すべてにおいて良くないものだと書いたのは森博嗣だったか。
AWS代を出してくれた親のことと自分の将来のことを考えるならば、技術書典5のサークル当選をブッチして今すぐ全力で給料の上がる転職先を探すべきだ。今の職場、わりと居心地良いから好きなのだが。日頃両親には感謝していると言っておきながら、2ヶ月かけて本書を書くのはとんでもない親不孝だ。

それでも、本書を書きたいと思った。

インターネットには特定のテクノロジに対する入門記事が乱立している。入門記事に価値がないわけでないのだけれど、クイックスタートとAPIリファレンスマニュアルだけでは、私のような未熟者にExcelのような本物のソフトウェア製品を開発することはできない。
そのテクノロジを使って本物のソフトウェアを開発した開発者の知見が必要だ。Joel on Softwareは私が求めたものを浴びせるように与えて私をソフトウェア業界へ導いてくれたが、Joelがブログから去った後、私は新たな師を見つけることが出来なかった。今日もはてなブックマークをリロードして空振りに嘆息する毎日を送っている(はてブにそれを求めるのは間違っておりせめてhacker newsを読め、という指摘は正しい)。

ところで、私には信じる神様が3柱居る。その内の一人はこう言った。
『無いんだったら、作ればいいのよ』[^haruhi]

[^haruhi]: 『涼宮ハルヒの憂鬱』(著:谷川流)より

Joel on Softwareには「ロード・パーマストン問題」という記事もある。その中に、Webサーバ言語を選定するとき候補となるPHP,Java,ASPのすべてを熟知した人間はいない、なぜなら本物のソフトウェアを開発した数年の経験が必要だからだ、という話が出てくる。
私の開発経験は人気とは決して言えないフリーソフトウェアで、複数人による大規模商用ソフトウェア製品ではない。経験年数も十分長いとは言えないかもしれない。
しかし、GTK,Qt,Electronで、実用アプリケーションを実際に書いたことがある開発者はそれほどいない。
たぶん。
もしかしたら結構居るのかもしれない。どうだろう。
しかしデスクトップアプリケーションというジャンル自体が下火な2018年現在、クロスプラットフォーム・デスクトップアプリケーション・フレームワークをテーマに本を書く行為は正気とは言えない。特にGTK。
筆者本人が情熱喪失をどれだけ強調したとしても、このテーマに情熱を注ぎ本を書くことにスノッブは今や他に誰もいない。

というわけで本書は、神の言葉に従い、いつか夢見た希望あふれる未来への墓標として、だが確かに本物の実用クロスプラットフォーム・デスクトップアプリケーション開発を経験した技術者により、GTK,Qt,Electronを渡り歩いて得た知見を惜しげもなく織り込み書かれた。
2018年現在、クロスプラットフォーム・デスクトップアプリケーション・フレームワークというテーマで書かれ、手に入れられる中で最良の本が本書であることを、ここに約束する。

Written: Michinari Nukazawa @ project daisy bell (2018)

typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...