読者です 読者をやめる 読者になる 読者になる

冥冥乃志

ソフトウェア開発会社でチームマネージャをしているエンジニアの雑記。アウトプットは少なめです。

follow us in feedly

「正解するカド」のストライクっぷりが半端なかったので、少し語ってみる

最近ご無沙汰してましたね、と思ったらアニメの話題ですか、そうですか。

あまり期待せずに見始めたアニメが好みどストライクで、あまりに嬉しくて語ってしまおうというアレです。まだ終わってないんで、これからしぼんでしまうと寂しいですが、最近はこれと「あげくの果てのカノン」と「クジラの子らは砂上に歌う」を楽しみに生きているくらいにははまってます。

seikaisuru-kado.com

Amazon Primeビデオでも配信されています。是非。

どんな話?

所謂ファーストコンタクトものです。異世界からきた「カド」と「ヤハクィザシュニナ」とのコンタクト、およびそこからもたらされるものに人類はどう対峙するのか、というのがあらすじになります。

この手の話って、ビジュアル的に一番派手なシーンというかクライマックスが最初に固まってしまうんですよね。なので、現状6話まで進んでますが、これ以上に派手なシーンが今後あるのかと言われるともしかしたら、の可能性はあります。おそらく最後くらいではないかな、と。

もちろんこの作品の面白さはそこではない(言い過ぎ)なので、その分ストーリーが重要なわけです。重要なテーマは「異文化コミュニケーション」。描き方には重点によって幾つかのパターンがあって、

  • 成立するまでの過程に重点を置くもの
  • 結果がもたらすものに重点を置くもの

が大別ですかね。

両者とも、異文化コミュニケーションを通じて、今人間が抱えている文化の形を明らかにして、可能性を探る文学として成立するわけですが、描写の内容が異なります。

前者は、まったく対話が成立していない状態からスタートして、言語学とか社会学とかをベースにした話が多いです。自然言語の文法が何に由来して、どういうコミュニケーションになっているか、というのが密に描かれてる印象があります。

後者は、言語での対話そのものは成立しているが、寄って立つ文化や精神性などの違いに触れて、という描写が多いですね。なお、不成立によってもたらされる不幸を含みます。イデオンみたいに。

で、本作品は後者。何がしかの未知の力によって(ロスはありつつ)コミュニケーションの成立過程についてはサクッと流しています。ただ、この描写も後々重要になるんじゃないかなあ、という感じになってて、ちょっとした伏線の回収具合に注目です。

どこが好きなの?

まあ、すげー曖昧なんですが「俺の好きなSFしてる」ということころですね。

小松左京のファンなんですが、彼の大作に多い「科学の発達によってもたらされる人類のあり方の変容」を描くSFというのが特に大好きなんです。そういう意味で「華竜の宮」も好きなわけで。

ところがね、こういう作品ってたいてい映像にした時の派手さにかける、新しい概念に挑戦する分抽象的な表現が多い、などなどの理由でなかなかメディアや人を選んでしまうような気がしていて、なかなか作品として目立たない。この「正解するカド」は、そこに真っ向から向かっている感じがしてすごく好きなんですよ。今の所、第1話の「カド」出現シーンと「それ必要?」な2回目の砲撃シーン以外は派手なシーンありません。「カド」や「ワム」は今の世界の有り様を変革する可能性がある、という事実に対して各登場人物がそれにどう対峙するか、を描くことが中心です。

それが顕著なのが、作品内で、ワムの作り方を公開してパワーバランスを崩すこと決める際の犬束首相のセリフですよ。

しかし、我々は想像出来る筈だ

「我々」ってのもいいですし、「想像できるはずだ」ってのも最高です。私の好きなSFはこういうシミュレーションなんだよ、という感じ。ってか、キャラデザはともかくとして、政治家がかっこいいです。

まだまだ考える楽しみがある

第5話で物語に対して爆弾が投下されたタイミング。まだまだ伏線の回収はされていませんし、面白くなるのはこれから、という感じです。

一番気になってるのは「正解」という言葉ですね。タイトルにもなっていて、使われる頻度も高いこの言葉ですが、そもそも意味の捉え方が違うんじゃないの?とか思ってしまいます。

それに我々が普段行っている言語コミュニケーション自体のロス具合ってどうなんよ?とか。まだちゃんと明らかになっていない、理由もちょっと曖昧な「ユノクル」という概念は、この伝達ロスに関することではないかと思ったり。

あと、キャッチコピーにあった「世界の終わり」要素がまだ見当たらないんですが、どういうことですかね?日本の孤立とパワーバランスの混乱?

などなど、考える材料としては面白いものが揃ってる作品です。よくもまあ、こんな派手さのない良作を作ったな、という。しぼまなければかなりの傑作になりそうな気がします。

