blog.tmp.tokyo

No Promises Await at Journey's End

華麗なるプログラミング生活(2)

前回はWikiやWordPressといったソフトウェアの紹介をしました。中でもSphinxというソフトウェアは今後よく出てきますので覚えておきましょう。興味があれば是非使ってみてください。

sphinx-users.jp

もともとはプログラマが使うものでしたが、Sphinxそのものにプログラミングのスキルは不要です。普通は使わないであろうコマンドラインからの実行など見慣れぬところはあるかと思いますが、それなりに覚えて使う価値はあるものだと思います。

それは悲しい物語

本題に近づきます

もう10年以上前のことですが、会社の先輩がWikiを改造してSphinxのようにオフラインで使える仕組みを作っていました。Wikiの記法に準拠して記述されたテキストは、そのコンバータともいうべきプログラムを通してHTMLファイルに変換されます。見た目はWikiのように見出しなど見た目が整えられ、簡単に見栄えの良いドキュメントが生成されました。

小気味よく文章が書けるのが楽しくて、おまけにコードもかけて技術的なメモに最適でした。エンジニアはだいたい仕事でハマったことをメモしておくことなしに何度も同じところでハマるような愚かなことをする人も多いので技術的知見を記録しておくことは他のエンジニアに対しても情報共有という点で有益です。 1年から2年くらいはその先輩の作ったプログラムで公私共に楽しんでいたのですが、ある日突然悲劇が襲います。

その先輩が会社を辞めました。

ソフトウェアの維持

我々が仕事で開発するソフトウェアやシステムといったものにもライフサイクルというものがあり、技術的な進歩や動作するパソコンのOSのバージョンアップなどにより数年経つと古臭くなります。画面のデザインなども流行りや廃りといったものもありますので定期的にその時代のトレンドを盛り込んだものに作り直していくわけです。

家電製品が時々壊れて買い換えるのと似ています。 そういった意味で、先輩が作ったプログラムも動作環境の刷新などのタイミングで一時的に動かなくなり、動くように調整するまで少し時間を必要になることがままありました。

プログラムのコードが手元にあれば必要な箇所を改造して仕舞えば済む話なのですが、先輩が辞めてしまってから入手も困難になり、何度かコードをもらえないか頼んでみましたが快諾はしてくれるものの忙しかったのか、ついに現時点に至るまでコードはもらえていません。

別の先輩の助言

そんな時、別の先輩からSphinxの存在を教えてもらいました。その先輩は生活態度や一般常識的なところではいろいろ破綻したダメな人だったのですが、プログラマとしては文句なく優秀な人で、私もたくさんのことを教えていただきました。

すでに会社を辞めた人ですけどね。

Pythonというプログラミング言語で作られたそれは私が愛用していた「先輩のプログラム」とほぼ同等のことができました。

おまけにこちらはちゃんとしたオープンソースのコミュニティが開発を続け、定期的なバージョンアップも行われています。当面なくなる心配もありませんし、時代とともに進化していくでしょうし、何と言ってもオープンソースなのでコードも手に入れることが可能です。最後は自分でメンテナンスする選択肢も残されているのがオープンソースというものです。

私は食事と寝るのは忘れませんでしたが、それ以外のことは目に入らずに日々Sphinxで遊びました。書きたいことが書ける環境は楽しいものです。

すべてがうまくいくに見えましたが、実は裏で少し問題を抱えていました。

記法の違い

ニワトリのタマゴがあった時、それを「卵」と書く人や「玉子」と書く人がいるように、前回の記事で紹介した様々なドキュメントフォーマッタは書き方のルールが異なります。

例えば「見出し」です。wikiだと

===見出し===

という感じに書きます。ところがMarkdownだと、

# 見出し

と書きます。Sphinxだと、

見出し
======

と書きます。誰か統一しようとか考える奴はいなかったのか。デジタルカメラの初期の頃に記録メディアがSDカードだったり、コンパクトフラッシュだったり、ソニーのわけわからんメモリカードだったりするのと同じです。

イオンはWAON、セブンイレブンはナナコ、ローソンはポンタ、ファミマはTカード。

歴史は繰り返す、と言いますが繰り返して欲しくない事ばかり繰り返します。独身で恋人なしのスタイル抜群の美女と知り合ったとか、給料が上がったとか、そういった何度でも繰り返してくれてOKなことは繰り返さないばかりか一度も起こらないことすらあります。

人は過ちを繰り返すのです。すなわち人間の歴史とは過ちの歴史。

で、なんの話でしたっけ?

記法が違うという話です。

先輩(最初に出てきた方。コードをくれなかった人)の作ったブツはwikiの記法に準じていました。そしてSphinxはまた別の書き方です。新しく書く文章は良いんですが、これまで書きためた文書がそのまま残ってるのです。

救世主現る

そんな混沌とした世の中でも救世主は現れるものです。なんとこれらの記法を相互に変換するコンバータを作った人がいます。誰かは知りませんけど。

Pandoc

ありがとう。ありがとう。

喜び勇んでPandocをインストールして変換を試みました。バラ色の人生が目の前に広がっていると思っていた時期が確かにありました。

似て非なる、の罠

結果は玉砕。wikiの記法に準拠はしていても異なる書き方を採用していた部分もあったようで全然変換できませんでした。

ここまでが前振り

ようやく「はじめに」を書き終えた感じです。ここからが「華麗なるプログラミング生活」の本編です。

続きます。