Septeni Engineer's Blog

セプテーニ・オリジナルのエンジニアが綴る技術ブログ

AkkaにPull Requestをあげようハッカソンに参加しました

株式会社セプテーニ・オリジナルの高嶋です。
もう一ヶ月前になってしまいましたが、「AkkaにPull Requestをあげようハッカソン」に参加した感想と結果を紹介します。

blog.scalamatsuri.org

jsa.connpass.com

当日の流れ

まずはリチャード伊真岡さんから簡単なAkkaの紹介があり、その後どのissueにチャレンジするかを参加者が選び、実際に挑戦してみるという流れでした。
僕はちょうどその頃、alpakkaを使ったファイル転送システムを作っていたのでalpakkaのS3: custom s3 endpointを選択しました。
なお、akkaではissuesの中に「help wanted」タグがついているものがあり、それらが協力してくれる人物を探しているissueとなっているようです。

取り組んだ内容

結果の差分はPR#619となっています。

endpointURLを変更可能にする

まずは現在のコードをじっくり眺めます。
とはいえ初めてに近いコードなので、どの辺を見ればいいかはakkaのコミッターでもあるKonrad氏が丁寧に解説してくれました。
どの辺を直せばいいかわかれば後は手を動かすだけです。3時間という限られた時間もあり、スタッフの方にどんどん質問し実装を終えました。

テストを書く

テストは少し困りました。
というのも、他のテストでHTTPの通信を伴うテストがなく、ライブラリの追加などを伴うと少し変更が大きくなってしまうような心配があったからです。
しかし、Konrad氏に相談してみるとすぐ「AkkaHTTP使えばいいよ」と言うやいなやすすっとサンプルコードを書いて見せてくれました。参考
これならもともと依存に入っている上、コストも非常に少なくすみました。
また、コンソール上で出たエラーを「command + shift + A」=> 「Stack Trace Analyzer」と選択し、IDEA上でスタックをたどるなど普段使ったことがないIDEAに機能を見ることもできました。 ここではコミッターにすぐ質問出来る、ペアプログラミングも出来るというのは非常に大きいメリットだと感じました。

動作確認

テストも通ったのでいよいよ実際にfakes3を使って動作確認!というところでまた問題が。
結合テストを用意し、動かしてみたところエラーが...
どういったエラーだったかはPR#619のコメントの内容になります。

結果

動作確認中のエラーにより残念ながら完動には至らず、WIPでの終了となりました。
しかし、前述の通りその場で教えてもらったことも含め学びも多く、いい経験となりました。

後日談

年末進行で忙しくその後PRのことを忘れてしまっていたのですが、引き継いでくれた方が現れました。PR#677
どうもfakes3で動作しなかったのは相性の問題であり、Minioでは問題なく動作する状態だったようです。
Minioでの検証、インテグレーションテスト、ドキュメントの整備などなどを引き受けてくれたeasel氏には感謝です。

まとめ

3時間という短い時間ながら、PRを提出できました。
周りのスタッフの方のサポートも手厚く、ハマるポイントもなしにどんどんコードを書ける上、学びも多かったです。
特に絶望的に英会話のできない僕とKonrad氏の意思の疎通を手伝っていただけたのは本当に助かりました。
ScalaMatsuri2018でも同様のイベントが開催予定とのことなので、みなさんもぜひ参加してみてください!