フェンリル

Developer's Blog

2010年09月 アーカイブ

Python で Xcode を操作してみようという話

iPhone アプリを作成するのに欠かせないのが Xcodeですね。このリッチで優秀な IDE は今も着実に改良を重ね次第に使いやすくなっています。このような環境で開発できることは大変幸せなことであるわけですが、不幸にも僕の体はもはや Emacs 以外のエディタを使うことができません。とりあえずは Xcode の外部エディタに Emacs を設定して急場を凌いでいるわけですが、Xcode の各種機能は組み込みエディタと強力に連携しており、外部エディタを使用しているマイノリティは、大変肩身の狭い思いをしていると言わざるを得ないでしょう。

この状況を改善しなければなりません。そこでその第一歩目として AppleScript 経由で Xcode に以下の操作をさせてみたいと思います。

  • ビルド
  • デバッグ開始
  • 指定したファイルを開く

これができれば、外部エディタからこれらの操作ができることになるので夢が広がりますね。

続きを読む

【Grani】 新たなコラボ版 Grani、Mr. Men Little Miss × Grani リリース♪

mmlm_Grani

こんにちは、三木です。
急にヒンヤリ肌寒くなりましたね。いよいよ、食欲の秋です!
さて、寒くなってちょっぴりさみし~い気持ちになる季節に、
とってもハッピーになれる、にぎやかでカラフルなコラボ版 Grani リリースのお知らせです。

人間の持つ様々な性格を表現した 83 種類ものキャラクターが登場する ミスターメン リトルミス とのコラボレーション!
Mr. Men Little Miss × Grani」をリリースしました!!

続きを読む

Core Animation で画像を回す

データのダウンロード中など待ち状態のときに、画像をくるくる回して読み込み中だということを表したいことってありますよね。アニメーション GIF や複数の画像の切り替えでも表現できますが、今回は1枚の画像を Core Animation の transform プロパティを使って回す方法を紹介したいと思います。

まず、アニメーションには CABasicAnimation を使います。作成するときに、animationWithKeyPath に transform をセットします。

続きを読む

なぜタブバーは黒いかについての少しの考察

Tab Bar

iPhone や iPad の UI を考える上で、もっとも重要な資料といえば iPhone / iPad Human Interface Guidelines(以下 HIG)です。

これらを参考にすることは iPhone / iPad に最適なアプリを設計するために欠かせません。しかし、ただ従うだけでなく、もう一歩踏み込んで「なぜこんな風に定義されているのか」「そのためのパーツはなぜこの外観なのか」などを考えてみると、その背景が見えてくることがあります。

例えばタブバーの色。なぜ黒くてつやつやなのでしょうか。

続きを読む

iOS SDK 4 から追加された UIAutomation について

iOS SDK 4 から追加された UIAutomation について調べてみました。

UIAutomation を使えば、JavaScript で UI の自動テストが可能になります。Instruments 上でターゲットのアプリと JavaScript のファイルをつなぐと実行できます。

詳しい導入方法はドキュメントを見てもらうとして、何ができるかをまとめてみました。

続きを読む

メソッドの遅延実行

あるメソッドを一定時間後に実行したい、ということはよくあります(これを、メソッドの遅延実行と呼ぶことにします)。そんなときにまず思いつくのは NSTimer を使う方法ではないでしょうか。

NSTimer を使う以外にも、NSObject にある次のメソッドで簡単に同じことができます。

NSObject
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay

例として、iPhone 標準搭載の写真アプリを見てみましょう。

続きを読む

クラッシュの原因にありがちなイージーミス

アプリがクラッシュする原因はさまざまです。その中でも、解放(dealloc)済みオブジェクトへのアクセス (EXC_BAD_ACCESS) によるクラッシュの原因としてありがちなイージーミスを2つ挙げてみます。

インスタンス変数に autorelease なオブジェクトをそのまま代入

インスタンス変数は通常そのクラスのインスタンスがオーナーシップを持つ必要があります。この場合の典型的な書き方として次の2つが挙げられます。

  • retain で宣言されているプロパティ経由でオブジェクトを代入する場合(self.button = aButton;)
  • インスタンス変数に代入するときに retain 等 retainCount を増やすメッセージを送っておく場合(button = [aButton retain];)

この2つの書き方が混在していると次のような間違いが起こりがちです。

続きを読む

【Grani】 リサとガスパールとコラボした、Gaspard et Lisa × Grani リリースしました♪

Gaspard et Lisa × Grani

こんにちは、mayumi です。

新たなコラボレーション版 Grani リリースのお知らせです!

今回は、日本での絵本出版10周年を迎える、うさぎでもない、いぬでもない…とびきりキュートなパリの住人、リサとガスパールとのコラボレーション♪
Gaspard et Lisa × Grani」をリリースしました!!

続きを読む

開発前に決めておくべきこと

スマートフォンアプリケーション企画担当の荻のです。

