読者です 読者をやめる 読者になる 読者になる

久々の投稿

長らく離れていたが、リンクをたどるとどうやら拙作のMarkdownエンジンAoBaneのDL数を稼いでいるもととなっているのはこのサイトらしい(仮)説が浮上してきたので、後日談と近況報告を兼ねて投稿。

AoBaneのDL数はおかげさまで今日現在24,767。割と稼いでる方だとは思う(全くお金にはなってないけど)。 ただ、たぶん以前の記事にもあると思うけど、このAoBaneの開発は止めてある。 理由はコストに見合わないから。AoBaneはRubyで書かれたBlueFeatherというエンジンがBaseになっていて、そこを部分的に間借りして<span>なんかを使って文字に色を付けたり、マーカーを入れたり、記号変換したり...してるわけだが、これが結構しんどい。

PHP MDExtraみたいな複雑な記述法を改変したり追加しようとしたら、仕様1つにつき基になっている記述を理解して、改修箇所を見極めてたら、改修とテストを含め一日仕事になる。そこで目を付けたのがScalaというFP言語。

試しにAoBaneの仕様を吸い上げてAkkaとか外部フレームワークも使わずフルスクラッチで書いたら1日で動き出した。しかもコード量も圧倒的に少なく、メンテナンスもしやすい(メンテナンス性は設計(表現法)に大きくよるので、表現力以外はScalaがすごいわけではないけど)。

 

ということで、SourceFourgeを主戦場に移して公開してるのがBlackQuillというScala製MarkDownエンジン。こっちの方が忠実にExtraの記法を実装してあり、追加機能も豊富、Markdownとしても表現力が高いので自分の書き物はもうこっちしか使ってない。

ただ、sbtとか環境を導入するのが面倒なためか、AoBaneよりはるかにパワフルなのにこっちは全くの閑古鳥。まぁ世の中そんなもん。AoBaneはgem installするだけだから...

 

一時期はMac AppstoreにGUIエディタ込みでBlackQuillを出そうともしてたけど、全然審査が通らない。2,3日でしびれを切らせて担当レビュアーに"じゃぁどうすりゃ通るのよ!"となかばプチ切れの英語で問い合わせたらjreをアプリにバンドルしないと通んないよだと。それもうJVMの利点を見事に殺してる...つまりMacアプリとしてJVMを使えば、アプリの数だけJVMがメモリ上に居座る。

まぁ、当時はAppleJavaのシステムサポート切るよとオフィシャルで言った直後だったし、ちょっとした入れ違いもあったとはいえ、みるみるやる気をなくして未だitunesConnectにアップロード待ちのステータスで放置されている状態。

 

しかし、最近になってまずいことが起こった。(つまりここからがこの投稿の本題。)

FireFoxでも数式が見れない! 長いこと数式を使うような書き物がなかったため気づかなかったが、MathMLになにか変更が加わったのか、インポートしてる外部ライブラリに何かあったのか...。もう2年も前に描いたコードなので、そのレベルで見る気も起こらず、数式ジェネレータ部分は作り直すことに事にしました。

この投稿はその決意表明みたいなもの(ここまで読んで失望したした人ごめんなさい)です。ここ2日ほど下調べした感じ、2年前当時と違うのは幸か不幸か割とTeXを画像変換かつ多言語を埋め込めるようなWebサービスが出てきているところ。別サービスだけどついでにグラフ描画なんかもできるところもあったりする。

これならTeXを書いておいて実は内部的には<img>で画像埋め込みとかできるんじゃないか?というのが今回の改修の基本アプローチ。

本当はWolfram αが使えると1サイトで完結するからいいんだけど、叩いてみたらProにしろ(つまり金払え)ときたので今回はたぶん見送り。これに関しては利害関係が一致しないの一言につきる。あと、ユーザにMathematica構文を強要するのも雑だし、過去に書いたものを再変換するときにここの構文が変わってしまうといけてないので、コンバータが必要になるというジレンマ。ただ、数式だけならTeX構文をそのまま読み込むような機能もWolframにはあるのでやろうと思えばなんとかできそう。

 

何にせよ、MathMLはあまりに複雑でHTML5に変換されたときなに言ってるかさっぱりわかんなくなるので、シンプルな方に大きく倒すことにしたというお話。

あとはMarxicoみたいにMathJaxを使うアプローチにするか...少なくともMathMLを使っちゃったのが失敗だったというのは設計者として素直に認めるところではある。

ただ、できることならTeXも読んでて直感的になに書いたかわかりにくいから離れたいんだよなぁ。