TIS川島さんによるSIerにおけるClojureの活用事例

今週の社内勉強会はTISの川島さんにお越しいただき、Clojureについてお話しいただきました。

f:id:takezoe:20151016121552p:plain

Clojureの特徴

まず前半はClojureの特徴についてお話しいただきました。

ClojureLispであることばかりが取り上げられがちですが「多数のコンピュータ資源をいかに効率的に使うか」にフォーカスしていることが特徴であり、Clojureの特徴でもあるイミュータビリティについて若干のScala disも交えてわかりやすく説明していただきました。また、ClojureのSTMやcore.asyncのgoマクロ、Clojureで実装された追記型DBであるDatomicについても紹介していただきました。

Scala DaysでもTypesafe社のCTOであるJonas Bonérが「CRUD IS DEAD」と言っていましたが、豊富なコンピュータ資源を活用できる現在だからこそこういったアプローチが可能になり、こういったアプローチに適したツールとして関数型言語が注目を集めているのかもしれません。

TISさんでのClojure活用事例

後半はTISさんでのClojureの活用事例として、川島さんお得意のスクショ & Excel芸が炸裂していました。

自動キャプチャからサーバへのアップロード、ブラウザでのギャラリー、コメント追加、Excel方眼紙への出力、さらにはDBの差分までスクリーンショットを撮るという、時間と技術の無駄遣いなのではないかという疑問が拭えませんが、スクリーンショットのためにここまでやるという拘りには感嘆の念を禁じ得ません。また、MarkdownからExcel方眼紙ドキュメントを生成するというSIエンジニアたちに取っては夢のようなツールを全社展開するという非常にアグレッシブな活動をされているようです。

最後に川島さんが新たに開発されているJobStreamerというJava 352 JavaBatch向けの分散実行エンジンをご紹介いただきました。

github.com

複数の実行ノードの負荷に応じて自動的にバランシングして実行してくれるとのことなのですが、実行ノードではWebSocketClassLoaderという名前からして怪しいクラスローダーを使用して必要なクラスをロードするため、実行ノードにバッチプログラムをデプロイする必要がないそうです。ジョブの設定をGUIで行うことができたり、スケジュールをグラフィカルに確認することもできるなど管理画面の使い勝手もよさそうでした。

おわりに

川島さんのお話は非常に面白かった反面、ふと我に帰るとSI屋時代の辛い記憶が思い出されアンニュイな気分に浸れるというなかなかアダルティーな勉強会となりました。新卒入社の若者たちにはなんのことやらという感じだったかもしれませんが、弊社はSI出身の中途採用者も多いので大いに共感を得られたのではないかと思います。

それにしてもSIerの闇を目の当たりにしながらも、技術を駆使してその闇を乗り越えようとする川島さんの前向きな姿勢はある意味エンジニアの鏡であると感じました。SIer出身の身として、願わくば川島さんの活動がSIerの闇を少しでも照らし、SI戦士たちの光とならんことを強く祈るばかりです。