先週、 Alfred で通貨換算をやる方法(💵 Alfred で手軽に通貨換算 💴 )について書いたけどその続き。

Numi icon

Numi という Alfred に似たソフトがある。 Soulver と違い多言語対応はしておらず、自然言語による入力は日本語未対応なのだが、 Soulver もまともに使えるのは英語利用時だけなので実質的には機能に差がない。タブを使えたりする分、 Numi の方が高機能かも知れない。さらに Numi は今のところ無料である(ベータ版のため)。ベータ版とはいえほとんど困ることなく利用できている。

Numi うどん

このソフトがすごいのが、 Alfred Workflow を入れると Numi による計算を Alfred から n <式> と入力することでできるようになるということ(ただし Numi.app を起動しておく必要あり)。こんな感じ。

Numi Currency conversion

いちいち Numi.app に切り替えて新規ドキュメントを作成し、ということをしなくて済む。とても手軽に計算できる。通貨換算のほかに、単位の換算もできる。 Google Fincance の Converter サービスを使うやり方よりも高機能だ。

Numi Unit conversion

このソフトを知ってから Soulver を使う機会がめっきり減ってしまった。 Alfred からも計算できるし、結果を残しておきたいような複雑な計算をするときは Numi.app に切り替えて使うこともできる。文章を書いたり考え事をしているときにささっと計算できて頭の切り替えコストが低い。 AWS を利用しているプログラマー諸氏なら EC2 インスタンスの料金なんかを計算するときにもとても便利だと思う。おすすめです。


この記事は Alfred 3 Advent Calendar 2017 - Adventar 12 日目の記事でした。明日は(明日も) @tsurusuke さんです。

Soulver と Calca というのを去年自分が作った Advent Calendar で書いた(ただし締め切りを二ヶ月過ぎてから)。数字混じりのテキストを入力するといい感じに内容を読み取って計算してくれるソフトの紹介記事だった。

Soulver は便利でよく使っているのだけど、何か計算をしたいときに一々新規ドキュメントを作成しなければならないのが煩わしい。結果を保存しなくていいような、本当にチラシの裏で筆算してあとは捨ててもいいような手軽な計算ができないものかと思っていた。例えば Alfred を起動してさっと計算するような。

実は Alfred にも計算機能はある。ランチャーウィンドウを呼び出して数字を入力すると計算してくれる。

Alfred Calculator

ただ Soulver にあるような 1 USD in JPY と入力して 113 JPY と通貨換算してくるような機能はない。ネットでデジタルコンテンツをコンシュームしたり海外の通販でブツをゲットしたりするデジタルネイティブの皆様におかれましては USD 決済が基本であり、お金を払う前に「日本円にしたらいくらくらいかな?」と考えることはよくあると思う。そういうときにさくっと Alfred で通貨換算してくれる方法があったら便利ですよね。あるんですよそういうのが。

Currency Converter\.alfredworkflow
http://cl.ly/MBJ8

ちょっと URL が怪しいけど CloudApp というサイトからダウンロードできる。中身はシェルスクリプトで、例えばドル円の換算だと次のようなシェルスクリプトが実行される。

AMOUNT={query};

RESULT=`curl -s "http://finance.google.com/finance/converter?a=$AMOUNT&from=USD&to=JPY" | awk '/<span/{print}' | sed -e 's/<[^>][^>]*>//g' -e '/^ *$/d'`

echo '<?xml version="1.0"?><items>
            <item uid="convert" arg="'$RESULT'">
                <title>'$RESULT'</title>
                <icon>icon.png</icon>
                <subtitle></subtitle>
            </item>
        </items>'

Google の Currency Converter サービスに curl で問い合わせて結果を Alfred で表示できるように XML に整形しているだけである。

たとえば USD 58 と入力すると以下のように日本円でいくらになるかを表示してくれる。

Currency Converter USD

ここで Enter を押すとクリップボードに結果を保存してくれる。

Notification

