| @Mac/iPhone

アウトライン・プロセッシング入門を読んだ

『アウトライン・プロセッシング入門』という本を読んでみたら意外とよかったのでアウトラインとアウトライナーについて思っていることを書きます。

読んだきっかけ

WorkFlowy というアウトライナーについて調べてたらよく紹介されていたので読んでみた。 WorkFlowy というのはウェブベースのアウトライナー。 Google で「 WorkFlowy 」で検索すると Evernote でライフハックしまくりお父さんみたいな人たちが群生してる様子が観察できる。犬のえさやりタスクや子どもを公園で遊ばせる予定などをどうやってクラウドで管理するかみたいなことをアツく語っている。

良かったところ

アウトライナーの使い方を見直した。最近の自分のアウトライナーの使い方は間違っていた。

アウトライナーとは

文章の概要・目次を書くために使うものというのが一般的な理解。文章を箇条書きにして書くことができる。箇条書きにした内容を入れ子にしたり、順番を並べ替えたりできる。しかし概要や目次の作成だけにアウトライナーを使うのはもったいない、というのが本書の趣旨。

自分のアウトライナーの使い方

以前はよくアウトライナーを利用していたが、最近はあまり使わなくなってしまった。暇だったためブログの記事を書くのに時間を割くことができたので、アウトライナーで入念に内容を練ってから書くようなことをしていた。ブログに投稿する直前までアウトライナーで書いていたので、書きながらつながりのおかしいところがあると文章を入れ替えたり見出しを付け替えたりが楽だった。

最近

職業プログラマーになって Vim を使うようになり、 Vim で書くのが一番速く書けるようになった。何でも Vim で書くようになり、アウトライナーは最初のアウトラインを考えるときだけ使うようになった。このようなスタイルではアウトラインが最初に固定されてしまい、つながりが不自然なところがあってもそのまま突き進むしかなく、文章を書いていて何とも言い表しようのない息苦しさがあった。1

アウトラインはどんどん変わっていくべき

アウトラインは決して不変なものではなく、文章を書いていてアウトラインが修正されていくのはよいことだといえる。アウトラインを修正しながら本文を書いて行くことができるのがアウトライナーのメリット。雑に書き出された断片的な内容を「シェイク」という過程で並び替え、論旨を整えていくプロセスが良い文章を書く上で重要。最初のアウトラインの作成にだけアウトライナーを使うのはアウトライナーのメリットを享受できずもったいない。アウトラインを先に作ってからの文章作成はウォータフォール型の開発に似ていると思う。アウトライナーで最初から最後まで書くのはアジャイル型の開発に似ている。小さく区切って作業を進め、こまめに振り返り、変化に対応することで良い成果物=読みやすい文章ができあがる。

アウトライナーで最初から最後まで書くことの問題点

アウトライナーで書けば万事オッケーかと言われるとそうとも限らない。書き終わった文書の管理が問題となる。

いま

memolist.vim で書いて Day One.app に保存している。 Terminal で grep するか Day One の検索窓で検索すると必ず目的のものにたどり着ける。

アウトライナーで文書作成

個々のファイルに内容が分断してしまう。こうなると検索しづらく、参照性が低い(「ファイルの壁」問題)。ただ一部のアウトライナーはこの問題に対応している(後述)。

アウトライナーで書いて Vim で Markdown 形式に整えて清書、 Day One に保存すれば検索できそうだが若干面倒くさい。しばらく頑張ってみる。

Mac で使えるアウトライナーいろいろ

Tree 2

個人的に一番よく使ってる。安くて機能シンプル。 iOS 版がないのがちょっと残念。

OmniOutliner

昔は OS にバンドルされてて、 .plist の拡張子のファイルを開こうとして勝手に立ち上がったりしてうざかった。最近の OmniOutliner は横にカラムを追加して Excel みたいな使い方できる。一見、地獄っぽい。Excel 方眼おじさんに OmniOutliner を与えると泣いて喜ぶかもしれない。

TaskPaper

実は TaskPaper はアウトライナーそのもの。タスクを書き出すという行為、アウトラインで考えを整理する行為に似てる。したがってよいタスク管理ソフトはアウトライナー的な側面を持つ。実際アウトライナーでタスク管理する人は多い。

MindNode

