ANA国内線【PR】
中嶋謙互「オンラインゲームを支える技術」
オンラインゲームを支える技術  --壮大なプレイ空間の舞台裏 (WEB+DB PRESS plus)一時期FacebookのゲームCityVille(Zynga)にはまっていて、こういうゲームはどうやって作っているのだろう?と興味があったので読んでみた。

ソースコードレベルまで含めた実装の話からインフラ構築や運用・開発体制(コストからエンジニアの割り当てまで含めて!)の話まで、別の本になっててもいいのでは?という内容が詰め込まれていて内容も濃く読み応えがあった。
ソースコードも本文内は概念的なコードが多いが、実際に動作するものも試せて(MacOSX上で動かしてみれる)おもしろい。

自分の仕事と、作っているものも規模もまったく違うものの苦労している点は似ていて、インフラ構築の部分では参考になることも多かった。

意外だったのは(少し考えるとやっぱりそうか、とも思ったが)、ライブラリや外部サービスなど使えるものは使って開発工数を小さくしているという点。逆に言えば、そうだからこそ似たゲームが同じ会社からだけでなく、どんどん出てくるということが可能になっているのだろう。

せっかくなので、サンプルを元に何か作ってみたい。
# by ukulele_trip | 2012-02-26 15:03 | ソフト開発一般 | Trackback | Comments(0)
iMacもRAM増設
BUFFALO ノートPC用増設メモリ PC3-8500(DDR3-1066) 4GB D3N1066-4G/E

MacBook ProのRAM増設も順調に済ませたので(ただ後日談があるのだが)、調子にのってiMacも増設した。
iMacはEarly 2009の20インチモデル。MacBook Pro(Early 2008)だと2つのメモリスロットに同じ容量のRAMをつけるよう推奨されていたが、こちらは別々の容量でもよいらしいので、1GB+1GBに4GBを購入して、1GB+4GB=5GBにした。

ただiMacはまだLion化するメリットがないので、SnowLeopardのままで、特に効果は体感できていない…。
# by ukulele_trip | 2011-09-11 13:31 | Mac OS X | Trackback | Comments(0)
結城浩「暗号技術入門 秘密の国のアリス」
新版暗号技術入門 秘密の国のアリス
TLでみかけておもしろそうだったので手に取り、読んでよかったと思えた本だった。

仕事で昔セキュリティ全般について調べたこともあったし、PGPで盛り上がった(?)世代だったしで、原理はだいたいわかっているつもりではあった。それでも改めて新しい技術や、詳細はぼんやりとしか理解してなかった部分など興味深く読めた。

AESのブロック暗号モード(CBCやCTR)も言葉だけ知ってたが、どういう違いがあるのかまでは本書を読んでようやく納得できた。
# by ukulele_trip | 2011-09-11 13:23 | ソフト開発一般 | Trackback | Comments(0)
MacBook Pro RAM増設
Transcend JetRam ノートPC用増設メモリ DDR2-667 2GB 永久保証 JM667QSU-2G

MacBook Pro(Early 2008)のRAMを2GBから4GBに増やしたら快適になってうれしいので書いておく。

まずXcode4になってから、Xcodeの動作が遅くてイライラしてた。
次にLionにしたらChromeの動作も遅くなり、さらに日本語を入力しようとしたら(Google日本語入力)まともに入力できないこともしばしば。

買い替えを考えたが、その前に何が遅いのか調べとこうと思ってメモリをみてみたら実は2GBしか積んでなかった(何となく4GB積んでるつもりでいた)ので、RAMをAmazonで探してみた。
2GBで2,000円くらいだったので、ダメもとで増設しても惜しくないと思い2GBx2で4GBにすることにした。(MBP Early 2008は2スロットで両方に同じ容量のRAMをつけろ、とあったので)

購入したのはTranscendのメモリ。RAM増設してもどうせ1年以内には買い替えるだろうし、それまでのつなぎというつもりであまりこだわりなく選んだ。

RAMの交換はAppleのサイトにあるとおりで、簡単だった。

増設後はXcodeはまだ少し遅いけど、Chrome、日本語入力は快適に使えるようになった。Mission Controlも増設前は最初にジェスチャしても起動まで待たされたが、増設後はそんなこともなく、ようやくLionとしてまともに使えるようになった。

