フェンリル

Developer's Blog

投稿者別アーカイブ(松本(太))

iOS SDK 5 で UIAutomation が良くなってたという話

Mac / iOS 開発担当の松本です。

以前同じチームのミヤモトさんが紹介記事を書いていた UIAutomation ですが、使いにくくて使っていませんでした。というのも以前のバージョンはコマンドラインからテストを実行できず、毎回 Instruments を手で起動して、、という残念な状態だったからです。

ところが iOS SDK 5からはコマンドラインからテストを実行できるようになったと言うので再度トライしてみました。

続きを読む

Nib ファイルから Objective-C のソースコードを生成する

iOS/Mac 開発担当の松本です。

突然ですが、Nib ファイル(以下 Nib)が好きになれません。確かに GUI の部品をレイアウトするコードを書くのは大変なので、Interface Builder で直感的に画面を作っていけるのはありがたいです。

しかし Visual Studio 等と違って、作った画面がソースコードではなく Nib というリソースになるため、言語や環境によって動的に部品を変更する必要が出てくると、Nib とソースコードに画面を作成する為の情報が散らばってしまいますね。これだと管理コストも高くなりますし、何より気持ちが悪いです。

どうしてソースコードが生成されないんだ!と憤っていたら、nib2objc という Nib から Objective-C のコードを生成するツールが、公開されていることを知りました。しかも随分前からあるみたいです。

続きを読む

プログラミング中の調べもの iOS / Mac 編

プログラマの皆さんこんにちわ。Mac / iOS 開発担当の松本です。

プログラミングをしていると毎日解らない事がわんさか出てくるので、実際にコードを書いているよりも調べものをしている時間の方が長いくらいです。

そこで今日は、僕が普段行っている解らない事の調べ方を書いてみようと思います。もっと便利な調べ方があるよ!というのがあれば是非教えて下さいね!

去年の年末に Bluetooth での URL 受け渡し機能を実装した時の事を例に取ります。最初は iOS に限らず Bluetooth を触った経験がなく、何をどうすれば良いのか全く解らない状態でした。

続きを読む

Sleipnir Mobile for iPhone / iPad の新機能を一足お先にお見せします!

Sleipnir Mobile for iPhone / iPad

Mac / iOS 開発担当の松本です。

昨日お伝えした通り、本日は絶賛開発中である 1.6 の内容をご紹介しましょう。皆様から特に多くの要望を頂いていた以下の機能を追加しました!

  • いつものサイト
  • 戻る・進むジェスチャ
  • サジェスト検索

どれも活用すればより幸せな Sleipnir Mobile ライフを送れること受け合いの機能ばかりです。

続きを読む

Yahoo Pipes を利用して Sleipnir 3 for Mac でフィードを読んでみる

split window

Mac / iOS 開発担当の松本です。

先日リリースしました Sleipnir 3 for Mac RC 版、皆様お試しいただけていますでしょうか。まだの方は是非ぜひ!既に試された方はフィードバックもいただけると凄く嬉しいです。

さて、その RC 版には”分割画面”という機能があります。OS X Lion のフルスクリーンをもっと良く使いたいという流れで実装された機能で、iMac の広い画面で使うと綺麗に2つのページを並べられて良いですね。

一方で Mac Book だと画面が狭いので、分割時に画面に収まるページがあまりありません。何か上手くハマるページは無いものかということで、Yahoo Pipes を使ってフィードを流してみる事にしました。

続きを読む

iOS アプリのバイナリを少しのぞいてみる

Mac / iOS 開発担当の松本です。

皆さんご存知のように iOS アプリを作るのに欠かせない Objective-C は、メソッドの解決が動的なこともあり、C言語のファミリーでありながら強力なリフレクション機能を備えています。そのリフレクションの必要性等から、実行ファイルには様々な情報が埋め込まれていて、何気なくバイナリエディタで開いただけで、テンションが上がるバイナリに仕上がっています。のぞかずにはいられませんね。という訳で今日はこのバイナリを少しのぞいてみたいと思います。

まずはバイナリの概要を抑えておきましょう。iOS 上の実行ファイルは Mach-O という形式で(まーく・おーと読むらしい)、これは Windows や Linux でいうところの EXE や ELF にあたります。この Mach-O のフォーマットについては
アップルからドキュメントが提供されていますね。