実はマインドマップも OPML (アウトラインプロセッサーの共通フォーマット)で書き出せるためアウトライナーとして使える。ミーティングなど大人数でブレインストーミングしながらアウトラインを作成するときは MindNode のようなマインドマップの方がよい。

WorkFlowy

WorkFlowy なら先述の「ファイルの壁」問題を解決してくれる。従来なら個々のファイルに分かれていたアウトラインを一つに統合し、個々の Node として扱う。ファイルは一つしかないので分断が起こらない。一つのアウトラインの中に自分のすべての思っていること・考えていることが保存される。

WorkFlowy は「ファイルの壁」を突破した使い方が出来るが、 SaaS なのでオンラインでないと使えない。飛行機の中などインターネットにつながらない場所でアウトライン書けない。完全ローカルで使える買い切り型の WorkFlowy があったら最高2。オフラインでも使えるインストール型のアプリの方が動作が速くて快適なのは自明だ。アウトラインが増えてくると結構高い Pro プランにしないといけないのもつらい(月額 $4.99)。

なお以下のリンクから登録してもらえると僕とあなたの無料で使える WorkFlowy のアウトライン数上限が 250 個増えるので登録してやってもよいという方は是非よろしくお願いします 🙇🏻

まとめ

自分の文章の書き方、アウトライナーの使い方を見直した。文章作成の大半の部分をアウトライナーで行い、 Vim を使うのは文章の最終仕上げ段階だけにとどめたい。そうすることでつながりのおかしい文章や読みにくい文章を避けることができる。

『アウトライン・プロセッシング入門』は Kindle オーナーライブラリにあって無料で読めるので Amazon プライム会員の人は読んでみるといいかも。よい内容は最初の方に集約されています。

おまけ

このブログの記事でアウトライナーで割と最後まで書いてた文章の例。

  • 家を買ったので得られた知見を共有します
    • 最初は普通に書いていたが文章が冗長で読みにくさを感じたので文章のダイエット目的で箇条書きにしてアウトライナーで書き直した。
    • はてブで 2000 ブックマークくらい付いた。
    • 箇条書きのつながりが良く読みやすかったのかもしれない。
  • 糖質制限で脱デブ成功しました
    • ほとんど最後までアウトライナーで書いたが「シェイク」不足。
    • 文章が読みにくく、ほとんどブックマークされなかった。

  1. 天性の Vimmer は「シェイク」(後述)も Vim で出来るかもしれない。 

  2. Google Chrome 限定だけどオフラインで使える Chrome アプリもあるっぽい。WorkFlowy - Chrome ウェブストア 

| @技術/プログラミング

京都国際会館

京都であった RubyKaigi 2016 を観覧してきた。 RubyKaigi 、つくばであった 2010 がこれまでの人生での唯一の RubyKaigi で、人生二度目の観覧だった。

RubyKaigi 2010 の思い出

一度目のときは少し前に増田に上がってた勉強会ゴロ状態(受付の人と技術書を買ったジュンク堂の人と以外誰とも会話をせずに帰宅)だった。

ちなみにこのとき ESM の企業発表を見に行って、 ESM に転職したばかりの hsbt さんの姿を初めて目にした。なんか入社したばかりなのに社内ブログで暴れてて愉快、みたいな紹介のされ方だった。その後同じ会社で働くことになるとは思いもしなかった。

ESM の発表はとにかく鮮烈に印象に残ってて、ペアプロのライブコーディングだった。 ursm さんが CRM か何かの開発を実演してた。まず最初に落ちるテストコードを書いて、その後にパスするプロダクトコードを書く、というやつを初めて目にして、田舎で HTML コーダーをしつつちょっとしたプログラムを書いてた自分は衝撃を受けた。黒い画面の Vim で高速にコードを書いていく様がとにかくかっこよかった。はやくこういう感じでコード書けるようになりたい、と思ったものだった。

クックパッドの企業発表みたいのも聞きにいって、このときクックパッドもまだそんなにエンジニアの数多くなかったはずで、同じくはてなから転職してきたばかりのセコンさんが話してるのを聞いてトートバッグもらって帰った。

YAPC::Asia Tokyo 2015 の思い出

去年の夏、 YAPC で東京に行って、このときはペ社時代の知ってる人としゃべったりして無言の帰宅は避けられた。

