151
OnsenUI + AngularJS + CloudEndpoints ( 株 ) ISAO 株株 株株 株株株 SPA 株株株株株株

OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

Embed Size (px)

Citation preview

Page 1: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

OnsenUI + AngularJS + CloudEndpoints

( 株 ) ISAO古山 浩志

で作るSPA 地雷処理の巻

Page 2: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

自己紹介

Page 3: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

自転車乗り

Page 4: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 5: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

4 児の父

Page 6: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 7: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

定時帰りhttp://qiita.com/furu8ma/items/f909b8820c9d6d21897a

Page 8: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

Page 9: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

プログラマー

Page 10: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 11: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

GO って検索しずらすぎる

Page 12: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 13: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

まとめると

Page 14: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

自転車乗りで4 児の父で定時帰りなプログラマー

Page 15: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

そんな社員でも受け止めてくれる

( 株 )ISAO

Page 16: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

いい会社ですhttps://www.isao.co.jp/

Page 17: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

OnsenUI + AngularJS + CloudEndpoints

で作るSPA 地雷処理の巻

Page 18: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

• 背景作ったもの踏んだ地雷フィードバック

Page 19: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

• 背景作ったもの踏んだ地雷フィードバック

Page 20: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

WHY SPA

Page 21: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

全部対応して

Page 22: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

iOS + Android + PC別々に組む

Page 23: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

メンテつらい

Page 24: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

クロスプラットフォームしかない

Page 25: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

Olsen UI + AngularJS + Cloud Endpoints

Single Page Application

Page 26: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

インストール不要審査不要バージョンアップが楽アプリに近い使い勝手

Page 27: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

OnsenUI

Page 28: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

ブラウザ上でアプリライクな UIを簡単に表現できるフレームワークhttps://ja.onsen.io/

Page 29: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 30: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

vs Ionichttp://ionicframework.com/

Page 31: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

日本発

Page 32: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

https://ja.monaca.io/

Page 33: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

使ってみた感想

Page 34: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

日本語ドキュメントが良い

Page 35: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

https://ja.onsen.io/v1/guide.html

Page 36: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

ページスタック

Page 37: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

navigation.pushPage()

navigation.popPage()

Page 38: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

タブバー

Page 39: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

Page 40: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

タブバー & バッチ 実装のしやすさ

OnsenUI > iOS >>>>( 超えられない壁 )>>>> Android

Page 41: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

http://qiita.com/furu8ma/items/90482dceeea8cfb162af

Page 42: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

テーマローラー

Page 43: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

http://components.onsen.io/

Page 44: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

デフォルトのコンポーネントデザインで使うなら楽

Page 45: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

コンポーネントが少ないのでカバーしていないことをやろうとすると大変

Page 46: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

デフォルトで行こう!

Page 47: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

AngularJS

Page 48: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 49: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

dotInstall にチュートリアルがあるのでとっかかりやすい

Page 50: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorphttp://dotinstall.com/lessons/basic_angularjs/8201

Page 51: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

使ってみた感想

Page 52: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

双方向データバインディング

Page 53: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

$scope

Page 54: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

フィルター

Page 55: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

Page 56: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

役割分担

Page 57: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

Page 58: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

CloudEndpoints とのデータのやり取り共通処理

各テンプレートごとの固有処理

Page 59: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

やり方を強制されるので楽

Page 60: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

プロダクトとしての寿命が心配

Page 61: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

仕組みに乗っかろう!

Page 62: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

CloudEndpoints

Page 63: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

Platformasa Service

Page 64: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 65: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

BackendAPI を簡単に生成

Page 66: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

インフラらく〜

Page 67: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

vs Parsehttps://parse.com/

vs Herokuhttps://www.heroku.com/

Page 68: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

使ってみたかった

Page 69: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

Cloud Datastore

Page 70: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

NoSQL

Page 71: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

Auto scale

Page 72: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

インフラらく〜

Page 73: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

使ってみた感想

Page 74: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

良いチュートリアルがある

Page 75: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

https://rominirani.com/google-cloud-endpoints-tutorial-part-1-b571ad6c7cd2#.y8qydbm5t

Page 76: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

SDK 充実https://cloud.google.com/appengine/docs/java/endpoints/#basic_endpoints_architecture

Page 77: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 78: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 79: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

デプロイ簡単appcfg.py -A hogehoge-project update appengine-try-

php

Page 80: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

ロールバック簡単

Page 81: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

