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ディレクトリを入れると早くて便利。

2013-03-23 58回 Cocoa勉強会(関東)のレポート

会場は今回も新宿伊藤ビルの貸し会議室

以下発表など。

チーム開発(その他)

お仕事でアプリ開発してて出てくるあれこれ。

iOSアプリの開発で「ぜんぶやってください!」なとき、Dev Centerのプロビジョニングポータル上の作業とかもおまかせされちゃうケースがあるよねえ。自分をチームに入れるのも結局自分で操作したり。規約改訂後に顧客で”agree”してないのがブロックになっちゃったりとか。オペレーション時は顧客の責任者に立ちあってもらうようにしてる、などなど。
(日本では?)昨年から導入されたvolume purchaseだとenterprise developer programとちがって、前者は開発のプロビジョニングが期限切れてもユーザは使い続けられるってのがメリットにもなるよね。

自分のApple IDが複数のチームに所属してるときはログイン後に選べる。顧客ごとにIDを作る(委託側がID用意する)ケースが多い?
in app purchaseのテストではIDがたくさん必要なのでまとめて登録しとく派が多いようです。

プロジェクト管理だとITS効果あるけど、チケットの粒度や文化的になじまない現場もあったり。「バグ」と言う単語を使わないようにしてる人もいるそうです。

Makers手法を用いた自作キーボード (その他)

(ハードウェアの)キーボードを自作する話。

UndoManager (iOS/Mac)

NSUndoManagerによるアンドゥ/リドゥ管理について。

  • Core Data使ってると、そのUndo/Redoも登録されてるので注意。操作をグループ化するメソッドを使う。
  • Redo実装するときははじめから設計に入れとかないとあとで大変。
  • 予期しない動作になるときは標準クラスのメソッドにmethod swizzlingを使って原因となるアクションを調べると便利。

performSelectorのススメ (iOS/Mac)

NSObject Protocolのメソッド(=ほぼ全てのオブジェクトで使える)”performSelector:withObject:afterDelay:”で、delayに0.0を渡すテクがいろいろ便利!という話。

run loopを1回だけまわして次の回に実行するように指示することになる。こんなときに便利。

  • あとでまとめて実行することができるので描画パフォーマンスの向上に効果有り。
  • 描画させてから実行したい処理(位置の判定、描画画像の取得)で便利。
    – timerで”0.1秒後”など指定するよりもrunloop 1回後のほうが意図としても正しい。
  • cancelPerformSelectorsWithTarget:系のメソッドで実行指示を取り消せる。

デメリット

  • 乱用するとアニメーションなんかはおかしくなるときがある。

(議論など)

  • そーいえばNSTimerもrun loop依存だから、それほど正確じゃないよね。
  • ゲーム開発のときなんかは正確にきざめるのが欲しい。

その他の話題

  • 法人向けのソリューションだと最近はiOS » Android
  • 5月からのRetina対応
  • iADでけっこう売上立つようになってきた
    – iAD使ってるとよその広告会社から営業がけっこう来たり…

2013-01-26 57回 Cocoa勉強会(関東)のレポート

会場は今回も新宿伊藤ビルの貸し会議室

以下発表など。

RSA公開鍵

SSL使っててさらにデータを暗号化する価値ってどーなの?とかについて議論してた気がします。

iOSでGIF画像を扱う (iOS)

iOSでガラケーとメールをやりとりする際にGIFを使いたい。古い機種だとpngが扱えないものがあるから。GIFLIBを使った実装の手法とデモ。

(議論など)

  • GIFLIBでもメモリで直接扱えるのでは。zlibあたりのサンプルを参考に。
  • Core GraphicsでGIF使えるよ。http://www.studioshin.com/cocoa_sample/index.html

Baseによるローカライズまとめ (iOS)

最近のXcodeのBase+言語ごとのstringsによるローカライズのまとめ。

(議論など)

  • Q. autolayoutならボタン等の幅も自動的に調整される?
  • A. Apple的にはYES。constraintはnibでなくコードで書く派の人もいました。
  • Q. コマンドラインの変換ツールとかない?
  • A. ibtoolでいけるかも…?

5年後のcontrol enabler. (Mac)

ツールバーやメニューは有効/無効を制御するのは簡単だけれど同様にビュー上のアイテムも有効/無効を制御したい。そんな制御クラスを作ったよ。以前の同様の発表からリファインしてこーなったとか。

