夏ですね。夏といえばオープンソースの季節です。みんなオープンソースしていますか? 僕は風邪を引いています。
「うぅ、苦しい。死ぬ。僕が死んだら僕のGitHubに残されたオープンソースプロジェクトたちを頼む……」
えっと、新しくS式で書くプレゼンツールの「L5」を公開しました。
http://github.com/fukamachi/L5
「L5」って何?
「L5」はLisperによるLisperのためのプレゼンテーションツールです。S式でスライドを記述し、スライドショーを表示します。
たとえばこんな感じ。
(p (with-title "自己紹介"
(item "深町英太郎です"
"Webプログラマ"
"Lisper (CL, Clojure)"
"Perl5, JavaScript..."
"オープンソース愛好家")))
pはページを表していて、with-titleで上の表題、itemが箇条書きを表しています。
スライドショーではこんな感じになります。
本体はClojureで実装されており、ここの中ではすべてのClojureコードが使えます。これは既存のAPIを使って自分の好きなようにマクロでラップできるということです。この透過性はLisperにとって天国になりえるでしょう。L5はLisperのためのプレゼンツールです。
なぜ新しく作ったの?
名前の由来は言うまでもなく、amachangさんの「S6」(前バージョンはS5)です。S6はJavaScriptとHTMLで記述できるプレゼンツールで、PowerPointのようなGUIのプレゼンツールを好まない技術者層によく使われています。テキストエディタでも気軽に書けるプレゼンツールという点ではL5もS6と同じです。
テキストベースのプレゼンツールは他にもあります。けれど、構文が複雑だったりおまじないコードが多かったり、ものによっては簡潔さのためにパワー不足になっているものもあります。
これらはマクロを持つLispがもっとも得意とする分野です。僕は自由度が高く簡潔な構文を持つ(またそれを自分で定義できる)プレゼンツールが欲しかったのです。
インストール
あらかじめLeiningenがセットアップされていることを確認してください。(Clojure本体は必要ないかも?)
$ git clone git://github.com/fukamachi/L5
$ cd L5
$ lein deps
使い方
L5はLeiningenのプラグインの一つである、lein-runを使っています。これはローカルアプリケーション用にターミナルからLeiningenプロジェクトを起動できるプラグインです。
プレゼンを始めるには以下のコマンドを実行します。
$ lein run presen
ソースを何も変更しない状態ではサンプルのプレゼンテーションが始まります。サンプルというか、アリエルの社内で発表したClojure勉強会の資料です。せっかくなので読んでみてください。
起動してタイトルが表示されたら起動完了です。その後は矢印の左・右でスライドをいったりきたりできます。
また、F5キーを押すとフルスクリーンモードに切り替わります。
記述方法
lein run presenが実行されると、プロジェクトルートにあるinit.cljというファイルがロードされます。基本的にこのファイルを変更すればプレゼンを記述できます。デフォルトではsample.cljをロードするだけのコードです。
L5は現在活発に開発が行われているので、APIはすぐに変わってしまうかもしれません。けれど現状のAPIはコードを読む人にとっても何らかのヒントになると思うので書いておきます。
- p - ページ
- with - contextのパラメータを変更して表示
- item - 箇条書き(前置記号”・”)
- lines - 一行ごとに記述
- th - 内容をページ全体に最大化(TakaHashiの略)
基本的にはこれくらいですが、他にいくつか便利なエイリアスがあるので、調べたい人はlayout.cljを見てください。
PDFへの出力
プレゼンツールにPDF出力は欲しいです。まだ実装したてなので安定しませんが、L5にはPDFへのエクスポート機能が実装されています。
$ lein run export
少し時間がかかるのですが、これを実行するとスライドの内容がoutput.pdfという名前で出力されます。
ただ、さっきUbuntuで試してみるとスライドが大幅にずれていました。Javaの「Write once, run anywhere」にだまされた感じです。そのうち対応するのでそれまでお待ちください。Macでは正常に動くはずです。
ロードマップ
L5は未完成の代物です。現状でも足りないと思える機能がいくつも思い当たります。
- 画像や動画を埋め込めるようにする
- スライドショー中に変更した記述をリロードできる機構を用意
- スライドショー中にコンソールに次のスライドの内容を表示
- 独立したJARファイルにしてポータビリティを増す
- Twitterハッシュタグとの連携
- アニメーション
- スライドの美しさ
まとめ
勉強会で発表することがあれば、プレゼンツールは数ヶ月に一回は使うものです。その長さは30分だったり5分だったり。レイアウトもさまざまだったり。
プレゼンツールに自分を合わせるのではなく、自分に合うプレゼンツールに仕立てられるツールにしていきたいです。




コメントする