2013年6月22日

初めてiPhone/iPadアプリを作った時に役に立ったリンクまとめ

Xcodeのキーボードショートカット


キーボードで完結!ハイスピード Xcodeコーディング
http://www.slideshare.net/cocopon/xcode-12535772

開発レシピ:Xcodeの常用ショートカットキー | iOS開発者@日本
http://www.iosjp.com/dev/archives/92



UIViewに角丸の枠と影を付ける


UIImageに影をつけて角も丸くする | ニョホホホhoooo!の2011年08月27日の2番目の記事
http://plaza.rakuten.co.jp/tech1985/diary/201108270001/

頭と尻尾はくれてやる! 画像に影を付けたいのでいろいろプロパティをいじってみた
http://ringsbell.blog117.fc2.com/blog-entry-494.html

【iPhoneアプリ開発】UIImageViewに枠とドロップシャドウを設定する方法 | WEB開発お役立ちブログ
http://websystem.biz/?p=34



UIViewのタップイベントを取得する


UIViewのタップを検知|Penta creation
http://pentacreation.com/blog/2012/12/121218.html



Objective-Cの基礎


逆引きObjective-C for iPhoneアプリ - 定数(#define,const)
http://www.objectivec-iphone.com/introduction/const/define-const.html

Objective-Cのアクセサの話 - As Sloth As Possible http://blog.livedoor.jp/faulist/archives/1480850.html

【Objective-C】配列(NSArray、NSMutableArray)の要素(値)をランダムに並べ替える方法 - creativi.tea
http://teapipin.blog10.fc2.com/blog-entry-221.html

Objective-Cでの配列シャッフル - Dolice Lab
http://lab.dolice.net/blog/2013/03/14/shuffle-the-array-in-objective-c/



StoryboardのAuto Layoutを理解する


ios - Xcode 4 and Interface Builder: Editing Vertical Spacing Constraint (Anchor Top, not Bottom) - Stack Overflow
http://stackoverflow.com/questions/14107799/xcode-4-and-interface-builder-editing-vertical-spacing-constraint-anchor-top

Using Auto Layout | Building Responsive User Interfaces in iOS6 | InformIT
http://www.informit.com/articles/article.aspx?p=2015112&seqNum=2

Beginning Auto Layout in iOS 6: Part 1/2 | Ray Wenderlich
http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2



Storyboardを使った画面遷移


StoryboardとSegueの基本 - Kesin's diary
http://kesin.hatenablog.com/entry/20120908/1347079921

iOSゆとりプログラミングのススメ - 仕事人の開発日誌
http://d.hatena.ne.jp/omaemona01/20111204/1322961924

Storyboardを使った画面遷移と値の受け渡し 其の二 : てるてる坊主
http://teru2-bo2.blogspot.com/2012/03/storyboard_28.html

複数のStoryboard間を遷移するチュートリアル | XCode始めました。
http://xcode-beginner.blogspot.com/2012/04/storyboard_29.html




意味不明のクラッシュを回避する


OS X 10.8.4でXcodeでiOS Simulatorを実行したときにSIGABRTでアプリがクラッシュすることがある問題の暫定的な対処(修正済み) - 24/7 twenty-four seven
http://d.hatena.ne.jp/KishikawaKatsumi/20130606/1370509631



途中でプロジェクト名を変える


Xcodeのプロジェクト名、Bundle Identifier、アプリ名の関係 - Debian GNU/Linux 3.1 on PowerMac G4
http://d.hatena.ne.jp/paraches/20130211

Xcodeのプロジェクト名を変える | Morizotter Blog
http://blog.morizotter.com/2013/03/03/change-xcode-project-name/



Homeボタンでアプリを一時停止せず終了させる


Cocoaの日々: iOS 4.0 でアプリを一時停止しない設定 - UIApplicationExitsOnSuspend
http://cocoadays.blogspot.com/2010/06/ios-40-uiapplicationexitsonsuspend.html



ユーザーデータを永続化する


iOS - NSUserDefaultsを使うときはWrapして使うと便利 - Qiita [キータ] http://qiita.com/aguuu/items/2af840ded249b3e4e9bb



UIをアニメーションする


UIViewで手軽にアニメーションを実行する方法 - プログラミングノート
http://d.hatena.ne.jp/ntaku/20090226/1235659545

逆引きObjective-C for iPhoneアプリ - CABasicAnimationの基本的な使い方(移動・回転・拡大・縮小)
http://www.objectivec-iphone.com/animation/CoreAnimation/CABasicAnimation.html

Objective-Cと戦うブログ: Core Animationの基礎的なところ
http://obc-fight.blogspot.com/2012/10/Core-Animation-fundamental.html

iOS - Core Animation 中級編 - Qiita [キータ]
http://qiita.com/inamiy/items/bdc0eb403852178c4ea7

CABasicAnimationを試してみた | スマートフォンアプリ開発会社のエンジニアブログ
http://engineerblog.glpgs.com/index.php/archives/165

Core Animation で画像を回す (フェンリル | デベロッパーズブログ)
http://blog.fenrir-inc.com/jp/2010/09/transform_animation.html


パーティクルを表示する


テンポラリー無題 › 忙しい人のためのUIView(UIKit)でパーティクル。CAEmitterLayer & CAEmitterCell 。
http://www.tmpmudai.net/?p=448

CAEmitterLayer でクリスマスは爆発しろ - iOS Advent Calendar 2011
http://d.hatena.ne.jp/KishikawaKatsumi/20111202/1322835912

iOS 5 UIKit "パーティクル•システム"チュートリアル | Ray Wenderlich
http://www.raywenderlich.com/ja/26781/ios-5-uikit-%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%AF%E3%83%AB%E2%80%A2%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB

UIKit上でパーティクルエフェクトを表示する - Over&Out その後
http://d.hatena.ne.jp/shu223/20130315/1363298992


画面サイズの違いに対応する


iPhone, iPad, iPod touchの画面サイズまとめ | noriaki blog
http://blog.noriaki.me/2012-11-18-display-size-iphone-ipad-ipodtouch

【Objective-C】iPhone5(4インチ)のサイズ判別など、画面サイズの取得にはUIScreenが便利 - しすぜろ
http://syszr.com/s13.html

Objective-C - スクリーンのウィンドウサイズ(WindowSize)を取得する方法 - | Learn iPhone, iOS, Objective-c, cocos2d and ....?
http://programming-ios.com/objective_c-window-screen-size/

[xcode][objective-c][ios][cocoa]Storyboardの画面サイズの範囲外なので配置できない問題
http://pnome.blog88.fc2.com/blog-entry-111.html



UIViewの背景に画像をリピート表示する


[iOS] UIViewの背景画像を設定する | Hi-farm blog
http://blog.hi-farm.net/2010/11/21/ios-uiview%E3%81%AE%E8%83%8C%E6%99%AF%E7%94%BB%E5%83%8F%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/



BGMと効果音を鳴らす


第9回 ゲームの仕上げ | Think IT
http://thinkit.co.jp/story/2011/06/03/2145?page=0,1

[iPhone 開発メモ] AVAudioPlayer を使用して音楽を再生する | Sun Limited Mt.
http://blog.syuhari.jp/archives/1015

サウンドを再生する:iPhoneアプリ開発雑記帳
http://iphone.o-84.com/dev-tips/knowhow/play-sound/

イチから学ぶiPhone/iPadアプリ開発 第12回 「BGMや効果音を付けよう!」
http://www.bhnt.co.jp/blog/%E9%9B%91%E8%A8%98/%E7%A4%BE%E5%93%A1%EF%BC%9Acobra/%E3%82%A4%E3%83%81%E3%81%8B%E3%82%89%E5%AD%A6%E3%81%B6iphoneipad%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA-%E7%AC%AC12%E5%9B%9E-%E3%80%8Cbgm%E3%82%84%E5%8A%B9%E6%9E%9C%E9%9F%B3%E3%82%92%E4%BB%98/

音楽と、効果音の再生 (iPhoneアプリ開発記 [fou media lab.])
http://www.fou.ne.jp/iphone/2009/10/post_3.html




広告を表示する


新しいAdMob SDK(Google AdMob Ads SDK for iOS)での広告設置方法 - Over&Out その後
http://d.hatena.ne.jp/shu223/20110324/1300985815

AdMob Ads SDK を Xcode に追加してアプリ内に広告を表示する方法 | Maccle
http://maccle.com/develop-ios-app/how-to-add-google-admob-ads-sdk/


iPad対応(ユニバーサル化)


Xcode4.2におけるiPhone/iPadユニバーサルアプリ化: iPhoneアプリ開発備忘録
http://iphone-app-developer.seesaa.net/article/235646213.html

[Xcode 4.3] iPhone アプリを iPad 対応のユニバーサルアプリにする方法 | ラクイシロク
http://rakuishi.com/iossdk/3733/



タイマー処理の改善


NSObject Class Reference
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/performSelector:withObject:afterDelay:

xcode - Cancel [self performSelector:... withObject:nil afterDelay:20]; - Stack Overflow
http://stackoverflow.com/questions/5055869/cancel-self-performselector-withobjectnil-afterdelay20



アプリの紹介動画を作る


iPhoneの画面をキャプチャして動画撮影できる「Reflector」の使い方~PCツールを使って、非脱獄でも録画可能に!~
http://applian.jp/tweak/iphone_display_recorder/

iPhone・iPadの画面をまるごと動画でキャプチャーできるアプリ『Display Recorder』
http://www.excite.co.jp/News/apple_blog/20120619/TouchLab_2012_2_4184.html




アプリを宣伝する


こんなにあった! iPhone/Androidアプリを出す時にリリースを送りたい媒体53個総まとめ【全て無料】
http://plus.find-job.net/iphone-android-press-site







-----------------------
以上!

2013年6月21日

はじめてのiPhoneアプリ開発

iOSでアプリを作ってみた感想


今までアプリ開発はAndroidひとすじでやって来たけれど、せっかくMacBookAirもあることだしそろそろiOSアプリもやって見たくなった。

初めてXcodeを起動した時はEclipseとあまりにも違うので戸惑った。

昔はC言語で徹夜で仕事したりもしていたけれど、Objective-Cというのはまた独特の文法があってこれも最初はびっくりした。メソッドを呼ぶのにかぎカッコで囲むとは。

まあどれも最初の1週間でほぼ慣れた。

やってみるとiOSアプリの開発は結構面白い。正直言ってAndroidよりも面白いかも。

なぜそう感じるかというと、まずシミュレータの動作が軽いのが一因ではないかと思う。

それからGUIの設計ツール(ストーリーボード)がとても使いやすい。XMLをいじってはいちいち実機で確認しながら進めるAndroidとは効率がかなり違う。

あと、プログラムで画面の一部をアニメーションさせるときの書き方もiOSの方が書きやすい様に感じる。まあイディオムみたいなものなので一度覚えてしまえばそんなに違いはないけれど。

それから、パーティクルを実現するクラス(CAEmmiterLayerなど)が標準で含まれているのは素晴らしい。

全体的に見て、もし初心者にアプリ開発を教えるのであればAndroidよりはiOSの方が教えやすいように感じた。


お世話になっている本



まるごと学ぶiPhoneアプリ制作教室


はじめて開発するならこの本がかなりおすすめ。下の2冊の教科書的な構成と全く違って、本当に作者と一緒に開発しているような感じで、簡単な事から順を追ってアプリが出来て行く様になっている。断片的な知識は読めば分かるけど、僕のように最初のとっかかりの流れが分からないという人にはとても良いと思う。
サーバー側(GAE)のJavaアプリケーション開発のための解説まで入っているけれど、これはさすがに蛇足だったかなと思う。むしろその分のページ数でもっと別のiOSアプリ(特にiPad用)の制作例を載せて欲しかった。







よくわかるiPhoneアプリ開発の教科書【iOS 6&Xcode 4.6対応版】


プロの力を身につける iPhone/iPadアプリケーション開発の教科書











2013年4月25日

ロードバランサーを使って複数のWebサーバーでASP.NET MVCアプリケーションを動かした時のメモ

ハードウェアの構成


ロードバランサー1台
Webサーバー3台
DBサーバー1台


ソフトウェアの構成


Webサーバー
 Windows Server 2008 R2
 IIS7.5
 ASP.NET MVC 4

 IISではひとつのWebサイトの下に複数のASP.NET MVCアプリケーションを配置。

DBサーバー
 Windows Server 2008 R2
 Microsoft SQLServer 2008


パターン1 - それぞれのWebサーバー内でSessionを管理


ロードバランサーが「セッション維持機能」を持っている事が前提。

Session管理は State Service を使う。

State Service を使う為のweb.configの設定

<sessionstate mode="StateServer">      stateConnectionString="tcpip=127.0.0.1:42424"
      stateNetworkTimeout="10" />
各Webサーバーで「ASP.NET State Service」が自動起動する様に設定しておく事。




パターン1で発生した問題


ロードバランサーのセッション維持機能が上手く動いていない!
そのため時々Webサーバーが切り替わってログイン画面が表示されてしまう。

ロードバランサーのベンダーに調査してもらっても「設定に特に問題は見つかりません。アプリ側の問題では?」との事で、解決せず。

教訓:しょぼいロードバランサーは使わない!

今回のプロジェクトではロードバランサーは自分達の管理下にはないので、パターン1はあきらめる。



パターン2 - SQLServerでSessionを管理


ロードバランサーのセッション維持機能に頼らずにSession情報をDBに格納してWebサーバー間で共有する事にする。これならWebサーバーが任意のタイミングで切り替わっても大丈夫。

1. SQLサーバーにSession情報を保存するためのデータベースを作成する。

 aspnet_regsql.exe -S server -U username -P password -ssadd -sstype p

 ※tempdbに保存するのではなく永続化するために -sstype pオプションが必要。

このコマンド一発でデータベースの作成、テーブルの作成、期限切れのSession情報を削除するためのJobの登録まで行なってくれる。

 aspnet_regsql.exeのヘルプはこちら


2. MachineKeyの設定を共通化する。

全てのWebサーバーでMachineKeyを共通化しておかないと、認証クッキーやその他さまざまなデータの暗号化・復号化の処理がWebサーバーが切り替わった時に上手く行かなくなる。

IIS7.5の管理画面で該当のアプリケーションを選択すると、「MachineKey」という項目があるのでそれを開く。


画面右側の「Generate Keys」をクリックして「Apply」するとweb.configファイルのsystem.webセクションに下の様な設定が追加される。

<machineKey decryptionKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" validationKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />
あとはこの部分をコピーして他の2台のWebサーバーのweb.configにペーストすればOK。

参考URL:How To: ASP.NET 2.0 で MachineKey を構成する方法




3. IIS Metabase上のSite IDを共通化する。

これをしておかないと、Webサーバーが切り替わった時にSQLServer側で別アプリケーションとして認識されてしまって、Session情報の共有が出来なくなってしまう。今回はこれでハマった。。。


対策としてはSQLServerのストアドプロシージャを修正するという方法もあるみたいだけど、IIS7.5以降なら下の方法で簡単にIDを共通化出来るみたい。

IIS上で何度かWebサイトを作成したり削除したりしているとIdの値が変わってしまうので、該当のWebサイトを選択した上で「Advanced Settings」を開いてIDの欄に他のサイトと重複しない値を入力する。


他の2台のWebサーバーでも該当のサイトが同じIDを持つ様に入力する。

この設定を行った後は、IISを再起動する必要があるので注意。




おまけ:Forms認証を使う場合の注意点



  • 一つのWebサイトの下に複数のアプリケーションを配置する場合は、アプリケーション毎に認証クッキーの名前を変える事。

  • 認証クッキーのパスは「/」から変更しない方が良い。
    (ブラウザはクッキーのパスについては大文字小文字を区別するが、サーバーはURLの大文字小文字を区別しない為。)










.