山田アイコ、発信します!
今回は、データイノベーション部の”島田 慶樹”さんが社内で開催した「Scalaの勉強会」についてお話を伺ってきました。
Rubyが主流のアピリッツで、 島田さんがScalaに着目したその訳とは……。
島田さん、今日はよろしくお願いします!
こちらこそよろしくお願い致します。
島田 慶樹
2009年4月データイノベーション部にWebエンジニアとして入社。
入社後は主にwebサイトの設計から開発までを務めている。
印刷会社の営業からWeb系の技術を独学しIT企業に転職、その後アピリッツへ。
Scalaという選択肢
Scalaの勉強会を始めようと思ったきっかけを教えてください!
弊社はRubyが主流ですが、選択肢としてScalaもできる会社になれればという思いがあったので始めてみたのがきっかけでした。
そんなScalaの魅力をぜひ教えてください。
Ruby on Railsが向かない、大規模で長期間保守していけるような堅牢なシステムを開発するのに最適で、静的型付けの言語でありながらRubyと遜色のない柔軟性と多機能さを持ち、オブジェクト指向と関数型プログラミングの両方を自然な形で融合しているところなど魅力はたくさんあります!
Scalaの勉強会での印象深いエピソードはありますか?
とても有能で一人でバリバリコードを書いていける新人の子が、インターフェースとかアクセス修飾子とかすごい基本的なところでつまづいて苦労しているのが印象に残っています。
なぜつまづくかというと、新卒で弊社に入ってRubyだけを学んできたことが理由の一つだなと。Javaなどの他の言語では当たり前の機能や概念に触れる機会がなかったんだなと痛感しました。そこで、業務で使わないものでも知識として取り入れる機会を作ってあげたいと思いました。
若手への技術共有と選択肢を伝える機会を作るというのは、なかなかできることじゃありませんよね。
どんな方が参加されましたか?
若手はもちろん、新しい技術に興味があるベテランの面白い人達が参加してくれていましたよ!
盛況だったのですね! どういった感じで勉強を進めましたか?
長く続ける中で色々な形式を試していたんですが、一番多かったのは持ち回りでテーマを決めて調べたことを発表するという感じでしたね。
念願だったScalaでの案件
開催してから社内に変化はありましたか?
Scalaで開発する案件が1つ発生しました。
すごいです! どんな案件だったんですか?
自社サービスのプロダクトで、「モールコネクター」というプロジェクトに参加することになりました。
モールコネクターとは
モールコネクターは、ECサイトに特化した活性化サービスを複数持つアピリッツが提供する在庫情報・受注情報・商品情報の一元管理ができるサービスです。
楽天やYahoo!ショッピングなどのモール出店に向けた手間を削減し、売上向上施策に注力頂けます。本店ECサイトや基幹システムと連携し、データを自動連携することも可能です。また、商品点数(SKU含む)は数百万点までお取扱い可能です。
各モールとはメール連携ではなく、API又はCSV連携を行っており情報の取りこぼしが発生いたしません。
サイトURL:http://mc.appirits.com/
Press Release:https://appirits.com/press_release/pr20130321.html
ある時、処理件数の多いお客様のバッチ処理が締め時間までに間に合わないケースが出てきて、モールコネクターの開発リーダーからScalaの勉強会をやっているということで声をかけられました。話し合って、速度改善のためにバッチ処理をScalaで書き直すことになりました。
その際に、私と、もう一人勉強会に参加してくれていた優秀な若手とで2人体制が組まれたんです。
勉強会を開いていたから声掛けがあったんですね。
どういう風にScalaの体制へ変えていきましたか?
Railsで書かれた従来のシステムと、Scalaで書かれたバッチのシステムが連携して動く仕組みのもので、その当時の構想としては「Scalaのシステムを今後の中心としてそちらで新機能を開発していく。Rails側は人間が操作する管理画面だけに縮小して、適所適材なシステムにしよう。」という方針でまとまりました。
もう出来上がっているものから全てScalaへ書き換えるのは、とても大変だったのではと思いますが……?
そうですね。戦略としては一気に全部を書き換えるのはリスクがあるので、新規の開発や仕様変更などで大幅に手を加える必要がある部分から、順次Scalaに置き換えていこうという方向でリーダーと話し合って決めました。
それからは、Scalaのバッチシステムが完成して無事リリースすることができ、処理速度は改善して十分な性能を出して問題を解決できました。
それからScalaはどんどん広がり続けていったんですね?
残念ながら……声をかけてくれた開発リーダーが代わることになり、新しい方がモールコネクターの開発を指揮するようになったんですが、2つのシステムが連携する複雑さや、違う言語を使い分けることをデメリットに考えている方だったので、モールコネクターの製品戦略としてScalaで徐々に置き換えていくという構想はなくなってしまいました。
それは残念でしたね……。
ですが、Scalaのコードは今動いているバッチだけを必要最低限保守していくという方針にまとまって、今も当初と同じ役割構成のままでRailsとScalaのシステムが動いています。
よかった!Scalaは今でも残っているんですね。
少し残念ではありますが、また違う案件でScalaには活躍してほしいですね。
そうですね。でも案件でScalaの実務経験を積めたことはとてもよかったです。
勉強のための例題だけですと、どうしても経験不足で知識が偏ってしまいます。この件で、より濃い勉強会ができるようになりました。
技術のシェアは惜しまない
島田さんはどのような方法でプログラミングの勉強をされたんですか?
自分は独学だったんですが、まず本を読んでその方面についてまとまった知識を頭に入れて、あとは自分で手を動かしながら細かいことはWebで情報を集めたりしました。
独学だったんですか! 学ぼうと思ったキッカケを教えて下さい。
最初にプログラミングにハマったのは、小学生の頃に小遣いを貯めて「マイコン入門」という本を買ったことがきっかけでした。
その頃はパソコンというものは日本の家庭には普及していなくて、憧れのようなものがあったんです。
実際に触れるようになったのは中学生になってからでしたが……。
小学生の頃に出会ったことがお仕事につながったのですね! いつから本格的にWeb系の技術を学び始めましたか?
「WikiWikiWeb」という仕組みが注目を浴びた頃に、自作の「WikiEngine」を開発することが流行になり、自分でも作り始めているうちにWeb技術への興味が深まっていました。
そこから、同好の士と仲良くなってコミュニティ活動をしたり、勉強会をやったりとても楽しく知識を習得していきました。
作ったものが結城浩さんの著書や、技術書へも収録されたのも嬉しかったですね。
「結城浩のWiki入門 ~YukiWikiではじめる みんなで作るWebサイト~」(結城 浩 著)
島田さんは、以前にもScalaの他に勉強会を開催していたと伺いましたが、どんな勉強会をされていたんですか?
技術書の読書会も開催していました。
読書会!どんなものを題材にしていたんですか?
読書会を開催していた頃はこの5冊をメインに読んでいました。
「7つの言語 7つの世界」 Bruce A. Tate(著)
「SQLアンチパターン」Bill Karwin (著)
「すごいHaskellたのしく学ぼう!」Miran Lipovača (著)
「コーディングを支える技術」 西尾 泰和 (著)
「リファクタリング: Rubyエディション」Jay Fields (著)
オススメの本は「コードコンプリート―完全なプログラミングを目指して (Microsoft PRESS) 単行本 – 1994/8」Steven C. McConnell(著)です!
プログラムをどうやって綺麗に書くかをテーマに、新人や入社2年目くらいの子達に「それじゃあ今度何章のここをまとめてきて」って言って、若手が自分で読んでまとめた内容を皆で読んでシェアするっていうのを開催していました。
次回、もし開催されるときはアイコもぜひ参加させてください!
勉強していく中で、島田さんが大切だと感じたことを教えてください。
「動くものを自分で一通り作ってみること」
「英語を英語のまま読む癖をつけること」
「良書と言われている本は一通り買って読むこと」
あと 「初心者向けの入門書は役に立たない」 これに限りますね。
えええっ!?
プログラミングも勉強しようと思って、このあいだ入門書を買ったばっかりなのに、役に立たないなんて……!
たしかに買って勉強した気になってあんまり勉強が進んでなかったかもしれません。
とりあえず動くものを作ってみるというのが肝心なんですね。
最後に、今後の勉強会で目指すことを教えて下さい!
勉強会を定期的に、熱量を持って毎回取り組んでいきたいです。
そして、いろんな技術がたくさん出てきているので、周りのメンバーに対して身に付けたらよくなると思った技術は惜しまずシェアしていきたいですね。
それはScalaだけではなく技術書の読書会もそうですし、いま会社に必要ないろいろなテーマの勉強会を細く長くやり続けていきたいと思っています。
アピリッツには、若手の成長を願って勉強会を開催している熱量を持った社員が多くいます。
今ある技術を深めることはもちろんですが、選択肢を増やす取り組みを続けることは、若手だけでなく社員全員の成長に繋がると信じています!