なお Google の Currency Converter の URL が最近変更されたため↑のリンクのやつをダウンロードしてインストールしただけでは動かないと思う。 curl する URL を変える必要がある。よくわからん人は僕が貼ってるシェルスクリプトをコピーして 「Alfred Preferences」 -> 「Workflows」 -> 「Currency Converter 」と進み、 Script Filter にペーストするとよい。

Alfred Workflow Preference

Alfred Workflow Script Filter

curl する URL のクエリパラメーターを調整することで EUR -> JPY や話題の BTC -> JPY の変換もできる。仮想通貨の相場が気になって気になって仕方がない方などは Alfred で効率的に計算してるふりしてレートが調べられて便利だと思うので是非お試し下さい。


この記事は Alfred 3 Advent Calendar 2017 - Adventar 7 日目の記事でしたが一日遅れで書いてます。 8 日目は誰も登録していません。

choosy+canary-chrome.png

少し前に rebuild.fm で miyagawa さんが紹介1されていた Chrome の Canary チャンネル2と stable リリースで Profile を分けて使うやつやってみたらとても便利。 Choosy.prefPane3 などのブラウザー切り替えツールとセットでやる必要があるので $10 お布施した。 Chrome は stable や beta など様々なリリースがある4が、 Canary チャンネルのみ独立した User Profile を指定できるようだった。

Choosy.prefPane は参照元のアプリケーションごとにブラウザーを指定したり( Slack からは Chrome Canary とか、 Alfred からは Normal Chrome など)、 URL に応じて指定したり( twitter.com は Normal Chrome など)もできる。これでミスって仕事用の Google Account で SaaS にサインアップしてしまったりということがなくなる。 とても便利。

Chrome への依存度が高くない人は仕事用に Chrome 、プライベート用に Safari のような使い分けでもよさそう。

アプリケーションスイッチャー使ってますか

Mac には標準で + でアクティブなアプリケーションを切り替える機能があるのをご存知ですか。こういうの。

これは便利なんだけど、ブラウザーなどは複数のウィンドウ開くことがあり、アクティブなアプリケーションではなくアクティブなウィンドウを切り替えたいと思うことが度々ある。

Windows 7 には Win + でアクティブなウィンドウを切り替えられる機能があって、むかし仕事で苦痛に顔をゆがめながら Windows を使っていたときにもこの機能だけは Mac の方が負けてるなぁと思ってた。 UI が優れているというより、マウスに持ち替えずにキーボードだけで完結するのが良かった。

Mac ではこれは Exposé を使えということなんだろうけど、ささっとアクティブなウィンドウを切り替えたいだけなのにびろーっとアニメーションしつつウィンドウ一覧が表示されマウスカーソルでウィンドウを選択するのはだるい。キーボードから手を離したくない。

この要求を満たすのが Contexts というソフト。似たやつに Witch というのがあってこれも試したことはあったけど何かいまいち使い心地が好きになれなくて使うのやめてしまっていた。最近たまたま調べていたら Contexts というのを発見して少し使ってみたところすごく使いやすかったのでお金払ってライセンスキーを買った。

標準のアプリケーションスイッチャーの + のショートカットを Contexts のウィンドウスイッチャーが乗っ取っとる感じになる。

