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 にも興味を持っていたので。

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

会場と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 コミュニティに貢献できることはごく僅かですが、老け込まずに精進を続けていきたいと思います。

終わり。

haskell-ide-engine を使ってみて

ここ数日 haskell-ide-engine(HIE) 試してみてます。これは、Haskell による開発をサポートするさまざなツールを統合して Language Server Protocol によって扱えるようにしようというものです。

まず、私の場合 Windows 上では GHC 8.2.2 でのビルドしか成功できてません。GHC 自体なにかと Windows では切ないのでこれはちょっと諦めています。

HIE を使うための Visual Studio Code の機能拡張「Haskell Language Server」のページをみると、GHC 8.0.2 にしか対応していないようなことが書いてありますが、これは HIE が ghc-mod を使用しているからであり、ghc-mod が GHC 8.0.2 までしか対応していないからだと思います。つまり、Visual Studio Code に限らず HIE を使うならば GHC 8.0.2 までということになると思います。

コードフォーマットは、Visual Studio Code 上ではちょっと動きが怪しかったです。なぜかフォーマットするたびに末尾に空行が1行ずつ追加されていきました。ちなみに HIE のコードフォーマット機能には brittany が使われているようです。

text-icuをWindowsで使う

いきさつ

  • Windows 上の Visual Studio Code で Haskell の開発環境を整えようとする。
  • haskell-ide-engine を Visual Studio Code から使う機能拡張が GHC 8.0.2 にしか対応していない(この記事の執筆時点での最新版は GHC 8.2.2)
  • haskell-ide-engine を GHC 8.0.2 の設定でビルドしてみたら text-icu のコンパイルでコケた(以下のようなエラーが出た)
 libraries:
 * Missing C libraries: icuuc, icuin, icudt
 This problem can usually be solved by installing the system packages that
 provide these libraries (you may need the "-dev" versions). If the libraries
 are already installed but in a non-standard location then you can use the
 flags --extra-include-dirs= and --extra-lib-dirs= to specify where they are.

原因

設定されている include パスおよびライブラリパス上に ICU 関連のライブラリがない。

解決方法

まず ICU のダウンロードページから ICU4C 49.1.2(icu4c-49_1_2-Win64-msvc10.zip)をダウンロードする。text-icu のドキュメントによれば ICU 4.0 より新しければいいようだが、あまり新しくても text-icu のコンパイルだけは通るが、haskell-ide-engine のビルドが途中でエラーになるのでこのバージョンにした。

ICU4C のインストールは解凍して適当なフォルダに置くだけ。その置き場を C:\sr\config.yaml に記述する。

extra-include-dirs:
  - /path/to/your/icu/include

extra-lib-dirs:
  - /path/to/your/icu/lib64

これでとりあえず ICU がらみのエラーはでなくなったが……haskell-ide-engine 自体のビルドは未だ成功していないのであった。

Windows版NeoVimを使ってみた

NeoVim 0.2.2のWindows版を使ってみた。インストール記事はググればいくらでもあると思うので、自分的に詰まったところとか、感想。

私は「Cicaフォントを使ってVimをオシャンティーにする設定」を参考にして設定しているところがあるんだけど、neovim-qtではどうも上手く表示させられなかった。ambiwidthとかいじっても上手くいかなかった。

コンソール版(cmd.exeから起動)は、快調。環境変数TERMにxterm-color256を指定しておけばちゃんとキレイにカラースキームも反映された。

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 レポート終わり。