冥冥乃志

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

follow us in feedly

CoderDojo 岡山岡南 #2 でメンターをしてきました

前々から興味があったので、開催を聴いてメンターとしてお手伝いさせていただきました。お手伝いできてよかったな、と心から思えるイベントだったので、熱が冷めないうちにブログに起こしておきます。

CoderDojoとは?

coderdojo.jp

子供のためのプログラミング道場です。塾とは違うので、決まったことを教える場ではありません。あくまでやりたいことを支えてあげる場。メンターは教えるというより一緒に考える人、といったスタンスで子供にお付き合いします。

で、岡山で立ち上がったのが、CoderDojo 岡山岡南です。

coderdojo-konan.media-interesting.info

メインで動いているのが、なんと中学生ですよ。これがまたしっかりしてて、将来が楽しみです。大人になって有名なエンジニアになったら「こいつは俺が育てた」的な老害になりたいので、これからもご活躍を期待しております。

様子は?

この辺りのツイートが参考になるかと。

今回は全員でScratchでした。前回も参加している子はやりたいことが決まっているので、色々と手が早かったですね。一度慣れてしまえば、自分でトライアンドエラーしてグイグイ進めます。本当にわからないところは、何がやりたいかを聞き出して、ゴールの分解から一緒に考える感じです。

課題へのアプローチも結構個性がありました。下手にメインに巨大な関数を書き連ねていく子もいれば、まずはイベントの定義から抽象化してという子もいたりして、この辺りの違いがどこから出てくるのかな、という素朴な疑問が湧きました。

説明が難しい

注意していないとやっぱり普段使っている言葉が出てしまうわけですよ、同じコンテキストなら情報量が少ないわけですし。ここをどこまで噛み砕いて説明するかは、かなり難しさを感じます。

これは次の反省点にも繋がることですが、今回の場合はScratchなど、子供たちが使う予定のものについては一通りの機能を使えるチュートリアルを触りこんでおけばよかったです。子供たちに伝える語彙を得る上でも重要。前回参加した子は想像よりももっとプログラミングというものを把握していたので、一緒に考えるにしても、ある程度使うものに沿って考えてあげないと子供がとまどいますね。

まとめ

非常に意義のあるイベントでした。お子さんの様子(何を楽しんでいたか)をメモしていらっしゃる保護者の方もいたりして、興味を示した時にそういう場を提供できたということが素晴らしいと思います。

初回から参加されているメンターの方とお話したところ、平さんやオープンラボのお話が出てきたり。コミュニティからの流れにこのイベントが連なっているのって、地域に還元している感じが出ていいですね。これからもできる限りお手伝いしていきたいと思います。Unity触ったり、Ozobotで遊んだり、色々と技術で遊ぶきっかけにもなりそうですし。

今後、第二土曜日で定期開催していくそうです。メンター、ニンジャ共々お待ちしております。(早速O/Rマッパー勉強会とバッティングして参加できないのは内緒)

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

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

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

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の選択がマルチでできない