Tuna v0.9.1 リリースしました

By | 2015年3月28日

Tuna を使っていて少し不便なことがあったので更新しましたので、そのアナウンスです。

Tuna について少し説明すると、Aciton 付き Breakpoint を簡単に設定できる Plugin です。
Action 付き Breakpoint はすごい便利なんですけど、いかんせん設定がめんどくさすぎて気軽に使おうと思うようなものではありませんでした。

第18回yidevで「まだNSLogで消耗しているの?」を発表してきました 」が参考になるかなと思います。

v0.9.1 で追加された機能

今後、更新情報があれば Changes をアップデートしていこうと思います。
Alcatraz でインストールしている人は、一旦削除してから再インストールしてください。
自分でインストールしている人は pull して再度ビルドしてもらえれば最新版になります。

menu の位置を変更

Edit から Debug に変更しました。

Generally, Edit menu has menus for editing a TEXT itself.
Tuna's menu is used to put Breakpoints to source code.

In Xcode, menu items which use to control breakpoints are gathered in the Debug menu.
Because, I think that it might better to move Tuna menu into 'Debug' menu.

Toggle Breakpoint(Breakpoint の有効/無効を切り替える)

Breakpoint のアイコンをタップして有効/無効を切り替えることはできるんですけど、ショートカットとしては提供されていません。
わざわざマウスに持ち替えるのめんどくさいですよね?
というわけで Tuna でサポートしました。
デフォルトのショートカットとして Command + Shift + [ を設定しています。

Clear All File Breakpoint(Breakpoint を一括で削除)

Shared, Symbolic Breakpoint などは削除せずに、ファイルに紐付いている Breakpoint のみを一括で削除します。
Tuna を利用してデバッグしていると、至る所に Breakpoint の残骸だらけになってしまいます。
選択して削除するのもめんどくさいですし、
デフォルトのショートカットとして Command + Shift + ] を設定しています。

今後

ユーザーが独自で Action 付き Breakpoint を定義できるようにし、その設定を外部ファイルで管理するようにしようと思っています。

import, export もつけるつもりですけど、設定ファイルの保存場所を自由に設定できるようにしておこうかなと。
保存場所を Dropnbox にしておけば簡単に自分の設定を全ての端末で共有できるので便利ですよね。

それができれば public beta を取り除こうかなと思います。

何が要望などあれば気軽にコンタクトください。ではでは。

第18回yidevで「まだNSLogで消耗しているの?」を発表してきました

By | 2015年3月7日


yidev#18

ちょっと煽り系のタイトルにしてあれでしたが、Xcode の Plugin を作っているよという内容です。
発表して作るモチベーションががあがったので、頑張ろうかなと思います。


みれないかた

反響が良かったのでとりあえず Xcode がクラッシュしない状態にして public beta でリリースしようかなと思います。

Xcode Plugin は難しいので、誰か相談にのってくださいw

運営の方々おつかれさまでした。

爆速でプリントデバッグするCryingを作ったよ -裏-

By | 2014年12月19日

どういうフローで行き着いたかを聞かれることがあったので、iOS アドベントカレンダー19日目-裏-ということでまとめてみました。

本エントリー
爆速でプリントデバッグするライブラリを作ったよ

Swift 熱があがった

この発表を聞き質問して、なんとなく理解が深まった気がして何かできるのではないかと錯覚を起こしたのがきっかけ。

動機

本エントリーより

println から debugPrintln に書き換えたり、メソッドチェーンの途中で println を挟むのってめんどくさくないですか?

思考フロー

ruby の tapp を知っていたので、それっぽいことをどうやって Swfit で実現すればいいんだろうと思いながら、Array 等から定義へジャンプすると Swift の基本となる関数等の定義が書かれているファイルがあるので、それを読んでなんかいけそうな class とかあったりしないかなと調べ始めました。

AnyObject を拡張すれば…

コンパイルエラーで怒られてしまいます。
Optional と NSObject の拡張はできたけど、Swift のインスタンスだと使えないとか…

Protocol を拡張すれば…

Protocol を拡張したところで、実装がないから無意味。
そもそも Swift で Protocol を拡張できるかどうかは知らない。

全てのクラスを拡張すれば…

これは気合いでどうにかするパターン。
Swift で定義されてるだけならまだどうにか…なる…か…
Swift で書かれたライブラリで定義されてるインスタンスには使えないので、そんなの全てに対応するとか無理。