YAPC 2015 は気がついたときには懇親会の申し込み締め切られててどこにも行けず、一人浜松町の宿泊先の近くの「とにかく安くて量が多い」と食べログにレビューが書いてある寿司屋に入って一人で寿司を食べたら寿司がねちゃっとしてて具合が悪くなったりしてた。

RubyKaigi 2016

今年も発表する側にまわったわけではないので一般ピープルである点は同じだったが、これまで話したことなかった人と話せたのがよかった。

取り分けよかったのが Fjord 社の komagata さんと話せたことだった。今後の Lokka の方針をどうするか開発者会議的なものを開催してババっと方針を決めましょう、という話をした。 Lokka 、思い入れがあるので積極的にメンテナンスに関わって今後も長く使い続けていきたい。

一日目

一日目は Kaizen Chat についてのブログ記事を公開するというタスクがあって、 Matz のキーノートとかはあまりじっくり聞けなかった。記事公開後に会社のブースで自分のシールを配布したりして公私混同してた。

今年の RubyKaigi は懇親会の枠が大きかったおかげで申し込みそびれるということにならなくてよかった。

オフィシャル懇親会で Fusic 社の k1low さんと初めてゆっくり話をした。Fukuoka.rb で顔を合わせることあっても一緒に酒飲んだりする機会なかったので RubyKaigi に来て初めてじっくり話すという感じだった。

ヒトデさんとその愉快な仲間たちの皆さんとも話して、 shikakun はオリジン弁当ばかり食べてるくせにやたら調理器具を持っていて不可解だとか、風呂蓋付きの浴室がある部屋にすんでいていけすかないという話をした。

Twitter で 8 年くらい前にハゲクラスタとしてわいわいやってた send_ さんとも再会できて、お互い帽子をかぶった状態でいまの仕事の話をしたりした。

オフィシャル懇親会のあとは、ヒトデさんオーガナイズの二次会に参加させてもらった。デンエンという物価が崩壊してる飲み屋に行ってタワーから注いで飲むビール飲みまくった。クックパッド社の著名エンジニアの皆さんと対面に座ったけど人に自慢できるような OSS とかなくて雑魚いので自己紹介に困ったが、とりあえずこういうアイコンのものですと言ってシールを見せたら「あ、なんか見たことある」という感じになったのでシール便利だった。

二日目

朝一番の Justin Searls さんのリファクタリングについての発表がとにかく面白かった。

去年 YAPC で GitHub の人が話してた sicientist と似てるけど、リファクタリング前後のコードで A/B テストをする gem の紹介。新しい方のメソッドが例外投げたら rescue して古い方のメソッドを実行するというのが面白かった。本番にも安心して投入できるとのこと。

三日目

午前二番目に tkawa さんの HTTP クライアントについての発表聞いた。 HTTP クライアント乱立しててひどい、 API をラップしてリモートサーバー側のクラスを再現するような異常なクライアント多くて、 REST API とは一体何なのか状態だ、みたいな話だった。言われてみれば確かにそうかもしれない。独自の API クライアント作ることなく、 Rack が Rack Middleware を use して拡張していくみたいに、 HTTP クライアントの側でも Middleware を use していくのがよい、そこで Faraday ですよ、という話で、あ、 Faraday ってそういうことを目的にしてたんだと膝を打った。

午前中最後の Chris Arcand 氏の発表が面白かった。

Ruby のコードを解析して呼ばれてないメソッドを調べる、という発表だった。実際に Rails プロジェクトとかで使うのは大変そうに見えたけどいまから君のプロジェクトに投入できるよ、 Rails もダイジョブみたいなことを言ってた気がするのでスライド見直したい。

最後のセッションの前、一日目のデンエン会で知古を得た pastak さん見かけたので uiureo さんを紹介してもらって話をした。 uiureo さん、初対面だけど話しやすくて好青年な感じだった。 r7kamura さんとも少ししゃべらせてもらってよかった。

飛行機の時間の都合があったのでクロージングまでは残らず、最後のキーノートの途中で離席して帰途についた。ホールを出ようとしたところで滑り込みで会場にやってきた元同僚の hisaichi551 さんと邂逅して自分のシールを何枚か雑に渡した。ゆっくり話がしたかった。

京都での開催について