というわけで、これからどこに向かって物語が着地するのか楽しみな作品です。みんな見よう。

2016年11月の読書メモ

ペルソナ5のハードのめどがついてしまいました。恐ろしい恐ろしい。

新しいMBPのトラックパッドが広すぎて、たまに親指の付け根に反応しています。あと、キーストロークが浅いのはいいんですが、逆に会社のマシンのキーストロークが深すぎる違和感に襲われています。

今月の読書量

7冊でした。今月はちょっと控えめになりましたね。特に重い本はなかったはずなんですが。

ユナイテッド・ステイツ・オブ・ジャパン

ユナイテッド・ステイツ・オブ・ジャパン (新☆ハヤカワ・SF・シリーズ)

ユナイテッド・ステイツ・オブ・ジャパン (新☆ハヤカワ・SF・シリーズ)

SFオルタナ[現実以外] vol.1

SF雑誌オルタナ vol.1 [現実以外]edited by Sukima-sha

SF雑誌オルタナ vol.1 [現実以外]edited by Sukima-sha

  • 作者: 大滝瓶太,米田淳一,ろす,淡波亮作,波野發作,伊藤なむあひ
  • 出版社/メーカー: 電子出版アシストセンター
  • 発売日: 2016/10/27
  • メディア: Kindle
  • この商品を含むブログを見る

あげくの果てのカノン 2巻

ネガティブな感情が成功を呼ぶ

ネガティブな感情が成功を呼ぶ

ネガティブな感情が成功を呼ぶ

飢えなかった男

飢えなかった男

飢えなかった男

かーそる2016年11月号

かーそる 2016年11月号

かーそる 2016年11月号

最後にして最初のアイドル

最後にして最初のアイドル

最後にして最初のアイドル

今月のベスト本

「ユナイテッド・ステイツ・オブ・ジャパン」はすごく面白かったんですが、期待がもっとバカっぽいものだったというズレがあるんですよね。やはりカノンさんということで。

【縛りプレイ中】Codenvy(Eclipse Che)でGradleのプロジェクトをまともに使えるようにしたい(その2)

ちょっと時間が空いてしまいましたが、ちょっと変なところで引っかかっていて進んでなかったです。

Gradle + マルチプロジェクトの構成でCodenvyでコードを書く

前回調べてわかった通り、Codenvy(Eclipse Che)はビルドの柔軟性はありますが、コードを書くときのインテリセンスに使うクラスパスの指定には柔軟性がありません。maven基準です。

mao-instantlife.hatenablog.com

そのため現実解として、mavenプラグインを使って pom.xml を出力、という形を取っています。ただし、mavenはシングルプロジェクトのため、サブプロジェクト構成の場合は各サブプロジェクト配下にそれぞれ pom.xml が生成されます。

サブプロジェクトを扱う

Codenvy(Eclipse Che)では、プロジェクトルートとして取り込んだディレクトリ配下にあるサブディレクトリをルートにしてプロジェクトとして読み込ませることができます。サブプロジェクトにしたいディレクトリで右クリックでメニューを出すと Convert to project があります。

f:id:mao_instantlife:20161119172114p:plain

サブプロジェクト化する前に、mavenプラグインから生成された pom.xml をサブプロジェクトのルートに相当するディレクトリにコピーしておきましょう。メニュー選択後にプロジェクトタイプを選びます。ここはmavenを選択します。 pom.xml がすでにあるので、自動でプロジェクト設定が読み込まれてコードのインテリセンスの依存関係もとってセットアップしてくれます。

f:id:mao_instantlife:20161119172126p:plain

これを各サブプロジェクトに対して行えばいいわけです。面倒ですね。

コマンド構成を考える

Commandsでビルドやテストなんかのスクリプトをかけるのですが、マクロはあるけど引数が使えないんですね。というわけで、マクロから抽象化できるようなところはまとめるとして、無理なところは個別にコマンドを作る必要があります。この構成でやらないといけないことはだいたい以下になるかな、と。

  • プロジェクトから pom.xml を作る
  • pom.xml をコピーする
  • プロジェクト全体をビルド、実行する

ビルドと実行はプロジェクト依存になるのではないかと思います。 pom.xml の生成とコピーを別にしているのは、それぞれ実行する時のディレクトリを変えれば、サブプロジェクト配下で実行すれば抽象化できると思っているのでとりあえず。

ただ、プロジェクトの立ち上げのタイミングではコピーで登録するコマンドは使えません。手作業でコピーするのが一番楽です。

ワークスペース構成を考える

