ScalaMatsuri 2017 に参加してきました(2日目:午後の部、まとめ)

ScalaMatsuriレポートシリーズの最後です。

3コマめ:型を超えた安全

Regis Blanc(@regbla)さんの発表です。Scalaのコード検証ツールLeonの紹介でした。コードの検証といったらIntelliJ IDEAのようなIDEもある程度行ってくれますが、Leonはたとえばこのコードを実行したらIntの変数が溢れてしまうといったことも見つけてくれるらしいです。ゆくゆくはScalaのコンパイラのプラグイン的なものにしたいということで、そうなったらかなり強力なツールになるでしょうね。IDEに組み込まれてもいいと思います。

🍕(Pizza)

会中、飲み食いの憂いがないというのは素晴らしいことです。なんの憂いもなく頭を回転させられます。

4コマめ:Poor man’s type classes revisited

Sanoさんの発表です。Odersky先生の資料「Poor man’s type classes revisited」をもとに型クラスについて解説……かと思っていたのですが……

スライド

修羅の国でした。無慈悲にHaskellコードが出てきます。Haskellコード読めて当たり前状態(私はある程度読めますが)。上記のスライドを眺めているとサンプルコードの中に「MyMonoid」というのが出てきますが、それが出たところで聴衆から「半群だよね?」との声が(その時「単位元がないから」という言葉もあったかと思います)。ここからますますHaskellや代数学の心得のない人置いてけぼりの展開が繰り広げられました。そのへんから私は聴衆の温度差のほうが面白くなってしまっていましたw

まさしく食いついている人、完全に置いてけぼりになってるのが顔に出てる人、小さめの会場でしたのでそれがよくわかりなかなか怖い会場となりました。

5コマめ:Play2+DDDで挫折した話、みんなならどうする?

きの子(@aa7th)さんの発表です(「きの子」は本名ではないそうです)。

工期3ヶ月半(コーダはきの子さんひとり?)でBtoC Webサイトシステムを作り上げるという実際の案件で、DDDで開発しようとしたが3週間で諦めたという話でした。途中で、Mr.DDD、かとじゅんさんが部屋に入ってきたのですが、その時の部屋の空気の変わり方が素晴らしかったです。「シャアが来た!」って感じでした。そこから、かとじゅんさんをはじめ、DDDに明るい人達が適宜いろんなアドバイス(マサカリというより経絡秘孔を突くような即死級のやつもありましたが)を投げてくれていました。きの子さん自身「変な汗が出た」といっていましたが、おそらくアンカンファレンスで一番得をするやり方がきの子さんのようなやり方なんじゃないかと思いました。

6コマめ:Van Laarhoven Lensのライブコーディング

1コマめの「Lensの基本」でスライドを映せなかったというトラブルもあり、そのリベンジということでした。私はScalaMatsuriで誰かがコーディングしている様を一回は見たいと思ったのでこれを聴講しました。Van Laarhoven Lens自体も知らなかったので、まずはそこから解説してもらえたのでとてもためになりました。ライブコーディングはREPL上で行われましたが、できればいつも使っているエディタでやってみてほしかったです。

その他の感想

やはりなんと言ってもWifiのつながりが悪かったのが残念でした。テザリングやポケットWifiをお持ちの方がいたせい(電波干渉)と思われますが、人によってはスマホを持たずセルラー非対応の端末とポケットWifiを持ち歩いている人もいるでしょうからいきなり切れと言われても難しいと思います。ですので事前に参加要項等で「当日会場ではテザリングやポケットWifi等はご使用いただけません」とアナウンスするといいと思います。また、Wifiが不安定だと特に急ぎの用がある人などは急場しのぎに自分のテザリングでなんとかやってしまおうという人が出てきたりと悪循環になりがちなので、そんな人用に有線LANや隔離Wifi部屋を準備しておいたら良かったのではないかと思いました。

それからこの2日間で美味しいコーヒーがいつでも飲めたのは大変ありがたかったですが、途中で紙コップが不足してるというような話がありました。もしかしたら、タンブラー持参とかのほうがいいのかなとも思いました(少しでもエコに)。ノベルティにタンブラーとかあってもいいかもしれませんね。