京都での開催良かった。個人的には福岡からだと東京に行くよりも京都の方が近いので移動が楽で良い。首都圏からの大多数の参加者も京都に宿泊して参加するので夜通しどこかで RubyKaigi 関連の飲み会が開かれてる感じで祝祭感あった。夕方から観光したりできて海外からの参加者も満足度高いのではないかと思う。京都国際会館のインフラも素晴らしかった(施設、庭園、食事内容)。スポンサーの提供で振る舞われたお弁当おいしかった。

総合的な感想

RubyKaigi 、海外からのスピーカーの発表はどうやってよいコードを書くかとかリファクタリングとかの話が多い。日本人の発表者の人は Ruby を開発する方の話が多い。( Ruby コミッターのほとんどが日本人だから)。なので Ruby 本体の開発に興味ない人( Ruby 開発者ではなく Ruby ユーザーなプログラマー)はぽかんとすることが多いかもしれない。自分は結構ぽかんとしてた。

あと今回多いと感じたのが Concurrency についての話だった。どうやって Ruby で並行性を上げるかという話。 Thread は難しいので素人は手を出すな、ということはわかったけど Ruby 3 の Guild というので素人でも Concurrent なプログラムが書けるようになるかどうかは今ひとつわからなかったので資料を読み直したい( reuibld.fm の Episode 158 を聞くと良い復習になりそう)。 Ruby 3 に並行処理の使い勝手が向上する前に、他の言語で並行処理について学んで準備をしといた方が良さそうだと感じた。

2010年の勉強会ゴロ状態のときに比べれば、何人かの人と話したりシールを配ったりすることができて、有意義な時間を過ごすことができたと思う。ただアイコンの気持ち悪さで認知されるよりも書いたソフトウェアの知名度で認知される方がよいので、カンファレンスに行って自己紹介するときに「○×というソフトを作ってます」と言えるようになりたい。仕事だけじゃなく、オープンソース活動もやっていけるように頑張りたいな、と気持ちをあらたにした会でした。

| @技術/プログラミング

@glidenote 先生作の memolist.vim 便利で、仕事のドキュメントからメモ書き、ポエムに至るまで memolist.vim で書いてるけど、 ~/Dropbox/memolist/ にドキュメントが溜まりまくって厳しい感じになってきてた。文章を書く、ということに関しては vim + memolist.vim はとても良いのだけど、書いたものを後から読み直す、という面では弱い部分があると感じる。 iPhone で読みづらいし。その点、 Day One は過去記事を読みやすいし、 iPhone アプリもあるので夜寝る前に過去に書いた文章を読んでニヤニヤしながら眠ることも出来る1

というわけで ~/Dropbox/memolist/ にある Markdown のファイルを Day One.app ( Day One 2)に取り込むやつを書いた。

タイトルにマッチする文字列が入ったファイルを除外したり、その日以降のやつだけ、という感じで絞り込み指定したりできる。めっちゃ便利。

使い方

rb-dayonejson gem が必要なのでインストールしてください。 --execute オプションを付けないとデフォルトは dry-run です。

Example) 今日書いた記事をインポートする

ruby memolist2dayone.rb

Example) 2015/01/01 以降の記事を取り込むが、「日報」という文字列をタイトルに含む記事は除外する

ruby memolist2dayone.rb --since 2015/01/01 --exclude 日報

Example) ~/Dropbox/memolist 以外のディレクトリを対象ディレクトリにしたいとき

ruby memolist2dayone.rb --target_dir ~/memolist/

  1. 前も似たような記事書いてる。 昔の日記を全部 Day One.app にぶっ込んだ - portal shit! 

| @Mac/iPhone

この記事はできる! Mac OS X アドベントカレンダー 20 日目の記事でしたが遅れて書いています。遅れてすみません。


Soulver and Calca

テキストを入力するためのソフトはいま色々ある。プログラミング向けのエディターとしては Emacs と Vim に加えて最近では SublimeText や GitHub の Atom なんかもある。ただ Mac にはプログラミング用途ではないけど面白い文章を書くためのソフトがあるので紹介します。今日は計算について特化したテキストエディターについてです。ちなみに一個前に FoldingText というエディターについて書きましたのでよろしければそちらもご覧ください。

パソコンでも紙に書くように計算したい

