コミケ告知

サークル networkmaniacs.net(旧:浜風もっこす) 2017.02.17 デブサミ内 DevBooksに出展します。
詳細は circle タグの記事へ。
2015年12月31日木曜日

C89 お疲れ様でした

大晦日のコミックマーケット89、当サークルまで足を運んでくださった皆様、ありがとうございました!

新刊は12:50より前には完売してしまいました。コピー本としては過去最多の印刷数でしたが、それでも見込みが少なく、その後にいらっしゃった方にはご不便をおかけしました。次回があれば、またVol.5 は体裁を整えつつ、Vol.6のネタも収集しておきます。(申込みはする予定ですが、当選するかどうかは神のみぞ知る…)
2015年12月9日水曜日

Elixir ゆるデスクトップアプリ のすすめ

Elixirは、実績のあるErlangのVMやライブラリを使うための、人当たりのよいDSLのようなものです。そのため、得意な領域はErlangと変わらないはずで、Erlang系の本領は、高信頼・高い並行性という特性を生かしたバックエンドです。しかしそれに加えて、コードが書きやすくなったがゆえに射程範囲に入った分野もあります。流行りのPhoenixもそうだ、と言えなくもないでしょう。本記事では、そんな変わった使い方のひとつを紹介します。

この記事は、Elixir Advent Calendar 2015 9日目です。前日は Elixirでリバーシ でした。実は昨年のElixir Advent Calendar 2014にも参加させていただいておりまして、2014年のElixir1.0初心者 という題で、触り始めで良かった・困ったことなどを書くソフトな記事を書いておりました。

何を作っていたのか

  • ネットワークゲームの通信を入力
  • JSONをばらして内容を解析
  • 解析内容を組み合わせて現在の状態を計算
  • 適当に表示

ネトゲの(非友好的な)解析としては基本的なやり方のひとつです。

何が便利なのか

  • アプリケーションを動かしたままコードを入れ替えられる
  • アプリケーションは部分的に死ぬ (全滅しない)
この組み合わせが、趣味のツールであってもたいへん快適です。まずコード入れ替えについて実例をあげると…



真ん中の行、処理していないAPIは単にコンソールに名前を吐いています。この api_get_member/ship_deck が来たときにもコンソールに情報出しとくかー、と思いたったとしたら、ささっとコードを追加あるいは更新してリロード。メモリ上に保持したアレコレをそのままに、さらりと次回叩いたときから処理が動くように組み込めます。

(enemyとmap infoの間に追加情報が2行出るようになった!)

コード上では、 Kernel.ParallelCompiler のfiles/2に対象のファイル名を渡しています。保持しているデータ型を変えようとすると面倒になるはずですが、処理ロジックの入れ替えだけであれば、大したことはありません。

そして次の、アプリケーションが部分的に死んでくれるという特性について。ゲームしながら空き時間にいじるような注意力散漫なコーディングをしていると、よくエンバグしてこけます。言語に不慣れならなおさらのこと。あるいは、ある日突然JSONの構造が変わって、処理がうまくいかなくなることもあります。そういったときに、アクターモデル(Erlangプロセス)の仕組みは便利なものでして、JSONをパースしていくらかの計算をする部分、構成図でいうparseの部分が死んだところで、アプリケーション全体としてはなんともありません。その失敗した処理要求は、何も工夫しなければどこかに吹き飛んで消えてしまいますが、必要ならオペレーションを保持しておいて、処理関数を更新した後にリトライすれば復旧も可能です。Event sourcing的な。
Erlangを用いたシステムの高信頼性とは、「落ちてもいいように作る(そういう仕組みを作りやすい)」という面があって、趣味でだらだら遊ぶにも向いているのでは…!

Elixirによる自作ツールの可能性

以上、ちょっとしたツールにも便利ですよーという話でした。単純なスクリプトにお勧めはしませんが、処理を待ち受ける or 何かを監視する、生存期間がそれなりにあるツールには向いています。GUIが欲しければ、Phoenixを組み込んでしまえば良さそう。
Elixirという言語&Erlangの実行系に慣れるという副次効果まで考慮して、遊びのツールを作るという路線、布教あるいは学習方法のひとつとして、いかがでしょうか。
2015年12月2日水曜日

Advent Calendarは時期が悪い

日本のIT界隈ではAdvent Calendarという、どこぞの神様のお祝いカウントダウンに便乗して、テーマに沿った記事をアップしていく、謎の慣習があります。しかし12月というのは、年度末ほどではないけれども忙しい。年度末リリースの仕事が佳境であったり、忘年会が平日にまで入っていたり…。さらにオタク的には冬コミ入稿時期直撃、声優やアイドルのイベントが多い、昨今はソシャゲのイベントも多い、とあります。

もっと他の時期にやったらいいのになあ。他の人のお祝いしましょう。竹達彩奈(6/23)あたりどうですか。Java竹達Advent Calendarとか、Go言語竹達Advent Calendarとかね。