約 3,481,783 件
https://w.atwiki.jp/netawik/pages/16.html
パレートの法則 80:20 需要 品質 コスト 納期 4P-マーケティング 製品(Products) 価格(Price) 広告宣伝(Promotion) 流通(Place) 3C-経営環境分析 市場、顧客(Customer) 競合(Competitor) 自社(Company) PEST分析-外部環境 政治(Politics) 経済(Economics) 社会(Society)) 技術(Technology) 6C-経営環境分析 自社 Company 顧客 Customer 競合 Competitor 流通 Channel 提携 Collaboration 外部環境 Controller (PEST分析の4つの要素) 5 forces-業界分析 業界内競合 新規参入の脅威 買い手=ユーザー 売り手=供給者 代替品 ヒット解析 形態 意味 USP (付随機能) 機能的ベネフィット(短期) 情緒的ベネフィット(中期) 精神的ベネフィット(長期) バリューチェーン 開発 生産 マーケティング 販売 物流 サービス 利益 利益=売上げ-コスト 売上=客数×客単価 コスト=固定費+変動費 客数=既存顧客+新規顧客 施策による売上=初期顧客×ストリートプライス セグメントターゲットボリューム~売上算出 例:母集団÷エリア÷想定顧客割合÷利用意向者率×常用率×年間回数×定価 オープンデータ入手先 官公庁HP:総務庁(郵政関連)・経産庁など 業界no.1企業のHP メーカーHPのプレスリリース MDB ACR などなど ポートフォリオマネジメント-市場成長率・自社シェア 花形(成長大、自社シェア大) 金のなる木(成長○、自社シェア×) 問題児(成長×、自社シェア○) 負け犬(成長×、自社シェア×) 問題児~金のなる木~花形への順の移行が理想 商品ライフサイクル-普及時期による採用者分類 イノベーター(2.5%) アーリーアダプター(13.5%) (あわせて16%がブームの分かれ目) アーリーマジョリティ(34%) レイトマジョリティ(34%) ラガード(16%) 年齢フレームワーク? 乳児期(0~1) 幼児期(1~6) 学童期(6~11) 思春前期(11~14) 思春後期(14~18) 成人期(20~40) 初老期(40~65) 老年期(65~) 視聴率集計区分 C1:4~12歳 C2:13~19歳 F1,M1:20~34歳 F2,M2:35~49歳 F3,M3:50歳~
https://w.atwiki.jp/devstsample/pages/18.html
(ただいま作成中です。) ようやくここから本題。 1.オンラインで採用するミドルウェアと、ベースフレームワーク JDK6系最新 Tomcat6系最新 SAStruts最新 S2JDBC最新 テンプレートエンジン(mayaa等も)検討する。 あとは適宜追加。 2.階層構造 Action層から、S2JDBCを直接使用する方式。 従って、JSP + Action層の2層構造。 ※Service層は作らない。 Service層を作らない理由は、Serviceの粒度の検討など、 設計者が迷いやすい要素を排除するため。 階層が無ければ、実装箇所が自明となるため、実装が均質化する。 ※Dao層の採用は検討する。 DB周りの処理ロジックを自動生成出来生産性向上につながる可能性があるため。 ※JSPはテンプレートエンジンを採用した場合は、別の形になる。 画面IDDTO SQLの戻り値として、Tableに対応したEntityだけでは、扱いにくい。 画面IDDto+連番の命名方法で、画面と1と対応したDtoを用意し、 S2JDBCのEntityの一種として扱う。 ヘッダ + テーブルなどの構造を持っている場合は、 1画面に2つ対応したDTOを作る。 Actionの継承関係 BaseAction←(継承)- 画面IDActionGen←(継承)-画面IDAction Actionは、画面1つに対して2つ作る(自動生成分と手動生成分)。 -BaseActionは、フレームワークで1つ(とりあえず。あとで増やすかも) -画面IDActionGenは、画面で1つに対して1つ(ツールで自動生成) -画面IDActionは、画面で1つに対して1つ(手動で作成) どこに実装するかは、明確で、Base>Gen>手動の順で、 出来るだけ上の階層に実装し、手動実装を減らす。 ※Genは自動生成なので、Baseは無くても実装コストは変わらないが、 ソースコード量が増えると、SVN・ファイルコピー・コンパイルなどに、 時間がかかるためBaseは必須。 今のところ作成予定が無いが、Dao層をおいた場合でも、 Base>Gen>手動の構造は維持する。 実装を開始しました。しばらくwiki更新の頻度は下がるかもしれません。
https://w.atwiki.jp/framework_php/pages/13.html
作成中 panasocli PHP専用フレームワーク 特長 PHP5専用 MVC構造 DBプラグイン構造により、好みのDBライブラリを利用可能(動作確認 PEAR DB, PEAR MDB2, PDO DB) OR/Mを使用可能 DB設定により、lazyのOR/Mを使うか、ライブラリの関数のそのまま使うか設定可能 バリデータプラグイン構造により、自分でバリデータ機構を構築可能(基本装備 required(必須) max(最大値) min(最小値) regex(正規表現)) ini、バリデータ設定はYAMLを利用 viewはSmarty twig Flexyにあらず、直書き ガイドラインは後ほど作成ニダ
https://w.atwiki.jp/sevenlives/pages/594.html
コレクション・フレームワーク 読み:これくしょんふれーむわーく 英語:Collection Framework 別名:リスト 意味: コレクション・フレームワークとはオブジェクトの集合を柔軟的に扱う仕組みのこと。 配列では1度定義した大きさを変更できないなどの不便があるためオブジェクトを柔軟に扱うために作られました。 VectorクラスやHashTableクラスなどのスレッドセーフなクラスが初期に存在していましたが負荷が大きいため現在はスレッドセーフではない処理の速い柔軟なコレクション・フレームワークを使うのが主流です。 配列とコレクションフレームワークの特徴。 配列 コレクション 型 参照型 参照型(utilパケージのオブジェクト) 要素数 不変(最初に定義された数) 可変(あとから追加、削除可能) 格納値 決められた同じ型のみ java.lang.Object型であるなら自由 他 基本データ型を格納できない 2010年10月27日 コレクション? JCF? キュー? スタック? マップ? ハッシュ・テーブル イテレータ? スレッド・セーフ? 同期? java.utilCollection?List? Set? Map? [Java[]]
https://w.atwiki.jp/father/pages/50.html
再利用性が低い メンテナンス性が低い 開発効率が悪い デザイン変更に弱い フレームワーク Mojavi Maple Ethna ライブラリ - コードの再利用 パターン - 設計の再利用
https://w.atwiki.jp/smm_memo/pages/24.html
ソーシャルメディアマーケティングについてのダイアグラム(英語)。後でチェック。 http //davidjcarr.files.wordpress.com/2009/08/social_strategy_diagram.jpg ソーシャルメディア・ライフサイクル・フレームワーク(英語)。面白そうな内容です。後でチェック。 http //thecustomercollective.com/TCC/50870 よく出来たソーシャルメディア・チートシート(英語)。英語圏を対象にしたプロモーションをやるなら、すごく使えそうなシートです。勉強。 http //bit.ly/bqhFcJ ソーシャルメディア上でどのようにコンテンツが伝播していくかを表したinfographic(英語)。日本版も時間があれば作りたい。 http //ifonlyblog.files.wordpress.com/2010/03/media_httpinfographic_qraef_png_scaled1000.png ソーシャルメディアのROIに関して、この画像データ、参考になりそうです。メモ。http //bit.ly/a3pYHb 出会い系についてのinfographic(英語)。非常に面白い内容です。なぜか2chのクマーが使われています。たまに英語圏で見かけますね。 http //mashable.com/2010/03/24/online-dating-infographic マーケターが見るべき5つのInfographics(英語)。Facebook、ツイッター、女性の利用実態、ソーシャルメディアサイトの一覧、SMM施策のプランニングについての画像。 http //bit.ly/b1wcnZ
https://w.atwiki.jp/mmdgame/pages/33.html
技術指南/フレームワーク ここではゲームを作るにあたって共通して使われるコンポーネント?要素技術について紹介します。 ただ,ここに上げる要素技術は作る人によって違いどれが正解とも言えないです。まさに十人十色。 今回は実装の一例として紹介します。これを元に自分の使いやすいクラスを作るべきだともいます。 ※ただしここにあるソースは一部開発中もモノも含まれていますので利用する場合は適宜調整をお願いします FPSクラス PAD入力クラス SEクラス SAVE/LOADクラス Cameraクラス FPSクラス まずなんといってもゲームにはFPSの管理が必要です FPS(Frames Per Second)で一秒あたりの画面更新回数みたいなもんです 大抵のゲームはFPS60とかですが一部処理が重いものはFPS30まで制限しているものもあります MMDゲームを作る場合はFPS30になることが多いと思います。単純にMMDモデルが重いからです。 FPSには大体2通りあると思います。ひとつは固定型,もう一つは可変型です。 固定型は処理落ちしない限りそのFPSで回り、正確にゲーム内の処理Stepで処理したいときに適する 可変長は処理落ちするとそれに合わせてゲーム内の移動距離を変えてしまい安定しているように見せる ソース(固定FPSタイプ)Fps.h +... #pragma once#include "dxlib.h"#define FLAME_MAX 60*10class Fps{private int fps_count,count0t;//fpsのカウンタ、60フレームに1回基準となる時刻を記録する変数int f[FLAME_MAX];//平均を計算するため60回の1周時間を記録double ave;//平均fpsint color[9];//表示用色int flame_0 ;int term_0;int max_fps;//設定された瞬時値最大FPSpublic Fps();~Fps();void fps_wait(int FLAME);//FPSの処理 FLAME=設定するFPS(ex.60)void draw_fps(int x, int y);//x,y座標にFPSを表示}; Fps.cpp +... #include "Fps.h"Fps Fps(void){//fpsのカウンタ、60フレームに1回基準となる時刻を記録する変数fps_count =0;count0t =0;ave =0;//平均fpscolor[0] = GetColor(255,255,255);//白color[1] = GetColor( 0, 0, 0);//黒color[2] = GetColor(255, 0, 0);//赤color[3] = GetColor( 0,255, 0);//緑color[4] = GetColor( 0, 0,255);//青color[5] = GetColor(255,255, 0);//黄色color[6] = GetColor( 0,255,255);//青緑color[7] = GetColor(255, 0,255);//紫color[8] = GetColor(100, 100,100);//灰色} Fps ~Fps(void){} void LC_Fps fps_wait(int FLAME){this- flame_0 = FLAME;this- max_fps = FLAME;int term,i,gnt;static int t=0;if(fps_count==0){//FLAMEフレームの1回目ならif(t==0)//完全に最初ならまたないterm=0;else//前回記録した時間を元に計算term=count0t+1000-GetNowCount();}else{//待つべき時間=現在あるべき時刻-現在の時刻term = (int)(count0t+fps_count*(1000.0/FLAME))-GetNowCount();}this- term_0 = term;if(term 0)//待つべき時間だけ待つSleep(term);gnt=GetNowCount();if(fps_count==0)//60フレームに1度基準を作るcount0t=gnt;f[fps_count]=gnt-t;//1周した時間を記録t=gnt;//平均計算if(fps_count==FLAME-1){ave=0;for(i=0;i FLAME;i++)ave+=f[i];ave/=FLAME;}fps_count = (++fps_count)%FLAME ;} void LC_Fps draw_fps(int x, int y){if(ave!=0){if(1000/ave this- max_fps*0.5f){//半分以下赤DrawFormatString(x, y,color[2],"[%.1f/%d]",1000/ave,this- max_fps);}else if(1000/ave this- max_fps*0.85f){//85%のFPS黄色DrawFormatString(x, y,color[5],"[%.1f/%d]",1000/ave,this- max_fps);}else{//通常の安定時緑DrawFormatString(x, y,color[3],"[%.1f/%d]",1000/ave,this- max_fps);}}return;} 使い方 Fps fps;//定義・・・中略fps.fps_wait(60);//60フレームで処理fps.draw_fps(0,460);//[0,460]の座標に表示 PAD入力クラス PADからの入力を処理するクラスについてです ゲームだと,連射のように毎フレーム取得するものと押された瞬間など立ち上がりを検知する必要があります 以下のソースでは 今の状態を取得するNow系関数(now_stickなど) 押されたフレーム時にtrueとなるEdge系関数(edge_buttonなど) の二種類が使えます コマンドなどの処理もあるのですが個人的あまり使う機会がなかったので今はなしとします ソースPadinput.h +... #pragma once#include "dxlib.h"class Padinput{private int NowInput[5] ;//! 現在の入力@[人数]int EdgeInput[5] ;//! 現在のフレームで押されたボタンのみビットが立っている入力値int PadNumber;//! 1p@2p@3p@4p ?? 0==keyint PadKnd[5];int MouseX , MouseY ;//! マウス座標int M_NowInput, M_EdgeInput, M_NowRot , M_EdgeRot;//! マウス入力int Input_histerisis[5][60];//! 60フレーム分の履歴//bool check_button(int in , int num);//! ボタン入力監視関数bool check_stick(int in , int num);//! スティック監視関数@テンキー配置public Padinput(void);~Padinput(void);void input_Process();//! 周期入力監視関数void input_config();//! キーボード割り当て bool now_button(int id,int button_num);//! 現在のボタン入力取得bool edge_button(int id,int button_num);//! 現在入力されたボタン取得bool now_stick(int id,int stick_num);//! 現在のスティック取得bool edge_stick(int id,int stick_num);//! 現在入力されれたスティック取得//int get_NowInput(int num);}; Padinput.cpp +... #include "Padinput.h"Padinput Padinput(void){M_NowRot =0;M_EdgeRot =0;this- PadKnd[0] = DX_INPUT_KEY_PAD1;this- PadKnd[1] = DX_INPUT_PAD1 | DX_INPUT_KEY;//PAD1&キーボード@[0]と同じかも?this- PadKnd[2] = DX_INPUT_PAD2 | DX_INPUT_KEY;this- PadKnd[3] = DX_INPUT_PAD3;this- PadKnd[4] = DX_INPUT_PAD4;for(int i=0;i 5;i++){for(int s= 0;s 60;s++){this- Input_histerisis[i][s] =0 ;}}} Padinput ~Padinput(void){}bool Padinput check_button(int in , int num)//! ボタン入力監視関数{int f=0;switch(num){case 0 f = (in 0)?1 0;//なにかの入力あり.case 1 f=in PAD_INPUT_A;break;case 2 f=in PAD_INPUT_B;break;case 3 f=in PAD_INPUT_C;break;case 4 f=in PAD_INPUT_X;break;case 5 f=in PAD_INPUT_Y;break;case 6 f=in PAD_INPUT_Z;break;case 7 f=in PAD_INPUT_L;break;case 8 f=in PAD_INPUT_R;break;case 9 f=in PAD_INPUT_START;break;case 10 f=in PAD_INPUT_M;break;}return (f 0? true false);}bool Padinput check_stick(int in , int num)//! スティック監視関数@テンキー配置{int f=0;switch(num){case 0 f=(in PAD_INPUT_UP || in PAD_INPUT_DOWN || in PAD_INPUT_LEFT || in PAD_INPUT_RIGHT);break;//何かの入力ありcase 1 f=(in PAD_INPUT_DOWN)*(in PAD_INPUT_LEFT);break;case 2 f=in PAD_INPUT_DOWN;break;case 3 f=(in PAD_INPUT_DOWN)*(in PAD_INPUT_RIGHT);break;case 4 f=in PAD_INPUT_LEFT;break;case 5 f=!(in PAD_INPUT_UP || in PAD_INPUT_DOWN || in PAD_INPUT_LEFT || in PAD_INPUT_RIGHT);break;//ニュートラル判定case 6 f=in PAD_INPUT_RIGHT;break;case 7 f=(in PAD_INPUT_UP)*(in PAD_INPUT_LEFT);break;case 8 f=in PAD_INPUT_UP;break;case 9 f=(in PAD_INPUT_UP)*(in PAD_INPUT_RIGHT);break;}return (f 0? true false);}void Padinput input_Process()//! 周期入力監視関数{int Old ;// ひとつ前のフレームの入力を変数にとっておくfor(int i=0;i 5;i++){for(int s= 60-1-1;s 0;s--){this- Input_histerisis[i][s] = this- Input_histerisis[i][s-1] ;}//Old = NowInput[i] ;// 現在の入力状態を取得NowInput[i] = GetJoypadInputState( this- PadKnd[i]/*DX_INPUT_KEY_PAD1*/ ) ;// 今のフレームで新たに押されたボタンのビットだけ立っている値を Edgepnput に代入するEdgeInput[i] = NowInput[i] ~Old ;//this- Input_histerisis[i][0] = NowInput[i];}Old = M_NowInput;// マウスの位置を取得GetMousePoint( MouseX , MouseY ) ;M_NowInput = GetMouseInput() ;M_EdgeInput = M_NowInput ~Old ;// 前回 GetMouseWheelRotVol が呼ばれてから今回までの回転量を足すM_EdgeRot = GetMouseWheelRotVol() ;M_NowRot += M_EdgeRot;}void Padinput input_config()//! キーボード割り当て{/*this- PadKnd[0] = DX_INPUT_KEY_PAD1;this- PadKnd[1] = DX_INPUT_PAD1 | DX_INPUT_KEY;//PAD1&キーボード@[0]と同じかも?this- PadKnd[2] = DX_INPUT_PAD2 | DX_INPUT_KEY;this- PadKnd[3] = DX_INPUT_PAD3;this- PadKnd[4] = DX_INPUT_PAD4;*///// パッド1の十字ボタンの対応を変更SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_UP, KEY_INPUT_UP, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_DOWN, KEY_INPUT_DOWN, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_LEFT, KEY_INPUT_LEFT, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_RIGHT, KEY_INPUT_RIGHT, -1, -1, -1 ); SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_A, KEY_INPUT_Z, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_B, KEY_INPUT_X, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_C, KEY_INPUT_C, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_X, KEY_INPUT_A, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_Y, KEY_INPUT_S, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_Z, KEY_INPUT_D, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_L, KEY_INPUT_Q, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_R, KEY_INPUT_W, -1, -1, -1 );//SetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_UP, KEY_INPUT_P, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_DOWN, KEY_INPUT_SEMICOLON, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_LEFT, KEY_INPUT_L, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_RIGHT, KEY_INPUT_COLON, -1, -1, -1 ); SetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_A, KEY_INPUT_B, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_B, KEY_INPUT_N, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_C, KEY_INPUT_M, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_X, KEY_INPUT_H, -1, -1, -1 );SetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_Y, KEY_INPUT_J, -1, -1, -1 );//stSetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_Z, KEY_INPUT_K, -1, -1, -1 );//stSetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_L, KEY_INPUT_U, -1, -1, -1 );//stSetJoypadInputToKeyInput( DX_INPUT_PAD2, PAD_INPUT_R, KEY_INPUT_I, -1, -1, -1 );//st} bool Padinput now_button(int id,int button_num)//! 現在のボタン入力取得{return this- check_button(this- NowInput[id] , button_num);}bool Padinput edge_button(int id,int button_num)//! 現在入力されたボタン取得{return this- check_button(this- EdgeInput[id] , button_num);}bool Padinput now_stick(int id,int stick_num)//! 現在のスティック取得{return this- check_stick(this- NowInput[id] , stick_num);}bool Padinput edge_stick(int id,int stick_num)//! 現在入力されれたスティック取得{return this- check_stick(this- EdgeInput[id] , stick_num);} int Padinput get_NowInput(int num){return this- NowInput[num];} 使い方 Padinput inp;//定義inp.input_config();//必要ならば//・・・中略inp.input_Process();//毎フレーム呼ぶ=更新関数//・・・中略if(inp.edge_button(0,1)==true)//ID=0のボタン1がこのフレームで入力されたか@過渡応答{//・・・中略} SEクラス SAVE/LOADクラス 誰か書いてくれると助かります Cameraクラス
https://w.atwiki.jp/osinko/pages/59.html
フレームワークの一連の流れ gameクラスを継承しインスタンス化する → メイン関数内でgame.run()する → initialize() → LoadContent() → BeginRun() 以上が行われるとゲームループに入る、このループは規定値の場合1秒間に60回繰り返され Exit()関数でゲームを終了させるまで永遠に回る → Update() → Draw() → ゲームの終了時は → EndRun() → UnloadContent() が処理される <要点> gameクラスを継承しインスタンス化する事によりXNAのさまざまなサービスが利用できる。たとえば継承したクラス内でgameクラスのメンバーをオーバライドしたりプロパティから利用したい機能(WindowやGraphicsDeviceプロパティ等)を使うことができる。参考資料:Game Members Update() 及び Draw() メソッド内で寿命の短いインスタンスを生成するとガベージコレクションが頻繁に発生しパフォーマンスに悪影響を与えるので注意 ゲーム画面を描画するにはグラフィックデバイスの初期化が必要。制御には GraphicsDeviceManager を使う。これらの作成や変更操作はフレームワークの設計上、gameクラスを継承したクラスのコンストラクタ内が適切。initialize()メソッド内等では変更が反映されないなどの不具合が見られるので注意 XNAでフルスクリーン画面にした場合、ウインドウズフォームのボタンなどの各コントロールは非表示になる(機能は残っているっぽい) ゲームのループ内で処理落ちが発生した場合、Update()関数が優先されDraw()関数は省略される。つまりデータの更新が優先される。その際、GameTimeオブジェクトのIsRinnningSlowlyプロパティがtrueになるので、これを調べる事でゲームループが遅れているかどうか知る事ができます using System; using System.Windows.Forms; using Microsoft.Xna.Framework; namespace MyNamespace { class TestXNA Game { private GraphicsDeviceManager manager; public TestXNA() { manager = new GraphicsDeviceManager(this); } protected override void Initialize() { IsMouseVisible = true; Window.Title = "TestXNA"; Form form = (Form)Control.FromHandle(Window.Handle); Button button = new Button(); button.Text = "Test"; form.Controls.Add(button); base.Initialize(); } } class MyClass { static void Main() { using (TestXNA game = new TestXNA ()) { game.Run(); } } } } オーバーライドした関数は必ずベースオブジェクトの関数も呼び出す事。そうしないとフレームワークの誤動作を招く可能性がある protected override void Initialize() { //自分が必要な関数をここに書く base.Initialize();//ベースオブジェクトの呼び出し } フレームワーク各工程の一般的な処理 gameクラスで必要と思われるメンバーGraphicsDeviceManagerのインスタンス gameクラスを継承したクラスのコンストラクタ内グラフィックデバイスの初期化 initialize()ウインドウ関連の初期化 ウインドウズフォームが必要であればフォームの初期化 フレームワークの各メンバー関数の特徴 protected virtual void Update(GameTime gameTime) protected virtual void Draw(GameTime gameTime) このふたつの関数のパラメータの gameTime はフレームワークが自動で更新し代入しています 利用者は関数内でGameTimeクラスのプロパティにアクセスすることでゲーム内時間を知ることができる 固定フレームレートの解除(処理速度内で最大限ループ処理を行うには) 以下の様にふたつのプロパティを false する。タイミングはゲームのコンストラクタ内 public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; graphics.SynchronizeWithVerticalRetrace = false; IsFixedTimeStep = false; } GraphicsDevice自体はGameのコンストラクタとintialize()メソッドの処理の間で生成されている つまりGraphicsDeviceManagerに対しての操作はGameのコンストラクタで GraphicsDeviceに対しての操作はinitialize()メソッド以降で行う必要がある
https://w.atwiki.jp/tonojava/pages/26.html
コレクションフレームワークとは コレクションとは、複数のオブジェクトが集まったオブジェクトのこと。 フレームワークとは骨組み、枠組みといった意味。 これらを組み合わせると、複数の要素が集まったオブジェクトを操作するための 統一された枠組みになる。 Collectionインタフェース コレクションフレームワークは、コレクションは要素であるオブジェクトのグループを表すCollectionインタフェースを実装する。 しかし、実際にCollecitonインタフェースを実装している訳ではなく、より用途の限定されたサブインタフェースの実装として 提供されている。 ++特徴++ ・コレクション階層のルートインタフェース ・コレクション内のオブジェクトの特別な順序はない ・同じオブジェクトへの参照を複数保持することができる Listインタフェース(ArrayList/LinkedList/Vector) 順序付けられたコレクション。 整数値の添え字によって要素にアクセスしたり、リス対の要素を取得したりすることができる。 リストは重複する要素を許可し、また複数のnull要素の挿入も許可する。 ++特徴++ ・Collectionインタフェースを実装する ・コレクション内のオブジェクトを順番で管理できる ・同じオブジェクトへの参照を複数保持することができる ・nullを保持することができる ArrayList(java.util.ArrayList) ArrayListは最も使われているフレームワークの1つで、Listインタフェースのサイズ変更可能な配列の実装になる。 このクラスは、Listインタフェースを実装するほか、リストを格納するために内部的に使われている配列のサイズを操作するメソッドを提供する。 主なメソッド ・addメソッド リストの最後に、指定された要素を追加する ・addAllメソッド リストの末尾に、指定されたCollecitonの全ての要素を追加する ・clearメソッド リストからすべての要素を削除する ・getメソッド 指定した位置にあるリストの要素を返す ・isEmptyメソッド リストが空であるか否かを真偽値で返す ・removeメソッド 指定した要素番号のリストを削除する ・sizeメソッド リスト内にある要素の数を返す ArrayListの使い方 List String al = new ArrayList String (); al.add("A"); al.add("B"); System.out.println(al.get(0)); System.out.println(al.get(1)); for(int i=0; i al.size(); i++){ str=(String)al.get(i); System.out.println(i+"要素は"+str); } ArrayListの注意点 ・無効な要素へアクセスすると、例外IndexOutOfBoundsExceptionがスローされる ・配列のサイズが分かれば、0番目の要素から順に全ての要素へアクセスすることが出来る。 ArrayListのgetメソッドは戻り値をobject型で返すので、適切なオブジェクト型へキャストから受け取る必要がある。 Setインタフェース(HashSet/TreeSet) 重複要素のないコレクション。数学の「集合」に相当する。 ++特徴++ ・Collectionインタフェースを実装する ・重複要素を保持できない ・コレクション内のオブジェクトの順番を管理することができない HashSet(java.util.HashSet) HashSetは、HashMapのインスタンスを基づくSetインタフェースを実装する。 このクラスでは、セットの繰り返し順序について保証はしない。 主なメソッド ・addメソッド 指定された要素が既にSetに存在しなければ、その要素をセットする。 ・clearメソッド セットからすべての要素を削除する ・containsメソッド 指定された値がセットに含まれるか否かを真偽値で返す ・isEmptyメソッド セットが空であるか否かを真偽値で返す ・iteratorメソッド セットの要素の反復子を返す ・removeメソッド 指定した要素があればセットから削除する ・sizeメソッド セット内にある要素の数を返す HashSsetの使い方1 HashSet hs = new HashSet(); for(int i=1;i =10;i++){ hs.add(new Integer(i)); } for(int i=1;i =10;i++){ hs.add(new Integer(i)); } System.out.println("Size " + hs.size()); System.out.println("HashSet " + hs); 解説 HashSetへ1~10のIntegerオブジェクトを2回格納して、最後に要素数と全要素を出力している。 HashSetは重複する要素を格納することが出来ないため、20回Integerオブジェクトを格納したにも拘らず、 要素数は10個になる。 また、HashSetはどのような順序で格納されるか保障されていないため、格納順ではなくバラバラに出力される。 HashSsetの使い方2(HashSetへの全要素へアクセス) Set hs = new HashSet(); hs.add("A"); hs.add("B"); hs.add("C"); iterator it = hs.iterator(); while(it.hasNext()){ System.out.println(it.next()); } 解説 HashSetの全要素へアクセスするにはまず、HashSetのインスタンスからiteratorインタフェースを取得する。 iteratorインタフェースはコレクションの反復子で、この要素へアクセスしHashSetの全要素を取得することが出来る。 hashNext()は、Iteratorが繰り返し時に、さらに要素があるか否かで真偽値を返す。 next()は、繰り返しで次の要素を取り出す。 繰り返す処理でそれ以上要素がない場合、NoSuchElementExceptionをスローする。 Mapインタフェース(HashMap/TreeMap) キーと値の対になる要素を持ったオブジェクト。各キーは1つの値にしかマッピング出来ず、 マップには同一のキーを複数登録することは出来ない。しかし、異なるキーで値が同じ値を登録することが出来る。 TreeMapクラスなど一部のマップの実装では、要素の順序について保証するが、 HashMapクラスなどの実装ではどのような順序で要素が登録されているか保障されない。 ++特徴++ Collectionインタフェースを実装しない コレクション内のオブジェクトに名前をつけて管理することが可能 同じオブジェクトへの参照を複数保持することができる HashMap(java.util.HashMap HashMapもArrayList同様、多く使われているフレームワークの1つで、Mapインタフェースのハッシュテーブルに基づく実装。 値を名前付きで管理することが出来るので、簡易的なデータベースのような使い方も可能。 ただし、HoashMapではマップの順序については保証しない。 主なメソッド clear ⇒ 全てのマッピングをマップから削除する containskey ⇒ 指定したマップが存在するか否かを真偽値で返す keyset ⇒ マップに格納されているキーのセットビューを返す get ⇒ 指定したキーにマップされている値を返す isEmpty ⇒ マップが空であるか否かを真偽値で返す put ⇒ 指定の値と指定されたキーをこのマップに関連付ける remove ⇒ キーに対応したマップがあれば削除する size ⇒ マップの要素の数を返す values ⇒ マップに格納されている値のコレクションビューを返す 使い方 Map hm = new HashMap(); hm.put("1","Jan"); hm.put("2","Feb"); hm.put("3","Mar"); hm.put("4","Apr"); hm.put("5","May"); hm.put("6","Jun"); System.out.println(hm); 解説 HashMapへのデータ登録はputメソッドを使用する。第1引数にキー値を、第2引数に値を指定。 今回は1~6までのStringオブジェクトと、その付に対応した文字列(Jan等)をHashMapへセットした。 実行結果で分かるように、HashMapでは格納した要素がどのような順番で取り出されるかは保障していない。 使い方(HashMapへの全要素へアクセス) Map hm = new HashMap(); String strKey; String strVal; hm.put("1","Jan"); hm.put("2","Feb"); hm.put("3","Mar"); hm.put("4","Apr"); hm.put("5","May"); hm.put("6","Jun"); iterator it = hm.keySet().iterator(); while(it.hasNext()){ strKey = (String)it.next(); strVal = (String)hm.get(strKey); System.out.println("キー:"+strKey); System.out.println(" 値:"+valKey); } 解説 HashMapの全要素へアクセスする方法は色々あるが、ここではHashMapからキーを保持する。 Setを取得し、次にそのSetからIteratorを取り出している。Iteratorが取得できていれば、 それに対して繰り返しを行ってキー値を取得し、キー値から値を取得している。 Iteratorインタフェース コレクション内の要素に順番にアクセスする手段を提供。 コレクション・フレームワーク内のクラスは何らかの手段でこのIteratorインタフェースを使用できる 主なメソッド hasNext() ⇒ 繰り返し処理において、次の要素がある場合にtrueを返す next() ⇒ 繰り返し処理において、次の要素を返す remove() ⇒ 繰り返し処理において呼び出された、最後の要素を削除する フォーマット for文を使用した場合 for(Iterator i = c.iterato(); i.hasNext();){ } ①iteratorメソッドを使用し、Iterator変数iに反復子を代入する ②hasNext()を使用し、次の要素がある場合(tureを返す場合)for文処理を続ける while文を使用した場合 Iterator i = c.iterator(); while(i.hasNext()){ } ①iteratorメソッドを使用し、Iterator変数iに反復子を代入する ②hasNextメソッドを使用し、次の要素がある間(trueを返す間)while文を続ける
https://w.atwiki.jp/android_api/pages/19.html
アプリケーション Androidアプリのレイヤー(層) Dialer Contacts Browser Maps Setup アプリケーションフレームワーク Androidアプリで利用されているAPIを規定しているレイヤーコンポーネント(オプション)。 Activity Manager アプリケーションのライフサイクルを管理 Window Manager ウィンドウを管理 Content Providers アプリケーション間のデータ共有を管理 View System ユーザーインタフェースを管理 Notification Manager ステータスバーへのアラート表示を管理 Package Manager インストールを管理 Telephony Manager 通話機能を管理 Resource Manager リソースを管理 Location Manager 位置情報を管理 XMPP Service メッセージングサービスを管理 ライブラリ 複数のアプリケーションから汎用的に利用される機能をまとめたもの。アプリケーションからはアプリケーションフレームワークを経由して利用する。 Surface Manager 複数アプリケーション間の2D/3Dグラフィックスを合成するラブラリ Media Framework ビデオ形式の再生と記録のライブラリ SQLite リレーショナルデータベースのライブラリ OpenGL/ES 3Dグラフィックスエンジン FreeType ビットマップとベクターフォントのレンダリングを行うライブラリ WebKit ブラウザ表示を行うためのHTMLレンダリングエンジン SGL 2Dグラフィックスエンジン SSL SSLのライブラリ libc 標準的なC言語ライブラリ Android ランタイム Core Libraries Java言語に準拠したコアライブラリ機能 Dalvik 仮想マシン .dexフォーマットのバイトコードを実行する仮想マシン android.app アプリケーション android.accessibilityservice バックグラウンドへ駆け込んで、システムでコールバックを受けます。