以前公開したS式で書くプレゼンツール「L5」の続報です。
公開時と比べるとプレゼンを書くためのマクロの整備と、それに伴った機能拡張がされています。今まではほとんど自分一人が使うために開発を続けていましたが、既に実用レベルに達していると感じる完成度になったためver1.0.0として正式リリースすることにしました。
http://github.com/fukamachi/L5/tree/1.0.0
1.0.1をリリースしました。
http://github.com/fukamachi/L5/tree/1.0.1
セットアップ
L5を使うにはLeiningenというClojureのビルドツールが必要です。
※Clojure本体のインストールは必要ありません。Leiningenが勝手にダウンロードします。
Leiningen
まずはLeiningenの最新安定版(1.3.0)を導入します。
$ sudo wget -O /usr/local/bin/lein http://github.com/technomancy/leiningen/raw/1.3.0/bin/lein
$ sudo chmod a+x /usr/local/bin/lein
$ lein self-install
※先日 @peccul さんから、L5のビルドが途中で止まってしまうという現象が報告されました。原因を探ると、Leiningen 1.3.0からのバグが原因のようです。このバグにはL5側が回避するような修正をしたため、現在はLeiningenによる不具合は改善されています。
L5
L5の導入は簡単です。gitが入っていない場合はDownloadsからtgz/zipをダウンロードできます。
$ git clone git://github.com/fukamachi/L5
$ cd L5
$ git checkout refs/tags/1.0.1
$ lein deps
これでセットアップが完了です。ここで、以下のコマンドを実行するとサンプルのプレゼンテーションが起動します。
$ lein run presen
チュートリアル
下準備
L5を起動すると、L5のディレクトリルートにある run.clj というファイルが実行されます。この実行ファイルでは以下の2つを定義します。
- コンテキスト (フレームの大きさ、文字の色など)
- スライド
デフォルトのrun.cljには以下のように書いてあります。
;; Delete this line and write your slides below. (load-file "sample.clj")
これはsample.cljをロードするだけのコードで、プレゼンの記述はsample.cljに書かれています。
新しいプレゼンテーションは、コメント通りにまずrun.cljの2行を削除してから始めます。
その後、以下のように名前空間を定義します。名前空間の名前は何にしても構いません。
(ns L5.sample (:use L5 L5.layout))
これで準備完了です。
コンテキスト
次にコンテキストを定義します。コンテキスト定義にはdefcontextを使います。
(defcotext {...})
以下は640x480のフレームで、フォントは「Gill Sans」の30ptを指定しています。
(defcontext
{:width 640 :height 480
:font (Font. "Gill Sans" 0 30)})
コンテキストには主に以下のパラメータがあります。
| color | 文字色 (Colorオブジェクト) |
|---|---|
| background-color | 文字色 (Colorオブジェクト) |
| background-image | 背景画像 (ImageIOオブジェクト) |
| width | スライドの横幅 |
| height | スライドの縦幅 |
| padding | パディングをMapで指定 (例: {:top 100 :right 20 :bottom 100 :left 20}) |
| font | フォント (Fontオブジェクト) |
これらはスライド内で適宜変更することができます。詳細は次節で説明します。
スライド
次はいよいよスライドを作ります。スライドはdefslidesで定義します。
(defslides slide-functions*)
例を出します。
(defslides
(p (with-title "自己紹介"
(item "深町英太郎です"
"Webプログラマ"
"Lisper (CL, Clojure)"
"Perl5, JavaScript..."
"オープンソース愛好家"))))
ここで、pはpageを表しています。このスライドは item の中身の文字列を一行ずつ箇条書きで表示するスライドです。
ここで使用できる主なAPIは以下の通りです。
- レイアウト関連
| p | [& body] | ページ |
|---|---|---|
| title-page | [& strs] | 表紙用の整列された大きな文字を表示 |
| with | [params & body] | 一時的にcontextのパラメータを上書きして実行 |
| with-size | [size & body] | 一時的にコンテキストのサイズを変更 |
| with-padding | [padding & body] | 上を指定ピクセルだけ空けて表示 |
| with-title | [title & body] | 上部にタイトルをつけたレイアウト |
- 文字関連
| lines | [& strs] | 引数の文字列を一行ずつ表示 |
|---|---|---|
| item | [& strs] | 引数の文字列のそれぞれの行の先頭に”・”をつけて表示 (itemizeの略) |
| enum | [& strs] | 引数の文字列のそれぞれの行の先頭に行番号をつけて表示 (enumerateの略) |
| align | [align & strs] | 文字列をセンタライズして表示 |
| t | [& strs] | 引数の文字列を画面いっぱいに表示 (Takahashiの略) |
| img | [file] | 指定されたファイル名の画像を表示 |
| fit | [& strs] | 表示領域いっぱいに文字列を表示 |
| txt | [& strs] | 必要に応じて文字を折り返して表示 |
実行時リロード
スライドを書いたら、L5のルートでlein run presenを実行して起動できます。ただ、スライドを一部変更したときにいちいちL5を再起動するのは面倒です。
L5にはスライドのホットリロード機能があり、[R]キーを押すだけで再起動せずにエディタで書いたスライドの内容を反映することができます。
キー操作
次のページ: [Right]、[Enter]、[Space] 前のページ: [Left]、[Backspace] フルスクリーン: [F5] (トグル)、[Esc] (解除) ホットリロード: [R]
PDF出力
L5には書いたスライドをPDFとして出力する機能があります。L5のルートディレクトリで以下のコマンドを実行してください。
$ lein run export
少し待つと同じディレクトリに”output.pdf”というファイルが出力されます。
開発状況
見ての通りGitHubでオープンソースとして公開しています。BTSにはGitHub付属のIssuesを利用しています。
L5の未来
あまり新しいソフトウェアの未来を語るとあとで恥ずかしいことになりそうですが、少しだけ。
L5の設計思想は「自分に合わせたプレゼンツールを設計できる」というものです。S式とマクロによる抽象化で、自分のプレゼンスタイルに合わせたDSLを構築することができます。これは今後も続けていく方針です。
また、将来的には完成度として劣らないプレゼンテーションを作れるようにしたいです。Keynoteは美しさの面で非常に素晴らしいツールです。L5はそういった「美しさ」も劣らないソフトウェアとして改善していこうと思います。








最近のコメント