15
おみせやさん編

scalive #1 ツキアイハジメ! おみせやさん編

Embed Size (px)

DESCRIPTION

おみせやさん の話。http://www.geishatokyo.com/greeapp/playshop/

Citation preview

Page 1: scalive #1 ツキアイハジメ! おみせやさん編

おみせやさん編

Page 2: scalive #1 ツキアイハジメ! おみせやさん編

自己紹介● 清水 超也(しみず たつや)

– 芸者東京エンターテインメント株式会社

● 喋れる言葉● C,C++,C++/CLI,Java,C#,Scala など。基本

的に雑食。日本語、英語

● 経歴とか

– 決済ソリューション系 SE– VPN ソフトウェアの開発

– (イマココ!)おみせやさん

● 趣味とか– こころぴょんぴょんするラブライバー

– アニメ・DJ・コスプレ・DTM初心者

Page 3: scalive #1 ツキアイハジメ! おみせやさん編

発表の概要

● おみせやさんとは?

● おみせやさんの歴史と Scala 採用の経緯

● お付き合い その1– implicit conversion

● お付き合い その2– バージョンアップ

Page 4: scalive #1 ツキアイハジメ! おみせやさん編

おみせやさんとは?

● おみせやさんごっこするブラウザゲーム– フィーチャーフォン・スマート

フォンで遊べる!

● アバター服の組み合わせが相当多い!

Page 5: scalive #1 ツキアイハジメ! おみせやさん編

おみせやさんの歴史と Scala 採用の経緯

おみせやさん 1 おみせやさん 2

2009/12 - 2014/5 2010/6 -

プラットフォーム mixi フィーチャーフォン GREE フィーチャーフォン(GREE スマートフォン)(mixi スマートフォン)括弧内は後に対応

フレームワーク Wicket Lift

言語 Java Scala

メリット Java は比較的使える人材が多い

Java より遥かに簡潔に書けるJava で作った資産を流用出来る

デメリット Scala などに比べて簡潔に書きづらい

新言語でも習得出来る人材が必要Java ほど枯れてないバイナリサイズが大きくなる

Page 6: scalive #1 ツキアイハジメ! おみせやさん編

おみせやさん 2 は

● ブラウザゲーム● サーバー

● フレームワーク・言語

– Lift(Scala)

ブラウザnginx

tomcat7

MySQL

Cassandra

Memcached

Page 7: scalive #1 ツキアイハジメ! おみせやさん編

おみせやさん2

● 清水は2011年6月入社時から Scala Life を始めた。

– それまで Scala の使用経験無し

– 新しいことへの適応能力がある人であれば、Scala 知らなくても習得できると思われる

Page 8: scalive #1 ツキアイハジメ! おみせやさん編

implicit conversions こわい

● 付き合うならば慎重に…

● (´-`).oO( Box[LiftResponse] が返り値の型なんだが、返り値は GetUserShop かその基底にしか見えない。どこで変換してんねん!fsck! )– IDE(IntelliJ)ですべての参照の検索やっても見つからず

– 実際は、別の ResponseConversions object に定義してあった

– 同じ開発チームの同僚も同じ罠にハマった

Page 9: scalive #1 ツキアイハジメ! おみせやさん編

とあるエンジニアとの雑談で

● 古いバージョンのライブラリを使い続けることの問題点– 不具合の対応がされなくなる

– Scala の新機能が使えない

● バージョンアップを始めよう!

Page 10: scalive #1 ツキアイハジメ! おみせやさん編

バージョンアップのメリット・デメリット

● メリット– 新しい仕組みが使えるようになって、開発効率が上がる!

● デメリット– バージョンアップに伴う作業のため、段取りが必要

● 決して軽い作業ではないので、開発の閑散期を利用する必要がある

● 経営上の観点– 一時的に新機能実装が出来なくなることで、利益を得るチャンスを失うかも

しれない● バージョン移行で問題が発生した時に被害が最小になるようなシ

ナリオを用意しておく必要がある

Page 11: scalive #1 ツキアイハジメ! おみせやさん編

●Scala Life Second Season

● いきなり最新版にすると既存のコードが動かなくなる可能性大

– ステップを踏んで進まなければならない(後述)

Lift→↓Scala

2.0 2.1 2.2 2.3 2.4 2.5

2.7.7 OK OK NG NG NG NG

2.8.0 NG OK OK OK OK NG

2.8.1 NG NG OK OK OK NG

2.8.2 NG NG NG NG OK NG

2.9.0 NG NG NG NG OK NG

2.9.1 NG NG NG NG OK OK

2.9.2 NG NG NG NG NG OK

2.10 NG NG NG NG NG OK

Page 12: scalive #1 ツキアイハジメ! おみせやさん編

お付き合いするバージョンを変えようとしてみる

● もちろん、Lift と Scala の 変更履歴は読む

● 例:2.7.7 → 2.8.0– scala.collection.jcl.Conversions →scala.collection.JavaConversions

– 当然おみせやさん2 の内製ライブラリで、Scala で書かれたものは全てバージョンアップ

– コンパイルエラーは修正方針を調べて修正● コンパイルエラーの種類は多くなかった● ただし、バージョンアップの時期が遅くなればなるほど、ぐぐっても見つからなくなる可能性大

– 一気にバージョンを上げない限り deprecated が付いたメソッドは、IntelliJ などで全て表示してくれるので、指示に従って直せば、全然怖くない。

Page 13: scalive #1 ツキアイハジメ! おみせやさん編

実際にバージョン上げてみる

● 単体テストと負荷テスト等を実施して問題無かったので本番環境でのバージョンを上げてみる

● バージョンアップに伴う段取りや作業を地道にやっていけば問題ない

Page 14: scalive #1 ツキアイハジメ! おみせやさん編

こわくないよ!

● Scala は少し成長が速い気がするけど

– ググったり

– Scala 勉強会に出たり

– 擬人化キャラ Scala ちゃんが癒してくれるから

● Scala と付き合ってもこわくない!

Page 15: scalive #1 ツキアイハジメ! おみせやさん編

という感じで

● おみせやさん2 は、2010 年 6 月から現在まで、Scala で稼働してます