Clojure/north 2019登壇してきました

MURATA Katsuyasu
スタディスト Tech Blog
9 min readMay 10, 2019

--

高度1.2万㍍からお届けします(帰りの飛行機。書き始めのみ。)

2019年4月19,20日にカナダのトロントで開催されたClojure/north 2019で登壇を無事終えてきました。

初の国際カンファレンス参加、登壇、それ以前にアメリカ大陸に初上陸の状態の中、度重なるHiccups(苦難)を乗り越えOur journeyの完結です。

登壇に至った経緯はこちら

出国

早めに成田空港に着き、ゆったりと過ごしていると、同じく登壇するエルドーシュがこんなポストを

まじですか?!

ということで初日、一人で出発することに。

今回、デトロイト経由トロント行きで向かいましたが、乗り継ぎだけなのに入国する手順が必要になり、かなりの時間がかかりました。あとになって考えると、キリスト教圏のイースターの休日の影響も合っての混雑の影響かもしれませんが。見知らぬ土地で一人の中、なんとかトロントに到着。到着時は街を少しぶらつく余裕がありました。

Day 1

いよいよClojure/north 2019です。Introductionが実施されたのは円卓の席が並ぶ宴会場ブース。この状況、隣りに座ったら会話しなきゃですよね。なるべく人が少ない座りやすそうなところを探しましたが、すでに大抵の場所は埋まっており、会話がボチボチ進んでいる中に座る

(ネイティブスピードの会話が進むテーブル)

(やばい、無理…)

圧倒されつつ、軽いintroductionの後、Clojure/north始まりました。

Keynote: The Crux of Bitemporality
Unveiling of JUXT’s new bitemporal database

Jon Pither

Bitemporal Databaseとは

  • Historical versioningを可能にする
  • valid timeとtransaction timeの2つの組み合わせで管理
  • DBのシステムタイム自動更新

JUXT製 Crux

  • Open Time Store、document graph databaseとして

Growing a chatops platform and having fun with Clojure
How Clojure enabled the development of Yetibot

Trevor Hartman

チャットボットの活用例をデモ

  • ネットの文字列を食わせて検索
  • Clojure は解析系得意な印象を受ける

使用しているもの

  • yeti bot
  • graphQL

Where to Start?
How to start working on a large Clojure codebase, and make onboarding painless

Simon Belak

Clojureもドキュメント問題はある

  • defmacro is easy but simple
  • holistic doc string欲しい
  • simple-responsibility

製品を作る際に注意すること

Machine Learning: from ABCs to DEFs
In practice machine learning is simpler than it seems

Anatoly Polinksy

画像認識の機械学習についてのセッション

使っているもの

教師あり機械学習

  • back-propagation(誤差逆伝搬)に気をつける
  • 適切な学習回数、重み付け
  • mean squared error(平均二乗誤差) — 誤差は乗数倍に広がってしまうので、できるだけ小さくしたい

Hidden layer

  • 友達と答えわせするのに相当
  • 複数サンプルがあるので表現できる関数が増える
  • 過学習に気をつける

所感

bitemporal model、チャットボットによる解析事例、機械学習等多岐にわたり、知識の幅が広がるセッションでした。

Day 1が終了して少し経ったあと、エルドーシュが無事到着。よかった。本当によかった。

Day 2

エルドーシュ合流で気が楽になった部分はありつつ、いよいよ出番のあるDay 2に。

cljdoc
Better documentation tooling for the Clojure/Script ecosystem

Martin Klepsch

CLJDOCとは、Clojureのライブラリに対して、API連携する事によりドキュメントサーバを作ってくれるサービス

何ができる?

  • APIでclojureのライブラリのAPIを連携してサーバに建てられる
  • ドキュメントをダウンロードしてオフラインでも使える
  • メジャーなライブラリで使われている
  • API仕様書として
  • 依存関係のドキュメントも繋げられる

なぜ必要?

  1. ドキュメンテーション作成の時間を避ける
  2. consistent UX

CLJDOCに私達は何ができるか — Outreach and Awareness

  • 広げる
  • プロジェクトにバッジつける
  • ライブラリのドキュメンテーションの改善

未来

  • 自動更新履歴、例、検索改善等いろいろある

Cross Platform Awesomeness
Leverage cross platform running code

Henry Widd

Clojureとclojure/scriptのクロスプラットフォームの話

  • java.timeの連携 — Clojureとclojure/script間で同じように扱えない
  • ライブラリ Tick JUXTを実装(alpha)

Reitit, the Ancient Art of Routing
Design principles of the data-driven routing library, Reitit

Tommi Reiman

Reititについてauthor本人が説明

data-driven router

  • Clojure spec書くのに有利 → 書こう
  • routeの中で簡単にロジック分岐作れる
  • 実は性能がめちゃくちゃ良い(スライド69ページ参照)

弊社ではまだまだ使い切れていない

  • :rolesを使用して、ルートの中で権限バリデーションチェックできる
  • coerce, intercepter使う機会

frameworkとして(Reitit-ring)

  • routerのアルゴリズムが実は複数種類ある(:linear-router,:segment-router,:lookup-router,:mixed-router)
  • 近日アップデートがある

Aviary: Clinical Collaboration Platform

Dmitri Sotnikov & Carmen La

地域の医療カルテ登録システム構築の話

  • Clojureを使ってSPA
  • UI model vs REST model問題
  • Clojureのコード共通化の可能性(デモの中で、かなりリファクタできることを説明)

所感

ライブラリのドキュメントに対してCLJDOCがシンプルに強力であること、私達と同じく実際の事例の紹介、デモなど、2日目も内容が濃い一日でした。

一番印象に残ったセッションとして、Reititの生みの親、Tommi Reiman氏御本人がReititを紹介する会でした。普段何気なく使っていたフレームワークがとても高パフォーマンスが出るように作られていて、まだまだ知らない機能があることを知れ、とても勉強になりました。近日バージョンアップデートがあるとのことで楽しみです。

そしていよいよ大トリで我らのセッションが開始。

Raising Services and People with Clojure

Balint Erdos & Katsuyasu Murata

Clojureは自身自体が記法のシンプルさ、拡張性から有用で、さらに強力なライブラリ、ツール、ましてやコミュニティで問題の共有、回答をもらえる素晴らしい言語で、そのため弊社で短期立ち上げが必要だったプロジェクト(Teachme Biz for SFA)で適用し、Clojure未経験者からスタートのエンジニアでも十分に力を発揮できた事例を紹介しています。また、躓いたポイントについても取り上げています。

緊張でたどたどしい感じになりましたが、質問も活発にしてもらえたことから何かしら届いたと感じています。同じ状況に直面していたり、躓いている参加者が実は多いのが印象的でした(技術の伝え方、ライブラリの意図しない挙動への対応方法など)

最後に、国際カンファレンス登壇という貴重な機会を与えてくれたClojure/northチーム、弊社関係者に感謝します。

カナダ名物ナイアガラ。壮大な自然を体験する事ができました。

最後に

チャレンジングな機会を得て、成長し続けるスタディストで一緒に働きませんか?

--

--