パソコンでもチラシの裏なんかみたいに計算過程を残しながら計算したいと思うことはないだろうか。自分はある。最近はパソコンや携帯電話に電卓機能がついていて計算ができる。しかし電卓では計算を行ってしまって答えを出すと計算の過程を見ることが出来ない。一部のパラメーターを変更して計算し直したいと思うことはないだろうか。

一足 300 円の靴下を 3 足買ったら => 900円
400 円の靴下だったら?(計算し直し)

複雑な計算だったりするとこういうのうんざりしてくる。計算の過程をあとからふりかえることが出来る状態でパソコンで計算できれば素晴らしい。

そんなのを実現してくれるのが Soulver と Calca だ。この二つのソフトはテキストエディタと計算機の中間に位置するようなソフトだ。

自動車ローンなんかの計算をしていて自動車本体と別に購入時の諸費用がいろいろかかって最終的にいくらになるか、みたいな計算をするとき、いちいち表計算ソフトに数字をいれていくのはだるい。チラシの裏で筆算を行った方が早いのではないかと思うことがある。

この手のソフトは自分が知っている限り二つある。一つは Soulver というやつで、こっちの方が多分メジャーで取っつきやすい。しかし高い。もう一つは Calca というもので、こちらの方はより理系向けっぽい機能が充実してる。そして安い。

Soulver

Soulver の良いところ

  • 見た目が Mac っぽい
  • 自動的に足し算する
  • 文章から数字要素を空気読んで抜き出して計算してくれる

Soulver の残念なところ

  • Markdown で書けない
  • 独自定義の関数が使えない
  • コピペしたときに計算結果がコピーされない

Markdown で書けないのが残念だ。また式を関数として定義できないので、式の使い回しが出来ない。場合によっては似たような計算式を何度も羅列しないといけなくなる。加えて計算結果が文字情報として残らないので、コピー&ペーストで計算結果を別のところに移したいときに使えないのが不便だ。

Calca

Calca の良いところ

  • 独自関数を定義できる
  • 変数の遅延評価ができる
  • 単位が自動認識される
  • Markdown で書ける
  • 計算結果をコピペできる
  • グラフが描ける!

独自関数を定義できる

独自の関数を定義できる。式を使い回せるので DRY に計算できる。

変数の遅延評価ができる

変数の遅延評価ができる。先に計算式を定義して後から変数を定義するやつ。 Soulver にはこれができないのが結構痛い。

単位が自動認識される

Soulver は単位を事前に登録しないといけない。例えば「本」のような単位はユーザーが事前に登録すれば解釈できるがそうでなければ Soulver は文字列として処理する。Calca は数字のあとにそれっぽい文字列がくっついてると自動的に単位として解釈して計算してくれる。いきなり「3本 * 3」と打つと「9本」と単位つきで答えを出してくれる。

Markdown で書ける

独自の拡張子を持たず Markdown 文書として書けるので日頃から Markdown を使い慣れてる人には大変使いやすい。保存時も .md などプレーンテキストとして保存できるので他の人と共有もしやすい。

計算結果をコピペできる

計算結果が文章内に表示されるので、計算内容をコピペするときに便利。

calculateBMI(weight, height) = (weight in kg) / (height in m)^2

calculateBMI(75kg, 172cm) => 25.3515 kg/m^2

グラフが描ける

2時間半停めたら 500 円だとわかる

理系の人が研究とかしながらメモを取っていくときには便利かもしれないけど、一般人にはいまいちメリットがない気もする…。

Calca の残念なところ

  • 文章中の数字を計算してくれない
  • 計算するときにいちいち式の後ろに => を入力しないといけない
  • デザインがいまいち

文章中に混ぜた数字を賢く計算してくれない

式は式として書かねばならず、文章中に数字を混ぜとくと自動的に計算してくれるような機能はない。

計算するときにいちいち式の後ろに => を入力しないといけない。

これも少しの手間だがわりあい面倒くさい。しかしおかげで計算結果が文章中に表示されるので、コピペで計算内容をほかの場所にコピーするときには便利。

デザインがいまいち

Calca は技術者向けなためか装飾が最低限だった。ソフトは使ったときの心地よさとか自分との相性が大事だと思う。 Soulver の方が心地よく感じられる。

結論