これでLion化を躊躇してた家族用のiMacもRAM増設してLionにできる。
# by ukulele_trip | 2011-08-23 00:03 | Mac OS X | Trackback | Comments(0)
AdMobの新SDKへの移行手順(iOS, Xcode4)
ようやくAdMobを新SDKに移行したので、旧SDKからのシンプルな乗り換え方法についてメモっておく

基本的には http://code.google.com/intl/en/mobile/ads/docs/ios/fundamentals.html の手順に従っていく

プロジェクト構成の変更
1. 新SDKをダウンロード、どこかに展開しておく

2. 既存プロジェクトからAdmobファイル、TouchJSONファイルを全部削除する。

3. 1で展開して出てくるファイルのうちREADME以外すべてをプロジェクトに追加する。
Xcode4ではプロジェクト右クリック->"Add Files to …"になっている。


4. frameworkを追加する。旧SDKをすでに使っている場合、新たに必要になるのはSystemConfigurationだけ。
Xcode4だとprojectを選択→右側のペイン中の左列で"TARGETS"を選択→"Build Phases"のタブを選択→"Link Binary With Libraries"の左下の"+"を押す、という手順になる。


ソースコードの変更
5. ヘッダファイルの変更: AdMobDelegateProtocol.h → GADBannerViewDelegate.h、AdMobView.h → GADBannerView.h で、それ以外にincludeしてたAdMob関係のヘッダファイルは不要。

6. バナー表示用Viewクラスの変更: AdMobView → GADBannerView

7. バーのサイズ用ラベルの変更:ADMOB_SIZE_[width]x[height]というラベルはGAD_SIZE_[width]x[height]というラベルに変わっている。またサイズも微妙に変わっていて、iPhone用だとGAD_SIZE_320x50になる。

8. GADBannerViewでいくつかメソッドが変わっているので、その変更。
requestAdWithDelegateがなくなっているので、普通にframe指定してインスタンスを生成して、loadRequestというメソッドを呼ぶ必要がある。
また、AdMobViewではdelegateで指定していたpublisherIDはGADBannerViewのプロパティになっているので、これもセットする。
僕がはまったところは、AdMobViewでは広告をrequestして、取得完了した時点でViewのサイズを設定していたのだが、GADBannerViewではloadRequestの時点でサイズを確定して、さらにrootViewControllerで親Viewの指定もしておく必要があるという点。
まとめると以下のようなコードになる。

adView = [[GADBannerView alloc]
     initWithFrame:CGRectMake(0.0, 0.0,
     GAD_SIZE_320x50.width, GAD_SIZE_320x50.height)];
adView.delegate = self;
adView.adUnitID = @"xxxxxxxxxxxxx";
adView.rootViewController = self;
[adView loadRequest:[GADRequest request]];


requestFreshAdもなくなっている。探してみたけど、リフレッシュはサーバ側の設定でやってもらうことが推奨されているみたい。なので、僕はサーバ側で更新間隔の設定をして、クライアント側では何もしないことにした。

9. AdMobDelegateProtocolのメソッド名が変更されているのでその調整
didReceiveAdはadViewDidReceiveAdに、didFailToReceiveAdはdidFailToReceiveAdWithErrorに。

一応、これで移行はできるはず。間違いあれば指摘ください。

[2011-08-15 追記]4.1.1で、iPhoneがネットにつながっていない状態でdidFailToReceiveAdWithErrorが呼ばれたときに、この中でGADBannerViewをreleaseするとBAD_EXC_ACCESSになる。

-[GADObjectPrivate addReloadInformationFromHeaders]: message sent to deallocated instance

よく考えればそのdelegateメソッドを呼び出しているもとのオブジェクトを破棄するのはまずい気がするが、旧SDKでは動いていたので注意。
対策としてはここでreleaseするのをやめた。
こちらにも同じようなことが書いてある。http://goo.gl/tx5p6

# by ukulele_trip | 2011-08-15 16:59 | iOS | Trackback | Comments(0)
通貨単位変換(iPhoneアプリ) 2.2
2.2にバージョンアップしました。

App Storeへ

本バージョンの内容:

  • なるべく新しい為替レートを使うようにしました(30分間隔で更新しますが、1時間程度のずれはあります)
  • 通貨単位の結果表示の2行目のレートの単位の誤りを修正しました
  • 台湾ドルを追加しました
  • エストニアクローンを削除しました


