2009.04.02

AnalysisTool - ワンクリックでLLVM/Clangによる静的解析

Objective-Cプログラムを静的解析できる、LLVM/Clangの静的解析機能は、ふつーはscan-buildというコマンドを使って利用する。

stepwiseからリンクされていたスライド(ちょっと重い)"Finding bugs in your code using LLVM/Clang with a single click"によると、AnalysisToolというGUIのツールがあるとのこと。 インストールの手間がかからないという意味でも、バイナリ配布しているcheckerよりもお手軽。

AnalysisToolには、scan-buildでできる静的解析のほかにもプロダクトの分析機能があるみたいなんだけど、クラスの依存関係とかはちょっとびみょー。これ見ても、ねえ。

|

2008.10.31

第30回 Cocoa勉強会 (11/15)のお知らせ

11/15(土)に行われる、Cocoa勉強会のお知らせ。見学の申し込みは勉強会のメールフォームからどうぞ。 会場は南青山です。

概要

  • 日時:2008年11月15日(土)13:00 - 18:00
  • 会場:南青山ビル 8F 表参道駅すぐ
  • 参加費:500円(勉強会メンバー・見学者 共)
  • 発表(2008.11.04 現在)
    • 調整中。決まったものからのせていきます。

ほかの地域

|

2008.09.24

Cocoa勉強会 九州 発足

今まで関東と関西で活動していたCocoa勉強会ですが、このたび九州の勉強会も発足することになりました。

11/29(土)に、福岡市でキックオフミーティングを開催します。 お近くの方は気軽に参加してくださいねっ。 都合つけて、自分も行ってみる予定(プチ旅行も兼ねて)。

|

2008.09.11

RuntimeBrowser 0.91、なんとiPhone対応

Cocoaのランタイムからクラス情報を表示するアプリケーションの老舗、RuntimeBrowserがGoogle Codeに移って復活していた(Project Builder形式のコードが昔にリリースされてそのままだったのを、誰か引き継いだっぽい)のは知っていたのだけど、最近objc-language MLに新バージョンのリリースアナウンスが流れてた。

なんとiPhone対応とのこと。

AppStoreとおしたら絶対アウトだろうねえ。。。 それ以外にもいろいろダメだろうけど。

|

2008.09.03

マルチプロセスのCocoaアプリの構成を考える

さいきん発表されたGoogle Chromeの特長のひとつに、ブラウザのタブごとにプロセスを割り当ててアプリケーションぜんたいの安定性を向上させるというものがある。

ソースコードがなかなか落とせない(うちの回線は遅い)ので、その間にどのように複数プロセスのアプリを構成できるかを考えてみる。

実現することは

  • タブひとつずつを1プロセスとする
  • ユーザからは1つのアプリであるように見える

の2つかな。

コントロール用のアプリ(メニューだけ。Dock表示)とウェブブラウザ機能のアプリ(タブっぽくみえるブラウザウィンドウ。Dock非表示)に分けて実装する感じでいけそう。ウィンドウコントローラ使えないのがちょっと悲しいかな。後者だけにして協調して制御する方法もあるけど、たぶんコントロール用に別アプリを設けるほうがOSとのインターフェイスとして実装しやすいと思う。

Macではアプリケーションは通常ひとつしか起動しない。Classic Mac OSなんかではアプリケーションファイルを複製することで、複数の同一アプリを立ち上げることができた。 でも、どう考えてもタブの数だけアプリケーションファイル用意するとかアタマワルイよね。

Mac OS Xでは、NSApplicationではなくLaunch Servicesの機能によってアプリケーションがひとつだけ起動するように制御されているので、じつはContents/MacOS/YourAppを直接実行すれば複数起動できる。

(9/5 追記)答え合わせしようとコード読んでるんだけど、Mac版はまだアプリまで構成されてないっぽい。しょんぼり。

|

2008.09.01

第22回 Cocoa勉強会 関西に行ってきた

大阪で行われたCocoa勉強会 関西に行ってきました。

当日の発表など

今回はゲストとして"荻原本"の荻原剛志さんが来てくれました。執筆の際に訳語で苦労したことなど、おもしろい話が聞けてラッキーでした。荻原さんいわく「知っていることは全て本に書いた」とのことなので、これからも気合い入れて読みましょう。

ほかにも

  • iPhoneをNintendo DS・PSPと比較した位置づけ、ゲームを移植するときに留意すべきこと
  • WebViewのJavaScriptからObjective-Cのメソッドを呼び出す方法
  • MeCabを使って日本語テキストスピーチを行う

なんかがおもしろかったです。

木村の発表「Precipitateに見る、外部リソースのSpotlight化」

自分も「Precipitateに見る、外部リソースのSpotlight化」という簡単な発表をしました。 Spotlightは、そのMacのローカルファイルをインデックス作成の対象としますが、ローカルファイルでないものを検索したいならどうするか、っていう話。Precipitateが採用している方法は単純で、検索用にローカルファイルをつくるというもの。

それはそれとして、Precipitateのmdimporterで使ってるプラグイン機構がなにやらあやしげでおもしろそうなので、あとで調べたい。

関東は来週の9/13(土)に市ケ谷でやります。自分はいけないけど。

|

2008.08.26

第3回 「詳解 Objective-C 2.0 読書会」行ってきた

内容は、記録のページに書いたのでそちらを見てください。

寝坊と道に迷ったので30分遅刻。別の地図で場所確認しとけばよかった… みなさんすみません。

今回はオーナーシップポリシーが最大のポイントなんだけど、復習にはどうするとよいだろう? 例題つくるとよいかも。 「この場合、オーナーシップをもつのはどのオブジェクトか」みたいな。 引っかけ問題はオーナーシップがゼロ、くらいか。あんまり複雑なのはプログラム側に問題アリだよな。

