Enviar búsqueda
Cargar
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
•
Descargar como PPTX, PDF
•
86 recomendaciones
•
18,767 vistas
Ken Morishita
Seguir
StateMachine for client apps.
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 71
Descargar ahora
Recomendados
DevLOVE X Day1 C-5のセッションです。 ITの活用範囲の広がりとともに、費用・品質よりもデリバリを優先するプロジェクトも増えてきました。しかし「しっかり考えるよりも、作ってリリースしちゃおうぜ、正解なんて誰にも分からないんだから」というマントラを唱えながら、返済見込みの立たない大量の技術的負債を抱える。それが最善の選択なのか、もう少しだけ立ち止まって考えてみませんか? YAGNIという言葉を便利に使いすぎてはいませんか? コードを書きなぐるのと、ちょっと考えて設計して作るのとで、そんなに開発スピードに違いがありますか? 考えてみたいと思います。
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
2015/7/23開催のUMTPアジャイル開発事例セミナー「現場に学ぶ実践アジャイルモデリング」株式会社ゼンアーキテクツ 岡 大勝による講演資料です。【更新2版:一部図形を修正】
アジャイルにモデリングは必要か
アジャイルにモデリングは必要か
Hiromasa Oka
Behavior Treeという手法を使い、自作ゲームにAIを実装してみました Behavior Designer : https://www.assetstore.unity3d.com/jp/#!/content/15277 講演したイベント 【年末だよ】Unity お・と・な のLT大会 2016【ポロりしてもいいのよ】 http://peatix.com/event/212468
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
PHPカンファレンス2012 & WordCampTokyo2012 LT発表資料です。 タイトルの元ネタ: http://www.amazon.co.jp/dp/4094512624
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
JetBrains社の.NET IDEの「Rider」。本セッションでは、Unityゲーム開発と.NET開発におけるRiderの魅力を紹介します。 スピーカー: Ryota Murohoshi
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
サーベイ方法やアイディアの発想法についてまとめました.
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
Hirokatsu Kataoka
2019年10月25日(金)に開催された「GDM Vol.37」において登壇した、スクウェア・エニックス長谷川誠氏より発表されたセッション「ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介 ~」のスライドになります。
【GDM37】ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介~
【GDM37】ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介~
dena_genom
横浜で行っているゲームAI製作ワークショップ(全五回)の第三回の講義録とワークショップシートです。カヤックさんに協力いただいております。ありがとうございます。今回は「メタAIとキャラクター意思決定」についてワークショップを行います。
ゲームAI製作のためのワークショップ(III)
ゲームAI製作のためのワークショップ(III)
Youichiro Miyake
Recomendados
DevLOVE X Day1 C-5のセッションです。 ITの活用範囲の広がりとともに、費用・品質よりもデリバリを優先するプロジェクトも増えてきました。しかし「しっかり考えるよりも、作ってリリースしちゃおうぜ、正解なんて誰にも分からないんだから」というマントラを唱えながら、返済見込みの立たない大量の技術的負債を抱える。それが最善の選択なのか、もう少しだけ立ち止まって考えてみませんか? YAGNIという言葉を便利に使いすぎてはいませんか? コードを書きなぐるのと、ちょっと考えて設計して作るのとで、そんなに開発スピードに違いがありますか? 考えてみたいと思います。
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
2015/7/23開催のUMTPアジャイル開発事例セミナー「現場に学ぶ実践アジャイルモデリング」株式会社ゼンアーキテクツ 岡 大勝による講演資料です。【更新2版:一部図形を修正】
アジャイルにモデリングは必要か
アジャイルにモデリングは必要か
Hiromasa Oka
Behavior Treeという手法を使い、自作ゲームにAIを実装してみました Behavior Designer : https://www.assetstore.unity3d.com/jp/#!/content/15277 講演したイベント 【年末だよ】Unity お・と・な のLT大会 2016【ポロりしてもいいのよ】 http://peatix.com/event/212468
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
PHPカンファレンス2012 & WordCampTokyo2012 LT発表資料です。 タイトルの元ネタ: http://www.amazon.co.jp/dp/4094512624
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
JetBrains社の.NET IDEの「Rider」。本セッションでは、Unityゲーム開発と.NET開発におけるRiderの魅力を紹介します。 スピーカー: Ryota Murohoshi
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
サーベイ方法やアイディアの発想法についてまとめました.
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
Hirokatsu Kataoka
2019年10月25日(金)に開催された「GDM Vol.37」において登壇した、スクウェア・エニックス長谷川誠氏より発表されたセッション「ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介 ~」のスライドになります。
【GDM37】ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介~
【GDM37】ゲームAIにおける意思決定と地形表現~『LEFT ALIVE』を事例に紹介~
dena_genom
横浜で行っているゲームAI製作ワークショップ(全五回)の第三回の講義録とワークショップシートです。カヤックさんに協力いただいております。ありがとうございます。今回は「メタAIとキャラクター意思決定」についてワークショップを行います。
ゲームAI製作のためのワークショップ(III)
ゲームAI製作のためのワークショップ(III)
Youichiro Miyake
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
Ken Morishita
レガシーコード改善勉強会 in Yahoo Japan 2014.09.27 プロジェクトに対する方法論構築と、タスクマネジメントについての紹介 後半はMikado Methodの簡易紹介です。
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
2015年12月1日に行われた【#techbuzz】モバイル・コンシューマ「開発比較」勉強会 #3【RPGにおけるイベント駆動型の設計と実装】での講演内容です。 https://atnd.org/events/72184
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
オンラインゲームの仕組みや工夫を調べてみたのを社内勉強会で発表した。ときのスライド。の公開用。 オンラインゲームの種別とそれぞれの仕組みについての話と、オープンソースになっているQuakeの仕組みの話、という2つの話が主なトピック
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
ゲームAI入門講座の前半です。
ゲームAI入門(前半)
ゲームAI入門(前半)
Youichiro Miyake
JJUG CCC 2019 Springの登壇資料です。 http://www.java-users.jp/ccc2019spring/#/sessions/7fbef8cc-bf8d-4855-8534-c7fca118fb1d
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Recruit Lifestyle Co., Ltd.
iOS/Androidアプリを作る際に理解しておいて欲しい「Model」という役割について説明します。わりと意識していないケースがあるので、チェックしてみてください。
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
IGDA日本ゲームAI連続セミナー第4回スライド資料です。 ゲームAI連続セミナー「ゲームAIを読み解く」 第4回 レポート: http://codezine.jp/article/detail/1515 @codezineさんから
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Youichiro Miyake
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例 http://cedec.cesa.or.jp/2019/session/detail/s5c7f93801888e
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
Pythonによる(Rubyでも大体適用可能)黒魔術へ入門するための案内書
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
「全然使えないおっさんが入ってきた」状態のつらい状況から這い上がるきっかけとなった3つのターニングポイントについての話。 @TechCrunch Tokyo ハッカソン Tech Talk 関連記事:『人生初の講演をしました』 http://d.hatena.ne.jp/shu223/20131111/1384156668 もしよろしければ。。 http://www.amazon.co.jp/registry/wishlist/3OXBFWIH88643
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Shuichi Tsutsumi
ドメイン駆動設計 Domain-Driven Design ( DDD ) 準備 / スタートアップ / ブラッシュアップ / チャレンジ / 参考書籍 /
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
at Open Seminar Hiroshima 2014 (#osh2014) 2014.02.01 (Sat) http://osh-2014.github.io/
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
Takuto Wada
アーキ部#13で使ったスライドです。 サンプルコードはこちらです。 https://github.com/kawasima/revisiting-domain-model
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
2021年にインフィニットループ社内の新卒向け研修で使われた資料です。
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
Developers Summit 2018【16-E-4】小泉様、佐藤様の講演資料です。
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
Developers Summit
2019/2/23 ステアラボ人工知能シンポジウム2019 https://stair.connpass.com/event/113616/ での招待講演資料です。 大層なタイトルですが前半は「Deep Learning による視覚×言語融合の最前線」と題して喋っている講演のダイジェスト版です。Acadexit した4つの理由はその後のパネルディスカッションにつなげるための頭出し程度の分量です。
これからの Vision & Language ~ Acadexit した4つの理由
これからの Vision & Language ~ Acadexit した4つの理由
Yoshitaka Ushiku
機械学習とif文が地続きであることを解説しました。 ver.2 質問への回答を追加し、顧客価値の小問に図を追加してわかりやすくかみ砕きました。
If文から機械学習への道
If文から機械学習への道
nishio
DBエンジニアのための技術勉強会(第3回)で使用した資料です。主にリレーショナルモデルと正規化について解説しています。リレーショナルモデルの限界について正しく認識してこそ、リレーショナルモデルを理解したと言えると思います。
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
WebCMSの歴史をちょっと振り返って、 イマドキのCMSトレンドとPHPのことを話してみました。
これからのCMSマーケットトレンドとPHP (for fukuoka.php)
これからのCMSマーケットトレンドとPHP (for fukuoka.php)
株式会社ミツエーリンクス
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Atsushi Kambara
Más contenido relacionado
La actualidad más candente
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
Ken Morishita
レガシーコード改善勉強会 in Yahoo Japan 2014.09.27 プロジェクトに対する方法論構築と、タスクマネジメントについての紹介 後半はMikado Methodの簡易紹介です。
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
2015年12月1日に行われた【#techbuzz】モバイル・コンシューマ「開発比較」勉強会 #3【RPGにおけるイベント駆動型の設計と実装】での講演内容です。 https://atnd.org/events/72184
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
オンラインゲームの仕組みや工夫を調べてみたのを社内勉強会で発表した。ときのスライド。の公開用。 オンラインゲームの種別とそれぞれの仕組みについての話と、オープンソースになっているQuakeの仕組みの話、という2つの話が主なトピック
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
ゲームAI入門講座の前半です。
ゲームAI入門(前半)
ゲームAI入門(前半)
Youichiro Miyake
JJUG CCC 2019 Springの登壇資料です。 http://www.java-users.jp/ccc2019spring/#/sessions/7fbef8cc-bf8d-4855-8534-c7fca118fb1d
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Recruit Lifestyle Co., Ltd.
iOS/Androidアプリを作る際に理解しておいて欲しい「Model」という役割について説明します。わりと意識していないケースがあるので、チェックしてみてください。
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
IGDA日本ゲームAI連続セミナー第4回スライド資料です。 ゲームAI連続セミナー「ゲームAIを読み解く」 第4回 レポート: http://codezine.jp/article/detail/1515 @codezineさんから
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Youichiro Miyake
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例 http://cedec.cesa.or.jp/2019/session/detail/s5c7f93801888e
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
Pythonによる(Rubyでも大体適用可能)黒魔術へ入門するための案内書
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
「全然使えないおっさんが入ってきた」状態のつらい状況から這い上がるきっかけとなった3つのターニングポイントについての話。 @TechCrunch Tokyo ハッカソン Tech Talk 関連記事:『人生初の講演をしました』 http://d.hatena.ne.jp/shu223/20131111/1384156668 もしよろしければ。。 http://www.amazon.co.jp/registry/wishlist/3OXBFWIH88643
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Shuichi Tsutsumi
ドメイン駆動設計 Domain-Driven Design ( DDD ) 準備 / スタートアップ / ブラッシュアップ / チャレンジ / 参考書籍 /
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
at Open Seminar Hiroshima 2014 (#osh2014) 2014.02.01 (Sat) http://osh-2014.github.io/
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
Takuto Wada
アーキ部#13で使ったスライドです。 サンプルコードはこちらです。 https://github.com/kawasima/revisiting-domain-model
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
2021年にインフィニットループ社内の新卒向け研修で使われた資料です。
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
Developers Summit 2018【16-E-4】小泉様、佐藤様の講演資料です。
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
Developers Summit
2019/2/23 ステアラボ人工知能シンポジウム2019 https://stair.connpass.com/event/113616/ での招待講演資料です。 大層なタイトルですが前半は「Deep Learning による視覚×言語融合の最前線」と題して喋っている講演のダイジェスト版です。Acadexit した4つの理由はその後のパネルディスカッションにつなげるための頭出し程度の分量です。
これからの Vision & Language ~ Acadexit した4つの理由
これからの Vision & Language ~ Acadexit した4つの理由
Yoshitaka Ushiku
機械学習とif文が地続きであることを解説しました。 ver.2 質問への回答を追加し、顧客価値の小問に図を追加してわかりやすくかみ砕きました。
If文から機械学習への道
If文から機械学習への道
nishio
DBエンジニアのための技術勉強会(第3回)で使用した資料です。主にリレーショナルモデルと正規化について解説しています。リレーショナルモデルの限界について正しく認識してこそ、リレーショナルモデルを理解したと言えると思います。
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
La actualidad más candente
(20)
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
ゲームAI入門(前半)
ゲームAI入門(前半)
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
Pythonによる黒魔術入門
Pythonによる黒魔術入門
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
イベント・ソーシングを知る
イベント・ソーシングを知る
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
これからの Vision & Language ~ Acadexit した4つの理由
これからの Vision & Language ~ Acadexit した4つの理由
If文から機械学習への道
If文から機械学習への道
データベース設計徹底指南
データベース設計徹底指南
Similar a 知らないと損するアプリ開発におけるStateMachineの活用法(full版)
WebCMSの歴史をちょっと振り返って、 イマドキのCMSトレンドとPHPのことを話してみました。
これからのCMSマーケットトレンドとPHP (for fukuoka.php)
これからのCMSマーケットトレンドとPHP (for fukuoka.php)
株式会社ミツエーリンクス
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Atsushi Kambara
SmartNews Tech Night Vol.1の勉強会資料。 ScaleOutでの作るものの優先度の決め方とかリリース方法についてとか。
広告プラットフォームの開発(ScaleOutの場合)
広告プラットフォームの開発(ScaleOutの場合)
Toshiaki Ishibashi
テスト自動化カンファレンス2014(stac2014)の発表資料です。 『システムテスト自動化 標準ガイド』のガイドになっております。 内容に興味をもっていただければ、ぜひ『標準ガイド』を手にとってみてください。
1時間で分かるSTA (Software Test Automation) #stac2014
1時間で分かるSTA (Software Test Automation) #stac2014
Kazuhiro Suzuki
2015/08/23 Talk Live in Summer 2015 at DMM.com Laboで発表した内容です。
Dmmに入社してみた
Dmmに入社してみた
DMM.com
July Tech Festa 2015 での発表資料。
インフラエンジニアのスキルパターンを作ってみた話
インフラエンジニアのスキルパターンを作ってみた話
Ken SASAKI
NCDCのセミナー資料からの抜粋です。企業システムや業務向けシステム・サービスにUXデザインを適用する方法と課題に対して論じています。口頭の説明なしでは分かりづらい内容も含めております。
企業向けUXデザイン導入のポイント
企業向けUXデザイン導入のポイント
Roy Kim
Service Cloud Trailblazers Meetup #02 での発表資料です。
Service Cloud Trailblazers Meetup #02
Service Cloud Trailblazers Meetup #02
sfdc_sctb
Pf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsola
android sola
everriseさん主催の「エンジニアのためのアドテク勉強会 vol.2」の発表資料。
2015年をRTBのアプリ広告元年とするために
2015年をRTBのアプリ広告元年とするために
Toshiaki Ishibashi
StackStorm Meetup JP #11(https://youtu.be/I-pThNJ7q6c)の発表資料
StackStorm MeetupJP #11
StackStorm MeetupJP #11
Ohyama Hiroyasu
2021-05-28 に実施しました StackStorm MeetupJP #11 の発表資料です。
StackStorm MeetupJP #11
StackStorm MeetupJP #11
Ohyama Hiroyasu
・システムの全体像をつかむためにモデルを使ってシステムの地図を作ろう ・ビジネスモデルキャンバスからシステム化する
モデルベース要件定義 at BPStudy
モデルベース要件定義 at BPStudy
Zenji Kanzaki
Titanium+JavaScriptでiPhoneアプリ開発カフェ<vol.3> サンプルコードのブラッシュアップ編の資料
20120118 titanium
20120118 titanium
Hiroshi Oyamada
2018年12月12日に開催された「PowerCMS X 製品発表会」での発表スライドです。
フロントエンド実装者から見た PowerCMS X
フロントエンド実装者から見た PowerCMS X
Hideki Abe
2014/9/26にMT東京さんでお話したプレゼンです。
MTプラグイン入門以前
MTプラグイン入門以前
Hiroshi Yamato
2012年3月のCommunityOpenDay広島会場で発表したスライドです
Windows phone & windows 8で見えてくるメトロの世界
Windows phone & windows 8で見えてくるメトロの世界
Makoto Nishimura
技術ひろば.net 2011年7月の勉強会資料 ※都合により勉強会は中止
LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2
Yoshitaka Seo
講演動画:https://youtu.be/A_l65FlY25I Part 1:https://www.slideshare.net/EpicGamesJapan/ue4-festeast2019-ue4mobilepart1-179705324/ 2019年10月6日に行われた「UNREAL FEST EAST 2019」で登壇した際に使用した資料です。 ●公式サイト https://unrealengine.jp/unrealfest/ === シェーダコンパイルによるカクツキなどモバイルゲーム開発特有の問題は数多くあり、それらはユーザのストレスに繋がる可能性があります。UE4はそういった問題に対しての機能を持っていますが、用法・用量を守って正しく使わないと別の問題を引き起こしてしまいます。そこで本講演ではそれらの機能の使い方、注意点などについて解説します(他のプラットフォーム開発でも役立つ内容にする予定です)。あ、今年は1人講演です。
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
エピック・ゲームズ・ジャパン Epic Games Japan
XR Kaigi 2020 コミュニティオーガナイズドセッション HoloLens Meetup 編 セッション資料 https://xrkaigi.com/2020/session/99rt941uiaeb.html
xR Developerなら知っておきたいカメラの基礎知識
xR Developerなら知っておきたいカメラの基礎知識
Satoshi Maemoto
Similar a 知らないと損するアプリ開発におけるStateMachineの活用法(full版)
(20)
これからのCMSマーケットトレンドとPHP (for fukuoka.php)
これからのCMSマーケットトレンドとPHP (for fukuoka.php)
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
広告プラットフォームの開発(ScaleOutの場合)
広告プラットフォームの開発(ScaleOutの場合)
1時間で分かるSTA (Software Test Automation) #stac2014
1時間で分かるSTA (Software Test Automation) #stac2014
Dmmに入社してみた
Dmmに入社してみた
インフラエンジニアのスキルパターンを作ってみた話
インフラエンジニアのスキルパターンを作ってみた話
企業向けUXデザイン導入のポイント
企業向けUXデザイン導入のポイント
Service Cloud Trailblazers Meetup #02
Service Cloud Trailblazers Meetup #02
Pf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsola
2015年をRTBのアプリ広告元年とするために
2015年をRTBのアプリ広告元年とするために
StackStorm MeetupJP #11
StackStorm MeetupJP #11
StackStorm MeetupJP #11
StackStorm MeetupJP #11
モデルベース要件定義 at BPStudy
モデルベース要件定義 at BPStudy
20120118 titanium
20120118 titanium
フロントエンド実装者から見た PowerCMS X
フロントエンド実装者から見た PowerCMS X
MTプラグイン入門以前
MTプラグイン入門以前
Windows phone & windows 8で見えてくるメトロの世界
Windows phone & windows 8で見えてくるメトロの世界
LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
xR Developerなら知っておきたいカメラの基礎知識
xR Developerなら知っておきたいカメラの基礎知識
Más de Ken Morishita
社内で行ったBigQueryの勉強会資料です
BigQuery勉強会 Standard SQL Dialect
BigQuery勉強会 Standard SQL Dialect
Ken Morishita
iOS/Androidアプリ開発のGoodPracticeのようなものです。
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
Ken Morishita
StateMachine for iOS/Android/ClientWeb Apps.
知らないと損するアプリ開発におけるStateMachineの活用法(15分版)
知らないと損するアプリ開発におけるStateMachineの活用法(15分版)
Ken Morishita
SwiftでiOSアプリ開発を行ったときの体験やポイントを共有します。
SwiftでのiOSアプリ開発
SwiftでのiOSアプリ開発
Ken Morishita
社内勉強会の資料です。 初心者〜中級者くらいを想定しています。
最近の単体テスト
最近の単体テスト
Ken Morishita
Logをs3とredshiftに格納する仕組み
Logをs3とredshiftに格納する仕組み
Ken Morishita
この続きでTheanoの使い方について簡単に書きました:http://qiita.com/items/3fbf6af714c1f66f99e9
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
Ken Morishita
Más de Ken Morishita
(7)
BigQuery勉強会 Standard SQL Dialect
BigQuery勉強会 Standard SQL Dialect
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
知らないと損するアプリ開発におけるStateMachineの活用法(15分版)
知らないと損するアプリ開発におけるStateMachineの活用法(15分版)
SwiftでのiOSアプリ開発
SwiftでのiOSアプリ開発
最近の単体テスト
最近の単体テスト
Logをs3とredshiftに格納する仕組み
Logをs3とredshiftに格納する仕組み
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
Último
2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
2024年5月8日 Power Platform 勉強会 #1 LT資料
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
This is an introduction to MAPPO's paper.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
2022年10月27日に社内向けに開催した勉強会資料の社外公開版です(発表8分程度)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Key topics covered: - Understanding Ballerina's role in integrations: features and advantages - Designing and implementing REST APIs for integration - Designing and implementing GraphQL services with Ballerina - Monitoring and observing applications - Introduction to data integration
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
NewSQLの可用性構成パターン (OCHaCafe Season 8 #4 発表資料) 2024年5月8日(水) NTTデータグループ 技術開発本部 小林 隆浩
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Syed Talal Wasim, Muzammal Naseer, Salman Khan, Ming-Hsuan Yang, Fahad Shahbaz Khan , "Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Grounding" arXiv2024 https://arxiv.org/abs/2401.00901v2
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
LoRaWANスマート距離検出センサー DS20Lカタログ
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Jue Wang, Wentao Zhu, Pichao Wang, Xiang Yu, Linda Liu, Mohamed Omar, Raffay Hamid, " Selective Structured State-Spaces for Long-Form Video Understanding" CVPR2023 https://openaccess.thecvf.com/content/CVPR2023/html/Wang_Selective_Structured_State-Spaces_for_Long-Form_Video_Understanding_CVPR_2023_paper.html
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Último
(12)
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
1.
知らないと損する アプリ開発における StateMachineの活用法 2014年10月 ゆめみ 森下 健 1
2.
2 あるあるじゃない? あるよね? • 通信やダイアログやアニメーションが多い ViewControllerがカオス状態 •
アプリの初期化・起動処理が 複雑でダ・ヴィンチ・コード級の謎 こんな困ったことありませんか?
3.
3 今回はそんな悩みを解決するState Machineの話だよ。 「Finite State
Machine(有限状態機械、略してFSM)」と 呼ぶこともあるね。 そこで
4.
4 こんな流れで説明するよ • StateMachine? • StateMachine
Generator • 実際の例 • StateMachineの設計Tips • 考察
5.
5 まずは、StateMachineについて説明するね
6.
6 StateMachineは組み込み系だと常識的に設計や実装 で使われる技法だよ。例として有名なのは、自動販売 機があるよ(実際どうなのかは知らないけど)。 http://www.riko-rh.expressweb.jp/visio_uml/visio_uml05-03-30.htm
7.
7 例えば、TVはリモコンの同じ電源ボタンを押しても振る 舞いが違うよね。これはTVが状態を持っている、からと 言える。 これを状態図で表すとこんな感じになるよ。 OFF ON 電源ボタン /
電源ON 電源ボタン / 電源OFF
8.
8 「状態」「イベント」「アクション」「遷移」は大事な言葉だ から覚えてね。「状態OFF」のときに「電源ボタンイベン ト」で「電源ONアクション」が実行されて「状態ON」に遷 移する、という意味になるよ。 OFF ON 状態 イベント 遷移 アクション 電源ボタン /
電源ON 電源ボタン / 電源OFF
9.
9 え、自分は組み込み系技術者じゃないからそんなの関 係ないって?
10.
10 使われているのは組み込み系だけじゃないよ。 例えばTCPの通信状態も状態図で書くとわかりやすい ね。 http://www.atmarkit.co.jp/ait/articles/0402/13/news096_3.html 状態 イベント アクション TCPの通信状態
11.
11 AndroidのActivityも状態図だと説明しやすいよ。 http://www.tutorialspoint.com/android/android_acitivities.htm 状態 アクション
12.
12 そして、StateMachineは簡単に言うと 状態図を実装したもの になります。 状態図 実装 StateMachine
13.
13 こんな風に状態図やStateMachineは色々なところで使 われているんだよ。
14.
14 状態図の分析・設計から実装まで繋がるのが嬉しいね。 「いつ」「どんなイベント」が来ても 不具合を起こさないようになる ■ なぜStateMachineなのか? 分析・設計手法でもあるので 自然に抜け・漏れを潰しやすい
15.
15 つまり、StateMachineが解決する問題は、アプリ開発で 起こる問題と近いんだよ。使えそうでしょ? ■ スマホアプリの性質・問題 多様な非同期イベント(UI, 通信,
センサー) 頻繁に発生する仕様変更(特にUI) 分散されて見通しが悪い非同期ロジック(初期化処理等)
16.
16
17.
17 簡易実装ならまだ簡単なんだけどね StateMachineを実際に自分で実装すると結 構たいへん。 例えばJavaだと、ちょっとしたものでも数百行 になってしまう。
18.
18 そこでState Machine Compilerを使うよ。 これを使うと、DSLで書いたコードから、「各言語の StateMachineコード」と「状態図(画像)」ができるのだ。 ※DSL:
Domain Specific Language (=ドメイン固有言語 ≈ オレオレ言語) SMC The State Machine Compiler http://smc.sourceforge.net/ ロゴには Map って書いてあるw そこで
19.
19 つまりSMCを使うと、状態図とコードが対応していること が保証されるので、StateMachine部分のコードを読む 必要が無くなる。 DSL 状態図 StateMachine コード 入力 出力 意味的に同じもの こっちを見れば こっちは見なくても良い 自動Documentation
20.
20 このメリットは非常に大きいと思うの。 なので、これからはこのSMCを使うという前提で話を進 めるよ! ■ SMCより提供 • Java •
Objective-C • Python • Ruby • JavaScript ■ゆめみオリジナル • JavaScript(β) • Swift(β) 対応言語
21.
21 まずは、簡単にSMCで使うDSLの説明をするね
22.
22 さっきの ON/OFF のStateMachineをSMCのDSLで書くと こうなるよ。だいたい見たら対応がわかるんじゃないか な。 […略…] OFF Entry
{ offAction(); } { power ON {} } ON Entry { onAction(); } { power OFF {} } 状態 イベント 遷移先状態 アクション OFF ON 電源ボタン / 電源ON 電源ボタン / 電源OFF
23.
23 「Entry」「Exit」というイベントにもアクションを登録できる よ。これらは「その状態に入った・出たというイベント」を 表すよ。どの遷移(矢印)で来ても発火する共通処理に なるよ。 […略…] OFF Entry { offAction();
} { power ON {} } ON Entry { onAction(); } { power OFF {} } Entry OFF ON 電源ボタン / 電源ON 電源ボタン / 電源OFF Entry Exit
24.
24 さっきも言ったけど、このDSLをSMCで変換すると、状態 図とソースコード(FSM)が出力されるよ。今後この生成 されたStateMachineをFSMと呼ぶことにするよ(よくそう いう名前が付いているし)。 https://gist.github.com/mokemokechicken/9eb89e3c69d7e97800ea (Javaの場合)300行強のソースコード 状態図 StateMachine コード (FSM) ※FSM: Finite State
Machine(有限状態機械)
25.
25 FSMはアクションを呼び出すけど、そのアクションの中 身は自分で書くことになる 状態 イベント 遷移 アクション DSL […略…] OFF Entry {
offAction(); } { power ON {} } ON Entry { onAction(); } { power OFF {} } func offAction() { ・・・ } func onAction() { ・・・ } FSM
26.
26 つまり、開発者が行うのは、DSLとアクションを書くとい う部分になるね。 アクション DSL ←これ書いて これを書く→ […略…] OFF Entry { offAction();
} { power ON {} } ON Entry { onAction(); } { power OFF {} } func offAction() { ・・・ } func onAction() { ・・・ }
27.
27 コンポーネント間の連携はこんな感じになるよ。 Controller/ModelがFSMにイベント送って、適切なアク ションを呼んでもらう、という感じかな。 ViewController Activity Model FSM Action イベント 遷移 アクション 電源ボタン 押された! 電源ON処理! ??
28.
28 実際の例
29.
29 では、実際のアプリケーションを考えます。 「ぺたんぷ」っていう「子供用ご褒美シールアプリ」を題 材にしてみるよ。
30.
③スタンプを選択 30 例えば、こんな仕様の画面制御を行うとします。 ①押せるスタンプを選べる ②アニメーション ④押したい場所でタップ
31.
31 こんな手順で進めていくよ 1.状態図を作る 2.DSLを書いてコンパイル 3.アクションを実装する SMCを使うときの3つのStep
32.
32 まず、ざっくりと状態名を考える。 初期 伸長中 シート表示中 スタンプ選択済み スタンプ押下済み 状態 ①押せるスタンプを選べる ②アニメーション ③スタンプを選択 ④押したい場所でタップ
33.
33 遷移とイベント名を考えます 初期 伸長中 シート表示中 スタンプ選択済み スタンプ押下済み 状態 tap button finish animation select
stamp tap card
34.
34 他にもあり得るイベント・遷移を追加する。 初期 伸長中 シート表示中 スタンプ選択済み スタンプ押下済み 状態 tap button select stamp tap
card 縮小中 finish animation tap else finish stamp finish animation cancel
35.
35 とりあえずこんな感じで進めましょう! 足りないものは後で追加できるから、それほど気にしな くてもOKだよ! 押せるスタンプを選べる アニメーション ①スタンプを選択 ②押したい場所でタップ 初期 伸長中 シート表示中 スタンプ選択済み スタンプ押下済み 状態遷移 tap button select
stamp tap card 縮小中 finish animation tap else finish stamp finish animation cancel
36.
36 DSLを書いていくよ。Action名は機械的に名前を付ける 方が良いと思う。アプリケーションに特化した名前を付 けると、アプリの仕様や意味合いが変わった時に違和 感が出てしまうことがあるよ。 初期 INIT 伸長中 EXPANDING シート表示中 SHOWING_SHEET 状態遷移 tap 縮小中 tap else finish INIT { tap EXPANDING
{} } EXPANDING Entry { onEntryExpading(); } { finish SHOWING_SHEET {} } SHOWING_SHEET ・・・ DSL 名前考えるのむずい onEntryExpading
37.
37 DSLをSMCで変換 するよ。画像とFSM が生成されます。 INIT { tap EXPANDING {} } EXPANDING Entry
{ onEntryExpading(); } { finish SHOWING_SHEET {} } SHOWING_SHEET ・・・ DSL http://goodparts.d.yumemi.jp/generator#StateMachineGenerator-- 8774598a35e825c6da9a9275f50cb373b5685e06
38.
38 必要なアクションを書いていくよ。 アクションの内容は、「Viewの操作」「通信開始」などに なるから、基本的にSDKや自分のコード依存だね。 public protocol Petamp_Action
{ func onEntryExpading() func onEntryShrinking() func onEntryStampFinished() func onEntryStampSelected() } 生成されたコード (Action Protocol) Action class PetampAction : Petamp_Action { func onEntryExpanding() { UIView.animateWithDuration(0.5) { // アニメーションコード } } ・・・ 自作Swift版はprotocolも生成してくれる。 (他の言語はしてくれない…)
39.
39 こんな感じで状態遷移などの仕様を表現している部分 は自動生成したり可読性を高めて、アクションなどの実 装依存の部分だけ自分でコードを書くということができ るよ。 INIT { tap EXPANDING {} } EXPANDING Entry
{ onEntryExpading(); } { finish SHOWING_SHEET {} } SHOWING_SHEET ・・・ DSL Action class PetampAction : Petamp_Action { func onEntryExpanding() { UIView.animateWithDuration(0.5) { // アニメーションコード } } ・・・ ←これ書いて これを書く→ 大事なことなので 2度言います
40.
40 この手法の良い点としてFSMや状態図はほぼ仕様書と 対応するということがあるよ。つまり、iOSやAndroidとい う別なプラットフォームでも同じものが使えます(普通は)。 押せるスタンプを選べる アニメーション ①スタンプを選択 ②押したい場所でタップ 初期 伸長中 シート表示中 スタンプ選択済み スタンプ押下済み 状態遷移 tap button select
stamp tap card 縮小中 finish animation tap else finish stamp finish animation cancel 仕様書 状態図
41.
41 状態図と仕様書を見比べると仕様を満たせそうか判断 しやすいので、レビューがものすごく捗ります。状態図 が適切なら「設計上の大枠はOKだね」となります。 レビューも捗る! https://twitter.com/Hackadoll
42.
42 カメラやセンサーなどのハードウェアの制御にも使えて 「ハードウェアの特性・地雷を制御できているか」という 専門知識を状態図で表せる。これもレビューが捗るし、 再利用も容易です。 Androidのカメラを制御するFSM オートフォーカスの制御をするFSM
43.
43 どう便利でしょ? とってもお役立ちじゃない?
44.
44 まあ、確かにね。 よろしい。ならば仕様追加だ。 ん〜、この程度UIだったら 別に要らないんじゃない? む、来たな
45.
またひとつスタンプ をおせたね!! つぎもがんばって ね! 45 スタンプを押した時にアニメーションが追加されたよ。 スタンプが押されると キャラクターが登場し メッセージを表示 3秒で消える
46.
46 状態を1個追加して、遷移も変更するよ。 この追加した状態のEntryで表示を行い、Exitで表示を 消す、と良さそうだね。 初期 伸長中 シート表示中 スタンプ選択済み スタンプ押下済み 状態遷移 tap button select
stamp tap card 縮小中 finish animation tap else finish stamp finish animation cancel メッセージ表示中 SHOWING_MESSAGE finish animation
47.
47 アクションを2つ追加するよ。 この時、他には何も手を入れなくて良いのがまた良い 所なんだよね。 Action class PetampAction :
Petamp_Action { ・・・ func onEntryShowingMessage () { // メッセージ表示処理 // 3秒後にfsm.finish_animation() する } func onExitShowingMessage() { // メッセージ非表示処理 } ・・・ 単体テストも 書きやすい
48.
48 どう? 簡単でしょ?
49.
49 よろしい。 ならば仕様追加だ。 ん〜、この程度UIだったら いつも普通に書いてるよ? 仕様追加は 世の常人の常
50.
50 「スタンプを追加する機能」とその前に「親認証」を行う とするよ。 押せるスタンプを親が追加 下の数字を入力してください nine two seven 親認証スタンプ追加ボタン 「親認証ダイアログ」で認証を行う
51.
51 状態を2つ追加するよ。 それぞれの状態のEntry/Exitでダイアログを表示/非表 示するよ。親認証は「成功」「失敗」で遷移が変わるね。 初期 伸長中 シート表示中 スタンプ選択済み スタンプ押下済み 状態遷移 tap button select
stamp tap card 縮小中 finish animation tap else finish stamp finish animation cancel メッセージ表示中 finish animation 親認証中 スタンプ追加中 tap_add ok ng finish
52.
52 Actionを4つ追加するよ。 この時、他には何も手を入れなくて良いのがまた良い 所なんだよね。 認証ダイアログ表示 認証ダイアログ非表示 スタンプ追加ダイアログ表示 スタンプ追加ダイアログ非表示 onEntryAuthParent() onExitAuthParent() onEntryAddingStamp() onExitAddingStamp() 親認証中 スタンプ追加中 大事なことなので2度 (ry
53.
53 少し複雑になったね。でも、この図のおかげで仕様書と 見比べれば何をやっているか想像つくし、変更するとき にどこを触れば良いかもわかりやすいでしょ? http://goodparts.d.yumemi.jp/generator#StateMachineGenerator--078e39c669ee45f55a2bf6b92523d32f0924aad8
54.
54 よろしい。 ならば仕様追加だ。 ま、まだまだ・・・ やれる・・・ 実際普通に 増えるんだよね・・・
55.
55 この2つの仕様が追加されたよ。 もう説明は省くけど、似たような感じで対応できるよ。 2012/12/ 21 スタンプをタップするとスタンプを 押した日付が見える 長押しでXボタン出現→削除
56.
56 コンポーネント間の連携はこんな感じになるよ。電源ボ タンの時と同じだね。 ViewController Activity FSM Action ユーザ Model Event ① onBtnTouch ② tap 初期 伸長中 ③
tap ④ onEnterExpanding() ⑤ Animation処理開始
57.
57 続きはWebで! http://qiita.com/mokemokechicken/items/9f59bbb11eec2f30b524 SMCの実行環境 % docker run
-d -p 8000:8000 -p 9000:9000 -p 10022:22 -v /var/lib/smc:/application/GoodParts/mnt mokemokechicken/smc_service Dockerがあれば1行!
58.
58 StateMachineの 設計Tips
59.
59 最初みんな動詞にしてしまいます。 私もそうでした。 その1: 状態名は「名詞」にする 例えば、「ダイアログ表示中」というような状態名にします。 「ダイアログを表示する」「ダイアログ表示」とかだと 「動作」を表す印象になるので少しよろしくないです。 「〜中」「〜済み」のような感じにすると良いです。 英語でかくなら「 〜ing」「〜ed」になります。 状態名を動詞にしてしまうと、色々変な感じになるので注意してください。
60.
60 関連がある程度あって2x2くらいなら1つにしてしまう けど、それ以上だと分けるほうが良いように思うな。 その2: 複合状態名はなるべく作らない 例えば、2つの独立したView部品が1画面にあったとします。 例えば複数の「独立したアニメーション状態」などです。 それを一つの状態図に書くとどうしても複合した状態が出現しますが、 それらは個々の状態数の掛け算で状態数を増やしてしまいます。 複合状態を作ることはありますが、 基本的に独立している場合は複数の状態図・StateMachineに分けて 考えたほうがスッキリします。 StateMachine間の連携は「Action時に通知」などで疎結合させると良いです。
61.
61 スレッド間のMessage通信なので、ちゃんとお作法を守 らないと深遠なる不具合が発生するので注意してね。 その3: 1つのStateMachineは複数スレッドをまたがない StateMachineは「ある時刻」では必ず「1つの状態」になります。 複数スレッドの状態を1つのStateMachineで制御すると、 「スレッド毎の状態数の掛け算」の複合状態を考えることになってしまいます。 これはたぶん、上手くいかないので、各スレッド毎に1つStateMachineを作って、 それを統括するStateMachineをMainスレッドなどに保持するような親子関係と する方が上手くいくと思います。
62.
62 考察
63.
63 一連の通信処理とかは状態図で書いても良いけど、 シーケンス図の方がわかりやすい、という時もあるね。 状態図って、シーケンス図で書けな いの? シーケンス図は「決まった順序」のメッセー ジのやりとりを書くのに適しているけど、順 序が不定である場合は不向きだね。
64.
64 シーケンス図でかける処理は、Deferred/Promiseみた いなので十分書けると思う。 Yield/Return とか Deferred/Promiseと かでも非同期ロジックかけるよね? それらは「一直線な非同期ロジック」を書く のに向いているね。複数の分岐や繰り返し があったりするとちょっと辛いと思う。
65.
65 状態フラグが3つ目になったらそろそろやばい いつもStateMachineを使うべき? 状態が2〜3個くらいなら使わなくても良い かもね。ただ今後増えていく予感があれば 早目に切り替えたほうが吉だったりするよ。
66.
66 技術的負債を減らす努力は大事だね StateMachine導入するのめんどい! がんばれ。慣れだから。単体テストと同じ。
67.
67 あと、少し例にも出したけど、 「デバイス・センサー制御」でも役に立つことがあるよ。 カメラとかiBeaconとか。 UI制御以外に使い途があるのか? 例えば「アプリの起動・初期化処理」とかに はよく使うね。「データDL/展開」「ID作成・取 得」「更新チェック」とか色々あるからね。
68.
68 まとめ
69.
StateMachineのメリット • 複雑な非同期ロジックがある場合 – 状態図による抜け漏れが(少)ない分析・設計 –
可読性が高く・変更に強い実装 – レビューが容易、再利用性も高い 69 夢のような感じだ
70.
StateMachineのデメリット • 新しい概念を覚えないといけない(人が多い) – 覚えよう •
StateMachineを実装するのが大変 – SMC使う • 導入前後ではリファクタリングが必要 – これはしょうがない 70 まあ、手間が増えるのは確かだね
71.
71
Descargar ahora