Calca は高機能だけど、理科系で研究とかをやってて複雑な数式を入力する機会がある人以外には用途が少ない気がする。またぶっちゃけるとプログラム書くみたいな感じで計算やるんだったら、 Ruby で irb 起動してやるのでも十分だったりする。プログラマーが好きそうで実はプログラマーだったらコード書いて計算させてしまって利用する機会がなかったりとかそんな感じ。

というわけで僕は毎月 Soulver で金の支払いの計算とかをしています。おすすめです。

おまけ

Mac の話ではなくて申し訳ないのですが、便利な使い方としては、 iPhone 版の Soulver をインストールしておくと回転寿司に行ったときの計算が劇的に楽です。こんな感じ。

Soulver for iPhone in 回転寿司

| @Mac/iPhone

この記事はできる! Mac OS X アドベントカレンダー 16 日目の記事でしたが遅れて書いています。遅れてすみません。


FoldingText

テキストエディター、普通は文章を書くことに特化してる。しかし最近いろいろおもしろいの出てきてて、書いている内容を理解するやつが登場してきた。今日は FoldingText を紹介します。

FoldingText は TaskPaper を作っていた1 Hog Bay Software が開発している2。 TaskPaper については以前書いたことがある。この会社は WriteRoom とかも開発してて、 Mac 好きの間では 7, 8 年くらい前に一世を風靡した。いまは Jesse Grosjean という創設者のプログラマーが一人でやってて、なかなかくせのあるソフトを作り続けている。

何ができるのか

  1. Markdown で文章書ける
    • テキストフォーマットの文章を書くという意味ではその辺のほかのエディターと大差ない
    • 文章の編集がしやすいショートカットが割り当てられている
  2. 見出しレベルのショートカット指定
    • 段落の並び替えなど( Outline Processor のような使い方が出来る)
  3. 文章を書くこと以外におまけがついてる
    • 文章書くのがおもしろくなる

文章書くのがおもしろくなる機能

セクションを隠す ( Fold / Unfold )

ソフトの一番売りの機能で名前の由来でもあると思う。今書いているセクションだけ表示して、その部分にのみフォーカスして文章を書くことが出来る( WriteRoom のコンセプトに近い)。

ショートカットによる切り替えのほかに、見出し横の # をクリックすることで、そのセクションを折りたたんだり、タグで表示するセクションを絞り込む、といった機能がある。

Vim でも似たようなことは出来るが、予め Fold / Unfold するルールを記述しておいたり、範囲選択して Fold するエリアを指定したり、 Vim Plugin を追加する必要がある。

ToDo

TaskPaper 形式でタスクリスト書ける。

FoldingText TaskPaper like ToDo

# 例.todo

- `見出し.todo` とすることでチェックリスト書ける
  - `.todo` みたいなやつを Modes (モード)と呼ぶ
- done したら `@done` タグがつく @done(2015-12-31)
- TaskPaper の機能を取り込んだ感じ

計算

こんな感じで計算できる。

FoldingText Calculation

# 例.calc

1 + 1
152 / 324 * 194.3 - 1000

スケジュール

行程にかかる時間を入力すると終了時間を教えてくれる。現在の行程がハイライトされ、時間が来たら通知が表示されたりする。

FoldingText Schedule

FoldingText Schedule Notification

FoldingText Schdule Notification on Notification Center

# 例.schedule

うんこ 5 minutes
しっこ 30 seconds
シャワー 0.2 hours

タグをつけられる @tag-description

このように見出しやリストにタグ付けをすることが可能。タグだけで絞り込んで表示・非表示を切り替えることも可能。上述の @done の機能もタグの一種。

Vim や Emacs には手を出せないけど、というような人向け

ほかにもまだ機能はあるけど目立つのは上に挙げたくらい。動画を見るとどんなことが出来るか一目瞭然なので是非公式サイトで動画を見てみてください。