実際のプログラミングでは[macosx-jp:04620]に従えば問題ないと思うけど、背景の考え方はオーナーシップなんだよね、やっぱ。

オーナーシップポリシーに基づいてコードを書くと、原則としては(retaincount == オーナーの数)ということになる。すると、オーナーシップを持つオブジェクトがないという状態はどうなるの?っていうときに便利なのが自動解放(autorelease)の機能。 autoreleaseがあることで、1メソッド内などの短期のコンテキストではオーナーシップを取得せず、retainもreleaseもされないまま利用が可能という状態のオブジェクトを利用できる。これがあることで、単純な参照カウントのプログラミングよりもObjective-Cのメモリ管理はずいぶん簡単になっている。

その他。

  • どういうわけか今回はPHPの人が多かった
  • 水出しアイスコーヒー大人気
  • すぐ上のフロアが飲み屋とかマジ便利

ふりかえり。

  • KEEP
    • 開催する
    • プロジェクタはよい。次回も用意する
  • PROBLEM
    • 遅刻とかあり得ない
    • 部屋やや狭い。16人であれかあ(最大27人の部屋)
  • TRY
    • 地図は店舗のは信用しない(正しくてもわからないときもある)

次回の日程は現在調整中。 アンケートに協力ください。

|

2008.08.19

第30回 Cocoa勉強会 (9/13)のお知らせ・他

9/13(土)に行われる、Cocoa勉強会のお知らせ。見学の申し込みは勉強会のメールフォームからどうぞ。(9/4 追記:締め切りました!) 会場は市ケ谷です。

ちなみに関西のほうの次回は、8/30(土)に大阪で開催の予定だそうです。ぼくも行きます。

概要

  • 日時:2008年9月13日(土)13:00 - 18:00
  • 会場:ITS市ヶ谷健保会館会議室 D室
  • 発表(2008.08.19 現在)
    • Interface Builderで作るツールバー
    • OpenGL ESについて
    • 新しいAPIでスクリーンショットを撮ろう!
    • ほか

「Cocoa Life Vol.4」発売

Cocoa勉強会の会誌「Cocoa Life」の最新号がでました。勉強会サイトで通販しています。 内容を確認したい人は、関東もしくは関西の勉強会に見学にいくと誰か見せてくれると思います。

目次

過去の発表をまとめなおしたものです。あいかわらずマニアックな内容が多め。

  • QuickLookプラグインの作り方
  • Leopard NSMenu差分
  • PDF Kit入門 - Leopard変更点
  • インラインの文字入力
  • DiskImageへSLAを追加する
  • 多言語対応のReadMeファイル
  • Uncrustifyでコード整形
  • 識別情報の変換
  • カスタムシートとModality
  • PaSoRi x Mac 応用編
  • DTrace:はじめの一歩
  • HID Manager API
  • Quartzでのインデックス画像の取り扱い
  • アニメーションGIFの作り方
  • CGS プライベート関数の利用

|

2008.07.30

第2回 「詳解 Objective-C 2.0 読書会」行ってきた

勉強会強化月間のトリ。 内容は、記録のページに書いたのでそちらを見てください。

今回は他言語(主にJavaやC++)と相対してという角度でのObjective-Cがいろいろ聞けて、自分としてはとてもおもしろかった。 自分はいわゆるオブジェクト指向な言語ってRuby→Objective-Cと、ユルめのしかまともに経験してないからね。 「idだけ使って、クラス指定しないで書くほうが書きやすいんじゃ」というのがいちばんのヒット。そういう考え方もあるかも。

ふりかえり。

  • KEEP
    • 開催する
  • PROBLEM
    • メモをあとで見ると、意味がわからないのがけっこーある
    • 自分しゃべりすぎ
    • AirMac設置失敗(新居さん、いろいろやってもらったのにすみません)。もっと身につけてからにしよう。
    • 2時間はちょっと短い。
  • TRY
    • 質疑の記録をきちんととる。結果的に他の人の話す時間もつくれるし。
    • 平日でも会場は3時間確保する。お金で解決するならそれでokという富豪的アプローチ。

次回の日程は現在調整中。

やっぱりこの本て理論的というか座学というか、読んだら「はいok!」というものじゃないんだよね。手をばりばり動かすのと組み合わせるといい感じになりそうなんだけど、やっぱヒレガス本3版かなあ。 とりあえずヒレガス本の写経を夏の宿題(休みじゃないが)としてみることにする。

|

2008.07.19

CotEditorのソースコードにscan-buildをかけてみた

clang scan-buildによるObjective-Cプログラムの静的解析を、Cocoa製のテキストエディタCotEditor 0.9.4に対して実行し、その結果について(ぼくが)確認しました。その結果を"CotEditor 0.9.4にclang scan-buildで静的解析をかけてみた"というページにまとめました。CotEditorでは、あまり問題が見つからなかったので面白くはないかもしれません。

コードの誤読などあるかもしれませんが、なんらかの参考になればと思います。

感想にも書きましたが、elseのないifについて、通らないパスがありうるということで未初期化などの指摘が多くなる傾向があると思いました。アプリケーションのロジック的には必ずいずれかを通るとわかっていても、現在のscan-buildはそこまで考えたりはしません。逆にそういったパスにも対応しておくことで、防衛的プログラミング的なコードになるので、アプリケーションが堅牢になる可能性もあります。可読性は低下しがちになりますが。

checker-62でIBOutletが考慮されてmissing -deallocが判定されるようになったなど、短期間で改善が進んでいるようです。

|

より以前の記事一覧