know
一般的見解でラノベなのかそうでないかは知らないが、そこそこの軽さ/重さであった(偉そう)。テーマは想像と異なって面白かったし、SF的ガジェットも新規性は感じないものの良くできたものと思ったが、サイエンス的な側面でライトな感じ。
例えば、特異点の先があるとして、情報を持ち帰れる以上何かがあるわけだけれど、それが機能しうるプラットフォームとはなんだったのか。特異点の先だから分からない、と言う理由付けでは、さすがに unknown 過ぎて、未来を想像できる連中であればあるほど確信を持って進めないはず、と思う。となると逆説的に、特異点の先をある程度類推できていたはずで、視点人物が凡人だから分からないのだとしても、そうした部分の記述がないのは、少々都合が良い話だと感じる。
しかし、特異点の先、という発想自体はなかなか面白くて、ツッコミどころはあるにせよ、ああそうきたのかーと思った。
と、瑣末な話に足を取られずに、普通に楽しめば良いのではと思います。
皆勤の徒
なんと言いますか、要するにおすすめできない。円城塔と同様の状態であり、理由も似た感じだ。ここには、おすすめできない理由を記す。
はじめに書いておくけれど、決して作品が悪いわけではない。むしろ素晴らしい。本当は、ぜひ読んでもらい、解釈を語り合いたい。
しかし、おすすめするのは困難である。なぜなら、忍耐と不真面目さを同時に要求されるから。内容は全く異なるが、その点が円城塔と同様だ。
世界観の問題もあるが、何より手法の問題が大きい。頭から読んですんなり理解できる設計ではなく、わからないなりに読み飛ばして進める忍耐と不真面目さが要求される。それは例えば、やったことはないけれど、未知の言語で書かれた古文書を解読するようなイメージだろうか。ランダムに意味が埋まっていき、やがて繋がり合う。散りばめられたヒントを拾い集めると、やがて全容が見える。
自分はかなり好きな類で、気持ち的には勧めたいのだが、決してお話として読みやすくはない。下手するとこれがSFなのだとか思われてしまって、もっと気楽に楽しめる多くの可能性を潰してしまうかもしれない。なぜか巻末に大森さんの解説がついていて、挫折の可能性が高いことを伺わせる。実際かなり高いだろう。この手のものは、大好きだけれど勧められないのだ。
しかし、3回読み返す覚悟さえあれば、楽に読める本の何倍も楽しめる。
書き出しはどの一日からでも構わないのだそうだから、読む方も同様。もしも読むのであれば、分かるところから読むのが良い。
白熱光
イーガンお得意の世界での、ある種のファーストコンタクトものだろうか。すでに銀河系内は複数の種族による文化が形成されている世界観だが、未発見の種族の手がかりを見つけて探しにゆくというストーリー。
ブラインドサイト
ある種のファーストコンタクトものだが、「ある種」とは「ソラリス」の類である。
天冥の標VII
いちおう、1巻の土台にようやく繋がるところ。ストーリーの土台としても、舞台としても、揃ったとことだろうか。巻数的に忘れ物がありそうではあるが。
GitPrepをcartonベースでインストールする
いろいろあって、GitPrepを試してみることに。
共有サーバでのセットアップ手順の他に普通にLinuxでセットアップする方法(setup.shを実行するやつ)もREADMEに書いてあるが、都合上モジュール類をcartonで処理したい。
セットアップスクリプトや起動用のラッパーを読むと、要するにモジュールのサーチパスをどうこうしているだけなので、基本的には「ただのMojoliciousプロジェクト」である。ということは、適切な環境さえ用意すれば、あとはscript/gitprepを叩くだけで動く。
cartonに環境構築を任せるなら、難しいことを何一つ考えなくてもcarton execで動作させることができる。はずだ。
前提
- cartonがインストール済みで正しく動く
git cloneする
git clone https://github.com/yuki-kimoto/gitprep
cpanfileを書き換える
setup.shやその他のセットアップコード、実行スクリプト、同梱モジュールなどを見ると、プロジェクトのコンセプトは「プロジェクト内で完結すること」である。
例えば、基本になるcpanmもMojoliciousフレームワークも同梱されている。その他の同梱されていない依存モジュールはcpanfileに書いてある。同梱してあるcpanmを使ってインストールするという前提だ。
また、各種セットアップスクリプトや実行用ラッパーなども、それを前提としてパスや環境変数の調整を行うようになっている。
これはこれで完結していて良いとは思うのだが、モジュールのインストールパスが何だかよく分からないことになる危険がある。
今回は、環境の調整等も含めて全てcartonで処理したいので、同梱されているいろいろを無視してcpanfileだけ活用する。が、肝心のMojoliciousとかが書いていない(前述の通り含まれている)ので、書かれていない依存モジュールをcpanfileに書き加えておく。
いろいろ調べたり動かしたりした結果、書かれていなくて加えなくてはならなかったのは以下。
requires 'Mojolicious', '== 4.07';
requires 'Mojolicious::Plugin::INIConfig', '== 0.02';
requires 'Mojolicious::Plugin::BasicAuth', '== 0.07';
requires 'Mojolicious::Plugin::AutoRoute', '== 0.12';
バージョン指定は、mojoディレクトリに含まれる「同梱されてきたMojolicious」の各モジュールバージョンにした。
たぶんバージョンにそれほどこだわりはなかろうが、Mojoliciousの最新を持ってくるとvalidationの仕組みが微妙に変わっていたりして動かなくなったりする。まぁ、最新にして「動くようにする」というのでも良い。さほど大変でもないだろう。
carton install
依存モジュールをがばっと入れる。
carton install
して待つだけ。
実行
cartonで必要なモジュールを全部入れたので、同梱の起動スクリプトを使用せず、cartonで直接実行すれば良い。とりあえず試すなら開発サーバにて。
carton exec — morbo script/gitprep
無事立ち上がればOK。
デプロイ等、実運用でのノウハウはそれぞれにお任せします(丸投げ)。どうせただのMojoliciousプロジェクトなので、情報ならどうにでもなるだろう。
上記の依存モジュール調査では、実行してみて足らないものを足す、というのもやった。たぶん上記のレシピだけで問題はないはず。
留意点
当然だが、Mojoliciousがリポジトリに含まれているとかを無視してcartonで入れてしまっているので、今後のアップデートの際に、git pullしたらだいたいアップデート完了!とはならないだろうと思う。アップデート時には主にcpanfileを保守してcarton installというのが基本フローになるだろう。
感想
多少心得があるなら、いろいろ考えるより「普通にMojoliciousプロジェクトをデプロイする」方式のほうが、むしろ馴染みがあって楽なのでは、と思った。
GitPrepについては、本当に気軽に使えるのが良いなと思う。gitoliteみたく、 公開鍵 + sshでのアクセスもユーザー情報と絡めてうまい感じにハンドリングしてくれると嬉しいな。HTTPでも悪くはないけど、使いどころによってはSSLとか考えないといけなくて、その点gitoliteは考えることが少なくて良い。
とはいえ何より、独自の仕組みとかではなく汎用フレームワーク上に作ってあるので、好みに合わせて手出しやすいのが良いかなぁ。本当に欲しいなら自分で付ければ良いのだ。