genius framework について
DESCRIPTION
Genius Framework について. 吉津 卓保(S2ファクトリー株式会社). 自己紹介. seagirl という名前でブログをやっています。. http://blog.s2factory.co.jp/yoshizu/. Agenda. Genius Framework とは 開発動機 Genius のアーキテクチャ Genius の便利なコマンド. 1. Genius Framework とは. Flex アプリケーションの開発(mx パッケージのライブラリと mxmlc コンパイラを使った開発)における、アーキテクチャレイヤのフレームワーク. ??. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/1.jpg)
Genius Framework
について
吉津 卓保( S2 ファクトリー株式会社)
![Page 2: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/2.jpg)
自己紹介
![Page 4: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/4.jpg)
Agenda
•Genius Framework とは
•開発動機
•Genius のアーキテクチャ
•Genius の便利なコマンド
![Page 5: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/5.jpg)
1. Genius Framework とは
![Page 6: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/6.jpg)
Flex アプリケーションの開発( mx パッケージのライブラリと mxmlc コンパイラを使った開発)における、アーキテクチャレイヤのフレームワーク
![Page 7: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/7.jpg)
??
![Page 8: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/8.jpg)
長い!
![Page 9: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/9.jpg)
よくわかんない!
![Page 10: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/10.jpg)
と言われる… orz
→ もうちょっと簡潔に
![Page 11: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/11.jpg)
プログラムをどうやって分けるかプログラムをどこに書くか
![Page 12: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/12.jpg)
ということを決めたルールのようなもの
→ アーキテクチャ
![Page 13: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/13.jpg)
Genius はアーキテクチャを
提案するもの
![Page 14: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/14.jpg)
ルールに従うことで、色々幸せになれる
•仕様変更に強い
•複数人数で開発しやすい
•余計なことで悩まない
![Page 15: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/15.jpg)
2. 開発動機
![Page 16: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/16.jpg)
Web で見かけるサンプル<?xml version="1.0" encoding="utf-8"?><mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"creationComplete="init()"><mx:Script>
<![CDATA[private function init():void {
message.text = 'Hello, world!';}
]]></mx:Script><mx:Label id="message" />
</mx:Application>
![Page 17: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/17.jpg)
MXML を使えば簡単にWeb アプリが作れる!!
→ おお 素晴らしい!!
![Page 18: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/18.jpg)
だけど、こんな感じに書いていって、本当にちゃんとしたアプリケーションが作れるの?
![Page 19: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/19.jpg)
ぐちゃぐちゃ
![Page 20: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/20.jpg)
あっという間に数千行のスパゲッティなコードになるので、おすすめ出来ない。
![Page 21: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/21.jpg)
プログラムを整理したい
![Page 22: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/22.jpg)
フレームワークが必要
![Page 23: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/23.jpg)
Cairngorm
•Adobe 公式
•ケアンゴームと読む
•ほぼアーキテクチャのみ
![Page 24: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/24.jpg)
Cairngorm のアーキテクチャを構成する登場人物
ServiceServiceLocatorDelegateCommandResponderEvent
EventDispatcherFrontControllerModelLocatorViewViewHelperViewLocatorValueObject
![Page 25: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/25.jpg)
複雑すぎる!分割が細かすぎる!めんどくさい!楽になってない!
![Page 26: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/26.jpg)
ちょっとした機能を追加するだけなに、5 個も 6 個もクラスを作らなければならない。
![Page 27: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/27.jpg)
うんざり
![Page 28: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/28.jpg)
作ろう
![Page 29: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/29.jpg)
3. Genius のアーキテクチャ
![Page 30: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/30.jpg)
Model
Thread
View
![Page 31: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/31.jpg)
シンプル!
![Page 32: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/32.jpg)
Model
•データの保持
•データの処理
![Page 33: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/33.jpg)
View
•プレゼンテーションロジック( AS )
•UI 定義( MXML )
![Page 34: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/34.jpg)
ViewBase (AS)ViewBase (AS)
The Flex Code-Behind Pattern
View (MXML)View (MXML)
書いているとき 動いているとき
View View インスタンスインスタンス
![Page 35: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/35.jpg)
http://blog.vivisectingmedia.com/2008/04/the-flex-code-behind-pattern/
詳細
![Page 36: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/36.jpg)
Thread
•コントローラ層( ユーザーイベントのハンドリングやモデルの操作など)
•サービス層( 外部サービスとのやりとり)
![Page 37: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/37.jpg)
http://www.libspark.org/wiki/Thread
詳細
![Page 38: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/38.jpg)
耐久性
クラスファイル 300 個くらいの実案件で使っています。
![Page 39: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/39.jpg)
4. Genius の便利なコマンド
![Page 40: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/40.jpg)
プロジェクトや各クラスの作成はコマンドで一発!
![Page 41: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/41.jpg)
コマンド名 目的
genius プロジェクトのスケルトンを作成
generate Model, View, Thread 各クラスのスケルトンを作成
![Page 42: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/42.jpg)
% ./genius -n HelloSample -p jp.seagirl.sample -o ~/Desktopcreated ./application/src/main.mxmlcreated ./application/src/application/core/Application.ascreated ./application/src/application/threads/ChangeStateThread.ascreated ./application/src/application/views/MainBase.ascreated ./application/src/application/views/Main.mxmlcreated ./application/src/application/views/IntroBase.ascreated ./application/src/application/views/Intro.mxml
genius コマンド
![Page 43: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/43.jpg)
% ./generate UserModelcreated ./../src/application/models/UserModel.asdone.
generate コマンド
![Page 44: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/44.jpg)
便利!
![Page 45: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/45.jpg)
ただし、
![Page 46: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/46.jpg)
シェル環境が必要•Mac OS X →
Terminal.app
•Windows → Cygwin など
![Page 47: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/47.jpg)
Demo
![Page 48: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/48.jpg)
![Page 49: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/49.jpg)
Genius Framework 1.5
本日正式リリース(安定板)
http://www.libspark.org/browser/as3/GeniusFramework/tags/v1.5
![Page 50: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/50.jpg)
参考資料
プロジェクトホーム http://www.libspark.org/wiki/seagirl/genius
開発者のブログ http://blog.s2factory.co.jp/yoshizu/
![Page 51: Genius Framework について](https://reader036.vdocuments.site/reader036/viewer/2022062304/56812faf550346895d9535ae/html5/thumbnails/51.jpg)
ご清聴ありがとうございました