Category Archives: Scala

ScalaMatsuri 2018 に参加してきました

このブログも更新頻度が低く、ScalaMatsuri の参加料割引だけが目当てのブログなんじゃないかって思われるほど浅ましい感じになりさがっておりますが(苦笑)、割引ももちろん欲しいですが、少しでも未だ ScalaMatsuri に参加したことがない人の役に立てるようにと、一参加者の感想として来年のネタの一助になればとの思いで今年も ScalaMatsuri 参加レポートを書き綴ってみたいと思います。ちなみに私が参加したのは3月17日(土)と18日(日)です。

今年のセッションについて

単純に 20172018 見比べてみてください。インパクトが少しなくなった感じがしませんか? 私はこのため、今年は参加者が減るんじゃないかと思っていましたが、めでたく今年も前年超えの661人の参加者となったそうです。今年は3月16日にトレーニングDayという初めてScalaに触る人、初学者を対象としたものが催されたそうですが、そこからの流れを考えると今回のセッションはバランスの良いものだったのではないかと思います。しかし、私は16日は参加しなかったのですが、TwitterのTLを眺めている限りではトレーニングDayは講師陣が豪華ということもあり、結構深い(難しい?)内容もあったそうで、中級者以上も受け応えがあったとかなかったとか。

17日、18日通してがくぞさん(@gakuzzzz)のセッションは全体的に流石だなという感じがしました。慣れてる感が違いますね。去年は喋る速度が早いなーって思うところもあったのですが今年はそういうこともなく、今後も ScalaMatsuri に参加する場合(特に初心者の方)はがくぞさんのセッションは要チェックだと思います。

それからがくぞさんは意識的に「モナド」という言葉を使わないようにしていたように見えました。また、Gabriele Petronella さんのセッション「仕事で役立つモナド変換子」のスライドでモナドの話になる際にまず「THE ‘M’ WORD(「モ」で始まるアレ)」と表現していたのですが、やはり「モナド怖い」は全世界共通の話題(でありネタ)なんでしょうかね。ということで、「モナド怖い」という Scala 初学者の人も安心して来られるのが ScalaMatsuri だと思います。「怖さ」を意識した素晴らしいスピーカーが注意深く「怖さ」を回避してくれていますから。

しかし、「会場C」はなんとなく「怖い」話題が多いように思います。昨年に続きそれは感じました。マサカリはもちろん、ボウガンの矢が飛び交い、それを二指真空把で跳ね返し……というのは冗談ですが、会場が狭いとコアな質問が出やすいという性質があるかもしれませんね。しかし、18日のアンカンファレンスの会場Cでのトップバッター「結局圏論が理解出来なかった俺達の復習」は最高でした。私的には、今回の ScalaMatsuri 最高のセッションでした。「猫番」の人が直々に圏論を説明してくれたのですが、もうね、学校かよ!ってぐらいの丁寧かつなめらかかつわかりやすい解説。もう1日これでいいやってぐらいでした。恐らく圏論ってやつを教えてくれよって思ってる人は私と同じような感想を持ったのではないでしょうか?

それから、Elm 布教セッションをしてくれた @ababupdownba さんに直にお会い出来て良かったです。Elm にも興味を持っていたので。

ということで↓こんな流れになってて草

https://twitter.com/nf_shirosawa/status/975234703954358272

https://twitter.com/yuche13/status/975236227354976261

会場とWi-Fiについて

今回も前年超えの参加者数となった訳ですが、流石に手狭になってきたかなと感じました(ロビーが)。あと、Wi-Fiのつながりも今年も悪かったのですが、恐らく単純にアクセスポイントのキャパが足りてないんだと思いました。というのも、セッションが終わるといきなり繋がらなくなったりするからです。昨年もそうだったのですが、テザリングの電波干渉が疑われていましたが、セッションが終わったからと行って今までWi-Fiがつながっていたのにいきなりテザリングし始めますかね? それから、繋がらなくなったらWi-Fiを一旦無効にして再度有効にすると繋がるようになりました。その時は恐らく後勝ちでところてん式に私以外の人が繋がらなくなったと思います。

食事について

17日のお弁当はなんと6種類もの中から選ぶことができました。すごい! ところで昨年に比べて「ハラール」の文字を見かけなかったのは私の注意が足りなかったのでしょうか? それとも昨年ほど意識していなかったのでしょうか? それから18日はできたてアツアツのたこ焼きがいただけました。前回の寿司より満足度が高いとおっしゃってた人がいましたが、温かい食べ物が少ないので私も良かったと思います。

ただ、18日、小麦粉ばかりだったんですよ。朝食はサンドイッチだし、昼もパン系だし、たこ焼きも粉もんだし、コメ、食いたかったです。

来年に望むこと

Wi-Fiがパワーアップしてもらうこと(Wi-Fi奉行様、おなしゃす!)、コメを食べさせてもらうこと以外にも、参加者の傾向が知りたいなと思いました。簡単な事前アンケートを実施するなどしたらどうでしょう。

  • 勤務地(都道府県)
  • 年齢(20代、30代など大雑把でも)
  • Scala開発で使っているIDE、エディタ
  • Scala歴
  • Scalaをどのような用途で使用しているか
  • Scala以外に主にどんなプログラミング言語を使用しているか
  • Scalaでよく使う/お気に入りのライブラリ、フレームワークは何か

↑こんな感じで。

最後に

今年もすばらしい ScalaMatsuri を企画し、開催してくださったスタッフの皆さん。ほんとうにありがとうございました。スポンサーの方々も本当にありがとうございました。優秀な人材確保など出資に足る成果が上がることを切にお祈りしております。

参加者で最長老級の方はきっと皆様も想像しているサングラスをしていた「あの方」だと思うのですが、懇親会などでいろいろな方と話していると実は私も結構長老級なんじゃないかと思いました。そんな私ですが、来年もめげずに参加するつもりです! 能力的にも地理的にも私には ScalaMatsuri 、そして Scala コミュニティに貢献できることはごく僅かですが、老け込まずに精進を続けていきたいと思います。

終わり。

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日目午後の部について書きます。