こうなると、ワークスペースに複数のプロジェクトを配置できるとはいえ、マルチプロジェクトを使っている限りは複数プロジェクトを配置するのはやめたほうがよさそうです。というよりも、貧乏性を発揮してワークスペース共有するのは、プロダクションレベルの話ではやめたほうがいいでしょうね。

必要なプロダクション単位にワークスペースを構築し、共有することに価値があるのだと思いました。

この辺を考慮した自分用Stackを作ってみた

いちいちこういうコマンド構成を作ったりするのも面倒なので、最低限の構成を自分用にStackとしてつくってみることにしました。

ワークスペースの開発環境マシンにするDockerイメージを作る

Cedenvyが公式のJava-Gradleイメージを配布しているんですが、若干Gradleのバージョンが古いです。

github.com

というわけで、Gradleのバージョンを新しくして、ついでにDockerをインストール済みのイメージを作ります。

https://hub.docker.com/r/shinsukeabe/ubuntu-gradle-docker/

CodenvyにStackを登録

Codenvyメインメニューに「Stack」があります。ここを選択すると現在有効なStackの一覧が出てくるのですが、しれっと「Add Stack」ボタンがあります。ここでつくったStackがパブリックに有効なのかどうかはよくわかりませんが、DockerHubでつくったイメージを引っ張ってきて、かつコマンドの追加などもできるので、個人用のワークスペーステンプレートとして活用してもいいと思います。

f:id:mao_instantlife:20161119172148p:plain

というわけで、コマンド構成など作ってみました。

f:id:mao_instantlife:20161119172159p:plain

で、commitとgithubへのpushができないわけですが。。。

プロジェクトの構成は改善の余地はあるとしてベースはできてきました。ただですね、gitへのパスは通っているんですが、コミットとプッシュができない状態です。コミットはユーザ名とメールアドレスの問題のようなので割と早く解決しましたが、後者は正しいパスワードでも弾かれちゃったんでよくわかりません。

それも含めて今の所出ている課題は以下。

  • githubへのプッシュができない
  • .gitignoreの編集ができない(ファイル一覧に出ない、ターミナルにviが入っていない)

まだまだ先は長そうですなあ。なんでこういうのってムキになり始めるとコード書くよりも楽しくなるんですかねえ。書きかけの個人プロジェクト使ってやってますが、全くもって進捗がありませんよっと。

【縛りプレイ中】Codenvy(Eclipse Che)でGradleのプロジェクトをまともに使えるようにしたい(その1)

まだまだ諦めておりませんよ?むしろコード書くより楽しくなってきています。

Codenvy(Eclipse Che)でGradleプロジェクトを扱う場合の問題点

そもそもGradleは公式で対応していないから修羅の道な訳です。大きくは以下2点。

  • Stackも公式から出てない(dockerhubから引っ張ることは可能なので、ビルドはできる)
  • インテリセンスがmaven基準(jarファイル単位でしか追加できない)

つまり、ビルドと実行コマンドを作ることはできて、その中ではパスは通ってますし、クラスパスもちゃんとgradleから見えているんですが、インテリセンスで見ているクラスパスにGradleが使えない状況です。一つ一つjarファイルをクラスパスに追加する絵しか思い浮かばなくて軽く絶望しかけました。

コード書く目的ではなくて、Githubから軽くコードを引っ張ってきて実行環境込みで動かしてみるにはいいんですが、コードを書く目的となるとエディタでコンパイルが通らないからとにかく不便です。

Github Issuesから漁ってみる

github.com

とか

github.com

とかで同じことを考えている人たちがいたんですね、やっぱり。

で、読んでみると、今後対応するつもりはあるようですが、今のところはアシスタンス機能はmavenでサポート可能なプロジェクトでのみ動く、ということのようです。対処法として示されているのは、

  • 依存関係を書いた pom.xml を用意する
  • jarファイルを一つ一つクラスパスに追加する

のどちらか。

いや、後者SpringBootとか辛すぎるでしょう。。。後者のIssueだと16のサブモジュールと13のソースディレクトリを持つGradleプロジェクトとか言ってるんですよ、一つずつjarを追加しろとか何でしょうか、その刺身タンポポ *1

Gradleからpom.xml出力すればいけるのでは?

前者をどうにか楽にできないものかと思って少し調べて見ました。mavenプラグインというのがあるんですね。

第53章 Mavenプラグイン

mavenプラグインで設定なしだとデフォルトローカルリポジトリに保存される模様。スタックのローカルリポジトリ/home/user/.m2/repository になるようです。Gradleのサンプルプロジェクトを使って gradle install してみたところ、メインのソースディレクトリのビルド結果についてはリポジトリにインストールされていますし、build/pomspom.xml は作成されています。ただ、テストに依存するライブラリはローカルリポジトリにインストールされないんですね。やりたいことに近づきはしましたが、まだまだです。