最後に自分自身についてですが、今回はScalaMatsuriに初めて参加したということと、こういったイベントに参加すること自体かなり久しぶりということもあったので、2日間の間でほとんど喋ることがありませんでした。おそらく私と同様にほとんど喋らずに2日を終えた人もいることでしょう。次回はもっと色んな人と話す余裕が持てればいいなと思います。そのためにも次の1年はいままで以上にScalaと真摯に向き合おうと思いました。

ScalaMatsuri 2017 レポート終わり。

ScalaMatsuri 2017 に参加してきました(2日目:午前の部)

ScalaMatsuri 2017 2日目はアンカンファレンスでした。

朝食~朝会

ScalaMatsuriの会場の近場に宿を取ったこともあり、完全に朝食をあてにしてましたw

それで朝食のサンドイッチをもぐもぐして「飲み物のこと考えてなかったわ-」「あー、あそこにオレンジジュースがー。もらっとこー」みたいなフリーダムな感じで朝を過ごしつつ、その日行われる発表に投票したりしてました。

朝会はそんな感じでみんなの投票結果を拾いつつ、その日やる発表をみんなで決めていきました。こういうのも楽しいですね。

🍣(Sushi)

この日の目玉のひとつが本職の寿司職人による出張寿司バーでした。

11:00オープンだったので、朝会が終わってすぐに行きました。寿司大好き。4貫いただきました。けっこうサビが効いていました。美味しかったです。海外からいらっしゃった人も寿司バーにならんでいました。

1コマめ:Lens の基本

MonocleのコミッタでもあるAoyama(@AoiroAoino)さんの発表です。Monocleは知っていたのですが、発表を聞くまで発表者がMonocleのコミッタだとは知りませんでした。

スライド

Lens自体は「Lensっていう便利なのがあるらしいよ」みたいなのをTwitterのTLでみかけて「そうなんだすごいね!」という軽い気持ちでHaskellとScalaのShapelessでちょっと触ってみたぐらいで、ネストの深いデータ構造であまり苦労したことがなかったこともあり、あまり深く理解していませんでした。ということで、本当に基本的なところから説明していただいたのでよく理解することができました。

2コマめ:Performance tuning for Scala and/or JVM

Amayaさんの発表で、本当は彼がJVMに詳しい人にいろいろ聞きたかったらしいのですが、お客様の中にJVMに詳しい方がおらず、Amayaさん手持ちの主にコレクションに関するパフォーマンスネタを披露していただきました。たぶんコップ本とかにも書いてある内容もあったと思いますが、初心に帰ってコレクションのパフォーマンスの特徴をおさらいするのにちょうどいい内容でした。これからScalaを使っていくぞ!という初学者にもちょうどいい内容だったと思います。

ランチ

なんと寿司はおやつだったらしいw さらに弁当が支給されました。

美味しゅうございました。ご飯はたけのこご飯でした。

 

ということで、次回の2日目午後の部レポートで完結の予定です。

ScalaMatsuri 2017 に参加してきました(1日目:午後の部)

ちんたら更新してすいません。ScalaMatsuri レポートつづきます。

4コマめ:次世代Scalaコンパイラー Dottyの今

Guillaume Martresさんの発表です。カッコづきでEPFLってさらって書いてありますけど、EPFLってあの「スイス連邦工科大学ローザンヌ校」ですよね? あのScalaの父、Martin Odersky先生の。

すいません。スライドはどこにあるかわかりませんでした。

初めて同時通訳で聞きました。さすがプロのかたは違いますね。しかし、体質的なものなのか、同時通訳のレシーバのイヤホンをつけていると何故か猛烈な睡魔に襲われるのです! なんでなんだろう?

さておき、内容についてですが、私としては合併型ってのができるというのが驚きポイントでした。TypeScriptやflowにもある Int | String みたいな書き方ですね。これ、flowみたいな型推論も効くとコーディングスタイルがガラッと変わることになりますね。

それから、ついにenumが言語レベルでサポートされるというのも期待ポイントでした。

5コマめ:プログラムを Free にする: 関数型プログラミングの本質への開眼

Paul Szulc(@rabbitonweb)さんの発表で、いきなりハイテンションな感じでした。

それで、なんか青いTシャツ着てて、胸の真ん中に赤い文字が……あれはスーパーマン? いや!!

