読者です 読者をやめる 読者になる 読者になる

西海岸より

つらつらざつざつと

オンラインゲームを支える技術

オンラインゲームを支える技術  ??壮大なプレイ空間の舞台裏 (WEB+DB PRESS plus)

オンラインゲームを支える技術  ??壮大なプレイ空間の舞台裏 (WEB+DB PRESS plus)

ゲームのみならず、エンジニアのための実践的なシステム構築の入門書

これまでゲームはすることはあっても、仕事ではゲームに関わったことは無いが、オンラインゲームの通信、分散技術には興味があったので購入してみた。
Amazonで購入して届いてみたら、思っていた以上にページ数が多く、内容も圧倒的。


中身はゲームプログラミングの基礎知識から、ゲームデザイン、インフラ設計、チーム体制まで説明がされており、またなんと言っても書籍後半ではページを多く割いて2つのケーススタディを取り挙げている。
ケーススタディでは、企画から設計まで実践的な形で説明が丁寧にされており、まさに理論+実践という形式の書籍で非常に勉強になった。


個人的には、すべてゲームデザイン、ビジネス面からしっかりとインフラ設計やプログラミング上で求められるパフォーマンスの数値に落としていくプロセスがしっくり来て、発見と納得感が得られた。


ゲーム用のミドルウェアなどはオープンなものが少なく、他の業界からはなかなかわからないことが多い。本書では、MongoDB等Web業界でも注目され、利用されている技術についても示唆しており、Web業界とも大規模分散という特に観点で共通点も大いにあるのだろう。
# ただ、運用側でまだ追いついていないとも。


本書で描かれているような技術的課題を解決するプロセスは、ゲームに限らずエンジニアの視点ではどのWebやSIerも同じだと思う。ゲームプログラマだけでなく、エンジニアを目指すならぜひ一度目を通してほしい良書だと思う。

Google App Engine Java(Eclipse)の環境構築

今さらながらGoogle App EngineJavaでの環境構築手順メモ。(MacOSX Lion)

下準備

  • Google アカウントの準備。無い場合はgoogleのアカウントを作成
  • AppEngine上でアプリを登録
    • https://appengine.google.com/
    • 携帯電話のメアドが必要なので注意
    • アプリケーション名は後で変更できないので注意すること。

eclipseのインストール

  • eclipseのDLとインストール
    • 以下よりDL。(Eclipse IDE for Java Developers MacOSX64bit版)
    • DLしたファイルを解凍するとeclipseディレクトリができるので、それをアプリケーションディレクトリに移動

App Engineプラグインの導入

  • eclipseを起動
  • [Help] -> [Install New Software…] を選択
  • Available Softwareの画面で、[Add]を選択し、インストール先を追加。それぞれ以下を記入。
  • インストール可能なプラグイン一覧が出てくるので、選択し[Next]をクリック
  • 規約に同意し[Finish]を選択することでインストール。

Slim3プラグインの導入

  • eclipseを開き、[Help] -> [Install New Software…] を選択
  • Available Softwareの画面で、[Add]を選択し、インストール先を追加。それぞれ以下を記入。
  • 規約に同意し[Finish]を選択することでインストール。

テストプロジェクトの作成

  • [New]->[Other]をクリック
  • [Slim3]->[Slim3 Project]

  • 以下を入力
    • Project name: HelloWorld
    • Root Package: hello
    • [Use MVC of Slim3 with Scenic3]を選択

  • Finishで作成
  • プロジェクトとGoogleAppEnginアカウントと結びつける
    • 作成したプロジェクトを右クリックで[Properties]を選択
    • [Google]->[AppEngine]で[Application ID]に、Web上で登録したアプリのIDを入力

  • 実行(デプロイ)
    • Googleの右のマーク下▼を選択し、deployをクリック

  • ブラウザで自分のapp idのサイトにアクセスして確認
    • http://[Application ID].appspot.com/


参考

プログラミング Google App Engine

プログラミング Google App Engine

作ればわかる!Google App Engine for Javaプログラミング

作ればわかる!Google App Engine for Javaプログラミング

ruby実行時にLoadError

Mac環境で、Rubyでgemのライブラリを実行する際に、LoadErrorとなった時の対応。
結構はまった。。

