カテゴリー
software

AlbertとRaycast

これももっと早く使っているべきでした。
🖥️

Macで人気らしいアプリにAlfredというものがあります。これはいわゆる「ランチャー」というもので、ホットキーで開いた入力窓に起動したいコマンドや検索文字列などを入力して目的のアプリを起動するというのが主な機能です。拡張で他にも様々な機能が持たされていて、基本無料のアプリなのですが、拡張機能パックが有料という商売になっていて、この拡張パックを利用しなければこのアプリの本当の価値は得られないなどとも言われています。本質的に物臭なプログラマーなどに特に人気が高いようですが、実は私はこれまで使ったことがありませんでした。

しかし、最近MacBook AirにUbuntuを入れて使うようになって、Alfredの有り難さがなんとなく理解できるような気がしてきました。画面の狭いノートPCではアプリの切り替えが頻繁に必要で、トラックパッドではメニュー操作が容易とは言いづらいので、できるだけ少ないストローク数のキーボード操作で多くのことを済ませたいという気持ちになる、ということに気づいたのです。もちろん16インチ以上の大きな画面を持つノートPCや、マウスを接続して使っている場合には当てはまらないかもしれませんし、そもそもデスクトップPCしか使わないけれどAlfredを愛用しているという人もいるでしょうから、すべてが分かったというわけではありません。

それはともかく、私も使ってみようかと思ったわけですが、私が使いたいのはUbuntuでということになります。Alfred自体はMac用のアプリですが、当然代替というか模倣というか、同じようなものがあるに違いない、と探してみるとすぐに見つかったのが名前も模倣っぽいAlbertというものでした。Installingの説明のとおりにインストールして使ってみることにしましたが、とりあえず使用する機能としてはアプリケーション、ファイル、システム、ターミナル、ウェブサーチを選択し、私はショートカットキーをAlt+Spaceに設定しました。そして設定したショートカットキーを押すと入力窓が開き、起動したいコマンドなどをタイプしていくと1文字ごとに候補が絞られていき、候補の中から選択するか、一番上にある場合はReturnを入力するとそのコマンドが即座に起動できます。これは思っていた以上に便利で快適です。

となると自宅で使っているMacでもAlfred的なものを使ってみようかという気になりますが、たまたまそう思った日にRaycastという代替アプリの存在を知ったため、新しもの好きの私はまだベータテスト中というこちらの方を使ってみることにしました。Alfredよりもスクリプトによる拡張の自由度が高いというのが特徴のようですが、今のところ基本機能のみで使っており、その本当の便利さというものは分かっていないと思います。そもそも、私はMacでは日常的に使うアプリはほとんど起動しっぱなしにしているので、あまりランチャーの出番というものが多くないのかもしれません。実のところ、このRaycastのありがたみを一番感じているのがsleepとshutdownで、それを簡単なキー操作のみで実行できてしまうのがとても楽で良いと思っています。これと同じような感覚で他のこともできるのであれば便利だろうな、という感じで何ができるか、何をやりたいと思うかを待っているような状況です。

カテゴリー
software

Gcc Emacs

反撃の狼煙か。
⌨️

プログラムを書くことを仕事にしている私は、仕事で使う最も重要な道具であるテキストエディターとして長年Emacsを使用してきたのですが、先日Visual Studio Code(VS Code)への移行を果たしてしまいました。Emacs自体には特に問題があったわけではないのですが、40年以上前に生まれたものなのでさすがに基本設計が古く、最新のエディタに搭載された機能はやはり非常に便利で洗練されているのでした。

乗り換え以来かなり満足してVS Codeを使っていて、戻りたいと思ったり懐かしく感じることもほとんどなかったのですが、そんな私の気持ちも揺さぶる革新がEmacsにも起こっていることをこのゴールデンウィークのはじめに知ってしまいました。それがGcc Emacsというもので、ネイティブコンパイルEmacsの登場で紹介されています。早速私もこのブログ記事に沿ってインストールしてみたところ、実にオタク心をくすぐる面白いものでした。

マクロや拡張モジュールを使って機能を追加・変更できるというのは今のテキストエディタでは当たり前のものですが、Emacsではその登場当初からEmacs Lispという、LISPをベースにしたプログラミング言語を使って非常に高度な拡張を施すことができるようになっていました。このLISPという言語は今で言えばPythonJavaなどの、語弊はあるかもしれませんがC言語系の構文を持つ言語とは大きく異なる独特な文法を持ちますが歴史のある言語で、Emacs LispはこのLISPでできることは基本的にできるれっきとしたプログラミング言語です。そして今回のポイントはこのEmacs Lispのプログラムを画期的により高速に動作させるようになるというものです。