アプリケーションの説明:
1. 通貨単位変換
ある通貨を別の通貨に変換します。その際、日本語<->英語表記の変換も行います。例えば10M$に対して7.67億円といった結果を表示できます。

2. 財務単位変換
3200百万円とか、18Millionドルとか言われるとまったくわからなくなることはありませんか?この機能はこういったお金の表現を簡単に変換できます。

変換元の金額・表現を指定するだけで、複数の候補が表示されるので素早く使えます。

使い方:
画面下部の入力パッドで変換したい元の金額を入力します。
また入力パッド右側では変換元の金額について以下の指定が行えます。

  • 通貨種類:「円」と「$(ドル)」その他の通貨が選択できます。ボタンをタップするたびに切り替えることもできますし、長押しするとプルダウンメニューが表-示されるのでここから選択することもできます。
  • 通貨単位の言語:「日」と「英」が選択できます。ここで選択した言語に応じて以降の項目が切り替わります。
  • 単位種類:「日」の場合は「なし」「百」「千」と「なし」「万」「億」「兆」の組み合わせを、「英」の場合は「h(hundred)」、と「M(million)」、「B(billion)」、「T(trillion)」の組み合わせを選択できます。

入力する度に結果のリストが画面中央部に表示されます。
通常は通貨換算結果が表示されますが、左上の「財務単位」ボタンを押すと百万などの財務単位への変換結果表示になります。再び通貨換算に戻るには「通貨単位」ボタンを押します。
財務単位変換の計算はすべての通貨・単位の組み合わせで行われますが、表示されるのは計算結果の数値の部分が1以上100000未満のものだけです。また小数点以下は2桁まで有効としています。将来的にはこの部分も設定できるように考えています。
また結果を選択すると、コピーが行われます。

為替レートについて:
為替レートはオンラインで取得していますが、最新の情報とは限りません。
またネットワークの問題で取得に失敗した時には前回使用したレートを使います。

設定:
有効にする通貨種類や順番を変更できます。
# by ukulele_trip | 2011-08-05 16:01 | 通貨単位変換サポート | Trackback | Comments(0)
Flickrフォトフレーム
iTunesのページはこちらです。


アプリケーションの説明:

Flickrフォトフレームはお手持ちのiPhoneやiPadを手軽にデジタルフォトフレームにするアプリケーションです。

Flickrにある写真をインターネット経由で表示するので、写真をiPhone/iPadに入れる必要はなありません。

また自分の写真以外にも、自分のコンタクトに登録したユーザの写真を表示することができますので、例えば遠くに住む家族の写真をみることもできます(自分がみることができるもののみです)。


使い方:

準備:
あらかじめFlickrサイトでアカウントを取得しておいてください。フォトフレームに表示したい写真が自分のものであれば、写真をアップロードしておきます。このときセットを作成して写真を分類しておくとフォトフレームに表示する写真の選択が簡単に行えます。
表示したい写真が他のユーザのものであれば、そのユーザをFlickrサイト上でコンタクトに登録します。そのユーザが家族(family)だけに公開している写真をみるためには家族として、友人(friends)だけに公開している写真をみるなら友人として登録してください。
コンタクト登録ではそのユーザの承認が必要です。


ログイン:
本アプリケーションを最初に起動すると、Flickrにログインするためのボタンが表示されます。ボタンをタップするとSafariが起動してFlickrのログイン画面が表示されますので、あらかじめ取得していたアカウントでログインしてください。※Safariでログイン済みであればこのステップはスキップされます。

本アプリケーション(FlickrPhotoFrame)がFlickrのデータにアクセスすることを承認するかどうか確認する画面が表示されますので、"OK, I'LL AUTHORIZE IT"をタップして承認してください。

承認すると再び本アプリケーションが起動し、ログインしたユーザ(自分)の写真を読込みスライドショーが始まります。


スライドショー:
設定内容にしたがって写真を表示します。
画面をタップするとステータスバーが表示され、[設定]ボタンをタップすると設定画面が表示されます。


設定:以下の設定が行えます。

表示するFlickrセット:

デフォルトでは自分の[すべての写真]が選択されています。タップすると表示するセットや、他のユーザの写真を表示するよう設定を変更することが出来ます(Flickr設定を参照ください)。


スライドショー設定:

スライドショーに関する以下の項目の設定を行います。


表示時間
次の写真に移るまでの時間です。3,5,10,30秒から選択します。