Nesting Scroll Views (iOS)

ネストしたテーブルビューでランドスケープ表示したときの動きがおかしい。→みんなでデバッグ。→解決せず・・・

CocoaSQLMapperについて (iOS)

SQLiteを使うライブラリCocoaSQLMapper。iBatisっぽく使える。資料が発表者の方のブログに上がってます

(議論など)

  • NSDecimalNumberが使えるとうれしい(これは最近実装された)、to-manyが使えるとうれしい
  • Q. Core Data使わない理由は
  • A. Androidとの共通化のため。サーバと同期するため。など。
  • Q. Migrationはどうしてる?
  • A. 各バージョンのMigrationスクリプトを実行するようにしてる。

Play framework + iPhone (iOS)

きょうびのiOS開発はサーバでWebサービス組んでやりとりするものも多い。で、heroku上にPlayでrestなサービスを構築する話。

iPhoneと位置情報をやりとりするアプリでデモ。Playでつくったサービスをherokuにデプロイして、実際のiPhoneで位置情報をサーバ側に保存、取り出しまで。

その他の話題

  • CESのおもしろそうなものあれこれ。iPadあるとすぐに動画見られるの便利だねえ。
  • 電子書籍ビューアのしおり位置の保存手法について。
    – この「位置」ってリフローしたらどこよ?
    – 聖書は番号がついてる
    – 法改正の条・号
  • iOSのペアレンタルコントロールの拡充案。

2012-11-23 56回 Cocoa勉強会(関東)のレポート

会場は松戸シティホテルSENDAN-YAの貸し会議室。
参加者9名(うち見学1名)。

「個人開発者用WebSite構築」その他

個人開発者としての自分のウェブサイトを作るにあたって検討したことなどなど。

(アプリのサポート体制についての議論)

  • facebook上のみとしているケース
  • AppStoreのレビューは開発側から返信書けないのが困りモノだよね
  • サポートメール送信機能にアプリ/OSのバージョン等の情報をあらかじめ入れるようにしている

「小ネタ集」iOS/Mac

クイズ

  • @”abc” “def”は構文としてokか?
  • synthesizeが今でも必要なケース
  • Xcodeのリファクタリング
    • ファイル名やNib内のクラス名も変更される
    • CoreDataのエンティティが誤って変更されてしまったことがある
  • Interface Builderのtips

iOS5/iOS6な話(?)

  • storyboardのウィンドウ生成の仕組み。
  • Autolayout/Autosizing, 回転, ローカライズ
    • AutolayoutはMacのLion, Mountain Lionで非互換なのでおすすめしない
    • ローカライズはXcode上でベース言語の指定ができるように。Storyboard+stringsで多言語対応。今まではibtoolで処理していたもの。
  • strong/weak。ビューコントローラのoutletはweak推奨。

「画面遷移と通信」iOS

通信を制御する単一オブジェクトとそれを参照するビューコントローラの実装モデルについて。

(議論など)

  • キュー/NSOperationQueueを使うのが良いのでは?
  • サーバ側から、リクエストを(並行でなく)1回ずつ投げるよう要求されるケースがけっこうある。
  • AlertViewをさまざまな用途で利用、二重表示の抑止などのために制御クラスをつくった。
  • blocksで描画するとき、ビューコントローラのキャプチャが残ってしまうことがある?(うろ覚え)

「リッチなディスクイメージの作り方」Mac

FirefoxやOmniみたいなカッコいいディスクイメージの作成方法について。

  • アイコン/背景画像/ツールバー等の非表示
  • ディスクユーティリティでは隠し機能でbzip2での圧縮が使える
    • かなり古いシステム(10.3 Pantherあたり)でも展開可能

その他の話題

  • Windows8を購入した人が2名ほど
  • マイナーな課題のときのstackoverflow.comのお役立ち度
  • 暗号化をcommon cryptとopensslコマンドでそれぞれ行うときの注意
    • プログラムで扱う場合はパスフレーズでなく初期化ベクター+キーとしたほうがよい。opensslコマンドはいろいろ親切にやってくれるので返ってハマることがある。
  • RetinaでQuartzのパフォーマンスが急に落ちたケースが。
    • 描画領域を分割して処理するようにしたら解決。100分割くらいがちょうど良かった。