sample.rb:4:in `require': no such file to load -- oauth (LoadError)
	from sample.rb:4

(原因1)gemで該当ライブラリがインストールされていない

  • gemで必要となっているライブラリをインストールしてみる
$ sudo gem install oauth

(原因2)MacPortsを導入していてrubyとgemのPathがバラバラ

  • MacPortsrubyをインストールしている場合に起きる現象。この場合はMacPortsで環境を揃えるのがよい(と思う)。
  • portsrubygemsのインストール(大体はこれで解決)
sudo port install rb-rubygems
  • rubyとgemのパスを確認(portsのインストール先であればOK)
$ which ruby
/opt/local/bin/ruby
$ which gem
/opt/local/bin/gem
  • ここでまだそろわない場合は、.bashrcを書き換えてpathの優先順を修正(無い場合は作成)
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
  • ターミナルを再起動して再実行。

RubyによるTwitter投稿

Twitter APIをテストするための環境(Ruby)作りをした時のメモ。

環境

デベロッパーキーの発行

  • 必要事項を記載して作成
    • Name: テストアプリの名称(任意でOK)
    • Description: 説明 (任意でOK)
    • WebSite: アプリのサイト(テスト用のためtwitterの自分のアカウントページにしてます)


  • アカウント名->[My applications]->[作成したアプリ]を選択


  • アプリ詳細画面で、[Settings]を選択
    • Application Typeで「Read and Write」を選択して保存


  • [Details]を選択肢し、[Create Access Token]をクリック


  • これで必要な情報がすべてそろう


スクリプトの準備

  • oauthのインストール
sudo gem install oauth
require 'rubygems'
require 'oauth'

# ここに設定値を入力
consumer_key='xxxx'
consumer_secret='xxxx'
access_token='xxxx'
access_token_secret='xxxx'

consumerObj = OAuth::Consumer.new(
  consumer_key,
  consumer_secret,
  :site => 'http://twitter.com'
)

accessObj = OAuth::AccessToken.new(
  consumerObj,
  access_token,
  access_token_secret
)

accessObj.post(
  '/statuses/update.json',
  'status' => 'Hello from test bot!',
  'source' => 'test bot'
)
  • 実行
ruby post2twitter.rb
  • これで「Hello from test bot!」というツイートが投稿されます


iBooks Auhtorウィジェットの作り方

iBooks Authorウィジェットを作る方法のメモ。
iBooks Authorには、HTML+JS形式のウィジェットを埋め込むことが可能ですが、wdgt形式で取り込む必要があり、作成にはDashcodeを利用するのが手っ取り早い。DashCodeはOSに付属しているため、iBooks Authorをインストールしてさえすればすぐに試すことができます。

必要なもの

作成手順

  • Dashcodeを起動
    • アプリの場所:[HardDisk]/Developer/Applications/Dashcode.app
  • 起動画面
    • 新規プロジェクトを選択し、テンプレートにはカスタムを選択


  • 選択後


  • そのまま名前をつけて保存 -> HelloWorld.wdgtというファイルが保存されます。


iBooks Authorウィジェットを追加


  • インスペクタウィンドウで、先ほど作成したHelloWorld.wdgtを選択


動作確認

あとは、iPadを繋げて[プレビュー]を選択すれば動作確認ができます。
DashCodeでは直接ソース(HTML、JS)も修正することができるため、DashCodeとiBooksAuhtorの往復で開発、修正ができます。

動作確認はDashcodeでも可能ですが、通信周りとか制約やタップハンドリングが異なるため、細かいところの修正はプレビューで行う必要があります。
その他、ウィジェットでどこまで使えるかは以下にまとめ中。

iBooks Authorのウィジェットまわり

Appleにより20日発表されたiBooksAuthorで、主にウィジェットでどこまでできるのかを調べてみた。

ウィジェットの制約

  • ウィジェットの作成はDashCodeで可
    • ただし、RSSリーダーなどのサンプルウィジェトはそのまあ動くということはない
  • フルスクリーンモードでのみ動作
    • サイズは自由
    • ミニサイズ時にはキャプションなどのみ表示可能。
  • XMLHttpRequestによる通信ができない(これは本当かもう少し調査)
  • JSONPによる通信は可能(twitterAPIでGETが可能)
  • canvas, videoタグは利用可能(ustreamの再生も)
  • タッチイベントをひろうことは可(touchStartイベントなどを利用。タッチ座標の取得方法も違うので注意)


配布時の制約

  • 無償配布に限り無制限(自作wordファイルを公開するようなもの)
  • 実機動作確認には、アプリのようにデバイス登録やプロビジョニングファイルの必要がない。
  • 有償配布はiBookStoreでのみ公開可能(20%とられる?)
  • iBookStoreで配布する際は、事前にISBNを取得する必要あり。書籍だからか。

気になるところは、やはりウィジェットでどこまでできるか、
というところと配布などAppleの制約でどこまでビジネスになりえるかというところ。

MacOSX10.7(Lion)のセットアップのメモ

自宅MacBookをLionへアップデートした際の設定のまとめ。

環境設定(トラックパッド)

  • snow leopardと同じように、3本指でアプリ内ショートカット、4本指でデスクトップ画面の遷移関連に割り当て。




shellの設定

  • 最新のzshをインストール
  • ターミナルの変更
    • [テキストエディット]->[環境設定]で設定



Finderの設定

  • 隠しファイルの表示設定


# 隠しファイル、ディレクトリを表示
defaults write com.apple.finder AppleShowAllFiles -boolean true
killall Finder

# もとに戻す(非表示)場合
defaults delete com.apple.finder AppleShowAllFiles
Killall Finder

  • ステータスバーの表示
    • [Finder]メニュー[表示]->[ステータスバーを表示する]
  • サイドバーの設定
    • [Finder]-> [環境設定]->[サイドバー]
      • AirDrop, アプリケーション, デスクトップ, 書類, [ユーザ]
  • 拡張子表示
    • [Finder]-> [環境設定]->[詳細]
      • すべてのファイル名拡張子を表示