総じて FoldingText は通好みというか、シンプルなのに高機能というか、一風変わったテキストエディターだと思う。 Vim や Emacs を駆使しまくっているようなギークとは少し違う層に向けたテキストエディターだと感じる。文科系の大学教授が使ってそうな雰囲気がある。 User's Guide とかも使い方というより開発者である Jesse Grosjean 氏のテキストエディティングに対するこだわりとか哲学がにじみ出ていて、 DHH による Agile Web Development with Rails みたいな雰囲気がある。我こそはと思う人は使ってみてください。


  1. 最近開発が再開されて TaskPaper 3 を作ってる。 FoldingText のフォーカス機能を兼ね備えた ToDo リストエディターとなるみたい。  

  2. 2022-08-27 追記。いまは Hog Bay Software の手を離れ DoubleDog Software という会社が権利を買い取ったみたいだ。 Version 3.0 を開発中の模様。 

| @音楽

OmmWriter

OmmWriter というソフトを知っていますか。 6 年くらい前はフリーウェアだったけどいまはシェアウェアになってるかもしれない(確認してみたらシェアウェアになってた、いまは Windows 版と iPad 版もあるみたい)。

このソフト、気が散らないように全画面表示になってひたすら文章を書くのに集中できるという触れ込みでした。そんで自分がタイプする音(ソフトウェア的にならされるタイプ音)と、ソフトにバンドルしてある音楽が心地よく流れるというやつ。このソフトのアイディア良くて好きなんですけど、 Vim で書くことに慣れると Vim のキーバインド以外で文章書くのつらいのでこのソフトは割とすぐ使わなくなった。

でも付属のアンビエント音楽がよくて、プログラミングとか考え事をするときに思考の邪魔にならずに集中できる。ほどよく自然とか街の音が混ぜてあって、家で作業やるより少しざわざわしてるドトールの方が仕事はかどるって人いると思うんですけど、あの雑踏の中に紛れて作業する感じを疑似体験できる。スペイン在住の David Ummmo という人が作曲しているようです。 iTunes Store で買えます。

なお残念ながら現在ダウンロードできる OmmWriter Dāna II には David Ummmo 氏の音楽はバンドルされていないようです。 iTunes で試聴して気に入ったら買うか Apple Music で聞いてみてください。

David Ummmo Typewritten, Vol. 1.
David Ummmo Typewritten, Vol. 1.

David Ummmo Typewritten, Vol. 2. - EP
David Ummmo Typewritten, Vol. 2. - EP


この記事は作業用BGM Advent Calendar 2015 - Adventar 5 日目の記事でした。明日は @cumacuma さんです。

| @技術/プログラミング

memolist.vim のデフォルトのテンプレートが挿入する YAML Frontmatter なんか変わってて、 Jekyll のと違った。 Markdown のプレビューは Marked 2 で見るようにしてるんだけど、 Marked 2 は memolist の特殊 YAML Frontmatter を正しく処理してくれない。 YAML Frontmatter はメタ情報なのでプレビュー時には表示して欲しくない( Marked 2 には YAML Frontmatter を表示しないオプションがある)んだけど必ず表示されてしまう。具体的にはこうなる。

調べてみたら memolist には標準のテンプレート以外に自分の好きなテンプレートを設定できる機能あったので、 ~/.vim/template/memolist/markdown.txt というファイル置いて以下のようにしておいた。なお memolist はテンプレート用ディレクトリに置いてある 拡張子.txt というファイルをテンプレートして利用するようだった。なので Markdown 用のテンプレートは markdown.txt となる。

---
title: {{_title_}}
date: {{_date_}}
tags: [{{_tags_}}]
categories: [{{_categories_}}]
---

テンプレートを変更した上で Marked 2 で YAML Frontmatter を Ignore するよう設定する。

すると以下のような表示になる。すっきりする。

すでに過去に書いた記事の YAML Frontmatter も Jekyll のやつに直す雑なスクリプト書いて直しておいた。

files = Dir.glob("#{ENV['HOME']}/Dropbox/memolist/*.markdown")
files.each_with_index do |file, index|
  filename = File.basename(file)
  filepath = File.expand_path(file)
  flag = true

  lines = File.readlines(file)
  lines[0..5].each_with_index do |line, i|
    case
    when line =~ /^title:(.+)/
      lines[i] = "---\n#{line}"
    when line == "==========\n"
      lines[i] = nil
    when line =~/^(?:date|tags|categories|tags):/
      # do nothing
    when line == "- - -\n"
      lines[i] = line.gsub(' ', '')
    else
      flag = false
      next
    end
  end

  if flag
    p filename
    File.write(filepath, lines.compact.join(""))
  end
end