84
Scala開発チームの 挑戦 -術編- DevLove甲子園2014 関西大会 2014/08/23 国平清貴(Kuchitama) #devkan技

Scala開発チームの挑戦-技術編-@DevLove2014

Embed Size (px)

DESCRIPTION

DevLOVE甲子園2014 西日本大会 技トラックの発表資料です。 http://devlove-kansai.doorkeeper.jp/events/12334

Citation preview

Page 1: Scala開発チームの挑戦-技術編-@DevLove2014

Scala開発チームの挑戦 -技術編-

DevLove甲子園2014 関西大会 2014/08/23 国平清貴(Kuchitama)

#devkan技

Page 2: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

•タイトルは釣りです •あんまりScalaの話は出てきません •Scalaをいきなりプロダクトに導入しちゃった会社だけど他の技術導入はどんな感じなんっていうのを話します

•成功談・失敗談あるのでなんかの参考になればこれ幸い

Page 3: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

自己紹介• Kuchitama(国平清貴) • FuRyu株式会社(新卒入社4年目) • SIerとか知らない27歳 • 技術ブログ編集長(自称)

• 携帯乙女ゲーム開発 • Scala、Ruby、Clojure • Javaはもう忘れた

Page 4: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

フリュー

• 総合エンタメ企業 • ソーシャルゲーム • 社員旅行が新聞沙汰になる会社

北海道新聞 2013/07/06

Page 5: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

乙女ゲーム

and more …

Page 6: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Scala• Scala • Play2.0 • nginx • AWS • GitHub

Page 7: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

今日の話

•失敗事例 •成功事例 •まとめ

Page 8: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Case.1 Chef

Page 9: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

ある日の出来事

Page 10: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

EC2スケールアウトスケールアウト

Page 11: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

EC2スケールアウトスケールアウト

Page 12: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

EC2スケールアウトスケールアウト

AMI作って

Page 13: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

EC2スケールアウトスケールアウト

AMI作って作成

Page 14: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

EC2スケールアウトスケールアウト

AMI作って作成手動で

Page 15: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

手順1元になるAMIを選択

Page 16: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

手順1元になるAMIを選択

多いわ!

Page 17: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

手順2作成したEC2インスタンスに接続

Page 18: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

手順2作成したEC2インスタンスに接続

どれやねん!

Page 19: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...

手順3から

Page 20: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...

手順3から

・・・

Page 21: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...

手順1~3

Page 22: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...

手順1~3

これをx10

Page 23: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

結果

Page 24: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

そこで Chef

Page 25: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

���

� ���!$������ ������������ ���� "�#���� %������� "

Page 26: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

やりたいこと•AMIからEC2を起動 •EC2でChefレシピを実行 •EC2をAMIとして保存 •実行も自動化したい •タイミングはrecipeとかを更新したときがいい → Git push時

Page 27: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

作った

Push

POST

Page 28: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

実際のチームの現状

Page 29: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

実際のチームの現状Chef未導入

Page 30: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

チームの現状•手順書化 •初期のサーバ構築自体は機会が少ない •ルーチンはスクリプトで •毎日本番環境をAMI化 •サーバ増設時はAMIからインスタンス起動 •コマンド一つで任意台数作成可能 •別のチームはAnsible

Page 31: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

チームの現状•手順書化 •初期のサーバ構築自体は機会が少ない •ルーチンはスクリプトで •毎日本番環境をAMI化 •サーバ増設時はAMIからインスタンス起動 •コマンド一つで任意台数作成可能 •別のチームはAnsible

Ansible

Page 32: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Chef導入失敗

•導入コスト •チームとして取り組まなかった •個人でノウハウ溜めてから導入しようとした

Page 33: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Case.2 Play2.0 + Java

Page 34: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Play2+Java

•乙女ゲーム運用ツール •サービスはPlay1系 •サービスインまでに必要

Page 35: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Play2+Java• マスタデータの登録 • テスト系RDBから本番系RDBへのレコードのコピー • Play1系では複数DBの操作に非対応だった

テストDB 本番DB

運用ツール

Page 36: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

進捗

•Play1系とPlay2系の違いに苦戦 •フレームワークに対する知識不足 •ドキュメント不足

Page 37: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

進捗