まとめ

やってやれないことはない気がしてきました。プラグインで大まかに事足りそうなのでいいですね。

テストのライブラリをローカルリポジトリに持っていければ基本的にやりたいことは全てできそうなので、次はこの辺りを調べてみようと思います。

追記

とりあえず、 gradle install タスクでできた pom.xml をプロジェクトルートにコピーするビルドコマンドを書いて、プロジェクト自体はmavenで読み込ませたところ、外部ライブラリにも追加されました。シングルソースディレクトリのプロジェクトであればこれでおそらく問題ないかと。

f:id:mao_instantlife:20161112151429p:plain

*1:ダイアログでのjarの選択がマルチでできない

【縛りプレイ中】Eclipse CheをDockerで使えるかどうか検証してみて挫折した

縛りプレイの一環です。

Eclipse Cheとは?

Eclipseが作っているクラウドIDEワークスペース管理を統合した環境です。コードエディターはOrionを使っている模様。

CodenvyがEclipse Cheを利用するサービスを提供しています。

Dockerイメージが公開されている

DockerHubを見るとイメージが公開されているんですね。

https://hub.docker.com/r/codenvy/che/

早速イメージを引っ張ってみます。

docker pull codenvy/che
abeshinsukenoMacBook-Pro:~ mao$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
codenvy/che         latest              9a261cf4b6b3        8 weeks ago         22.14 MB

いや、イメージ小さすぎないですかね?

使い方

eclipse-che.readme.io

docker for macは設定が必要らしいです。ハイパーバイザーでホストを立ち上げているので、そのIPアドレスを取得しておく必要がある模様。ちなみに、一回作っておくとIPアドレスは再起動しても変わりませんでした。推奨は .bash_profile に入れておけ、なんですが、ターミナル立ち上げるたびにパスワード訊かれるようになります。ちょっと行けてないです。

ランチャーCLI

公式に書かれているCLI使ったインストール方法はちょっと問題がありました。シェルに書かれているいくつかのイメージのタグ指定がnightlyになってて、そもそもユーザ周りがおかしくて動かないです。環境変数を指定すれば問題ないですが。。。

とりあえずは立ち上がる

docker run を使って起動しました。

適当にmavenワークスペースとプロジェクトを作ってみましたが、おそらくプロジェクトごとの開発・実行環境をdockerで内部に作っているような動きをしています。作成ご、ワークスペースがdockerで立ち上がってるのが確認できます(ホスト管理下のコンテナとして立ち上がるのは筋が悪い気がする)。

CONTAINER ID        IMAGE                                                                       COMMAND                  CREATED             STATUS              PORTS                                                                                                                                                                         NAMES
d5b1013c3a17        eclipse-che/workspacefkvue7fyxxjv8ubi_machine6xhzk3ramv4gz0oa_che_default   "/bin/sh -c 'sudo /us"   33 minutes ago      Up 33 minutes       0.0.0.0:32774->22/tcp, 0.0.0.0:32773->4401/tcp, 0.0.0.0:32772->4403/tcp, 0.0.0.0:32771->4411/tcp, 0.0.0.0:32770->8000/tcp, 0.0.0.0:32769->8080/tcp, 0.0.0.0:32768->9876/tcp   workspacefkvue7fyxxjv8ubi_machine6xhzk3ramv4gz0oa_che_default
c3f1967a84b6        codenvy/che-server:latest                                                   "/home/user/che/bin/c"   37 minutes ago      Up 37 minutes       8000/tcp, 0.0.0.0:8080->8080/tcp                                                                                                                                              che-server

ちなみに、デフォルトではgradleのワークスペースがありません。しかし、代替案はあるようです。ドキュメント自体はありました。

eclipse-che.readme.io

ちなみに、コードエディターのインテリセンスはctrl + fn + space。これがわからなくてちょっと焦った。。。

イメージを再起動すると。。。

ワークスペース消える。。。まあ、ボリュームをマウントしてなかったので、そうかもなあ、とは思ったんですが、ホストにも残っていないようです。

それ以前に、マシン再起動したりログオフしたりするとマウントエラーが出ます。 まずなんで最初に立ち上がったんだよ、というレベル。。。

これは、lib-copyとstorageが指定されていないからみたいなのですが、docker run時に-v指定してもマウントできませんでした。とりあえずKitematicで、とも思ったんですが、これをするとsockが使えなくて、ワークスペースが作れないという悪循環。

まとめ

というわけで、いざという時にローカルで立ち上げるようにしておいて、素直にCodenvy使います。今のご時世で、ネットに繋がらない状態でコードを書くというのが考えづらいのと、Codenvyから試して最終的にAWSとかに持っていった方がいいのでは?と思ったので。