• 忘却の惑星

筆者は、仕事を効率化するためのプログラムを自分で作ることがある。どんなプログラムでも開発を終え、プログラムを使うだけになると、いつかは中身や仕様については忘れ去ってしまう。これは、人間である以上どうしようもないことなので、完全に忘れてもいいようにプログラムを作ることを心がけている。

しかし、そのコード量はコアの機能を実現するのと大きく変わらないことがままある。多くの実用プログラムは、特定の機能を実現するよりも、ユーザーの使い勝手を上げる、あるいはエラーの対策や万一のときに被害が拡大しないような部分に開発の大きな時間と手間を必要とする。

このとき、筆者が心がけているのは、「セキュリティ」、「フェイルセーフ」、「Easy to Use(簡単な使い方)」である。セキュリティは、ソフトウェア開発の基本だが、自分だけが使うソフトウェアでは、なおざりになりやすい。ファイアウォールを開けっぱなしにする必要がある、あるいは自分や自サイトの情報を漏らしてしまうようなことは避ける必要がある。

「フェイルセーフ」は、間違った使い方をしたとしても、危機的な状況を招かないこと。中身を忘れているのだから、当然、その危険性なども忘れてしまう。万一のときに、大変なことにならないように作っておく必要がある。

「Easy to Use」は、実行に複雑なオプションなどを不要にして「実行するだけ」で利用できるようにすることだ。コマンドをオプションなしで起動するだけで動くというのが一番である。また、簡単な使い方を可能にするためには、インストール作業も簡単でなければならないし、スタートメニューへの登録も簡単に行える必要がある。

最近作成したプログラムに筆者がLocalDirServerと呼んでいるものがある。これは、HTTPスキームのURLでローカルのディレクトリをエクスプローラーで開くもの。クラウドサービスなどにURLをリンクとして埋め込むことで、クラウド側の情報とローカルにある情報を同じようにアクセスできるようになる。ソースコードの注釈やテキストに入れておくことで関連情報のフォルダなどを開くことができる。最近のエディタはURLを開けるものが多く、同様の機能はWindows Terminalにもある。

この記事のサンプルとしてGitHubで公開しておいた。利用する場合には自身のリスクで使っていただきたい。何かあっても筆者や本サイトは責任を取ることはできない。

このプログラムWSLのネットワークアクセスなどを調べるために作成した非常に簡易なHTTPサーバーが元になった。これを改良して、指定されたディレクトリをWindowsのエクスプローラーで開けるようにした。こういう仕事をしていると、インターネット側には置けないような資料を扱うこともある。また、原稿は最低限、ファイルとして送る必要がある。クラウドサービスは便利だが、どうしてもローカルファイルを扱う必要がある。そこで、以前紹介したScrapboxなどのサービスとローカルファイルを連携させるために簡易なHTTPサーバーを作ることにした。同じディレクトリ構造を作れば、どのマシンでも利用可能だ。

使い方は、localDirServer.jsを起動するだけ。あとは“http://localhost:6800/c:/temp ”のようにパスを書けば、エクスプローラーでディレクトリ(この場合は、C:\temp)を開いてくれる。URLのホスト名は、localhostか127.0.0.1のみが許され、たとえ自身のIPアドレスであっても直接IPアドレスを指定した場合には動作しない。

パスにファイル名を指定すると、ファイルを選択した状態でエクスプローラーが開く。実行させないのは、とんでもないプログラムを起動してしまう可能性があるからだ。筆者の経験によれば、「~していいですか? はい/いいえ」という確認は、ぼんやりしている人(自分を含めて)には何の役にたたないことがある。確認するぐらいなら実行させない方が安全である。

このプログラム、node.jsで実行されるJavaScriptのプログラムで79行ある。HTTPサーバーとエクスプローラーを開くというコアのロジックに当たる部分は20行程度しかなく、あとは、エラー対策や、状況表示のためのconsole.log関数(コンソールへのテキスト出力)、注釈などである。URLをホストしているサイトによって、レスポンスがエラーになり同じリクエストが複数回繰り替えされることがあった。ブラウザで開いたページをすぐに閉じているのが原因と思われるが、挙動はサイトやブラウザにより異なる。その対策が19行目から33行目にかけての部分だ(前述のGitHubを参照)。これがないと、エクスプローラーが多数開き、Windowsが反応できなくなることがある。Chrome、FirefoxとGitHub.comの組み合わせで生じるが原因を究明できていないので対症療法的に入れてある。

今回のタイトルネタは、ハヤカワ文庫SFの「忘却の惑星」である。原書は、「World Best Science Fiction 1966」(Donald A. Wollheim and Terry Carr編)であり、「忘却の惑星」は、収録作品の題名である。さすがに英米のSF小説黄金期の作品である。邦訳は1965~1968年の4冊のみだが、手軽に当時のベストな作品を味わえる。