2012-10-13 55回 Cocoa勉強会(関東)のレポート

会場は新宿伊藤ビルの貸し会議室でした。
参加者11名(うち見学2名)。

「ActionScriptでのネイティブとの連携について」iOS

Flash/Airアプリで、ネイティブ機能にアクセスするための方法について。

  1. Adobe Air SDKをダウンロード
  2. 4つの関数が必須。initializer/finalizer
  3. Xcode上で.aを生成→flash開発環境に持ってく
  4. ActionScript側で呼び出しを記述
  5. .swcを含めパッケージ形式にまとめ
  6. .aneをシェルスクリプトから生成(adtコマンドを使用)

iPhone 4S上でのStage3D, StageVideoを使ったシューティングゲームのデモ。

「ViewControllerのコンテナ機能」iOS

自前でビューを制御する方法とその試行結果。ビューコントローラの機能について。

  • ナビゲーションコントローラとビューコントローラの対比
  • iOSとMacのレスポンダチェーンの比較
    • iOSはビューコントローラがチェーンに含まれる

「EventKitでリマインダーの中身を探る」Mac/iOS

Mountain Lionで導入されたリマインダー(Reminders.app)のデータへのEventKitフレームワークを利用してのアクセスについて。

  • リマインダのエントリはカレンダー(EKCalendarItem)のサブクラス
  • 時刻が必須なのは使いづらいのではないか?
    • プログラム的には「終日」 で作成できる
  • 優先度がAPIにない
    • 内部的にはpriorityNumberというプロパティがある
    • 高=1, 中=5, 低=9

(質疑応答など)

  • Q.メモ(Notes.app)は?
  • A.元はメール.appの一部でiCalではないのでEventKitではアクセスできない。IMAPでアクセスできるので、そちらからのアプローチがよいのでは。
  • Q.EventKitで作成したエントリはiCould対応?
  • A.作成後はリマインダー上で作成したものと変わりないので勝手に対応となる。

「MacのRetina Display対応」Mac

MacアプリでRetina対応する場合のリソースについて。
– 1024×1024のアプリケーションアイコン、ドキュメントファイルアイコン
– 高解像度の画像リソース @2x

作成するアイコンのサイズパターン
– 最小限 – 1024のみ
– 16, 32, 128, 256, 512 + 1024の6パターン。Omniはこれ。
– 最大 – 10パターン

Icon Composerがなくなったがコマンドiconutilが使える。PDFでリソースを作った場合、ボタン用のPDFリソースで不可解な状況に遭遇した。

