Archive for the ‘勉強会’ Category
8/2(土) 64回Cocoa勉強会(関東)のお知らせ
次回の勉強会のお知らせです。見学の申し込みはconnpassのイベントページからお願いします。
- 日時: 2014/08/02(土) 13:00-17:00
- 会場: 新宿伊藤ビル 4F (地下鉄 新宿三丁目 E1またはE2出口 花園神社の先、ファミリーマート手前の左手にあります)
- 会費: 500円
2014-06-14 66回 Cocoa勉強会(関東)のレポート
会場はいつもの新宿伊藤ビルの貸し会議室。
参加者は20人(うち見学6名)でした。
今回はハードウェアな話が多かったでしょうか。
発表「LightBlue Bean」gadget
LightBlue Beanデバイスについて。
- Bluetooth Low Energy
- さまざまなセンサー
- Arduino互換
発売時にSDK公開のはずが、勉強会当日まで遅れた。。
価格は購入時26米ドルで、類似のkonasiが1万円近くすることを考えるとずいぶん安価。
(konasiは技適取得しているので、そのぶんの価格差では?との話も)
Arduino側の動作に電力を食っているようで、電池がすぐなくなってしまう。
発表「iOSアプリの署名」iOS
去年12月の63回での発表の続き。
未署名のコンパイル済みアプリを顧客に納品し、顧客側で署名してサブミットしたいよね。という話。
質疑応答の中で、Testflightはアーカイブされたアプリを署名しなおすことができてるので、アプリとパッケージを別々の署名で処理することができるのでは?という話も。
発表「OS Xの画面開発」Mac
MacのStoryboardの話。
iOSのようにViewControllerがresponder-chainに入るようになった!
発表「irMagician」gadget
前回4月の続き。
MacやPCと協調して利用する赤外線リモコンシステム、irMagicianについて。
類似製品であるIRKitとの比較や、受信機との組み合わせで
Macから別のMacにキーボード入力を赤外線で送るデモなどがありました。
発表「Swift」swift
WWDCで発表されたiOS/Macアプリ開発用の新言語、Swiftについて。
Playgroundで動かしながらつくった70ページ超(!)のスライドを見ながら
みんなであれこれ話しました。
次回の予定
8/2に開催予定です。
2014-04-05 65回 Cocoa勉強会(関東)のレポート
会場は、新宿伊藤ビルの貸し会議室。
参加者は、22人でした。
発表「NSURLSessionでのバックグランドダウンロード」Mac/iOS
背面実行したければBlocksでなく、デリゲートで。
デリゲートは通信できればその分だけ呼ばれるので、高速にダウンロードできる。高い頻度でデリゲートが呼ばれ状況で呼ばれる度にUIを更新する処理を行うと、それがボトルネックとなることがある。
Q. 背面実行時は、別のデーモンで処理されている?
A. 背面実行時にアプリが終了すると、通信もとまる。
Q. ストリーミング再生に使える?
A. 使えない。その場合はデータタスクを利用かな。
Q. 通信がエラーになった場合は?
A. NSErrorを渡すメソッドがあるので、それは呼ばれると思う。
発表「すれ違い通信 (Bluetooth LEとiBeacon)」iOS
CoreBluetoothを使ったすれ違い通信と、iBeaconを使ったすれ違い通信のサンプルコードを説明。
発表資料とサンプルコード
https://github.com/murakami/workbook/tree/master/ios/Wibree
発表「ガリレオをMacで動作させるまで」OSX
Galileo with Mac。Galileoはインテル製のボード。
CPUはx86系。OSはLinux。
初心者向けでなく、以前はケーブルも自作。
irMagician with Galileo and Macintosh
IR操作がUSB接続のシリアル通信でできる製品の紹介。 例えば、エアコンのリモコン操作への応用etc。
発表「はじめてのスプライトキット」iOS
関西で冬に発表した内容。
UIViewを継承しているので、Cocoa touchのUI部品と簡単にのせられる。
Sprite Kitは左下原点。シーンは左下原点だが、ノードは真ん中原点(アンカーポイント)。
アクションはByとToがあり、Byは相対的。Toは親座標の絶対値。
発表資料とサンプルコード
http://www.studioshin.com/cocoa_sample/
次回の予定
次回は6/14(土)に今日と同じ会場で開催予定です。
2014-02-08 64回 Cocoa勉強会(関東)のレポート
大雪の中、ありがとうございました。
会場は新宿伊藤ビルの貸し会議室。
参加者は12人(うち見学5名)でした。
発表「CoreDataとUndo」iOS/Mac
CoreDataのUndoをグループしたときに、登録の逆順に呼び出される保証はない。
というか順番が不定。CoreData的にはカスタムクラスを割り当てたほうがうまく動作する。
XcodeでNSManagedObjectのサブクラスもテンプレートが対応しているので、それにおまかせすればよい。
現在のCoreDataではモデルに”Ordered”の設定が可能になっている。 WWDC 2011 / Session 315参照。
ただし、(いまだに)自分でKVCアクセサを実装しないといけない。けっこうたいへん。
発表「Sony CameraRemoteAPI」Mac/iOS
SONYのレンズだけカメラ。スマートフォンに接続して使う。SDKが提供されていて、”Camera Remote API”を通しシャッターやズームが操作できる。接続はWIFIのアドホックのみ。SSDPで接続(HTTP)。
デモ。MacからHTTP経由でライブ画像を連続して取得。ズームイン/ズームアウト操作。
SSDPでのネゴシエーション時に、ブロードキャストするインターフェイス(アドレス)を指定する必要があることに注意。今は複数のインターフェイスある環境が多い。
- Mac: 有線、WIFI
- iOS: 3G回線、WIFI
など。
- Q. GETで取ってくるって繰り返しリクエストするの?
- A. GETは1回で複数のレスポンスが返ってくる。
発表「リマインダーの繰り返しを自由に指定する」Mac
リマインダーの繰り返しをアプリから指定可能なもの以外も設定したい。EventKitから操作すると、いろんな繰り返しが設定できる。
- 3週間ごと
- 毎月15日、月末
- 毎月第1、第3水曜日
発表「DictionaryServicesを使ったMigemoみたいな逐次検索」Mac
「ヒューメインインターフェイス」ジェフ・ラスキン 逐次検索を主体としたUI。
日本語だと漢字への変換があるため、アルファベットのように単純には検索できない。
ローマ字入力でのインクリメンタル検索としてはmigemoが有名どころ。
今回はObjective-C/Cocoaで類似のものを実装してみた。
デモ。青空文庫の吉川三国志テキストをローマ字入力の”sousou”から”曹操”を検索。(ひらがなの「そうそう」などもヒットする)
アプリの構成を解説。
- CoreFoundationのローマ字→かな変換を利用してひらがなを取得。
- OS付属の「辞書」のプライベートAPIを使って、かなから候補を取得。
- 候補一覧から正規表現を構成してテキスト検索。
Q. NSErrorの初期化はNULL or nilのどちらが正しい?
A. (結論出ず)
発表「SpriteKitを使ってみる」iOS
10.9とiOS7から利用可能。
ビュー > シーン > ノード という階層になっている。
ノードが画面上のアイテム。キャラクタ、ボールなど。
physicsBody描画と実体(当たり判定)サイズを別に指定できる。物理シミュレーションもphysicsBodyで指示する。
デモ。上からたくさん落ちてくる弾が操作キャラクタに当たると跳ね返る。
発表「ゲームコントローラを使ってみました」iOS
iPhoneに装着するタイプのゲームコントローラのSDKの話。iPhoneのゲームコントローラは次の2タイプ。
- コネクタで接続(今回はこちら)
- Bluetooth
方向キー、ボタンx4、LRがある。初代プレイステーションっぽい構成。
方向キーはアナログパッドで、日本のゲーム機に慣れてるとちょっと違和感あるかも。
SDKを使用して、キー入力を受け取るサンプルコードの説明。
コントローラ経由でUSB接続したときにMac/XcodeにiPhoneとして認識されないので実機デバッグがたいへん。
次回の予定
次回は4/5(土)に今日と同じ会場で開催予定です。
2013-12-07 63回 Cocoa勉強会(関東)のレポート
会場は松戸シティホテルSENDAN-YAの貸し会議室。
参加者は13名(うち見学2名)でした。
「ドキュメントベースアプリをTab化する」Mac
前回のマルチウィンドウの続き。SafariやFinderのようなタブを持ったアプリの設計について。
PSMTabBarControlを使ってTab化する。
- ドキュメントベースでないアプリのタブ化
- ドキュメントベースのアプリのタブ化
をデモをしながら実装例を示した。
「Xcode Server みんなで使ってみる」Xcode
Xcode Serverでできること。
- プロジェクト統合、アーカイブ
- Git, Subversionのリポジトリサーバ
- 複数のiOSデバイスの実機での自動テスト
単純にプライベートリポジトリとしてもサービス契約するよりも、OSX Serverの方が安価(買切り2,000円)というメリット。
Xcode Serverの
- リポジトリサーバ
- 継続的インテグレーション(CI) (Xcode Serverでは”Bot”が動いてテストを実行する)
のハンズオンを参加者で実施。→ネットワーク環境やサーバのディスク容量の問題などであまりうまくいかず。
(質疑応答など)
- Q.コードでなくプロジェクトファイル(.xcodeproj)の修正のマージって問題起きがちだけど、みんなどうしてる?
- A.関係者に「マージするよー」など周知するなどで対応。.XIBのマージも失敗するとかなり大変。
「iOS向けのフレームワーク化に挑戦」iOS
MacのようにiOS用の.frameworkを作成する手順について。
- .frameworkの配置になるようシェルスクリプト等で作成
- ライブラリの実体を静的ライブラリにする。
(質疑応答など)
- stringsファイルはビルド時にアプリにコピーが必要(そのようにビルドするようにする)
- アプリ側のコンパイル時に-objcが必要なので注意
「iOSアプリのデジタル署名」iOS
受託開発でストアへの提出を顧客にやってもらうケースでは、通常はプロジェクトファイルを納品して先方でXcode上で署名等を実施してもらうことが多い。けれど今回はそうではなく、
- ビルド済み未署名のアプリを納品
- 納品先で署名しストアに提出する
という形式にしたいことがあり、そのときにどのようにしたらよいかという話。
Xcodeの動作を調べて、どのような作業をしたらよいかをリストアップ。手順上どういった課題があるかをまとめた。
codesignコマンドについてはTN2206 Mac OS X Code Signing In Depthに詳しい。SHA1または”通称”で署名を指定する。
「Neerby Networking Multipeer Connectivity」iOS
iOS7からの機能。WIFIまたはBluetoothでデバイス間通信ができる。
- Bonjourのようにサービスタイプの名前で接続する。
- Gamekitと異なり、別アプリ間でも接続できる。
- データ型などはないので、通信データの解釈はアプリで行う。
iPhone, iPad計3台でチャットアプリをデモ。
(質疑応答など)
- Q. Mac上のシミュレータ上でも動く?
- A. ダメ。実機が必要。
次回の予定
2/8(土)に新宿で開催します。
(reporter: kimuraw)
2013-10-19 62回 Cocoa勉強会(関東)のレポート
会場は水道橋の貸し会議室 内海でした。
以下、発表の概要です。
「新しい通信クラス群NSURLSessionを使ってみる」iOS
iOS7で導入された新しい通信APIのNSURLSessionについて。
長い間NSURLConnectionが使われてきましたがついに新しくなった。セッションとタスクを分けたことが大きい。
(通常の通信)
- NSURLConnectionとは異なり、デリゲートなしで処理できる。
- 通信完了後の処理はblocksで記述する。
- デリゲート使う場合はNSURLConnectionとデリゲートメソッドが微妙に変わってるので注意。
(認証と証明書)
- 以前は両方とも同じデリゲートだったが処理が分かれた。
- 認証は以前のようにcredentialを返り値とするのでなく、用意したcredentialを使ってhandler(blocks)を呼び出す。
- 証明書でオレオレ証明書を使うには証明書の処理をまるごと実装する必要あり。正規の証明書の処理をCoreFoundationを使って書く。
全体としてすごく使いやすくなっていて、iOS7以降ならNSURLConnectionを使う理由はもうない!
議論など
- Q.オレオレ証明書って使うの?
- A.要件としてそういうお仕事がわりとあるらしい。大学など組織で自己CA立ててるケースやExchangeのテストとか。
「APIを前方互換に拡張する」Mac?
古いOSでも新しいAPIを使いたい。自分で同じ機能をカテゴリと実装して
if (新しいOS) {
OSの実装;
} else {
自分の実装;
}
としていた。これは不要になったときにコード修正個所が多いし、複数の開発者でやってると同じようなことを別々に実装してしまったりという問題もあった。
今回はObjective-Cの動的メソッド追加を利用して改善する。
- ランタイム関数class_addMethodなどを使う。
- メソッドの有無をrespondToSelector:で判定し、なかったら自前実装のメソッドを追加。
- +initialize で上述の処理を行う。
- 利用箇所ではそのまま新しいAPIを呼ぶように書く。
とする。
議論など
- Q. クラスメソッドでもできる?
- A. メタクラスに同じようにしてやればよい。
- Q. 初期化時にインスタンス生成して、respondToSelector:するのは副作用の心配がある。いくつかのクラ- スでは「最初に生成されたインスタンス」に重要な意味があるから。
- A. クラスメソッドのinstancesRespondToSelector:使うのが良いのでは。
「RFC Viewerの紹介」iOS
今までのアプリ開発のパターンをまとめた。MVCで考える。
- モデル: singletonで管理する。
- データの保存と読み出しのインターフェイスを統一する。UserDefaultsも同様。
- 通信では応答の処理にblocksを使うようにした。並列で通信するとき要求と応答の関連を明確にするため。
おまけ QA1176
Technical Q&A QA1176 Getting a Packet Traceが訳にたった。iOSアプリのデバッグでクライアントとサービス側のどちらに問題があるか調査するときに便利。
- rvictlコマンドを使うと、MacでiOS機器のtcpdumpが取れる。(rvi=remote virtual interface)
- Macと対象のiOS機器をUSB接続している必要がある。
議論など
- Singleton使うこと多い
- NSDocumentってモデルじゃなくてコントローラだよね。そもそもCocoaのMVCって本来のMVCからはずれてない?
- MVCよりも、PACで考えるほうがわかりやすいかも。
「ClangのModules」Xcode
自分の発表。Xcode5から導入された”Modules”の機能について、主にClang側からの視点で話した。
- コンパイルが速くなる(らしい)
- module.mapというファイルがあれば使える。
- ふつうのアプリ開発者は全く気にしなくて良い。勝手にXcodeがめんどう見てくれる。
「Cocoaでマルチウィンドウ」Mac
NSDocument/NSDocumentControllerの話ではなくって、アプリ(A)-モデル(M)-ウィンドウ(W)の関連ごとの設計の話。関連の1対1、1対多の組み合わせで次の4種類に分ける。
No. A:M M:W
(1) 1:1 1:1 計算機
(2) 1:N 1:1 辞書やMail.app
(3) 1:1 1:N PagesやKeynote
(4) 1:N 1:M PhotoshopやOmniGraffle
Todoアプリを作成しそれぞれのモデルの実装について説明。ウインドウのidentifierの管理など。
タブは1ウインドウに多ドキュメントだけどどうしよう?
議論など
- 見た目が単純でも複雑なパターンを使って実装することが多い。
- (1)(2)に相当するアプリでもUIDocument使う。
「不要になったシミュレータを捨てる方法」Xcode
Xcodeで古いiOSのシミュレータをインストールすることができるけれど
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/
にあるファイルを消すだけではダメで、Xcodeの次回起動時に「もう一度ダウンロードする?」とのダイアログが表示されてしまう。
~/Library/Caches/com.apple.dt.Xcode/Downloads
の.dmgファイルも削除することで再ダウンロードの確認も行われなくなる。ディスク使用量の削減的にもこっちも削除したほうがよい。
議論など
- Xcode5でMacによってiOS5のシミュレータが表示されたりされなかったりした。これってCachesの影響なのでは?
次回の予定
12/7(土)に千葉県の松戸で開催します。
(reporter: kimuraw)
2013-09-07 61回 Cocoa勉強会(関東)のレポート
会場は新宿伊藤ビルの貸し会議室でした。
以下発表など。
「メインスレッド外でNSURLConnection」iOS/Mac
“NSURLConnectionはメインスレッドじゃないと使えない”という通説があるけれども、そんなことはないよ、という話。
- delegateをふつうに実装するとメインスレッドで実行されるためUIのパフォーマンスに影響してしまう。
- GCD/NSOperationが並行実行にきょうび使われるテクニック。
- [connection setDelegateQueue:]\, [connection start]しないと操作が実行されないことに注意!
– iOS6以降(iOS5はバグってて動かない)、Lion以降 - RunLoopでがんばる方式も確立されてて、旧バージョンのOSだと有効。
「ARCにおけるRetainCountのデバッグ」Generic
メモリリークを力技で調査する話。
- CFGetRetainCount()でretain countを調べる。
- method swizzlingでretain/release/dealloc中に仕込む。
– コールスタックも-[NSThread callStackSymbols]で取得しておく。
実際にリーク50超という状態をこの方法で調べて解消することができた。
主な原因はNSManagedObjectContextのbind時のretain。明示的にunbind:が必要。ARCだってリークするよ。
(質疑応答)
- Q.Instrumentsで調査できなかったけ?
- A.Instruments使ってないので…次回?Instrumentsの使い方の発表が期待されています。
「状態の保存と復元」iOS
iOS6から導入された、State Preservation and Restorationの機能とAPIについて。
- 動作
– アプリがバックグラウンドに→保存
– アプリがアクティブに→復元
– アプリが終了→状態を破棄 - 保存の対象はビューコントローラ(+ビュー)、アプリケーションデータはここで保存しないことが推奨されている。
- XIB上でビューコントローラの”Restoration ID”でIDを付与。
サンプルによるデモ。
(質疑応答)
- Q.アプリをアップデートしたときの動作は?
- A.一度アプリが終了するので(なにもしなければ)初期画面が表示される。
- Q.復元をキャンセルすることはできる?
- A.delegateメソッドで復元するかどうかを選択できる。
(関連の話題)
アラートやシートを復元時に表示するかどうか。
そのままなら復元する。Appleは復元時には非表示にしているようだが、そのように実装するのはけっこう大変。
複数アラートでてるときの処理とかは…?→アラートは必ず1つしか出さないよう制御する派がちらほら。
「CocoaPods基礎編」iOS/Mac
ライブラリ管理ユーティリティCocoaPodsの導入と使い方について。
- プロジェクトで利用するライブラリを管理する仕組み。
- Rubyのbundlerみたいの。
- コマンドラインで操作する。
以下が決め手となって使っている。
- ソース、リソース、ライブラリの管理が容易に。
- バイナリのライブラリのみが提供されるケースや、非公開の自社ライブラリも管理できる。
実際のセットアップ、アプリをcocoapodsに移行させる、ライブラリのバージョンアップのデモ。
直接ターゲットのプロジェクトに組み込むのでなくワークスペースを利用してpodの静的ライブラリをビルドする別プロジェクトを用意するようになっていたり、.xcconfigを利用するなど実際にどのように実現されているかを説明。
podの探し方
- cocoaobjects, cocoacontrolsを見たり、評判の良いものを試してみたりなど。
- searchコマンドで探すのは無理。
(質疑応答)
- Q.画像などのリソースは?
- A.ビルドフェーズでコピーされるようになっている。
- Q.Podsのプロジェクトのコード等もバージョン管理システムに入れる?
- A.入れている。ただこれはポリシー次第で、Podfileのみでもよい(はず?)
- Q.Subversionのexternalsやgitのsubmoduleでも実現可能では?
- A.以前はそのようにしていたがCocoaPodsのほうが扱いやすい。
次回は実践編。podの作成〜公開、社内のみでの利用の手法など。
その他
NSURLのpath操作
[NSURL URLByAppendingPathComponent:]がNSStringと動作が異なっててハマった。
- http://foo/ + /bar => http://foo//bar 古いiOSのバージョンのみで起きる
- サーバによってはURLを補正してくれる(Apacheなど)ので問題が再現したりしなかったりでハマる
そもそもNSStringと比べてNSURLのappending…は遅いので注意。
また、fileスキーマではパスにディレクトリが実在するかで結果が変わったりするので注意。
インスタンス変数の可視性
カテゴリでのインスタンス変数へのアクセスには明示的に変数の宣言が必要。プロパティを宣言しただけでは内部変数は可視でないのでカテゴリ実装中ではアクセスできない。(コンパイルエラー)
(reporter: kimuraw)
2013-07-06 60回 Cocoa勉強会(関東)のレポート
会場は新宿伊藤ビルの貸し会議室。
以下発表など。
Bluetooth LE (iOS)
- Core Bluetooth(iOS5から)
– iOS6ではcentralだけでなくperipheralモードにも対応 - Bluetooth LEのプロトコル/GATT
- logitecのカメラリモコンでのサンプルとデモ
- Service UUIDやCharactaristic UUIDを調べるのにはBLExplrが便利
話題に出たリソース。
- インターフェイス5月号がBluetoothの特集
- tn2295 “Testing Core Bluetooth Applications in the iOS Simulator”
Driverについて (Mac)
- ドライバの実装はkextとIOKitの2通り
– kext: Cでcallback関数を書く。明示的に起動/停止が必要。
– IOKit: IOKitの派生クラスを書く。自動でロード/アンロードされる。 - それぞれのサンプルと動作確認例
-
32 64の両方を有効にしてビルドすることに注意
Common Cryptoを使った共通鍵の暗号と復号 (iOS/Mac)
- 関係するdeveloper文書の概要
- Common Crypto → 10.7のCC_cryptoのman参照
- 新しいSecTransform
– 10.7移行、GCD対応
– まだ整備中といった感じ
PoiCa Sensorの仕組み (iOS)
いろいろなお店のアプリ(ポイント、割引など)と連携して動作するアプリ[PoiCa](http://poica.me]の仕組みと方針について。 該当店舗に入店すると通知して。
- Wifi-専用機器(raspberry pi)-サーバといった構成(資料の図参照)
- iOS, AndroidのSDK(店舗側のアプリ組込み用あり)
- 方針: ユーザとのフェアな関係、セキュリティの担保
ZIPについて (Mac)
- 歴史的なこともあり、やたらデータ/APIがややこしい。
– ファイルの構造 - ライブラリ: minizip, Objective-ZIP, ZipKit
- コマンドラインを使うのがいちばん確実かも…?
その他の話題
- cocoapods便利!
- 10.9をVMWareで試すには、先に10.8インストールしておく必要あり。
(reporter: kimuraw)
2012-06-30 53回 Cocoa勉強会(関東)のレポート
会場は新宿伊藤ビルの貸し会議室でした。
参加者14名(うち見学4名)。
「データ解析」Mac
ふだんはperlでやっているログ(テキストファイル)の解析をCocoaでやってみる話。正規表現など。
ARCが使えるようになってこの手の処理が簡単に書けるようになった。
(質疑応答など)
- 行の取り出しだけならcomponentsSeparatedByString:が使える。
「Sandboxと XPCによるPrivilege Separation」Mac
Sandboxの概要と、Sandbox+XPC構成のアプリの実装方法について。
アプリケーションに多くの機能がある場合、使用するリソースが多種になり、Sandbox化していてもリスクは大きくなってしまう。対策として、アプリケーションを分割し、そのアプリごとにentitlementを設定することでセキュリティを高めることができる。そのとき、分割したアプリ間の連携に使用するのがXPCと呼ばれるアプリケーション間通信。
- Lion以降で利用可能
- アプリの再構成が必要になるのでけっこう大変
- WWDC2011の「Introducing XPC」がいちばんまとまっている
(質疑応答など)
-Q. XPC化は必須?
-A. 必須ではない。
-Q. XPCは名前ベースだけどインスタンスは複数起動できる?
-A. できないような…?
-Q. Androidと似てるかも?
-A. entitlementはユーザには提示されないという点でちがうかも。
「MPMusicPlayerController vs AVPlayer」iOS
iPodの曲・Podcastなどを再生するときに利用できる、MPMusicPlayerControllerとAVPlayerの2つについて機能の比較をまとめた。
- MPMusicPlayerControllerのほうが簡単。
- それぞれに利用可・不可があり、どちらか一方ではすべてを網羅できない。
- 両方を使う場合は、けっきょく2通りで全機能を実装する必要がある。
(質疑応答など)
- AVPlayerは非同期で、さらに停止などの結果を受け取れないものもある。
- AVAudioPlayerは再生速度が変えられないが、結果を受け取れる。
「Xcode You may not know…」Xcode
Xcodeの細かい機能についてのまとめ。みんなも実は知らないものがけっこうあったり、とか。
testflightを使うとbeta版のテスト依頼がAdhocと比べて簡単。
実際にインストールされたか、なども確認でき便利。
その他の話題
- ネイティブアプリ vs HTML5
- 最近はHTML5にしたいといわれる案件が多い
- 機能的に無理なものも
- 逆にWebアプリだったものをネイティブ対応にするケースも
- WebViewは(ネイティブと比べて)描画が遅い
- MicrosoftのSurface
- キーボードはデモのときには実装されてなかったぽい?
2013-05-18 59回 Cocoa勉強会(関東)のレポート
会場は松戸シティホテルSENDAN-YAの貸し会議室。
以下発表内容。
「あのキーボードの何かの中間報告」
kextの作り方のテクニックとか、kextとユーザーアプリとの通信方法等。
「耳コピ用アプリケーション」 iOS
楽器を練習するのに、楽譜を見ないで、耳で聞いて曲を弾けるようにする事を耳コピと言う。
その耳コピを支援するアプリケーションの作成の話。
複数あるオーディオ系APIのどれを使うか。
(議論など)
- Q.iTunesに入っている楽曲の波形は取れないか否か?
- A.Volumeは取れるけど波形は取れない。ハズ。
「Cocoaで”設定より規約”」
“5年後のcontrol enabler”で使ったテクニックをデザインパターンに当てはめてみた。
多分”設定より規約”パターンだと思う。
「NSFontPanelに対応するCustomViewを作る」 Mac
- changeFont:を実装する。なかでconvertFont:を実装すると対応
NSFont* theNewFont = [[NSFontManager sharedFontManager] convertFont:inOldFont]
- changeAttribute:も同様に。convertAttributes:を呼出す
- firstResponderになれるように、- acceptsFirstResponderも上書きしてYESを返すようにする
- firstResponderになったら、- setSelectedFont: isMultiple:を呼出してfontPanelの設定を変える。
NSColotPanelも同様に出来る。
「XCodeのデバッガのテクニック」 Mac
XCodeでブレークポイントをcontrolクリックするとブレークポイントに機能を追加出来る。
NSLogを毎回組み込まなくて良い。
「VMWare」 Mac
10.7, 10.8からVMWareにインストール出来る。
ハードディスク容量はとられるが、スナップショットはとっておく事。親ガメが転ぶと子ガメが死ぬ。
JISキーボードは正式にはサポートしていないらしい。
(議論など)
- RAM DISKにCoreDataファイルを入れると早く出来るかも。
- RAM DISK BUILDディレクトリを入れると早くて便利。