これでも便利なのだけど、ウィンドウごとに表示されると選択対象が増えてしまって目当てのアプリケーションを探すのが大変になる。これに対しては二つ解決方法が用意されていて、一つは現在アクティブなアプリケーション内でアクティブなウィンドウを切り替えるコマンド( + ` )。以下は Google Chrome がアクティブな状態で + ` した状態。

とても探しやすい。

さらにアプリケーション名かウィンドウ名で絞り込み検索する機能も付いている。これで沢山ウィンドウを開いていても目当てのウィンドウを探しやすくなる。 + でウィンドウ一覧を開いているとき + S で検索モードに入ることもできる。

どうです、便利でしょう?

アクティブなウィンドウを切り替えるという作業は一日何回もやるにもかかわらず、キーボードからマウスなりトラックパッドなりに手を伸ばして切り替えると、一回あたりは 0.5 秒くらいでも塵も積もれば山となっているかもしれない。日頃、 Mac を使っていてウィンドウやアプリケーションの切り替えでストレスを感じている方はお試しください。

Contexts – Radically simpler & faster window switcher for Mac

Typinator

Lifehack (笑) 臭がしてこれまでキー入力拡張みたいなアプリケーションを使うのは敬遠してたんだけど(そもそもああいうのは IME がないアスキー文化圏の人向けだと思ってた)、 Pull Request 出すときのテンプレートとかを一発で出せたら便利だなと思ってその手のやつを使うことにしてみた。

有名どころだと TextExpander がある。試してみようとしたら何と月額課金に移行してて買い切りではなくなっていた。しかも結構高い(年額 $40)。いろいろ物色してたら昔何かの bundle で購入していた Typinator というやつがあって、こいつならアップグレード料金で使えるし買い切り型だったので使ってみることにした。新規で買っても EUR 24.99 で TextExpander の年間使用料より 1000 円くらい安い(24.99 EUR = 3061.5624 JPY)。

良く入力するやつを省入力できて便利

仕事で Zoom というビデオ会話ツールをよく使う。 Zoom には電話番号みたいに個人に紐付く固定の URL が存在してて、誰かと話したいときにそれを Slack 上に貼りつけて会話を始めたりする。この URL をいちいち Zoom を開いてコピペするのめんどいので ,zoom と打つと出せるようにしている。一瞬で MTG 始められて便利。

,dt と打って2017-03-11 のように今日の日付を表示させることも可能(入力キーや日付・時刻のフォーマットはカスタマイズできる)。こういう機能は ATOK にも付いているけどスペースキーを押したりリターンキーを押して確定したりしなくてよいのが快適。 ふむふむ~、ナルホディウスですぞ のような変換に何度も文節を調節したりしないといけないやつも ,naruho と打てば出せるようになってチャットが円滑に行えるようになった。

長めのやつも展開できて便利

冒頭に書いたように、 Pull Request 出すときに使ってる定型文みたいのがあって、過去の Pull Request からコピーしてきたりしていたのが一発で入力できるようになって異常に便利。 pullreq と入力するとシュバッと展開されるようにしている。こんな感じ。

Typinator

ATOK に辞書登録するのとは違って改行を含んでいてもいいし、日本語入力モードに切り替えなくても良いのが便利。

inputrc で vi mode にしている Terminal (iTerm.app) で使うときの問題点

Typinator には GItHub みたいになってしまうのを抑制する機能がついてて、大文字が二文字連続したあとに小文字が入力されると自動的に二文字目を小文字に変換するという機能( GItHub を GitHub に直してくれる)がついている。 Typinator は vi mode でシェルを操作しているとかは判別できないので勝手に補正してくれて上記のようなキーストロークが bbi と修正されてしまう。

Vimmer なのでシェルの操作モードを vi mode にしているのですけど、単語移動するときについつい

Shift + b Shift + b i

とか入力してしまうと Typinator が反応して bbi に補正されてしまってうざい。

設定に DOuble CAps Exception というのがあって例外設定できるみたいだったので BBi を追加してみたけどどうもうまく効いてないみたい…( bbi に補正されてしまう)

スクリーンショット 2017-03-11 13.59.08.png

さらに詳しく設定を調べてみると、アプリケーションごとにルールの有効・無効を切り替えられるっぽいので、 iTerm を使っているときは連続する大文字の小文字補正を行わないことにしてみた。これで様子を見てみよう。

スクリーンショット 2017-03-11 14.04.34.png

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

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

読んだきっかけ

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

http://www.topoftree.jp/tree/

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

OmniOutliner

https://www.omnigroup.com/omnioutliner

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

TaskPaper

https://www.taskpaper.com/

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

MindNode

http://mindnode.com/

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

WorkFlowy

https://workflowy.com/

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

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

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

https://workflowy.com/invite/353e510e.lnx

まとめ

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

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

おまけ

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

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

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

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

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


Soulver and Calca

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

FoldingText - portal shit!

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

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

一足 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 回転寿司