その他の話題

  • 専門学校での授業内容や受講者の傾向について
  • 古いMac OS X(10.1とか)をサポートするアプリ
    • 実機で確認!
  • リマインダー/ToDo管理に使っているもの
    • リマインダー
    • OmniFocus
    • OmniOutliner
    • スティッキーズ
    • 紙 / 紙のカレンダー
    • howm-vim
    • Remember the Milk (RTM)
  • Mac/iOSの各バージョンのシェア
    • NetApplications社の調査結果(http://marketshare.hitslink.com)を継続的に観測
    • Macは10.6と10.7が同じくらい。もう少ししたら10.8も含め30%ずつくらいになるかも。
    • 旧OSのサポート停止やAndroid非対応の説得材料に便利?

2012-09-01 54回 Cocoa勉強会(関東)のレポート

会場は新宿伊藤ビルの貸し会議室でした。
参加者11名(うち見学1名)。

「UIViewで簡単なゲーム」iOS

UIViewで15パズルを作る例でゲームの実装パターンを説明しました。

(質疑応答など)

  • Q.アニメーションするときにビューやレイヤを動かすことでアニメーションできるけれどそのちがいは?
  • A.レイヤをアニメーションさせる(動かす、サイズを変える)とタップ位置が実際とずれることがあるので適材適所。

「Xcode 4のプロジェクトテンプレート」Xcode

Xcode 4のプロジェクトテンプレートの構成と、そのカスタマイジング方法について説明しました。

「Mountain Lionの通知の機能を使ってみる」Mac

通知機能の実装の仕方を説明し、いろいろなところから利用できるようにコマンドラインで通知したいという話。→けっきょく通知を利用するにはパッケージされたアプリでないとダメなよう。

「NSDocumentとUTI」Mac

アプリの扱うことのできるタイプの宣言として次のの2つがある。

  • UTExportedTypeDeclarations – 自分のアプリのUTI
  • UTImportedTypeDeclarations – アプリが開くことのできるよそのUTI

世のアプリにはImportedを使うべきところでExportedを使用しているアプリがあり、それがあることで自分のアプリが思うように動作しなくなってしまう。その対処として、 +[NSDocument readableTypes] を使うことでこのような状況でも自分のアプリを正常に動作させることができる。

その他の話題

  • 電子書籍買ってる?
    • 買ってるひとはけっこうな量を。
    • 自炊派も。
  • Raspberry Piが届かない…
  • ARC使ってる?
    • 今なら有効でいいのでは
    • トラブルがあったときにretain/releaseの知識は必要
  • リークはぜんぶやっつける?
    • 状況次第(予算とか)
    • Instrumentsでは見えないリークもある

2012-05-19 52回 Cocoa勉強会(関東)のレポート

会場は新宿伊藤ビルの貸し会議室でした。
参加者 16名(うち見学 4名)でした。

「AppLinkで「選べる」アプリ」iOS

iCab mobileで使われている、URLを開くアプリを選択する仕組み AppLinkについて。

  • 配布されているコードをプロジェクトに組み込み。
  • 呼び出す側、呼び出される側、両方のアプリでAppLink対応が必要。
  • URLによってどのアプリが使えるかを判定する。

(質疑応答)

-Q.UIDocumentInteractionControllerでよいのでは?
-A.UI…はUTI/ファイルタイプで、AppLinkはURLで判定を行うところがちがいのようです。

「アプリケーション開発の見積もり」misc

開発コストの見積もり方法の話。以下、ディスカッション。

  • 実際には見積もり依頼されたら即答が求められちゃうよね…
  • iOSだとビューコントローラ単位で見積りするのがおすすめ。
    • 画面重要!
  • ネットワーク、GPSの検証は時間がかかるので注意。
    • GPSなら、実際に移動して実機でチェックするのが重要。
    • 精度、アプリとして求められる動作(カーナビなら建物に突っ込まないとか)
  • 初期に工数見積もりして金額を決めるという形式でなく、期間に対して請求するというのもあり。仕様が不安定な案件に有効。

「クラウド化する開発者の作業環境」misc

最近の開発・コミュニケーション環境のまとめとかディスカッションなど。

  • バージョン管理システム -> 今回の参加者ではsvnが多い。他にはgit, hgなど。
    • Xcodeのgit対応
    • クライアントアプリ -> SourceTree, Tower
      • 今はSourceTreeオススメっぽい。タダだし。
      • Github for Macはgithub専用みたい? issueの管理はアプリではできない。
    • 受託開発での運用、客先への納品スタイル。
  • 課題管理 -> Backlog[7], redmine
    • Backlog
      • プログラマーでない人にも使いやすくなっていて良い。多言語対応。
      • バーンダウンチャートは開発者でない人にもわかりやすい。
    • 慣れると顧客も適切に入力してくれるようになる。
    • 週次のミーティングなどでチケットの一覧をレビューするスタイル。
    • Excelとかイマドキありえないよねー(実際にはあります)
    • redmineもgitみたいに分散化できない? 客先にいないときも使いたい。
  • 文書管理 -> Wiki, Sphinx, Google Docs
    • Google Docsは複数ユーザ同時編集ができるのが便利
  • APIドキュメント -> Doxygen, HeaderDoc, jsdoc-toolkit
    • いつのまにかDoxygenがObjective-Cをサポート。
    • jsdoc-toolkit -> UIがjs、バックエンドがObjCというケースで
      UI開発側へのAPIドキュメントとして利用。
  • 統合サービス(ソース管理、Wiki、課題管理)
    • Backlog, github, Codesion, bitbucket

その他の話題

  • Cocoa/UIKitだとExceptionあんま使わないよね?だいたいErrorにするような…
  • Sandbox, Gatekeeper
    • 海外でSandboxを問題視/否定的な見解
    • Gatekeeper入れるならSandbox必要ないのでは?という話
  • Bluetooth 4.0 LE
    • 省電力のBluetooth。iOSも対応。
Categories
Bookmarks