•Play1系とPlay2系の違いに苦戦 •フレームワークに対する知識不足 •ドキュメント不足あきらめたS2Strats + S2Dao (古い構成)に変更(́Д`)

Page 38: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Play2導入失敗•納期最優先 •学習コスト •メンバーのノウハウ不足 •特にJDBC周り •ドキュメント不足 •コードリーディング力不足

Page 39: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Play2導入失敗•納期最優先 •学習コスト •メンバーのノウハウ不足 •特にJDBC周り •ドキュメント不足 •コードリーディング力不足

Page 40: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Play2導入失敗•納期最優先 •学習コスト •メンバーのノウハウ不足 •特にJDBC周り •ドキュメント不足 •コードリーディング力不足基礎力大事

Page 41: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

失敗に学ぶ

Page 42: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

•Chef導入 •チームで取り組む •Play2 + Java •基礎力大事 •諦めたらそこで(ry

Page 43: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Case.3 EMLauncher導入

Page 44: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

テストアプリの インストールに

課題

Page 45: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

インストール手順iOS 1.ファイルサーバから任意環境のipaの最新バージョンを取得 2.iTunesに追加 3.ローカルPCへiOS端末を接続 4.iTunesからアプリをインストール

Android 1.apkのDLページにアクセス 2.任意環境のapkの最新バージョンをDL 3.DLしたapkを実行 4.パッケージインストーラでインストール

Page 46: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

インストール手順Android 1.apkのDLページにアクセス 2.任意環境のapkの最新バージョンをDL 3.DLしたapkを実行 4.パッケージインストーラでインストール

iOS 1.ファイルサーバから任意環境のipaの最新バージョンを取得 2.iTunesに追加 3.ローカルPCへiOS端末を接続 4.iTunesからアプリをインストール

Page 47: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

インストール手順Android 1.apkのDLページにアクセス 2.任意環境のapkの最新バージョンをDL 3.DLしたapkを実行 4.パッケージインストーラでインストール

iOS 1.ファイルサーバから任意環境のipaの最新バージョンを取得 2.iTunesに追加 3.ローカルPCへiOS端末を接続 4.iTunesからアプリをインストール

めんどくせ

Page 48: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技http://www.klab.com/jp/press/140304.html

Page 49: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技http://www.klab.com/jp/press/140304.html

お!?

Page 50: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

�������� ��

使ってる人の評判

Page 51: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

�������� ��おお!

使ってる人の評判

Page 52: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

�������� ��

使ってる人の評判

よっしゃ導入だ

Page 53: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

インストールした

Page 54: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

インストールした

が、動かない

Page 55: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

インストールした

Page 56: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

インストールしたエラー読む

Page 57: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Page 58: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

コード読む

Page 59: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

Page 60: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

PHPわからん

Page 61: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

ググって

Page 62: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

ググってググって

Page 63: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

ググってググってググった

Page 64: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

ググってググってググったはっ!

Page 65: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

ググってググってググった

PHPのバージョンが低い

Page 66: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

うごいたーーー

Page 67: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

作った

https://github.com/Kuchitama/EmlauncherRegister

Page 68: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

作った

EMLauncherRegisterhttps://github.com/Kuchitama/EmlauncherRegister

Page 69: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

作り中

Page 70: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

作り中

EMLauncher4s

Page 71: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

•EMLauncher便利 •便利ツール導入しよう •でも一回投げ出しかけた •粘り強く調べた •エラー/ソースを読み込んだ(基礎/基本) •チームで時間を作れた •結果、他チームにも波及

Page 72: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

•EMLauncher便利 •便利ツール導入しよう •でも一回投げ出しかけた •粘り強く調べた •エラー/ソースを読み込んだ(基礎/基本) •チームで時間を作れた •結果、他チームにも波及

Page 73: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

•EMLauncher便利 •便利ツール導入しよう •でも一回投げ出しかけた •粘り強く調べた •エラー/ソースを読み込んだ(基礎/基本) •チームで時間を作れた •結果、他チームにも波及

諦めない!

Page 74: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

•事前情報でチームにとってメリットがあると確信できた

•開発チームで導入を支援してもらえた

Page 75: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

•事前情報でチームにとってメリットがあると確信できた

•開発チームで導入を支援してもらえた情報大事!

Page 76: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

成功に学ぶ

Page 77: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

•アンテナを高くはる •自分たちにメリットがある技術を選り分ける

•確信があれば、協力を得られる/粘り強く取り組める

Page 78: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

まとめ

Page 79: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

•Chef導入 •チームで取り組む •Play2 + Java •基礎力大事 •諦めたらそこで(ry •EMLauncher •情報収集大事

Page 80: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

もう一言

Page 81: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

もう一言新技術に取り組み、 そしてブログを書こう

あなたのアウトプットは 誰かのインプット

Page 82: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

ここから宣伝

Page 83: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

勉強会

•9/20 関西Scalaビギナーズ •2014/冬 関西ソーシャルゲーム勉強会

Page 84: Scala開発チームの挑戦-技術編-@DevLove2014

#devkan技

エンジニア募集

•サーバサイドエンジニア • Scalaで仕事したい人 • Scalaを学ぶ意欲がある人 •フロントエンドエンジニア • HTML5 + CSS3 + JavaScript