サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
nirasan.hatenablog.com
はじめに エリック・エヴァンスのドメイン駆動設計を読んだ流れで DDD について調べていたらどこかの発表スライドでユースケース駆動開発実践ガイドをおすすめしていたので読んでみた。 一度通して読んだので復習しながら簡単なまとめと感想を記録しておく。 感想 ウォーターフォール的なちゃんと設計ドキュメントを作ってから実装する、みたいな流れで開発をしたことがなかったので勉強になったし、ユースケースの作り方なんかはためになった これをそのまま実践するかというとしないと思うが、選択肢として堅いやり方を知っておきながら柔らかいやり方と使い分けていけるようになれればいいかなと思う 簡単なまとめ 全体を通して ICONIX(アイコニクス)プロセスという手法を使ったソフトウェア開発について書かれている ざっくりまとめると、要求を、ドメインモデル、ユースケース、ロバストネス図、シーケンス図、コード、と変換してい
はじめに Go 言語練習のため gorilla/mux, gorilla/context, gorilla/sessions を使ったユーザーログイン機能を実装してみました。 ユーザーの管理はメモリ上の map 型変数にユーザー名とパスワードを入れているだけなので、ここをDBに変えるのが次の課題のつもりです。 package main import ( "net/http" "html/template" "github.com/gorilla/mux" "github.com/gorilla/context" "github.com/gorilla/securecookie" "github.com/gorilla/sessions" "errors" ) var ( // セッションストアの初期化 store *sessions.CookieStore = sessions.NewCo
はじめに Go 言語で簡単なウェブアプリを作りたいので軽量なウェブツールキット gorilla/mux を使ったサンプル。 context の使い方は gin や goji のミドルウェアの実装を参考に、共通化したい処理を個別のハンドラの上にラップする形にした。おきまりのパターンっぽいので Usage とかに書いて欲しい。 package main import ( "fmt" "net/http" "github.com/gorilla/mux" "github.com/gorilla/context" ) func main() { r := mux.NewRouter() // 単純なハンドラ r.HandleFunc("/", YourHandler) // パスに変数を埋め込み r.HandleFunc("/hello/{name}", VarsHandler) // パス変数で
はじめに https://github.com/kurehajime/pong-command とかみたいな感じでターミナル上で任意の座標に任意の文字を表示できる termbox-go の使い方まとめ。 概要としては termbox の内部でターミナル上の座標に対応した文字のバッファを持っているので、SetCell で座標と文字などを指定して、Flush で表示するという感じ。 使い方 インストール go get github.com/mattn/go-runewidth // termbox-go が参照している go get github.com/nsf/termbox-go 初期化 err := termbox.Init() if err != nil { panic(err) } defer termbox.Close() バッファのクリア 文字色と背景色を指定してバッファをクリア
はじめに http://nirasan.hatenablog.com/entry/2015/08/20/172719 で作成した API サーバーに Unity で認証してリクエストを送信するメモ サーバー側の変更点 Doorkeeper でアクセストークンの更新に対応するため config/initializers/doorkeeper.rb に以下を追記する。 use_refresh_token スクリプト 任意のオブジェクトに以下のスクリプトをアタッチして使用する AuthorizedRequest メソッドに URL とリクエスト成功時のコールバック関数などを指定すると、自動で認証を行った上でリクエストを送信してくれる。 using UnityEngine; using System.Collections; using System.Collections.Generic; us
はじめに Rails でモバイルアプリのバックエンドに使う API サーバーのユーザー作成と認証の仕組みを作ったメモです Doorkeeper + Sorcery を使った認証の構築とテストまで記述します 参考サイト http://bokukoko.hatenablog.com/entry/2014/04/11/%E3%83%A6%E3%83%BC%E3%82%B6%E7%99%BB%E9%8C%B2%E3%83%BBAPI_%E8%AA%8D%E8%A8%BC%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF%E3%82%92_Rails_%E3%81%A7%E5%AE%9F%E7%8F%BE%E3%81%99%E3%82%8B 基本的にこちらのサイトの内容+アルファです 導入 新しいプロジェクトを作成 $ rails new -T -B doorkeeper-te
はじめに Ruby で amazon-ecs を使って Amazon Product Advertising API の検索をしたメモ。 インストール gem 'amazon-ecs' アカウント作成 Amazon アソシエイトのID作成 https://affiliate.amazon.co.jp/ AWS のID作成 https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html?ie=UTF8&pf_rd_i=assoc_join_menu&pf_rd_m=AN1VRQENFRJN5&pf_rd_p=&pf_rd_r=&pf_rd_s=right-1&pf_rd_t=501&ref_=amb_link_70670009_12 商品リストの検索 初期化 require 'amazon/ecs' Amazon::Ecs
はじめに Unity の C# スクリプトで列挙型から文字列への変換は ToString メソッドでできるが遅いらしい そこで、静的コンストラクタで列挙型から文字列に変換しておいて、拡張メソッドで変換した文字列を参照するようにしてみた 宣言 using UnityEngine; using System; using System.Collections; using System.Collections.Generic; namespace MyConst { public enum PREF { MAX_LIFE, MAX_BOMB, CURRENT_COIN, } public class Const { public static int DEFAULT_LIFE = 3; public static int DEFAULT_BOMB = 3; public static List
はじめに Illustrator でアクションのバッチをやってみようと思いググってみましたがいまいちよくわかりませんでした。 調べているうちに JavaScript が使えることがわかり、こっちの方が親しみやすかったので、Illustrator で JavaScript をつかってバッチを実行する方法をまとめてみます。 概要 公式ドキュメント http://help.adobe.com/ja_JP/illustrator/cs/using/WS714a382cdf7d304e7e07d0100196cbc5f-62a3a.html Illustrator では複数のスクリプト環境がサポートされています(Microsoft Visual Basic、AppleScript、JavaScript、ExtendScript など)。 Illustrator に付属する標準スクリプトを使用すること
はじめに Unity のチュートリアル 2D RogueLike が気になったので、試してみて使えそうなイディオムをいくつかメモ。 ゲーム自体は、矢印で移動、移動する毎にfood減少、アイテムでfood増加、敵の攻撃でfood減少、階段で次の階へ、アイテム・壁・敵は階ごとにランダム、という単純な感じ シングルトン GameManager.cs をシングルトンとして扱う public static GameManager instance = null; //Static instance of GameManager which allows it to be accessed by any other script. //Awake is always called before any Start functions void Awake() { //Check if instance
はじめに Unity で iOS のローカル通知を実装する。 Android とは違って、iOS ネイティブの通知機能のラッパーが Unity 側で実装されているので、これを呼び出すだけでよい。 前回の Android 版と同様に、アプリが非アクティブになったら、一定時間後にローカル通知を送信する機能を実装する。 コード 前回実装した NotifyTestScript.cs で iOS 版のローカル通知にも対応する。 変更箇所は、OnApplicationPause で、iOS の場合、非アクティブ移行時に通知をスケジューリングし、アクティブ移行時に通知があれば削除する。 using UnityEngine; using System.Collections; public class NotifyTestScript : MonoBehaviour { ... 略 ... void On
はじめに Unity & NGUI で、パズドラやポコパン的な、オブジェクトを選択してなぞるアクションをした場合のイベント取得方法をまとめました。 コード UISprite と Box Collider と下記のスクリプトをアタッチしたゲームオブジェクトを、複数個シーンに配置して検証 public class TouchTest : MonoBehaviour { string strId; void Start () { strId = gameObject.GetInstanceID ().ToString (); } // タップ開始終了時に実行 // isDown が true で開始、false で終了 void OnPress (bool isDown) { Debug.Log ("PRESS(" + (isDown ? "DOWN" : "UP") + "): " + str
はじめに Unity の 2D 表示と NGUI では、ともに画面の縦幅を固定するオプションはあるが、横幅を固定することができないので、スクリプトで対応したメモ。 バージョン Unity 4.3.4 NGUI 3.5.6 Unity 2D で横幅を固定する 以下のスクリプトをシーン上の任意のオブジェクトにアタッチする sing UnityEngine; using System.Collections; public class MainCameraAdjustScript : MonoBehaviour { // 横幅を 6.5m で固定する float FixedWidth = 6.5f; void Start () { // メインカメラの Projection は Orthographic にしておく // orthographicSize は縦幅(m)を 2 で割ったもの //
はじめに 前回に引き続き Unity での Android ネイティブプラグインの実装 今回は、アプリ起動後に非アクティブにしたまま一定時間が経過したら、ローカル通知を出して呼び戻す機能の実装。 プラグイン側の実装 バックグラウンドで実行される Service を実装 バックグラウンドで実行される処理は IntentService の拡張クラスとして実装する 以下は実行後一定時間がたったらローカル通知を送信する Service の実装 package info.nirasan.notifytest; import android.app.IntentService; import android.content.Intent; import android.util.Log; public class NotifyIntentService extends IntentService {
はじめに Unity で Android のネイティブプラグインを書いてみた記録。 ネイティブプラグイン作成環境を構築し、実際にローカル通知を出すプラグインを作成した。 ネイティブプラグイン作成環境構築参考サイト http://qiita.com/relzx/items/a35f7ab6dbacb48f7e26 基本的にこの通りでできた 参考サイトにない作業 Unity プラグインの追加 作業環境が Mac だったので "5.2.3 Unityプラグインの追加" で Unity.app 以下にある classes.jar を直接指定できなかった。 そのため、プロジェクト直下の .classpath ファイルを直接開き、以下を追記した。 <classpathentry exported="true" kind="lib" path="/Applications/Unity/Unity.app
自分用メモ。TortoiseGitで別ブランチのコミットをチェリーピックする。 gitで管理しているフォルダを表示 右クリックで「Gitログを表示」 「ログメッセージ」ウィンドウの左上、ブランチ名の部分をクリックして、取り込みたいコミットのあるブランチを選択 取り込みたいコミットを右クリックして「このコミットをチェリーピック」を実行
2014/11/18 追記 NGUI v3.7.4 では(もっと前からかもですが) Atlas Maker にある New ボタンから新規作成できるようになっていたので、以下の手順は古いです。 はじめに Unity のGUI作成ツールアセットの NGUI v3.5.6 を使って、Atlas(複数の画像を1枚の画像ファイルにまとめたもの)を作成する手順です。 前のバージョンだと Atlas Maker に Create ボタンがあったようなのですが、3.5.6 だと無いようなのでちょっとわかりづらかったです。 準備 [GameObject] > [Create Empty] で空のオブジェクトを作成 作成したオブジェクトのインスペクターで "Add Component" し、"Atlas" で検索して表示される Atlas スクリプトをアタッチ Assets ビューで [Create] >
はじめに ゲームオブジェクトの状態遷移処理を毎回 Update とかに書いていたので、https://github.com/thefuntastic/Unity3d-Finite-State-Machine を参考に有限オートマトンを実装した。 有限オートマトンクラス 状態を管理するクラス 状態を管理したいオブジェクトごとに作成する 後述の状態定義を登録し、Update などから呼び出して更新する using UnityEngine; using System.Collections.Generic; using System; public class FiniteStateMachine <T,U> { private T Owner; public FSMState<T,U> CurrentState { get; private set; } private FSMState<T,
はじめに Unity の GUI 作成ツール NGUI を使って、下からぴょこんと出てくるポップアップウィンドウを作ります。 Unity のバージョンは 4.3.4 で、NGUI は 3.5.6 を対象とします。 所要時間は10分程度です。 準備 NGUI をアセットストアから購入します。 プロジェクトを作成し、NGUI をインポートします。 メニューの [NGUI] > [Create] > [2D UI] で、GUI用のルートオブジェクトを作成します。 ウィンドウの作成 メニューの [NGUI] > [Create] > [Sprite] で、ウィンドウ用のオブジェクトを作ります。 ヒエラルキーで作成した Sprite を右クリック > Rename で名前変更ができるので、"PopupWindow" に変更します。 PopupWindow を選択して、インスペクターの "UISpri
はじめに Unity での時刻の処理は System.Datetime を使う 時刻の取得 // 現在時刻の取得 System.DateTime now = System.DateTime.Now; // 任意の時刻のDateTime取得(年、月、日、時、分、秒、タイムゾーン) System.DateTime date1 = new DateTime(2010, 8, 18, 16, 32, 0, DateTimeKind.Local); PlayerPrefsへの時刻の保存と読み出し // 時刻の保存 System.DateTime now = System.DateTime.Now; PlayerPrefs.SetString ("key", now.ToBinary().ToString() ); // 時刻の読み出し string datetimeString = PlayerPr
はじめに Unity の Android 用アプリ内課金プラグインとして実績のある prime31 の Android In App Billing Plugin を使って見たメモです。 公式ドキュメント URL https://prime31.com/docs#androidIAB メモ Google Developers にサインインしているアカウントだと購入ができないので、テストアカウントを別途作って端末に割り当ててテストする。 テストアカウントは Google Developers で登録する必要がある。 まずは GoogleIAB.init(string public_key) で初期化 public_key には Google Developer Console で確認できる公開鍵を文字列で指定。 init に成功すると GoogleIABManager.billingSupp
はじめに Unity で iOS のアプリ内課金をした際に、サーバーサイドでの課金内容チェックをしたメモ。 Unity でのアプリ内課金には prime31 の iOS StoreKit In App Purchase Plugin を使用。 サーバーサイドは PHP を使用。 Unity 側 prime31 の iOS StoreKit In App Purchase Plugin を購入してインポート Asset の Plugins/StoreKit/demo/StoreKitEventListener.cs の課金成功時コールバックメソッドに、サーバーへのレシート検証リクエストのコードを追加。 void purchaseSuccessfulEvent( StoreKitTransaction transaction ) { Debug.Log( "purchaseSuccessful
以下のサイトで指摘されているもの。 http://stackoverflow.com/questions/9367681/javascript-touchend-event-will-not-fire-on-android https://code.google.com/p/android/issues/detail?id=19827 Android 4.0 のブラウザのバグのようで、記事にあるとおり、touchstart と touchmove で event.preventDefault() を実行すると、touchend が正常に発火されるようになった。 しかし、この対応だと対象の要素をつかんでスクロールすることが出来なくなりサイト的に都合が悪かったので、touchend に割り当てていた処理を、click に割り当てるようにした。
はじめに http://wonderpla.net/blog/engineer/Cocos2d-x_TDD/ このサイトで Cocos2d-x で TDD を試す手順をわかりやすく解説していてためになった。 例示しているコードも実際的で参考になったが、自分には高度すぎたので、簡単なコードで試してみた。 プロジェクトの作成 cd ~/cocos2d-x-2.1.4/tools/project-creator ./create_project.py -project counter -package com.example.counter -language cpp プロジェクトファイルをXcodeで開く ~/cocos2d-x-2.1.4/projects/counter/proj.ios/counter.xcodeproj C++でモデルクラスの作成 カウントアップ、ダウンをするだけのモデ
はじめに cocos2d-x で Parse を試した流れで、Parse のアプリケーションホスティング的なサービスの Cloud Code を試してみた。 参考サイト https://parse.com/docs/cloud_code_guide ツールのインストール curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo /bin/bash Parse用のディレクトリの作成 cd ~ mkdir Parse parse new useParse Parseに登録したメールアドレスとパスワードを聞かれるので入力 github連携機能でアカウントを作成したらパスワードがセットされてなかったので、Parseのサイトの管理画面でパスワードを設定する必要があった。 使用するアプリの一覧が出るので選択 あらかじめ
はじめに 「cocos2d-x 入門」を一通り写経してみたので、練習のためにcocos2d-xでテトリスを作ってみました。 参考サイト http://www13.plala.or.jp/kymats/study/game_other/SPACE_TETRIS/st1.html 完成したソースコード https://github.com/nirasan/tetris-cocos2dx 設計概要 落ちてくるブロックや、ブロックの入るフィールド、それらの基本的なロジックを、プレーンなC++クラスで実装し、 ブロックの表示、タッチの取得、ゲームのフローなどをcocos2d-xのシーンクラスで実装します。 設計詳細 ゲーム開始 ゲームのメインフローは GameScene クラスで処理しています。 アプリが起動すると、AppDelegate::applicationDidFinishLaunching
タッチイベントの有効化 初期化 /* CCScene::init で実行 */ // タッチの有効化 setTouchEnabled(true); // シングルタップの場合 setTouchMode(kCCTouchesOneByOne); // マルチタップの場合 setTouchMode(kCCTouchesAllAtOnce); シングルタップ時に呼び出されるイベント virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchCancell
コンフリクト発生 するとこんな感じになります % git rebase master First, rewinding head to replay your work on top of it... Applying: edit 1.txt at topic Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merging 1.txt CONFLICT (content): Merge conflict in 1.txt Failed to merge in the changes. Patch failed at 0001 edit 1.txt at topic When you have resolved this problem r
はじめに cocos2d-x から Parse の REST API 経由でユーザー登録とログインをしてみるテスト。 参考書籍 Cocos2d‐x開発のレシピ―iOS/Android対応 作者: 松浦晃洋,齊藤建二,古木映治出版社/メーカー: 秀和システム発売日: 2013/06メディア: 単行本この商品を含むブログ (2件) を見る 参考サイト https://gist.github.com/skyblue/3938677/raw/14944157aac7b5196e211f3f067b5fbcc3e6b556/HttpClientTest.cpp http://d.hatena.ne.jp/ytakano/20081016/urlencode 空のシーンの作成 http://nirasan.hatenablog.com/entry/2013/09/23/124822 に従って空のシーン
次のページ
このページを最初にブックマークしてみませんか?
『nirasan.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く