※ひとのツイートを利用してすいません

発表の内容は、Freeモナドの解説で、私もFreeモナドに興味があったもののどこから手を付けたら良いかわからなかったのでいいきっかけになりました。それから、同時通訳の人すごい! 「Coproduct」をその場で「余積」と訳しちゃう!(コプロダクトって言ってくれても良かったのに!)ちらっと同時通訳の人がいるボックス席見ましたけど、その手の人(数学等を特に専門にしている)には見えなかったけどなぁ。おみそれしました!

6コマめ:メタメタにしてやんよ。(メタプログラミングもしくは Shapeless のすすめ)

Chris Birchall(@cbirchal)さんの発表です。けど、この邦題考えたの誰なんでしょう?(笑)

スライド

私はTwitterでも公言しているとおり、未だScalaのマクロを使うようなコーディングをしたことがありません(マクロを利用したライブラリは利用したことはありますが)。そんな私のScalaの経歴の恥部を埋めるべくこの発表を聞きました。たへんわかりやすくScalaマクロによるメタプログラミングとそれと同じようにScalaマクロの後釜にある予定のScala Metaを紹介いただきました。

ただ、やっぱり同時通訳をイヤホンで聞いてると猛烈な眠気に襲われるんです! Shapelessの話も楽しみにしていたのですが、まったく記憶にありません。

7コマめ:Serverless ArchitectureをScalaで構築するぞ

藤井 善隆(@yoshiyoshifujii)さんの発表です。私はサーバレスアーキテクチャって最近良く聞くけどなんだっけ?ぐらいのレベルなのでその無知が少しでも埋まるようにこの発表を聞きました。

スライド

やっぱり基本知識がない、自分の中に課題がないということで、あまり理解が及ばず残念でした。サーバレスアーキテクチャってRPCとは違うの?と思ったぐらいでしょうか。この分野はもっと勉強しないといけないなと痛感しました。

8コマめ:ChatWorkのScala採用プロダクト “Falcon” リリースまでの失敗と成功の歴史

かとじゅん(@j5ik2o)さんこと、加藤 潤一さんの発表です。

ChatWorkさんがPHPからScalaへ乗り換えやたという話は結構有名な話だと思うですが、それを推し進めた当事者による発表ということで一番大きな部屋で開催されたにも関わらず超満員でした。内容としては特にScalaがというような話は少なかったのですが、このシステムデベロッパの一端を生業としている身としてはとても興味深く聞かせていただきました。

ChatWorkさんのこの乗り換え劇が多くのScala推進派の強い味方になったと聞きます。私も話のタネにさせていただいております。今後もChatWorkさんに続く大型実例が出て来るといいなぁと思いました。

懇親会

1日目の最後は懇親会がありました。懇親会では、割りと人見知りな私ですが話しかけてくれる人もおり、ありがたかったです。それから、勇気を出してがくぞさんに前々から気になっていたPlay2-Auth行く末なども直接聞くことができてよかったです。

オードブルや缶ビールを囲んでの立食形式でしたが、ここでもハラールに対応していて流石だなと感心しました。

それと、スポンサーブースに出展していた「株式会社エフ・コード」さんがクロスワードクイズに答えるて応募すると抽選でMacBook Proが当たるというなんとも太っ腹な企画をしていて、その抽選結果の発表がありました。私も応募していたのですが、なんとなんと、それに当たっちゃいました!

ScalaMatsuriにはたくさんの協賛企業があり、それぞれがそれぞれの立場でScalaコミュニティを応援したい気持ちがあったと思います。その中でエフ・コードさんのこの企画は、その気持を表す上でこの上なく目立ったわけで、私も会社経営の一角を担う身としてこの企画者は流石だなと思いました。

尚、頂いたMacは、すでに私の開発環境の一翼を担うようにセットアップされております。

 

次回は2日目について書きます。

 

ScalaMatsuri 2017 に参加してきました(1日目:午前の部)

昨日に引き続き ScalaMatusri 2017 のレポートです。

オープニング

初めての ScalaMatsuri 参加です。見られるものは全部見ようという腹積もりで、ほぼ開場時刻ジャストに会場に入りまして、オープニングから参加しました。