細かい話はドキュメントをみて頂くとして、Mach-O オブジェクトは大きくは3つの部分に分けられます。

  • ヘッダ
  • ロードコマンド
  • データ

このうちロードコマンドの中のテキストセグメント内に、クラス名一覧やらメソッド名一覧やらが含まれています。なのでとりあえず読みたいのはロードコマンド周辺だという事です。

続きを読む

PyObjC で Python から Cocoa にアクセスしてみよう

iOS/Mac アプリ開発担当の松本です。
全部 Python で書けたら良いのにと妄想しながら、毎日 Objective-C 書いてます。

さて今回は PyObjC を使って Cocoa オブジェクトに Python からアクセスしてみたいと思います。PyObjC は名前の通り Python と Objective-C の双方向ブリッジで、PyObjC を使うと Objective-C で書かれたオブジェクトを Python から使ったり、その逆も可能になります。

PyObjC は Leopard 以降の Mac OS X にインストールされている Python にバンドルされているので、最近の Mac を使っていれば特に別途インストールは必要ありません。また PyObjC のサイトを見ると最新リリースが 2009年11月となっていてメンテナンスされていないような印象を受けますが、リポジトリを見ると、ひっそりとメンテナンスが続けられているようです。

続きを読む

Clang の構文解析インターフェースを Python から叩いてみようという話

iOS App 開発担当の松本です。
Sleipnir for Mac をお試しいただいた皆様、ありがとうございます。まだの方は是非!

さて、先日の記事にもあるように、Apple は LLVM を基盤とした開発環境を着々と整備してきています。今日は LLVM 関連ツールの中でも特に注目されている Clang で少し遊んでみたいと思います。

Clang は LLVM をバックエンドとした C/C++/Objective-C のコンパイラです。GCC に比べてコンパイルが速かったり、生成されたバイナリがより最適化されてたりと、色々と優れているのですが、中でも面白いのがコンパイル途中で生成される構文木に、アクセスする為のインターフェースが用意されている点です。Xcode ではお馴染みの「コード補完」や「リファクタリング」などの機能が、このインターフェースを利用して実装されていて、方法次第でかなり強力なツールを作れる事がわかります。今回はこのインターフェースを叩いて構文解析を少しだけ行います。

続きを読む

フェンリルのエンジニアを大解剖!なアンケート結果

iOS App 開発担当の松本です。

フェンリルには色んなエンジニアの人達がいます。僕は iOS 担当なので、Windows 版 SleipnirSleipnir Start を作っている他のチームの人達が、どんなツールや環境で開発を行っていて、どんな嗜好を持っているのかとても興味がありました。

そこで先日社内のエンジニアの人達に協力いただきまして、以下のアンケートを取ってみましたのでご紹介します。
1. 好きなエディタ/開発環境
2. 好きなキーボード
3. 好きな言語
4. 好きなLL
5. これから覚えたい事

続きを読む

Localizable.strings を CSV に変換する Python スクリプト書いた

先日リリースした FlickAddress では日中英、3つの言語に対応しています。日英くらいだとチーム内で大体翻訳できるわけですが、中国語となるとチーム内で処理できず、翻訳者の方とやり取りが発生します。するとやり取りの為の中間ファイルを作ったり等、時間がかかって仕方ありません。また日中英だけでも十分大変なのに、さらに多くの言語に対応するとなると、個々の Localizabl.strings を管理していくのでは話になりません。そこで Localizable.strings と CSV を相互に変換するスクリプトを書いてみました。

続きを読む

Xcode のファイルツリーを名前順に並べたいという話

Xcode の左側のファイルツリー表示は、何故かファイル名が名前順に並んでおらず、並べ替える機能もありません。なのでファイル数が多くなってくると、探したいファイルが全く探せなくてイライラしますね。このファイルツリーを名前順に並べたいというのが今回の課題です。

続きを読む

GTMUnitTest で単体テストを行ってみる

今回は google-toolbox-for-mac に付属する単体テストフレームワーク GTM UnitTest を紹介します。Xcode に付属している OCUnit に比べてアプリとして実行されるのでテストコード自体のデバッグがしやすい事や通信などの非同期テストが可能などの点が優れています。

続きを読む

Emacs から Xcode を操作してみようという話

前回は Python から Xcode を操作してみました。今回は作成した Python スクリプトを Emacs 経由で実行してみたいと思います。

続きを読む

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

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

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

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

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

続きを読む