写真切替時の効果
次の写真に移るときの効果です。

表示サイズ
写真のサイズをどのように表示するか指定します。[写真全体を表示]では写真全体が画面に表示されるように写真を縮小して表示します。[スクリーンにあわせる]では画面全体に写真が表示されるように写真をあわせます。※縦横比は保持するので写真のサイズによっては写真の一部が表示されません。
順序をシャッフル
デフォルトではFlickr上での並び順で表示しますが、これをONにするとシャッフルした順で表示されます。一周したところで再度シャッフルします。

自動ロックしない
これをONにするとスライドショー中にiPhone/iPadの自動ロック機能を無効にします。

中解像度写真を使用
デフォルトではRetinaディスプレイやiPadディスプレイでは高解像度の写真を表示しますが、3G回線など回線速度が遅い場合にこのオプションをONにすると中解像度の写真を使います。




情報表示設定:

スライドショー上に日付時刻や写真情報を表示できます。

時計表示
日付/時刻を表示します。

写真情報表示
写真の撮影日とタイトルを表示します。写真にそれらの属性がない場合はブランクになります。

日付形式
時計の日付の形式を選択します。

時刻形式
時計の時刻の形式を選択します。

時計サイズ
時計の表示枠の大きさを選択します。

写真情報サイズ
写真情報の表示枠の大きさを選択します。

フォント
時計、写真情報の表示に使用するフォントを選択します。



Flickr設定:


ログインユーザ
写真を取得するユーザアカウントです。これをタップするとこのアカウントからログオフします。

セット所有ユーザ
表示する写真の所有ユーザです。デフォルトでは自分になっていますが、これをタップするとコンタクトに登録されたユーザの一覧が表示されますので、それらから表示したい写真のオーナーを選択します。

セット
セットを作っている場合、[すべての写真]以外にセットを指定することができます。



制限事項など:


  • 本アプリケーションはFlickrAPIを使用していますが、Flickr自身が本アプリケーションについて責任を持つものではありません。

  • 5分毎に15秒間広告が表示されます。

  • 表示される画像の数は500枚までです。※今後のバージョンで全写真の表示対応を検討しています。

  • 写真の切替時間は回線速度によって異なります



サポート:

http://twitter.com/ukuleletrip

著作権:

Copyright 2011 ウクレレとりっぷ All Rights Reserved.


本アプリはobjectiveFlickrを使用しています。

ObjectiveFlickrのライセンスは設定画面の"ObjectiveFlickr"の項目を参照してください。

# by ukulele_trip | 2011-01-30 13:39 | iOS | Comments(0)
Flickr Photo Frame
Now available on iTunes


About This Application

Flickr Photo Frame makes your iPhone or iPad a digital photo frame easily.

Flickr Photo Frame plays slideshow using photos on Flickr, so you don't have to bring photos into your iPhone/iPad.

It can also play photos of users in your contact as well as your own photos, you can see photos of your family who live far away from you.



How To

Preparation
Please create account at Flickr. If you want to use your own photos for slideshow, please upload the photos to Flickr. If you create Sets and adding photos to them, you can easily change photo set to be used for slideshow.
If you want to use photos of other users, please add them to your contact on Flickr. To see photos which the user publish to only family, you have to add the user to your contact as family.
You need the user's permission on adding them to your contact.


Login
First time you use this app, it shows button to login to Flickr. Please tap this button and login after Safari starts and show Flickr Login page. * If you already have logged in Flickr with Safari, this step will be skipped.

After you logged in, it shows page which request your confirmation to allow this app (FlickrPhotoFrame) to access your data on Flikcr. Please tap "OK, I'LL AUTHORIZE IT" to give this app the permission.

This app starts again and get your photos to play slideshow.


Slideshow
Please tap the screen to show status bar and you can go to settings by tapping [Settings] button.


SettingsYou can configure following items.

Flickr Set to display

By default, your all photos on Flickr are used for slideshow. You can change which photo set including other user's photo set is used for slideshow by tapping this item.


Slideshow Settings


Duration
Duration of showing a photo. You can select from 3, 5 ,10 and 30 seconds.

Transition
Effect of transition to next.

Scale Mode
Way to scale a photo. In [Normal] mode, photo is scaled to display whole of photo. In [Fit To Screen] mode, photo is scaled to fill whole of screen. * aspect is kept, so part of photo may not displayed.
Shuffle
Shuffle order of slideshow.