Page 82: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

エッジキャッシュ

Page 83: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

安い

Page 84: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorphttps://cloud.google.com/appengine/pricing

Page 85: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

http://koni.hateblo.jp/entry/2016/01/06/130613

Page 86: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

Page 87: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

スピンアップ問題

Page 88: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

かんたん!

Page 89: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

• 背景作ったもの踏んだ地雷フィードバック

Page 90: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

シェアシステム

Page 91: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

カレンダーを使って予約日時を指定したい

Page 92: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

OnsenUI にカレンダーないじゃん!

Page 93: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

どうする?

Page 94: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

自作?

Page 95: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

そんな時間ないよ〜!

Page 96: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

http://fullcalendar.io/

Page 97: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

かんたん!

Page 98: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

日時はタップだけで選択したい

Page 99: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

OnsenUI にDate picker

ないじゃん!

Page 100: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

https://github.com/alongubkin/angular-datepicker

Page 101: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

これならなんとか

Page 102: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

つくった

Page 103: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 104: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

FullCalendar.js

+angular-datepicker

OnsenUI

Page 105: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

OnsenUIすくないね…

Page 106: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

• 背景作ったもの踏んだ地雷フィードバック

Page 107: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

初期値が設定できないiOS でイベントが発生しないAndroid でイベントが発生しないCloudEndpoints がクエリを受け付けない

Page 108: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

初期値が設定できないiOS でイベントが発生しないAndroid でイベントが発生しないCloudEndpoints がクエリを受け付けない

Page 109: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

初期値が設定できない

Page 110: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

あれ、初期値を書く場所は?

template.html

Page 111: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

想定外すぎる!

Page 112: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

どうする?

Page 113: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

angular-datepickerのコードを読む

Page 114: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

直接 DOM を操作

controller.js

Page 115: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

DOM を直接操作するなんてママに叱られる〜

Page 116: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

初期値が設定できないiOS でイベントが発生しないAndroid でイベントが発生しないCloudEndpoints がクエリを受け付けない

Page 117: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

iPhone がタッチに反応しない

タップしてるのに…

Page 118: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

FullCalendar#dayClickイベントが発火しない〜

Page 119: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

どうする?

Page 120: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

FullCalendar.jsのコードを読む

Page 121: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

タップ > ドラック終了 > 発火

タップ > ドラック終了ではない > 未発火

Page 122: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

http://qiita.com/furu8ma/items/1af80a6d8ab369e115d0

Page 123: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

ライブラリに手を入れるなんてママに叱られる〜

Page 124: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

初期値が設定できないiOS でイベントが発生しないAndroid でイベントが発生しないCloudEndpoints がクエリを受け付けない

Page 125: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

4.4 より前の Android で空の日セルをタップしても反応しない

Page 126: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

どうする?

Page 127: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

FullCalendar.jsのコードを読む

Page 128: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

わからないよ〜

Page 129: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

原因不明。期限だけが近づいてくる… .

Page 130: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

空のイベントを全ての日に設定

Page 131: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

力技すぎてママに叱られる〜

Page 132: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

初期値が設定できないiOS でイベントが発生しないAndroid でイベントが発生しないCloudEndpoints がクエリを受け付けない

Page 133: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

リリース直前すべてのクエリを受け付けなくなる

Page 134: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

どうする?

Page 135: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

ググる

Page 136: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

Cloud Datastoreのquota 問題だった

Page 137: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorphttp://qiita.com/furu8ma/items/399b39028b13259937ab

Page 138: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

OnsenUI,AngularJSの問題じゃないじゃん

Page 139: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

• 背景作ったもの踏んだ地雷フィードバック

Page 140: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

カレンダーを自作したことはありますか?

Page 141: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

その JS ライブラリは本当にクロスプラットフォームですか?

Page 142: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

OnsenUIAngularJS

CloudEndpointsFullCalendar.js

angular-datepicker

検証をおろそかにしがち

Page 143: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

そんなこと言ったってライブラリを使わない

なんて無理!

Page 144: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

ネイティブアプリという選択

Page 145: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

クロスプラットフォームはハマった時に手を入れるのが大変

Page 146: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

急がば自作かも

Page 147: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

質問タイム

Page 148: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

最後に

Page 149: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

エンジニア募集中

Page 150: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻
Page 151: OnsenUI + AngularJS + CloudEndpointsで作るSPA 地雷処理の巻

#ISAOcorp

ありがとうございました!