それで、司会者の方が海外から参加された方に向けて英語で語りかけていて「あー。やっぱ、これからの時代、英語ができないエンジニアは三等市民やなー(私は英語できない)」と危機感をつのらせました。

そう! ScalaMatsuri にはたくさんの海外からの参加者がいらっしゃいました。思ったよりずっと国際的なカンファレンスなんだなとこの時すでに感じました(その後そう思いしららされるできごとはいくつも出てきました)。

しかし、司会者さん、自己紹介忘れてる! 一体誰なんだこの人?! 2日間の日程のなかでこの方が一番聞き取りやすい話し方するのにもったいない!

1コマめ:Readable Scala

まずはがくぞ(@gakuzzzz)さんこと中村学さんの発表を聞きました。彼が開発しているPlay2-Authにたいへんお世話になっていますし、その開発者がどんな発表をするのかとても興味がありました。

スライド

Scalaのコードって読みにくいよ!って言われることがあるけど、ちょっと待てコラ(※そこまで喧嘩腰ではない)という話です。私もScalaやり初めの頃同じようなこと(Scalaって可読性低くね?みたいなこと)をTwitterでぶつくさ言っていたので、言われる立場になってのカウンターをこれで学びました。

特にimplicitについて「HowとWhatの分離」のためにあるというのは簡潔で示唆に富んだまとめだと思いました。帰ってからよく考えてみたら、つまりそれって型クラスですよね、先生。と思ったのでありました。

すいません。それは私が型クラスが好きだからそう思っただけです。がくぞさんはそこまで言っていません。

2コマめ:Scala WarriorにおけるScala.jsとタイプセーフなWeb開発

竹添 直樹(@takezoen)さんの発表です。2コマ目は水島さんの発表とどっちにするか迷っていたのですが、水島さんが体調不良(あとで知った)だったらしく、残念ながらキャンセルとなってしまったのでこちらに来ました。竹添さんは、私がSeasar Projectに熱を上げていたときから意識しておりまして、私の中では「脅威の短工期の人」というイメージです。竹添さんが「○○つくってる」っていってるのをブログやTwitterで見るたびに「そんなの一人で作ってていつになったらできるんだよwww」と私は思うのですが、私の想像を遥かに超える速度で「できました」と来るのでいつも驚かされているのです。

スライド

ちょうど私もScalaによるフロントエンドを模索していたので大変刺激的でした。私の場合、厳密にはフロントエンドというか、業務アプリのUIをScalaを絡めて作れないかってことなんですけど。

竹添さんは、この発表で現実的には、まさしくUI(プレゼンテーション層)はJavaScriptでReactなりなんなりつかって書いてScala.jsはそれとサーバとのインタフェースにするのがいいんじゃないかとおっしゃっていましたが、私的にはそれはないわーと率直に思いました。

それ用のフルスタックフレームワークが整備されているのならまだしも(もしかしたら整備する前提で話していたのかもしれませんが)、そんなことやったら多分工数爆発します。フロントエンドとバックエンドって分けただけでもかなり手間かかるのに、さらにもう一層って、辛すぎますよ。

あと、reduxでアクションタイプとか文字列で定義するのすげーダサいと私は思ってて、それに対してDiodeって素敵だなって思っているので、ぜひともScala.js界隈はJavaScriptとは違うエコシステムの中で発展していってほしいと思います。

3-1コマめ:必殺(本当に死ぬ)!ブロッキング&ハイパーコンテキストスイッチングパターン

島本 多可子(@chibochibo)さんの発表です。私の愛読書の著者の一人として名を連ねている人の発表は是非とも聞きたいと思い、これを選びました。

スライド

これはヤバイですよ。実際の経験からのアンチパターンの紹介だったのですが、はい、私ももろにこのアンチパターンやってました。今になって思えば、ボトボト落ちてた私のあのサービスってこれが原因だったのかしら……なんてのが。まぁ、個人的に遊び半分でやってたやつなので大事にも至ってないし、そのせいで真面目に検証しなかったのですが。とにかく15分コマでしたが、短いながらに大変参考になる発表でした。

3-2コマめ:広告配信システムで積み重ねてきたパフォーマンスTips

小紫 弘貴(@petitviolet)さんの発表で、初めての(失礼ながら)まったく存じ上げない方の発表で、会場の流れでこの発表を聞きました。

スライド