Disable Auto Lock
Disable Auto Lock while slideshow is playing.

Use Medium Size Photo
If this option is set ON, slideshow uses only middle size data of photos. It is useful for case you use this app with low speed line.




Display Settings


Show Clock
Show date and time.

Show Photo's Info
Show taken date and title of the photo. If the photo doesn't have these attributes, nothing is shown.

Date Format
You can select date format of clock.

Time Format
You can select time format of clock.

Font
You can select a font used for clock and photo's information.



Flickr Settings


Logged in as
This is the user who read photos for slideshow. By tapping this item you will log off.

Owner of Photo Sets
This is the user who own photos for slideshow. By default it is you and you can select a user from your contacts by tapping this item.

Photo Sets
If the owner user has photo sets, you can select a set for slideshow.



Notes


  • This product uses the Flickr API but is not endorsed or certified by Flickr.

  • Ads are displayed for 15 seconds every 5 minutes.

  • Number of photos used for slideshow is up to 500. * We're going to improve it in future version.

  • Duration of depends on line speed.



Support

http://twitter.com/ukuleletrip

License

Copyright 2011 Ukulele Trip All Rights Reserved.


This application uses ObjectiveFlickr.

About license of ObjectiveFlickr, please read the "ObjectiveFlickr" item in Settings page.

# by ukulele_trip | 2011-01-30 11:28 | iOS | Trackback | Comments(4)
Provisioning Profileの更新
Provisioning Profileの期限が切れた後についてはRenewして…という流れでネットで多くの情報が見つかるのだが、期限が切れる前に期限を延長するための情報は見つからなかったので、書いておく。
(間違っていたり、もっと良い方法があれば指摘ください)

期限が切れてから更新しても実害は少ないのだが、期限が近づいてくるとやたらiPhone上に通知が出てきて鬱陶しい。そこでなるべく簡単にProvisioning Profileの期限を以下のようにして延長してみた。

結論から書くと、既存のProvisioning Profileの期限を延長する方法はない。なので既存のProvisioning Profileをコピーして作成するということになる。

1.iOS Provisioning Portal(ログイン必要)に行く。
2.自分のProvisioning Profileを複製する。(右にある"Edit"をクリックして、"duplicate"を選択する。)
3."Copy of.."という名前で新しいProvisioning Profileが作られる
4.ここで元のProvisioning Profileを削除する。(この項目の左のチェックをONにして、下の"Remove selected"をクリックする。)
5.複製したProvisioning Profileの名前をもとのものにする。(右にある"Edit"をクリックして"Modify"を選択し、名前を変更。)
6.複製したProvisioning Profileをダウンロードする。(右にある"Download"ボタンをクリックしてダウンロードする)
7.ダウンロードしたProvisioning ProfileをダブルクリックするなどしてXcodeにimportする
8.XcodeのオーガナイザでiPhoneに入れる

 ただ、これだけだとTeam Provisioning Profileがまだ期限間近のまま残っているので、以下を行う。

9.オーガナイザでTeam Provisioning Profileを削除する。
10.オーガナイザの"Provisioning Profiles"タブ(左側)を選択して、その上にあるAutoにチェックが入っていることを確認して"Refresh"をクリックする。
11.iTunes Connectにログインを求められるので、ログインすればTeam Provisioning Profileが複製されたProvisioning Profileから作られ、期限も延長される。

# by ukulele_trip | 2010-11-18 12:23 | iPhone | Trackback | Comments(2)
ようやくメモリ管理に慣れてきた
メモリ管理にも慣れてきて、instrumentsを使ってメモリリークつぶしもやるようになってきた。
ただ、一つ気持ち悪かったことがあった。それはretain指定したプロパティに新しいオブジェクトポインタを代入したとき古いものはどうなるのか?という点。

http://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/Articles/chapter_5_section_3.htmlに書いてあってすっきりした。ちゃんとコンパイラが面倒見るコードを吐いてくれてる。

// assign
property = newValue;

// retain
if (property != newValue)
{
[property release];
property = [newValue retain];
}

// copy
if (property != newValue)
{
[property release];
property = [newValue copy];
}
# by ukulele_trip | 2009-12-05 20:24 | iPhone | Trackback | Comments(0)
前のページ 次のページ
XML | ATOM

skin by excite