基本的に技術屋さんではないのでプログラミングに関わるお話しは全然できませんが、それ以外、特に企画段階でのアプリケーションを作るときのポイントを紹介できれば、と思っています。

今回のお題は「開発前に決めておくべきこと」です。

アプリ開発で一番最初に決めること、そして一番じっくり考えて明確にしておかないといけないことは、今から開発するアプリケーションが「何に使うものなのか」ということです。

え、それってあたりまえのことなんじゃ?と思われるかもしれませんが、ここを開発前に絞りきれていなくて中途半端なアプリケーションができあがってしまうことが意外と多いようです。

続きを読む

UIKit とスレッドのお約束

アプリが小気味よく動くようにするために、メインスレッドでの重たい処理を避けて、適宜バックグラウンドスレッドに処理を回すことはよくあります。

このとき注意が必要なのは、バックグラウンドでの処理結果を画面に反映させる時の以下のお約束です。

UIKit のオブジェクトはメインスレッド以外からアクセスしてはいけない

Apple のドキュメントとしては Cocoa Fundamentals Guide に “All UIKit objects should be used on the main thread only” と書いてあります。この制限は UIKit 特有ではなく、Java の Swing などでも共通の設計です。GUI のパフォーマンスを良くするために、スレッドセーフをあえて捨てて単純化しているのです。

ではどうすれば良いのかと言うと、バックグラウンドスレッドからメインスレッドに処理を渡すために、NSObject にある次のメソッドを使います。

続きを読む

Elegant Apps Developers が始まりました

Elegant Apps Developers
iPhone App UI デザイン担当の松のよりお知らせです。
本日、フェンリル iPhone チームの開発者ブログ「Elegant Apps Developers」が始まりました!
Elegant Apps Developers は、iPhone チームのエンジニアやデザイナーが、毎日の開発で得たノウハウや工夫などをみなさんにご紹介するブログです。iPhone / iPad App 開発での技術的なコツや、デザイン、UI のポイントなど、開発に関する様々な話題を取り上げていきます。
App 開発に関わっている方や興味を持っている方と、日々の経験を共有できれば、と思っています。ぜひチェックしてください!
Elegant Apps Developers

続きを読む

Elegant Apps Developers スタート

こんにちは。フェンリルで iPhone アプリ開発を担当している かねうち です。

フェンリルでは、何人ものエンジニアやデザイナーが、もっと便利で楽しいアプリを作り上げようと毎日いろいろな問題にぶつかりながら一歩ずつ前に進んでいます。

これまで、フェンリルブランドのアプリはもちろん、お客様との共同開発という形も合わせて何本ものアプリをリリースしてきました。その経験から得られたいろいろな教訓やノウハウを、アプリ開発に携わっている方々や、開発に興味を持っているみなさんと共有したい!という想いから、このブログが始まることになりました。

このブログの兄貴分である Elegant Apps では、ユーザーにとって価値ある、まさにエレガントなアプリを数多く紹介してきました。この Elegant Apps Developers ではちょっと視点を変えて、エンジニアやデザイナーが、Cocoa Touch や Objective-C のコツ、アプリ内で工夫した UI のポイント、さらにもっと広く一般のプログラミングや UI・デザインについての話題を綴っていきます。

では、今日はあいさつということでここまで。週明けからさっそく更新していきますので、よろしくお願いします!

続きを読む

【iPhone / iPad アプリ】Mosa 1.3.1 がリリースされました

Mosa 1.3.1

iPhone App UI デザイン担当の松のです。
本日、Mosa 1.3.1 が App Store にてリリースされました(iTunes リンク)。
先日 1.3 のリリース後、不具合が発生し公開を一時停止しておりましたが
このアップデートはその不具合対応も含まれています。
1.3 で起動できなくなった Mosa を上書きインストールすると
以前のデータを引き継ぐことができます。
今回のアップデートで Mosa は iPad 対応を果たしました。
広い画面でゆったりと2ちゃんねるを閲覧することができます。
また、iPhone 4 の Retina ディスプレイにも対応しています。

続きで、今回のアップデートのポイントをご紹介します。

続きを読む

【誤検出】AVG のウイルス対策ソフトでトロイとして誤検出される問題(追記あり)

[2010-09-06 追記] 最新のウイルス定義ファイルで問題が発生しないことを確認しました。AVG を使用されている方は最新の定義ファイルをご利用下さい。
フェンリル開発担当の たば です。
昨日(9/2) の夕方から Portable Sleipnir 2.9.4 が、AVG のウイルス対策ソフトでトロイとして誤検出されることを確認しました。
フェンリルで配布しているソフトにマルウェアは含まれておりません。
主要な複数のウィルス対策ソフトで問題が検出されないことを確認しております。
詳細につきましては下記の提供元にお問い合わせ下さい。
http://www.avgjapan.com/
フェンリルからのお知らせは下記の Twitter アカウントでも行っております。
Twitterこの記事を Retweet する
Twitterフェンリルオフィシャルアカウントをフォローする
今後もフェンリル / Sleipnir をよろしくお願いします。

続きを読む