Clojure夜会に参加してきました
なんで行ったのよ?
僕はClojureはずぶの素人です。
なぜ参加したかというと、next Javaという口説き文句があったのと、
挑戦的なSIerの@kawashimaさんのLTが見てみたいというのが大きな理由でした。
kawashimaさんのこの記事にまんまとつられたのです(笑)。
SIerを退職する前に身につけておきたいスクショの撮り方
あと、ついでに一生懸命がんばってる@syobochim(しょぼちむ)さんを生暖かく見守ろうかなというのも。少し。
会場提供はリクルートテクノロジーズさん。とりあえず、ビル綺麗だし、デカすぎてびびった。
以下、セッションとLTを振り返っていきます。
Clojure入門とその一歩先へ
登尾@にゃんぱすさん
にゃんぱす、そういえば、名前聞いた事ある会社だなーぐらいの認識でした(すみません)
3連休台風だからClojureを覚えろ、越谷レイクタウン最高!っていうタイプのお方でした(色々語弊ある)
「はじめてのClojure」って本を書いた人。本書くぐらいだからすごいんだろなー。
今回のテーマはClojureの偏見を払拭しよう、でした。
関数型のClojureは状態が少なくて良いよね
JVM上で動くよね、だからライブラリには困らないよね
マクロで文法が作れるほど強力なモノが用意されてるよね、って話でした。
そういった利点がある、と。
実績として、にゃんぱすさんはサイトを立ち上げています。
スマホ等のサーバーサイド処理を全て行ってくれる、baasdayというサイト。
会員10万人。
色々偏見のあるClojureでもここまでやれる。
てか、10万人は言語とか関係なくすごいサービスだわ。
その他、Clojureの誤解について。
1.フルスタックなやつないじゃん。
->Leiningen(maven的な?自動化ツールらしい)あるし、
IDEはLight Tableあるし、
技術書は6冊出てる。充分じゃない?とのこと。
確かにまぁね。充分出来るわな。
2.括弧多いじゃん。
->はじめ多く感じるけど書いてるうちに普通に感じます。とのこと。うん。うん?
という、Clojureの誤解を解くのと特性を説明する話でした。
この後の話も聞いてたけど、LeiningenとLightTableってのは定番らしい。
2日ガチ開発合宿で作ったWebアプリケーション2選
株式会社テンクー(Xcoo) 青木さん
竹内さんという東大からインターンで来ている方もお話されてました。
Clojureメインの会社とのことで、従業員数は少なめだけど、ゲノム解析とかやってるガチな感じ溢れる会社のようでした。 Chrovisというサービスを提供しているとのこと。
今回はClojure Cupという国際的なClojureのハッカソンのお話。
48時間耐久ハッカソンで、Clojure/ClojureScriptを利用言語としてアプリを作って競い合う。 今年二回目のチャレンジだったそう。
ハッカソンで作ったものは2つ
1.「news.async」
・テレビみたいにニュース見るアプリ
・音声再生と静止画像のアニメーション
・ニュースを非同期
これ、すごい面白いアイデアだなと思った。
非同期処理でずっとニュース情報を取得し続け、それをテキスト読み上げ機能を使ってTVっぽくする。
アニメーションも使っており。あたかも、テレビ番組を見ているような感じでした。
webサーバー側はcompjure?というのを使っているらしい。
スライドに載ってるけどアーキテクチャの構成がすごいみててワクワクした。
project.clj というのがほぼ、pom.xmlと同じ役割をするのだとか。先ほど出てきたleningenの話ですね。
core.asyncというタイマー機能についたAPIにより処理がとても簡単らしい。
なるほど確かにClojureはライブラリが豊富なんだな。
Google clojure compilerというのが便利らしいけど、実行時に最適化されて、ライブラリの変数名や関数名とかも
リネームされてしまうらしい。それは困るので、externを指定してやらないと駄目だとか。
2.「ASTRO CATS」
多人数対戦ゲーム
クライアントからはキー操作のみで、サーバーで処理とかゲームの当たり判定とかやってる。
サーバー側からのコールバックを、キューにためてクライアントで順次レンダリングを行う。
猫可愛いし、面白いゲームだった。ネット通信対戦ゲームだった。
STMという、マルチスレッドが簡単に処理出来るライブラリがあるとのこと。
ハッカソン中は、時間との勝負なので、REPLという対話型の環境(Clojure使いには有名すぎるほど有名)
で細かくデバッグしながらやってたらしい。ハッカソン、スピード大事だもんね。
Clojureの気になるところとしてあげられていたのは、
WebSocketのサポートいまいちというところらしい。
compojure/ringっていう標準があるらしいが、バグが多くイマイチ
なので、自前で作って頑張ったとの事。
bREPL ブラウザのREPLもあるけど、面倒でバグ多いとか。
chromeの拡張は便利
開発環境は改善の余地あり!とのことで、今後の発展が期待される。
ちなみにXCooのGitHubはこちら
イマドキのExcelスクショの撮り方
かわさしまさん。
エクセルスクショとは
エクセルスクショ、方眼紙、などどこかで聞いた事あるなぁ(遠い目)、という話題でした。
エビデンス取得ツール、テストロガーってのをkawashimaさんが作った。
Clojure製で、webdriver(Selenium2)を内部的に使っている。
こちらもWebSocketで通信をしてるらしい。
canvasでスクリーンショット取ってるという。なかなかすごい。
DBの変更検知までスクリーンショットしてくれる。。。。
omってフレームワーク(react.jsのラッパー的な)ものを使っているとの事。
こちらもcore.async使ってるとか。
話聞いてて思ったけど、kawashimaさん紳士なんだけど、狂気を感じるんだよなぁ。。。(笑)
あとから、懇親会でもお話ししました。
UI部分はbootstrapとサーバーサイドUIというものを使ってるそうで。
エビデンスをエクセル方眼紙に綺麗に出すために、いったんJavaのコンポーネントに出力してから位置調整してると言う抜け目の無さ(!!!)
プロパーショナルフォントまで対応してるらしく、ホント、クレイジーだなと思った(褒め言葉)
かわしまさんのGitHubはこちら。
会社でClojure使ってみて分かったこと
吉田尚弘さん@リクルートテクノロジーズ
仕事で実際にClojureを取り入れたことについてLTでした。
Intellij IDEA + La Clojure
Resultset-seqとか便利で協力とのこと。
Clojureってやっぱ、Javaから入っても習得してしまえば、便利な機能が多く良いそうです。
問題点として、性能をJavaと同等にするのが難しかったとのこと。
razyシーケンスとかのロードがどうのこうのとか色々あるらしい(あるらしい、というのしか理解出来なかった・・・)。
「Java出身の人は、Java8 -> Scala -> Clojureの順で触っていくと、習得が早いかも」とのこと。
というのも、徐々に関数型にシフトした方が馴染みやすいという論拠でした。
REPL環境を快適に
REPLライフをもっと快適に from sohta
えいとすさん
Clojureの環境周り(というと雑だが)でした。
Leiningenはリロードが遅いし、失敗する事が多いらしい
・反映がきかないとか
・名前空間のロード順制約があるときに乱れる場合がある
・httpとかthreadとかの検知も上手くやってくれないときが
->ツールのサポートとかアプリの設計によってなんとかするしかない
ソリューションとして、tools.namespaceというツールが良いらしい
REPLクラスパス上のuser.cljを自動で読み込む
Leiningenのプロファイルという機能でクラスパスの制御が出来る
(本番にあげたくないとかテスト環境だけ使いたいとか)
コンポーネント単位でライブラリを作るのがベストプラクティス。
atomとかはリロード時に壊れる可能性があるので、コンポーネントとして分離する必要がある
女子力のあるsyobochimがClojureはじめてみた
いきなり
LT資料はこちら。
ClojureでTwitterのbotを作るという話。彼女は初心者という事で。
Twitter4J + kuromojiを利用してたよう。
kuromojiはマルコフ連鎖というのを利用した形態素解析とかやるやつっぽい。
なかなか難しい事をやったなーという感想。
kuromojiを使わず、テンプレート文を返信するbotならもっと簡単だったのに自分でハードルを上げにいったw
明らかに会場がざわざわし始め、「女子力とはいったい何か」と会場が同じ気持ちになった。気がする。
でも明るいキャラクターで確実に勉強会を盛り上げましたね。Clojureアイドル認定されてたしw
技術的にもClojure初めてすぐとは思えないレベルだと思います。
女子力botのGitHub
Clojureで限定継続を使うライブラリ
ねこはるさん。
正直、女子力で会場は変な雰囲気になっていたが、「女子力ないですが、LTします」と話し始めたねこはるさん。
ねこはるさんのGitHubを見ながらのLTだったと思う。
限定継続の話を始めて、多分一部の人しかついていけなかったと思うw
ガチ勢だという事以外あまり分からなかったw
ただ、Clojureの美しさというのをとても理解しているのだろうなぁと思った。
CodinGame チュートリアルをライブコーディング
@tnoda_さんによるLT。
プログラミング言語で問題を解いてゲームを進めるCodinGameのススメ。
tnoda_さんはとにかく話が分かりやすい。TVのMCぐらいには口が回るし、視野が広かった。
・CodinGameについて。オンラインでジャッジされるゲーム。
具体的なものとして、 ・Toocoder
・codeforces
・atcoder
などがあり、Clojure対応としては、
・HackerRank
・CodinGame
・4clojure
などがある。この中からCodingGameでチュートリアルの説明 + ライブコーディング。
邪魔だからって、サンプル実装を全て消し、30秒ぐらいで問題を実装して、ゲーム実行!
見事に敵を撃破。かっこ良かった。
(問題はFizzBuzz的なものでした)
会社でClojure使ってみて分かったこと
吉田さん@リクルートテクノロジー
JavaOneでRich Hickeyのセッションを聞いてきた
ainoyaさん@リクルートテクノロジー
JavaOneに行ったら、たまたまRich Hickey (Clojureの作者)が居たらしく、
そのときのセッションと会話についての発表でした。
基本的にリッチー・ヒッキーがJavaをdisってたそうですw
▼出てきたキーワード
Clojure made Simple
Smaller is better
protocol multimethod
Data as program
S式,EDN
まとめ
Clojureの実践的な部分に触れて、大分刺激になりました。
色々と事例を見ると、Javaみたいに状態に振り回される事無く、data as codeというのは理に適ってるなと思った。
Leiningenでライブラリの依存はすぐに解決するし、ライブラリも豊富で不自由はしないだろうなと思った。
ただ、どうしてもJavaで作ろうかなぁってなっちゃうなぁ。もっというとKotlinで。
少なくとも、Lisp系に対する偏見はなくなったかなぁと思います。
▼参考URL Clojure夜会でLTしました
Clojure夜会のためにClojure勉強してLTしてきました! #clojureyakai
SIerを退職する前に身につけておきたいスクショの撮り方
Clojure夜会でLT発表してきた
0 件のコメント:
コメントを投稿