端的に言えば良い! 私はそのとき「リアルブログ良記事みたいな発表」とツイートしましたが、すぐに使えるテクニックがいくつも簡潔にまとまっていてまさに15分コマ発表の鏡のような内容でした。これはすぐにでも社内全員に共有できる/したい内容でした。スライドを見ただけでもわかりやすいですし。

ランチ

このカンファレンスは食事付きです。お弁当が、鳥、魚、ベジタリアン向け、ハラールと4種類あるのは国際カンファレンスとして考えられているなと感心しました。私は魚の弁当をいただきましたが、とても日本らしい弁当で、海外から参加された方も日本を感じてもらうのにも良かったと思います。

 

次回は1日目午後の部について書きます。

ScalaMatsuri 2017 に参加してきました(プロローグ)

ScalaMatsuri 2017 に参加してきました。そこで何かと刺激を受けましたので、この3年以上も放置しているブログにレポートを載せたいと思います。いろいろ書きたいことがあるので、何回かに分けようかと思っています。

先に一番言いたいことを言っておく

いつまでモチベーションが保てるかわからないので、先に一番言いたいことを言っておきます。それは「ScalaMatsuri 最高に楽しいから参加したことないなら来年こそ参加しなよ!」ということです。

私自身もそうなので、特に地方の人にこそ参加して欲しいと思います。何故ならば、私は今回ScalaMatsuriに参加して自分が如何に孤独だったのかということを自覚し、そして満たされたからです。片田舎において、自分の力を総動員できる機会がどれほどあるでしょうか? 様々な仕事のしがらみや、自分以外の技術者のレベルの関係で不完全燃焼な毎日を送ることが常態化している地方在住の技術者のみなさん! ScalaMatsuri はそんな自分の力を総動員してあまりある話題で盛り沢山です! ネット越しでよくお見かけする、あの人やこの人! やっぱり生で見てもすごいです! 私が井の中の蛙であることはわかっていました。それでも、打ちひしがれることなんてないです。むしろ、満たされます!

自分についてと何故参加したのか

私は、コップ本第1版の和書が出た頃にScalaに本格的に取り組み始めたので、2009年がスタートの年です。それまではSeasar Projectに熱を上げていました(関連プロジェクトも含め、コミッタをしていたわけではありませんが、Exampleかなにかのクレジットに私の名前が入ったのもあったと思います)。その熱が少し落ち着いて次に食指を伸ばしたのがScalaだったのです。

当時はWebアプリケーションフレームワークとしてLiftが取り沙汰されていましたが、私にはピンと来ませんでした。ですのでもっぱらCubbyやWicketと言ったJava用のWebアプリケーションフレームワークでScalaを使っていました。社内や個人で使うツールやサービスを作るのに使用する程度でフルタイムで使っていたかと言えばそうでもありませんでした。あ、JOGLでゲームも作りました。

その後Play2がリリースされ、業務でもScalaプロジェクトが走り、納品まで至ることもありました。ですが、依然として「100%Scalaバリバリ!」という状態には残念ながら(業務では)なりませんでした。

ですから、私自身も「超最高Scalaプロフェッショナル!ばっちこい!」ってぐらいのスキルには到底達することはできませんでした。しかし、決して消えることのない火がありました。それは「Scala愛」です。

Scala好きすぎます! 楽しいです! 超活用したいです! 業務でバリバリ!なんて状態なんかまってられません。自分から行くしかないのです!

ということで、30代最後のほとばしりで ScalaMatsuri に参加しました。

ScalaMatsuri 参加まで

ScalaMatsuri のサイト、ニュービーにはわかりづらすぎます! DoorKeeper とかかっぺにはわかりづらすぎます! 「Scalaをテーマとしたカンファレンス」ってアバウトすぎます! 主催が誰なのかもよくわかりません! これ、参加に会社の決済欲しい人、相当苦労するんじゃないかと思います。

ScalaMatsuri 2018 のサイトを作成する際はぜひ「ちょっと頭の固い上司に見せる前提で、そんでもって決済の判断材料にされる」という視点を入れていただけたらと思います。あと、支払い方法もPayPalだから会社の決済降りないという人もいたかもしれませんね。

 

 

ということで、肝心の中身のレポートは次回以降に書きます。