タグ

2013年4月19日のブックマーク (44件)

  • Modern Objective-Cでのシンプルなプロパティ記述方式 - Qiita

    今月からようやくModern Objective-Cに着手(かなり今さらだけど・・) 記述がかなりシンプルだとは聞いていて、情報もたくさん挙がっていたのだけど、困惑したのでメモ。メンバー変数とか@synthesizeとか宣言不要でコードがスッキリして嬉しい。基的には@propertyだけ宣言すれば良いみたい。また@properyもいままでヘッダファイルでのみ宣言していたけど、プライベートなものは実装ファイルの無名カテゴリ内に宣言すればよいみたい(パブリックプロパティは従来通りヘッダファイルに記述)。以下、プライベートプロパティを宣言する時の例。 一応、メンバー変数とか当に定義されているのか確認。 もう"Legacy" Objective-Cでは書けないな。 参考サイト 参考にさせていただいたサイトです。 Objective-Cプログラミング言語 - プロパティの宣と実装 by Appl

    Modern Objective-Cでのシンプルなプロパティ記述方式 - Qiita
  • 今日からライオンでも使える!Xcode4.4 Modern Objective-C Syntaxでコードをきれいにする方法 – Zero4Racer PRO Developer's Blog

    Mountain Lion発表とともにリリースされたXcode4.4。OSX Lionでも使える様になっています。Xcode4.4から、llvm (コンパイラ)のバージョンが4.0になっています。 それによってObjective-Cの書き方にかなりの改善が加えられたので、それを簡単にまとめておきたいと思います。これらの改善は、iOS6に関係なく動作するので、いま作っている、iOS5用のコードにも使用出来ます。 synthesize by default コンパイラが@synthesizeを補完してくれる様になったため、基的な状況では、@synthesizeを書かなくてよくなりました。また、synthesizeされる相手のivarも、同名の変数ではなくて、アンダーバーを最初に付けた物がデフォルトとなります。これまで議論されて来たことがappleのコンパイラによって、これからは定義されている

  • iOS 4のSDKで、Twitterを使ったiPhoneアプリを作る

    iOS 4のSDKで、Twitterを使ったiPhoneアプリを作る:SDKで始めるiPad/iPhoneアプリ開発の勘所(4)(2/4 ページ) 非同期通信を行う「NSURLConnection」クラス まずは、Twitterにアクセスしてデータ取得を行います。Cocoa Touchフレームワークには、「NSURLConnection」という通信用のクラスが用意されており、このクラスは「同期通信」「非同期通信」という2種類の通信が可能です。 同期通信では、NSURLConnectionを呼び出した側が通信完了まで次の処理に遷移できません。この間は、ユーザーの画面操作にも反応できないため、画面が固まってしまいます。 一方、非同期通信ではNSURLConnectionを呼び出した側は通信完了を待たずに、次の処理に移ります。タイミングをずらして後から返ってくる通信結果を受け取る仕組みを作る必要

    iOS 4のSDKで、Twitterを使ったiPhoneアプリを作る
  • UIKit とスレッドのお約束

    アプリが小気味よく動くようにするために、メインスレッドでの重たい処理を避けて、適宜バックグラウンドスレッドに処理を回すことはよくあります。 このとき注意が必要なのは、バックグラウンドでの処理結果を画面に反映させる時の以下のお約束です。 UIKit のオブジェクトはメインスレッド以外からアクセスしてはいけない Apple のドキュメントとしては Cocoa Fundamentals Guide に “All UIKit objects should be used on the main thread only” と書いてあります。この制限は UIKit 特有ではなく、Java の Swing などでも共通の設計です。GUI のパフォーマンスを良くするために、スレッドセーフをあえて捨てて単純化しているのです。 ではどうすれば良いのかと言うと、バックグラウンドスレッドからメインスレッドに処理を

    UIKit とスレッドのお約束
  • クラッシュの原因にありがちなイージーミス

    アプリがクラッシュする原因はさまざまです。その中でも、解放(dealloc)済みオブジェクトへのアクセス (EXC_BAD_ACCESS) によるクラッシュの原因としてありがちなイージーミスを2つ挙げてみます。 インスタンス変数に autorelease なオブジェクトをそのまま代入 インスタンス変数は通常そのクラスのインスタンスがオーナーシップを持つ必要があります。この場合の典型的な書き方として次の2つが挙げられます。 retain で宣言されているプロパティ経由でオブジェクトを代入する場合(self.button = aButton;) インスタンス変数に代入するときに retain 等 retainCount を増やすメッセージを送っておく場合(button = [aButton retain];) この2つの書き方が混在していると次のような間違いが起こりがちです。 UIButton

    クラッシュの原因にありがちなイージーミス
  • メソッドの遅延実行

    あるメソッドを一定時間後に実行したい、ということはよくあります(これを、メソッドの遅延実行と呼ぶことにします)。そんなときにまず思いつくのは NSTimer を使う方法ではないでしょうか。 NSTimer を使う以外にも、NSObject にある次のメソッドで簡単に同じことができます。 NSObject - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay 例として、iPhone 標準搭載の写真アプリを見てみましょう。 写真アプリでは、写真を見ている間に一定時間ユーザの操作が無ければ、ツールバーとナビゲーションバーが消えます。 この処理は次のようなコードで実現できます。 // self は UIViewController … { … // 一定時間

    メソッドの遅延実行
  • Core Animation で画像を回す

    データのダウンロード中など待ち状態のときに、画像をくるくる回して読み込み中だということを表したいことってありますよね。アニメーション GIF や複数の画像の切り替えでも表現できますが、今回は1枚の画像を Core Animation の transform プロパティを使って回す方法を紹介したいと思います。 まず、アニメーションには CABasicAnimation を使います。作成するときに、animationWithKeyPath に transform をセットします。 つぎに、回転のはじめと終わりの角度を設定します。時計回りの場合は fromValue を 0、toValue を 2π にします。反時計回りと場合は fromValue と toValue の値を入れ替えてください。 そして、valueFunction で回転軸を決めます。今回は z 軸で回転させたいので、kCAVa

    Core Animation で画像を回す
  • UITableViewController を使わない設計

    iOS のアプリ開発における主役クラスの1つである UIViewController。中でも、実用系のアプリを作る際には UITableView を表示するための UITableViewController が活躍してくれます。Xcode の新規クラスのテンプレートにも含まれていますね。 UITableViewController は UIViewController のサブクラスで、UITableViewDataSource と UITableViewDelegate という、UITableView を扱うのに必要な2つのプロトコルに適合しています。UITableView を表示する画面なら、基的に UITableViewController クラスだけで事足りてしまいます。 とても便利なクラスである反面、複雑な処理をしようとすると、どんどん肥大化してしまうという欠点もあります。原因の

    UITableViewController を使わない設計
  • 画面レイアウトを行うときに便利なツール

    先週の荻野のブログエントリではアプリケーション上の各要素間の間隔について書かれていました。デザイナが導き出した各要素間の間隔を限りなく忠実にコーディングするための助けとなるツールを紹介したいと思います。 xScope Shareware $26.95 http://iconfactory.com/software/xscope マウスカーソルのある場所から上下左右の距離を自動ではかってくれる Dimensions 機能が大変便利です。シミュレータ上で動いているアプリの各要素間の距離を測りたい時にはマウスカーソルを動かしていくだけです。Dimenshions 機能以外にも Ruler 機能、Loupe 機能など盛りだくさんです。 Free Ruler Free http://www.pascal.com/software/freeruler/ Ruler 機能のみのシンプルなところと Fre

    画面レイアウトを行うときに便利なツール
  • UITableViewCell の accessoryView を使うと少し楽

    UITableViewCell の accessoryView というプロパティについてです。それほどマイナーなプロパティでもないので、実は当たり前なのかもしれませんが、最近便利さに気付いたので紹介します。 UITableViewCell には accessoryType というプロパティがあって、3種類のアクセサリが付けられます。 accessoryView は、これをカスタムな見た目にしたい時に使うぐらいのものだという認識でした。実際そうなのですが、よく考えたら UIView ならなんでも入れられるわけで、UISwitch だって入れられるんだなと。設定画面でスイッチがよく出てくるのですが、今まで contentView に addSubview していて、位置を合わせるのが面倒だと思っていました。でも accessoryView なら次のコードで終わりです。frame の origi

    UITableViewCell の accessoryView を使うと少し楽
  • パキッとした描画

    iOS では座標を浮動小数点型(CGFloat)で指定します。アンチエイリアスのかかった美しい表示のために必要な機構ですが、くっきりとした(パキッとした)描画を行うには少しコツがいります。 例えば、CGContext を使って (100, 100) から (200, 100) へ太さ1ピクセルの黒100%のラインを引く際、そのままコードにすると次のようになります。 CGContextRef ctx = UIGraphicsGetCurrentContext(); CGFloat x, y; [[UIColor blackColor] set]; CGContextSetLineWidth(ctx, 1.0); x = 100; y = 100; CGContextMoveToPoint(ctx, x, y); CGContextAddLineToPoint(ctx, x + 100, y)

    パキッとした描画
  • ありがとう alloc-init

    Objective-C では、オブジェクトの生成に alloc と init などのイニシャライザを組み合わせて使うというのは、ちょっとでもかじったことがある方はご存じでしょう。 MyObject *obj = [[MyObject alloc] init]; 今日はこの仕組みについてです。まず、この alloc-init について2つのポイントを挙げておきます。 呼出し側はイニシャライザの戻り値を使うことになっている イニシャライザはクラスのインスタンスメソッドとしてプログラマが追加/オーバーライドできる Objective-C ではこのことが言語の基として存在しているおかげで、オブジェクト生成の柔軟性がぐっと上がっています。イニシャライザはプログラマが実装するので、どのようなインスタンスを返すかは自由です。上記の例で言えば MyObject の init は、MyObject そのも

    ありがとう alloc-init
  • UITextField でのバリデーションのタイミング

    アプリによってはユーザーの入力値をバリデーションする必要がある場合があります。今回はバリデーションを行うタイミングについて書きたいと思います。 今回は以下のようなアカウント情報入力画面を考えてみます。 UITextField が画面に表示されている NavigationBar には「保存」ボタンが設置されている 入力値が「カラ」もしくは「空白文字」以外の場合を正常な入力とする UITextField への入力値が不正な値の場合には「保存」ボタンを無効化する UITextField のデリゲートでは不十分? UISearchBarDelegate には以下のような入力後に呼ばれるデリゲートメソッドがあります。 - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText しかし、UITextFi

    UITextField でのバリデーションのタイミング
  • Settings.bundle でデバッグ向け設定を追加する

    Settings.bundle を作成 特定のビルド設定で Settings.bundle を削除するようなビルドスクリプトを追加 ビルド設定にユーザー定義変数を定義 適宜、UserDefaults の任意の値を参照するようなコードを追記 方法 こちらのドキュメントを参考に Settings.bundle を作成 ビルドスクリプトを追加 Xcode のメニューバーから ”Project” > ”New Build Phase” > ”New Run Script Build Phase” をクリック 出てきたウインドウに以下のようなスクリプトを記入 if [ "${DELETE_SETTINGS_BUNDLE}" == 1 ]; then rm -Rf "${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}/Settings.bundle" fi ユーザー定義変

    Settings.bundle でデバッグ向け設定を追加する
  • 表示言語をプログラム側で制御する

    通常は端末設定の言語で表示言語が決まっていきますが、アプリ内の文言を端末設定とは違う言語で表示したいというシチュエーションもあるかと思います。今回は、その表示言語をアプリ内から切り替える方法をご紹介します。 端末設定に従う場合 通常通り Localizable.strings ファイルを作成します。ここでは例として日語と英語の二種類を作ってみます。 Localizable.strings (jp) /* comment */ "hello" = "こんにちは"; Localizable.strings (en) /* comment */ "hello" = "hello"; この Localizable.strings ファイルを使うためには、通常 NSString *str = @"hello"; としていたところを NSString *str = NSLocalizedString

    表示言語をプログラム側で制御する
  • カテゴリを活用する

    Objective-C では「カテゴリ」という仕組みを使って既存のクラスに新しいメソッドを付け加えることができます。自分で作ったクラスでもシステムが提供しているものでも付け加えることができますのでカテゴリを活用した例を紹介します。 アプリを開発しているとアプリ内で使用する色がいくつか決まってきます。これらの色を各 View などに対して直接記述することもできますが、複数の場所で同じ色を設定したい場合には処理が分散してしまい後で変更が必要になったときに都合が悪くなります。そこでカテゴリの登場です。 @interface UIColor (SGUIColorAdditions) + (UIColor *)sg_tintColor; + (UIColor *)sg_detailTextColor; + (UIColor *)sg_detailViewBackgroundColor; @end @

    カテゴリを活用する
  • iOS 標準の連絡先情報をアプリから利用する

    今週リリースした FlickAddress (App Store) は、iPhone 標準の連絡先情報をグループ管理できるようになっています。すでに iPhone に登録されている連絡先情報はそのまま FlickAddress でも扱えますし、FlickAddress で情報やグループを編集すれば、標準の連絡先アプリにも反映されます。 このように標準の連絡先データベースを利用するための API が iOS に標準で搭載されている AddressBook フレームワークです。さらに、連絡先の表示・編集等の UI を表示するための AddressBook UI フレームワークも用意されています。 今回は FlickAddress のリリースを記念して、これら 2 つのフレームワークの概要を紹介しましょう。 Address Book フレームワーク Address Book フレームワークは、i

    iOS 標準の連絡先情報をアプリから利用する
  • 知っていると便利な UIView の contentMode

    UIView には contentMode というプロパティがあります。このプロパティを使えば、面倒な画像の編集をせずに見た目を変えられます。 contentMode は View のサイズが変わる時にコンテンツをどう表示するかを決めるものです。たいてい画像をどう表示するかを決めるので、UImageView や UIButton で使われます。enum で色々定義されているので、下の画像を使って順に試していきます。 UIViewContentModeScaleToFill View のサイズと画像のサイズが同じになります。View の横幅が画像より大きいので横に伸びてしまいます。UIImage を stretchableImage にした時などに使います。 UIViewContentModeScaleAspectFit アスペクト比を維持したまま、画像のすべてが表示されるようにリサイズされ

    知っていると便利な UIView の contentMode
  • iOS で XML をパースする

    iOS で使える XML パーサーは色々あります。 iOS 標準で使えるものは以下の2点 Cocoa Touch フレームワークで提供されている NSXMLParser C言語のライブラリである libxml2 を直接利用 外部のライブラリでは主に以下のようなものがあります。 GDataXML KissXML TBXML XML パーサーの中でも SAX と呼ばれる少し扱いにくいが比較的高速で省メモリなもの。DOM と呼ばれる扱いやすいがメモリを多く消費しやすいものがあります。 今回は Cocoa Touch フレームワークで提供されている NSXMLParser の使い方を紹介します。 NSXMLParser は SAX タイプのパーサーで C言語のライブラリである libxml2 をラップしたクラスになります。XML パースのおおまかな流れは、インスタンスを初期化 → デリゲートを設定

    iOS で XML をパースする
  • MapKit の地図に自作のピンを表示する

    携帯端末の強みの一つとして、GPS 機能があります。その位置情報の活用方法としては様々なものがありますが、代表的なものは地図表示ではないでしょうか。iOS の MapKit にはデフォルトで位置を表示するピンが用意されていますが、最近自作のピンを設定する機会があったので、その方法について書きたいと思います。 MapKit のざっくりとした使い方 MapKit を使うにあたってのざっくりとした流れは MapKit.framework を追加 MapKit/MapKit.h を import MKMapView を作成し、MKMapViewDelegate で制御 となります。 MKMapView およびそのサブクラスという意味で、以下マップビューと呼ぶことにします。同様に、MKAnnotationView およびそのサブクラスという意味でアノテーションビューと呼ぶことにします。 マップビュー

    MapKit の地図に自作のピンを表示する
  • UIView を簡単に拡大・縮小・回転させる transform プロパティ

    UIView には、transform というプロパティがあります。このプロパティを使うと簡単に UIView を拡大・縮小・回転させることができます。transform プロバティの型は CGAffineTransform です。transform の中身は 3×3 の行列で、 z 軸の回転行列として扱うことができます。初期値は、単位行列になっています。 拡大・縮小について まずは拡大・縮小から説明します。 sampleView.transform = CGAffineTransformMakeScale(2, 2); このように書くと元のサイズの2倍と大きさになります。 また、以下のように書くと現在設定しているサイズの2倍になります。 sampleView.transform = CGAffineTransformScale(sampleView.transform, 2, 2); こ

    UIView を簡単に拡大・縮小・回転させる transform プロパティ
  • Xcode 4 でデフォルトになった LLVM って何?

    こんにちは。開発担当の金内です。 Xcode 4 は UI もすっかり変わりましたが、ビルドの要であるコンパイラもデフォルトが変更されています。その新しいコンパイラのキーワードが「LLVM」です。いまいち聞き慣れない方もいると思うので、今回はその LLVM について簡単にご紹介します。 ざっくりとした結論から言ってしまえば、Xcode における LLVM は従来のデフォルトコンパイラである GCC を置き換えるものです。LLVM には次のような特徴があります。 ・コンパイルが速い ・コンパイルされたコードが速い ・エラーメッセージがわかりやすい ・他のツールと連携しやすい いいことばかりですね。 しかし、コンパイラは要となる重要なコンポーネントなので、互換性などへの配慮から、Apple は GCC からの移行を少しずつ段階的に進めています。 実際、Xcode 4.0 でのデフォルトは完全に

    Xcode 4 でデフォルトになった LLVM って何?
  • iPhone と Android で同じアプリを作るときの UI 設計ポイント

    こんにちは。共同開発部企画担当の荻野と申します。 フェンリルでは自社のソフトウェアを開発する部署とは別に、他の企業や団体と共同でアプリケーションの開発をおこなう共同開発部という部署が存在します。 私はその中で企画提案の担当をしていますが、最近、「今ある iPhone アプリケーションを Android でも出したい」「iPhoneAndroid 同時開発してほしい」とのご相談をクライアント様よりいただく事が増えてきました。 「同じスマートフォン同士、親戚みたいなものなんだから簡単に平行展開できるでしょ?」と、軽いノリでご相談をもってきてくれるパートナー企業様。 いやいや、ちょっと待ってください。 iPhoneAndroid では、端末のも UI も全然違うので、そんな簡単にできるものではないのです。 そもそも OS が異なるので、 iOS では簡単にできるけど Android

    iPhone と Android で同じアプリを作るときの UI 設計ポイント
  • NSView と UIView

    こんにちは、iOS/Mac アプリ開発担当の宮です。 最近は、Sleipnir Mobile for iPhone と Sleipnir for Mac を開発しています。 Sleipnir for Mac の開発では、UIKit と AppKit の違いに苦戦しています。 出てくるクラス名も接頭辞が違うだけのものが多いので、ほとんど変わらないと思っていたのですが、ふたを開けてみると全くの別物でした。 今回は、その中でベースのビューとなるクラス NSView と UIView の違いについて紹介します。 これから Mac アプリを開発する方は参考にしてみてください。 ■ NSView には見た目に関するプロパティが全然ない NSView のクラスリファレンスを見るとビックリするぐらい UIView にあるプロパティがありません。最初、backgroundColor がないのには驚きました

    NSView と UIView
  • 【 iOS 開発 Tips】View のレイアウトをどうするか?

    こんにちは、共同開発部 iOS アプリ開発担当の図子です。 iOS 開発をしている皆さんはどういったタイミングで View のレイアウトをおこなっていますか?私は1年くらい前までは ViewController の viewWillAppar 等のメソッド内や、ViewController から View へ情報をセットするタイミングで ViewController 側から直接 View の frame やその View が持つ UILabel の frame を触っていたりしていました。これだと、想定外のタイミングでレイアウトが崩れたり、ViewController 側のコード量がふくれあがってしまいがちであまり良くないと思います。また、autoresizingMask を使うと楽ですが少し込み入ったレイアウトが必要になってくると autoresizingMask では対応できなくなって

    【 iOS 開発 Tips】View のレイアウトをどうするか?
  • Objective-C のルーツ! Smalltalk で純粋オブジェクト指向環境を体験しよう

    こんにちは。オブジェクト指向な開発担当、金内です。 名著「達人プログラマー」では年に1つは新しいプログラミング言語を覚えることが推奨されています。たしかに新しい言語に触れると、慣れ親しんだ言語で凝り固まったアタマによい刺激になります。 嬉しいことに、世の中には既に数えきれないほどのプログラミング言語があり、新しい言語もどんどんどんどん生まれているので、「もう学ぶべき言語がないっす」ということは起こりませんね。 みなさんは「次に学ぶ言語」としてどんな言語に興味を持っているでしょうか? 今回は「次に学ぶ言語」としてもぴったりな Smalltalk をご紹介します。Smalltalk は、数あるプログラミング言語の中でも純粋なオブジェクト指向プログラミング環境の手として高く評価されていて、最近では iPhone / iPad アプリの開発に欠かせない Objective-C のルーツとしても脚

    Objective-C のルーツ! Smalltalk で純粋オブジェクト指向環境を体験しよう
  • 【 iOS 開発 Tips】あなたも気付いていないかもしれないメモリリークの恐怖

    こんにちは、共同開発部 iOS アプリ開発担当の図子です。 iOS 開発をしている皆さんはメモリリークのチェックを行っていると思います。どのような方法で確認していますか?おそらく以下のような方法で行っていると思います。 ・Static Analyzer を使う ・Instruments の Leaks テンプレート でも、これだけでは見つからないメモリリークが起こりうることをご存じでしょうか? addSubview: で何枚もの View を貼っていないか? 実際にメモリリークと呼べるかどうかは微妙かも知れませんが、開発者の意図しない不要なメモリがドンドン確保される可能性があるのでここではメモリリークと書かせていただきます。 非常に気付きにくいメモリリークとは view に addSubview: する際に起こりやすいのです。 以下のコードを見てください。ある UIViewControll

    【 iOS 開発 Tips】あなたも気付いていないかもしれないメモリリークの恐怖
  • xcode Blocks を使ってコールバック

    こんにちは! 共同開発部で日々コードと戯れております、福井です。 iOS 4.0 から追加された関数オブジェクト的なものである Blocks をご存知でしょうか。この Blocks のおかげで UIView のアニメーションは劇的に書きやすくなりました。もう当に Blocks って素晴らしいですね。 アニメーション? 違う!違うよ!根的に違うよ! Blocks でやりたいのはアニメーションじゃないよ! おれは Blocks でコールバックを書きたいんだ! ということでさっそく書いてみました。 今回は MyPickerView という UIPickerView をちょっと拡張したものを作ってみます。 MyPickerView の要件はこちら ・下から出てきたり引っ込んだりする ・出てくると画面がちょっと暗くなる ・終了ボタンと完了ボタンがある ・コールバックの Blocks を受け取って

    xcode Blocks を使ってコールバック
  • より豊かな表現のために、3つのステップで実装する Core Text

    こんにちは、開発担当の眞弓です。 テキストを表示するとき、通常は UILabel などを使いますがときどき「凝った文字列を使いたい」ということはないでしょうか? そんなときのために、今回は Core Text の基的な使い方について書いてみようと思います。 人によってやり方は違うと思いますが、ちょっとしたことに使う場合に私がやっててわかりやすかった方法を紹介します。 位置を指定するやりかたはイメージしにくいので、文字列単位で扱えるやり方で実装をしてみました。 以下のような感じで、「属性付き文字列を作って、その文字列を付け足していって、最後にまとめて表示」というやり方です。 1 : 文字列を作成 2 : フレームを作成 3 : DrawRect 1 : 文字列を作成 属性付き文字列は以下のような感じで作っていきます。 atrString = [[NSMutableAttributedStr

    より豊かな表現のために、3つのステップで実装する Core Text
  • iPhone / iPad アプリのアニメーションをなめらかにするためのポイント3つ

    こんにちは。開発担当の金内です。 みなさん、Sleipnir Mobile for iPhone / iPad を使っていただけているでしょうか? 今日は Sleipnir Mobile の特徴となっている「TouchPaging」を開発したときの経験から、iPhone / iPad アプリ開発でスムーズなアニメーションを実現するためのコツをご紹介します。 タブをスワイプ操作で切り替える TouchPaging は、開発中のある段階で機能としては実現できたものの、スワイプ中のアニメーションがどうにもこうにもガクガクしていて、心地よいとは言えないものでした。はじめのうちは iPad のパフォーマンスの限界かと思っていたのですが、「いや、こんなハズじゃない」という意見が開発チームで持ち上がり、改善に向けた取り組みがはじまりました。 パフォーマンス問題なら Instruments の出番です。

    iPhone / iPad アプリのアニメーションをなめらかにするためのポイント3つ
  • スマホ対応の参考に。JavaScriptでウェブページがどのくらい拡大されているのかを取得する方法。

    こんにちは。開発担当の林です。 iPhone / iPad のウェブブラウザでページを見ているとき、けっこうな割合でピンチイン・ピンチアウトすると思いますが、それがどのくらい拡大されているのかを取得する方法を書きます。 また、応用でピンチイン・ピンチアウトされても、見た目のサイズを維持するにはどのくらい拡大すれば良いかということにも触れたいと思います。 広告バナーなんかでよく使われてるアレの仕組みです。何かのお役に立てれば幸いです。 ウェブページがどのくらい拡大されているのかを取得する // ページの幅 ÷ 表示されている幅(この行だけでいいかな) var zoomer = document.body.clientWidth / window.innerWidth; // 以下で拡大率を目視できるでしょう alert( zoomer ); // 小数点がたくさんつくので、第二位までに丸め込

    スマホ対応の参考に。JavaScriptでウェブページがどのくらい拡大されているのかを取得する方法。
  • “The executable was signed with invalid entitlements.” の対処方法

    AdHoc ビルドを作成し、実機に転送できないことがあったのでその解決方法の一つをご紹介します。 問題発生時の状況 AdHoc ビルドは以下のような手順で作成していました。開発環境は Xcode 4.2, SDK 5.0 です。 Xcode の メニューバーから “Archive” を実行 オーガナイザー の “Archives” タブでさきほどアーカイブしたものを選択 “Share…” ボタンから Contents は “iOS App Store Package (.ipa)” を選択し、対象となる “Identity” を選択 作成した .ipa ファイルをオーガナイザー経由でデバイスにインストールしようとすると以下のような警告が出てしまいインストールできませんでした。 The executable was signed with invalid entitlements. The

    “The executable was signed with invalid entitlements.” の対処方法
  • Nib ファイルから Objective-C のソースコードを生成する

    iOS/Mac 開発担当の松です。 突然ですが、Nib ファイル(以下 Nib)が好きになれません。確かに GUI の部品をレイアウトするコードを書くのは大変なので、Interface Builder で直感的に画面を作っていけるのはありがたいです。 しかし Visual Studio 等と違って、作った画面がソースコードではなく Nib というリソースになるため、言語や環境によって動的に部品を変更する必要が出てくると、Nib とソースコードに画面を作成する為の情報が散らばってしまいますね。これだと管理コストも高くなりますし、何より気持ちが悪いです。 どうしてソースコードが生成されないんだ!と憤っていたら、nib2objc という Nib から Objective-C のコードを生成するツールが、公開されていることを知りました。しかも随分前からあるみたいです。 早速ですが Mosa の、

    Nib ファイルから Objective-C のソースコードを生成する
  • 【iPhone / iPad 開発】新しい iPad の Retina ディスプレイ対応にする方法と落とし穴(+期間限定セールのお知らせ)

    こんにちは。開発担当の金内です。 みなさん、新しい iPad をもう触ってみましたか?話題は何といっても Retina ディスプレイ。4倍のピクセル数になって、まるで印刷物のような美しさです。 Sleipnir Mobile for iPhone / iPadiPad の Retina ディスプレイ対応版を App Store に申請しています。どうやらいつもより審査に時間がかかっているようなのですが、もう少々お待ちください。 今回は iPhone / iPad 両対応のユニバーサルアプリを Retina ディスプレイに対応させるにあたってのポイントと、下手をするとハマってしまう落とし穴を紹介します。さらに、iPhone / iPad アプリの期間限定セールのお知らせもあるので最後までお読みください。 ファイル命名規則UIImage への読み込み “image.png” というイ

    【iPhone / iPad 開発】新しい iPad の Retina ディスプレイ対応にする方法と落とし穴(+期間限定セールのお知らせ)
  • タッチベースブラウジングについて:開発者の視点

    こんにちは。プロモーション担当のクーパーです。 iOSがリリースされてから、いち早くアプリの開発に取り組んできたフェンリルです。今後は、iOS に限らず、タブレットの重要性が一層強くなってきそうです。GigaOM によると、ユーザーは一日を通して異なるデバイスを使いこなしながらタスクを行っており、スマートフォンやタブレットが生活に欠かせないツールになっているそうです。 iOS がリリースされて以降、スマートフォンやタブレットではタッチベース操作が主流です。小さい子供などは、マウスを握る前に、タッチベース操作に親しんでいるケースも多いのではないでしょうか。電車の中などで、器用にスワイプで画面切り替えをしている赤ちゃんを見かけて、ビックリしたりします。 今回は、Mac 版と iPhone / iPad 版の Sleipnir を開発しているチームに、タッチベース操作/ブラウジングについての見解

    タッチベースブラウジングについて:開発者の視点
  • 直感的なUIとは予想した通りの結果が得られるもののこと - ネコメシCEOブログ

    UIデザインの参考に!斬新で美しいUIをもったiPhoneアプリまとめ という記事では、紹介しているアプリのことごとくに、「ボタンが無くてシンプル」「直感的で使いやすい」などと書いてあるが、ClearのUIみたいなのを「誰でも直感的に操作できる」などと評価する理由がさっぱり理解できない。 こういうUIは基的にどれも玄人向けで、操作がジェスチャの塊になってしまっているものは、それが使いこなせる俺カッケー感が高くて自己顕示欲を満たしやすい。"そのように操作できるUIデザイン"が気持ちいいのではなく、"そのように操作している自分"が気持ちいいの間違いなんじゃないだろうか。 ボタンが一切なくてシンプルだと気持ちがいいUIになるだって? そんなわけがあるはずない。現実世界はボタンが一切なくてシンプルなUIで溢れているし、そのおかげで毎日いろんな場面でいらいらさせられている。たかが1個のレバーを上げ

    直感的なUIとは予想した通りの結果が得られるもののこと - ネコメシCEOブログ
  • 【iOS/Mac開発】超サクサクアプリへの必須ツール Instruments を使いこなそう

    こんにちは。iOS / Mac 開発担当の金内です。 使って幸せなアプリには、サクサクとした動きが欠かせませんね。自分たちで作っているアプリが「サクサク」でなく「もっさり」と言われてしまうと残念な気持ちになりますが、反面「よし。こうなったら超最適化して超サクサクなハイパフォーマンスアプリを目指す!」と誓いを立てるよい機会でもあります。 そんな誓いを立てたあなたにピッタリのツールが Xcode に付属している Instruments(インストゥルメンツ)です。フェンリルのウェブブラウザ Sleipnir for Mac や Sleipnir Mobile for iPhone / iPad の開発でも大活躍しています。 Instruments は、一般的にはプロファイラという種類のツールにあたります。プロファイラは、どのオブジェクトがどれくらいメモリを消費しているとか、どのメソッドにどれくら

    【iOS/Mac開発】超サクサクアプリへの必須ツール Instruments を使いこなそう
  • 【iOS/Mac開発】Core Data を使いはじめるのに最低限知っておけばいいこと

    こんにちは。Objective-C は Emacs で書く金内です。 ウェブブラウザ Sleipnir for Mac や Sleipnir Mobile for iPhone / iPad は、ブックマークや履歴・タブのデータを Core Data を使って管理しています。 Core Data は iOS / OS X 開発の主要フレームワークのひとつですが、どうにもとっつきにくいためか、尻込みしてしまう方も多いという印象があります。 この記事の目的は、とっつきにくい Core Data を最低限の内容にしぼって解説して、「なるほどそーいうものなのね。ボク/ワタシのアプリでも使ってみよっかなー」と思っていただくことです。 どんな時に使うの? ひとことで言えば、Core Data は Apple 純正の高機能・高性能データ管理フレームワークです。 iOS / Mac 向けのアプリである程度

    【iOS/Mac開発】Core Data を使いはじめるのに最低限知っておけばいいこと
  • パフォーマンスを向上させる25の基本Tips

    いろいろと新しいAPIが追加されている。 iOS 7 : NSHipster いくつか紹介する(ソースコードは元サイトから引用)。 NSData (NSDataBase64Encoding) NSString *string = @"Lorem ip...

  • NSString#rangeOfString: と CFStringFind ではデフォルトのオプションが違う

    こんにちは、Sleipnir for Mac 開発担当の宮です。 先ほど、CFStringFind を使うと文字列検索が速いよという記事を書いたのですが、速さの違いはオプションによるもののようです。 Twitter での、開発者さんたちの反応でわかりました。勉強になります! rangeOfString:options: には NSLiteralSearch というオプションが、CFStringFindWithOptions には kCFCompareNonliteral というオプションがあります。 それぞれ逆のことを意味するオプションがあって、デフォルト値が逆になっているわけです。 (rangeOfString:Options:) + (NSLiteralSearch) = (CFStringFind) (rangeOfString:) = (CFStringFindWithOptio

    NSString#rangeOfString: と CFStringFind ではデフォルトのオプションが違う
  • XCode4 と Instruments で実機動作中の NSZombie を探す方法

    XCode4 と Instruments で実機動作中の NSZombie を探す方法¶ XCode4 で開発していると、予期しないインスタンスが解放されてしまって、そいつを 参照しようとして BAD_ACCESS が出てしまう事が有る。 しかし、いったい何を参照しようとしているのか、なかなか見つけ難い場合がある。 Cocoaではデベロッパ向けに「ゾンビオブジェクト」というアロケーションされていないメモリへのアクセスを見つける為に解放されたオブジェクトをNSZombieオブジェクトとしてリプレースされる機能があるので、BAD_ACCESSが発生した 際にそいつを見つけやすくすることができます。 NSZombie が有効な場合のXCode4 での debug output GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Fri Sep 16

  • 正規表現と文字列がマッチしているか簡単にチェックできるオンラインツール -RegExp playground

    正規表現と文字列を入力し、それがマッチしているかどうか簡単にチェックできるオンラインツールを紹介します。 NGの画面 正規表現のチートシート ページ下部にあるチートシートから。 . 任意の文字にマッチする(改行を除く) {n} n回の繰り返し {n,} n回以上の繰り返し {n, m} n回以上m回以下の繰り返し ? {0,1}と同じ * {0,}と同じ + {1,}と同じ \w アルファベット、数字またはアンダーバー、[a-zA-Z0-9_]と同じ \d 数字、[0-9]と同じ \s 空白文字、[\t\r\n ]と同じ […] キャラクタをクラス化 [^...} キャラクタを否定クラス化 (…) パターンのグループ化 (?:…) パターンの非格納グループ化 (?=…) 先読み (?!…) 否定先読み ^ 行の先頭にマッチする $ 行の終端にマッチする \b 単語境界にマッチ \B 単語境

  • 【WordPress全ユーザー必読】最近のWPサイトに対する猛アタックの詳細と対策 - SEO Japan|アイオイクスのSEO・CV改善・Webサイト集客情報ブログ

    無料で資料をダウンロード SEOサービスのご案内 専門のコンサルタントが貴社サイトのご要望・課題整理から施策の立案を行い、検索エンジンからの流入数向上を支援いたします。 無料ダウンロードする >> 日では意外とニュースになっていませんが、世界のネット業界で今最も話題になっている問題がWordpressサイトに対する世界的な猛アタック。日語サイトへのアタックは少ないかもしれませんが、やられてからでは遅いのも事実。この記事を読んでWPサイトへのアタックに関する現状と対処法を確認しておくべし。 — SEO Japan ワードプレスのサイトに対する大規模な攻撃が継続的に行われている。この攻撃は以前から行われているものの、先週、大幅に規模が拡大していた。 ウェブ上では、この状況に関する議論が至るところで行われているが、次の2つの理由でこの記事を作成する必要があると私は感じた 1. このサイトのコ

  • これからのUIデザインのために、デザインカンプをやめてプロトタイプを作ろう(前編) | Goodpatch Blog

    先日、長谷川恭久さんとの共同プロジェクト、“Patch Project”がスタートしました。これはUIデザインの新しいワークフローを作るために立ち上がったプロジェクトです。これまでのワークフローを見直して、より良いUIを作っていくためにはどうするべきなのか、実際に何かのUIをデザインしながら模索していきます。そのプロセスや結果はどんどんオープンにしていきますのでお楽しみに! まず今回はその導入部分として、ワークフローの提案について長谷川さんに話して頂いた内容を記事にしました。前編では、デザインカンプをやめてプロトタイプを作るべき理由を中心にまとめています。 そもそもUIとは何か UIの話というと多くの人がビジュアルデザインの話をしますが、そもそもUIとは人間とコンピュータの関係を円滑にするためのものです。人がコンピュータと関わるとき、そこには必ずインプットとアウトプットがあります。その中で

    これからのUIデザインのために、デザインカンプをやめてプロトタイプを作ろう(前編) | Goodpatch Blog