これまでもEmacs Lispのコードは「バイトコンパイル」という処理により「バイトコード」という中間表現に変換することで、予め構文解析を行い、サイズを小さくすることによって若干高速に動作させることが可能でした。今回使用できるようになった「ネイティブコンパイル」ではコンパイラGCC(libgccjit)をライブラリと使用することでEmacs LispのコードをCPUが直接実行できるネイティブコードに変換してしまい、極めて高速に実行できるようになるとのことです。実行する処理の内容にもよりますが、バイトコンパイルの場合とほとんど変わらない場合もあれば、何倍にも速くなる場合もあり、極端なケースでは測定不能なほどベンチマーク速く終わってしまうこともあるようです。私はしばらく使わなくなっていたのであまり体感的な比較もできないのですが、「こんなに軽快だったかな」というような印象がありますが、拡張機能の組み込み過ぎで重くなったVS Codeに慣れてしまっただけかもしれません。なお、技術の詳細はBringing GNU Emacs to Native Codeという論文で詳細に説明されているので、私も後でじっくり読んでみたいと思います。

今のところこのネイティブコンパイルに対応済みのバイナリは少なくとも公式には配布されていないようなので、最新のソースから自力でビルドする必要がありますが、通常のビルドとの違いはlibgccjitを使えるようにした上で、configureにオプション--with-native-compilationを付け加えるだけなので、特に難しいことは何もありませんでした。ただし、libgccjitはMacであればHomebrewDebianLinuxならAPT等でインストールすれば済みますが、WindowsではMinGWあたりを使うことになるのでしょうか…と調べるとStackExchangeで”Is there a gccemacs (native-comp) build for MS-Windows?“という質問をしている人がいて、回答が集まっているようです。私も仕事で使おうと思うとWindows版が必要になるので、いつか使えるようにしたいと思います。

カテゴリー
software

Joplin

これは捗ります。
📝

最近一連の記事にしてきたMacBook Air復活の試みは一体なんのためだったのかというと、私はずっとカフェなど外出先でこのブログの記事を書くための道具が欲しいと思っていて、新しいPCは欲しいけれど文章を書くだけなら必ずしも性能の高いものは必要ないということで購入を躊躇していた、ということが背景にあります。したがって、このMacBookに一番必要なものは文章を入力し、自宅のMacとその文章を同期することができるテキストエディターということになります。

私はしばらく前からブログ記事の編集にはMarsEditというMacアプリを使ってきました。このアプリの一番の特徴は入力したテキストをリアルタイムに自分のブログのテーマを反映した状態でプレビューできるというライブプレビューの機能になるのかと思いますが、実は私の導入の決め手になったのはそこではありません。購入当初のバージョン3時点では記事のドラフトを保存するフォルダーや設定ファイルをDropBoxに置くことができたので、それを利用すると複数のMacでドラフトや設定を簡単に同期できたのでした。これは非常に便利で、私はMac miniとMacBook Proで同期して自宅でも出先でもシームレスに編集することができていたのですが、残念ながらバージョン4にアップグレードするとOSのセキュリティ上の制約でサンドボックス化されてしまったようで、こういった使い方はできなくなってしまったのでした。

その事実は4000円程度支払ってアップグレードした後で知ったので、がっかりしながらも惰性でつい最近まで使い続けていたのですが、このMars Edit自体はMac専用のアプリなのでLinuxで使うことはできません。したがってUbuntuを入れたMacBookでブログを書くためにはなにか別のものを探す必要があります。もちろんVS CodeやEmacsで入力してDropBoxなどで同期するということでもいいのですが、他にもなにか便利なものがあるのではないかと調べてみました。条件となるのは

  • クラウド上でテキストを同期できること
  • MacとLinuxで動作すること(できればiOSでも)
  • Markdownが使えること
  • できれば無償で使えること

といったあたりで、それほど厳しいものではありません。この条件で見つけたのが今もこの記事の入力に使用しているJoplinというオープンソースのアプリになります。

このJoplinはブログ用というものではなく、ノートとTo Doのためのものということですが、入力したテキストをコピー&ペーストする必要はありますが、もちろんブログ執筆にもまったく問題なく使うことができます。MarkDown形式での入力支援とリアルタイムプレビューが大きな特徴で、Windows/Mac/iOS/Androidのマルチプラットフォームで動作し、さらにDropBoxのほかOneDriveWebDAVAWS S3での同期までサポートしているということで、私の上げた条件にはぴったりマッチしています。私はOneDriveで同期することにしましたが、OneDriveにはJoplinアプリが直接アクセスするため、Linuxには用意されていないドライブ同期用のクライアントアプリなどは必要ありませんし、テキストの同期程度であれば5GBまでの無償アカウントでもまったく問題ないでしょう。

ということで、WordPressでもJetpackの設定一つでMarkDownが使えることがわかったので、これを機にブログの入力もMarkDownを使うことにしてみました。MarkDown自体は最近仕事でも多用しているので、これによってさらに捗るような気がします。HTMLというのはあくまで機械のためのものであって、人が書くにはちょっと冗長でわかりにくいですからね。