つまるところ基底クラスのない世界にうちひしがれた

暗礁に乗り上げ NSHipster を徘徊する

というわけで絶望にうちひしがれながら、なんか他の機能でどうにかできないかなと徘徊してると 「Swift Operators 」にいきつきました。

これを見てる時に、一つの疑問がわきました。

prefix や suffix に演算子をつけた状態でもメソッド呼び出しができるのか?

var i:Int = 0
i++.description;

これがきっかけで、演算子として tapp 的なものを新しく定義してやれば実現できるということにいきつきました。

実装

たいしたことしていないのでソースコードをみてください。

TODO

スタックトレースの結果がきたない

[2014-12-19 05:08:45 +0900] hoge
    at _TFFC11CryingTests25CryingCallPoftfixTestCase20testCallPostfixValueFS0_FT_T_u_KT_GSqPSs9AnyObject__ L:89

NSThread.callStackSymbols() を使って表示するようにしてるんですけど、これがとても見にくい。
(lldb) backtrace だとファイル名と行数がとれてるんだけど、これをどうすれば取れるかがイマイチ分かってない。

せめて addr2line 的なことがしたい。

Building assert() in Swift, Part 2: FILE and LINE」とあるけど、演算子だと引数が決められているのでダメ。

C言語の execinfo.h の backtrace でも結果は変わらない。
おそらく callStackSymbols の内部でも同じものを呼んでるのではないかという推測。

だれか分かる人教えてください。

まとめ

演算子を定義することにより、規定クラスがない世界でも生きていける。
とはいえ演算子を定義したりオーバーロードしたりしすぎると、副作用もあるのでご利用は計画的に。

iOSアプリ開発に必要な証明書をXcodeから自動で作成してみた

By | 2014年12月10日

Request Certificates with Xcode

Xcode is the easiest way to request certificates. Connect your device to your Mac and click Use for Development in Xcode's Organizer window. Sign in with the Apple ID associated with your iOS Developer Program membership and Xcode will automatically generate your certificates.

とあるので、手動では何度かやってるので Xcode から証明書を自動で作成してみました。

手動のやり方は「よく分かる!iOS アプリ開発に必要な証明書ファイルの作成方法 | アドカレ2013 : SP #4」をみると分かりやすいかと思います。

iOS Developer Program に加入し、Activate までは済ませた状態とします。

Development 証明書

General > Identity > Team を設定すれば iOS Development:~ が作成された。

※ もしかしたら Team の下にある Fix-issue を押す必要があるかもしれません。

Production 証明書

Archive を実行し、その後に Validation を実行すれば iOS Distribution:~ が作成された。

※ もしからしたら Archive だけで作成されているのかもしれません。

昔、証明書を作ったときは iPhone Development:~ みたいな名前になって気がするけど、時がたって変わったのかそれとも Xcode から作成したため名前が変わったのかは分からないんです。。。

まとめ

端末をつなげて実行すれば自動で Devices の登録もしてくれるので、 Activate さえ済ましていれば Xcode から離れずに実機で動かすまでが簡単にできるようになっていましたとさ。

とりあえず試したいって人にはいいかも

Posted in ios

横浜へなちょこiOS勉強会で「iOS エンジニアのための LLVM Optimiazation」について発表してきました

By | 2014年11月30日

先日いいお肉の日に「横浜へなちょこiOS勉強会#34.1」で発表させていただきました。

当日の資料です

話す内容を前日に変えたんで急ピッチでつくりました。
やるもんじゃないですねw

各Pass が何をしているかまで調べたかったんですけど、時間がなくて断念。
モチベーションがもてば近々どっかでまとめます。

他の発表者の内容もとても楽しかったです。
@kitasuke さんの Watchkit の devforum の話はとても参考になり質疑応答の時間がとても濃くてよかった。
@es_kumagai さんの発表は「Swift – 値付き enum 入門 〜 そして伝説へ 〜」ということもあり本当にやばかったです。
Swift のふわふわしていた Optional がわかった気がする。近々資料が公開されるみたいなので、それが待ち遠しいですね。

ということなので「第59回 Cocoa勉強会関西 – iOS/Macアプリ開発勉強会」に行けば、伝説の講義が聞けるみたいです。

主催者の @haranicle さん、おつかれさまでした。

懇親会(一心)の馬肉がうますぎてやばかったので、またいきたい。

ではでは

Posted in ios