今日はグリー株式会社で開催された Conference With Developers 2 に参加してきました。
Conference With Developersは、iOSに携わるすべての開発者に向けたカンファレンスイベントで、去年に引き続き2回目の開催らしいです。私は1回目に参加できなかったので、初めての参加になります。
イベント詳細ページを見ても分かる通り、LT含め、発表者陣がめちゃくちゃ豪華でした!
- Conference With Developers 2 - Peatix
イベント中のツイートもまとめさせて頂きました。
以下はイベント中のメモになります。
GitHub活動を通して個人のキャリアを積みつつ仕事の成果を出す方法
- 去年の「個人の日記」騒動で大変傷付いている
- GitHub活動
- なぜiOS界隈でGitHubが盛り上がってるのか
- Github活動への道のり
- Psycsさん、kishikawaさん、ishikawaさん見てすげーと思う
- GitHub活動を通して得たもの
- NJKWebViewProgressの話
- UIWebViewのロードプログレスを取得できる
- 2013年4月公開
- NJKはninjinkunのプレフィックス!
- このプレフィックスも一生懸命考えたけどDISられた
- UIWebViewとViewControllerとの間にProxyとして挟む
- JavaScriptのdocument.readStateでロード状況を取得
- プロト実装反日、綺麗にするのに1日
- Yahoo! JAPAN、FB Messengerで採用された!
- GitHubでも500ぐらいスターがついてる(嬉しい)
- NJKScrollFullScreen
- Facebookアプリライクなフルスクリーン表示ができる
- 2014年1月公開
- UIScrollViewDelegateをフックしている
- proxyとして動く
- 実装2日、READMEとブログ書きで1日
- GitHubでも300ぐらいスター
- Issue、プルリクもぼちぼちきてる
- GitHubチャンス
- ググっても自分の欲しいライブラリがない
- cocoaControlsで使ったライブラリも用件にあわなかった
- 毎回同じ処理を書いている時
- 作るのにおすすめのモジュール
- 手離れがいいもの
- UIがないモジュール
- UIがあるとOSのアップデートに追従しないといけない
- Web連携アプリに必要なパーツはまだ足りてない
- その他の言語、プラットフォームにあってiOSにないもの
- モジュールを使ってもらう方法
- DemoAppをつける
- 依存ライブラリはPodfile, submodulesで一発インストールできるように
- 組み込みやすくする
- 継承前提では作らない、とか
- テストを充実させる
- Description、README.mdをがんばる
- UI系ライブラリならアニメーションGIFを付けよう
- CocoaPodsにPullRequests
- ブログ書く&Twitterで周知
- @iphone_dev_jp で宣伝
- はてなブックマークiOS SDK
- OSSを仕事にした例
- シード開発者を事前に募集
- Issue, Pull Requestを使って開発
- 様々なアプリで採用
- 退職後のメンテナに
- おわりに
「公開用のObjective-Cの書き方」
Objective-C Programming Guide for Open Source Software // Speaker Deck
- LINE株式会社
- と言ってもLINEアプリを作っているわけではない
- GHFeedというアプリをプライベートで作ってる
- アプリとの衝突
- シンボルの衝突
- クラスやカテゴリメソッド、定数の衝突
- リソースの衝突
- 画像などの衝突
- ぶつかるとDuplicated Symbol !!!
- クラスの命名規則
- カテゴリの命名規則
- 3文字の小文字のPrefixを付ける
- - (void)ish_additionalMethod など
- 関連するクラス名を先頭に付ける
- 外部から不要な定数は非公開にする
- static NSString *const ISHLocalConstant = @"Foo";
- リソースの衝突
- 画像などの衝突
- main bundleには同名ファイルはおけない
- main bundleとは別の Library bundleを作ればいい
- 良い@interface
- 実装を推測できる
- 誤用をさせない
- - (id)get:(id)key だと何が返ってくるか分からないし引数もわからない
- - (id)objectForKey:(id)key にしちゃった方がわかりやすい
- 良い@property
- 変更の可否を明確にする
- ライブラリの利用に必要な情報は与える
- ライブラリの異様に不要な情報を与えない。
- readwrite
- 変更する必要があるプロパティ
- いかなるタイミングに変更されてもオブジェクトの整合性を保つことができる
- readonly
- 変更する必要のないプロパティ
- 変更を禁止したいプロパティ
- 良い通知パターン
- blocks
- 通知が特定のメソッドに結びつく
- 通知の種類が少ない場合
- openWithCompleHandler:^(BOOL success)とか
- 引数には結果を渡す
- エラーが想定される場合はNSErrorも渡す
- 構文忘れる人は http://fuckingblocksyntax.com/ 見るといいよ
- delegate
- 通知が特定のオブジェクトに結びつく
- 通知の種類が多い
- 通知の受け手が1つしかない
- scrollViewDidScrollとか
- NSNotification
- 通知の受け手が多い
- 通知の送信元と受け手が遠い時
- グローバルな通知になるので容易に採用しない
- blocks、NSNotificationで代用できないか検討しる
- KVOの説明は省略(質疑応答タイムで話題になった)
- ユニットテスト
- テストを書く理由
- テストを書いた法が開発が速い箇所がある
- コードが壊れていることをすぐに発見できる
- 長期にわたって複数人がメンテナンスするプログラムは壊れやすい
- ライブラリのテストのメリットはコストに見合うことが多い
- アプリと比べて仕様変更が少ないので、テストコードがごみになる可能性が低い
- CIを導入する
- 会場からの声
- KVOはチーム開発の場合は使うべきではないと思ってる
- わかりにくい
- 受けるメソッドの中で分岐しないといけない
- 注意しないとクラッシュする
- KVOはハック目的で使うことが多い
「デザインのわかるエンジニアになる」
- Twitter:@fladdict
- ブログ:http://fladdict.net/blog/
- GitHub:https://github.com/fladdict
- http://theguild.jp/
iPhoneアプリ設計の極意 ―思わずタップしたくなるアプリのデザイン
- 作者: Josh Clark,深津貴之(監訳),武舎広幸,武舎るみ
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/06/18
- メディア: 大型本
- 購入: 24人 クリック: 1,170回
- この商品を含むブログ (28件) を見る
モバイルデザインパターン― ユーザーインタフェースのためのパターン集
- 作者: Theresa Neil,深津貴之(監訳),牧野聡
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/09/24
- メディア: 大型本
- 購入: 15人 クリック: 316回
- この商品を含むブログ (5件) を見る
- ノート販売もしてる
- デザインとは
- 綺麗にすること
- スタイリングではない
- デザインとは設計
- 目的を提案・解決する(デザイン)
- 複雑な問題を整理して解決すること
- デザインはセンスではなくエンジニアリング
- JavaScriptより自由度の高い言語にすぎない
- 目的を提案、解決する、満足を与えるUXデザイン
- 使いやすくするUIデザイン
- わかりやすくする情報デザイン
- ジャイロを用いたパララックス
- パララックスは面白エフェクトではない
- iOS7のブラー(半透明)は「一時的なステートであること」を明示的に宣言するための手段
- iOS 7電卓問題のお話
- 一瞬の変化は信用されない(認識されない)
- まとめ
- デザインはセンスではなくエンジニアリング
- しっかりしたデザインは、位置、色、動き、音あらゆることに意味と目的がある
「JavaScriptCore.frameworkでできること」
- 株式会社ユビレジ
- JavaScriptでiOSアプリが書けるライブラリJavaScriptBridgeを公開しました
- JavaScriptCore 概要
- Objective-C JSのブリッジ
- Objective-C->JSを呼び出す
- JS->Objective-Cを呼び出す
- Objective-C<->JSオブジェクト相互変換
- JSVirtualMachine
- シングルスレッドのJS仮想マシン
- JSContext
- JSの実行コンテキスト
- JSValue
- JSオブジェクトのラッパー
- 使いどころ
- 一部のロジックをJavaScriptで記述
- JavaScriptで書かれたライブラリを使う
- JSExport
- JavaScriptからObjective-Cのオブジェクトを操作するために、あらかじめJSExportプロトコルで公開しておく必要がある
- 本気を出せばAppleを通さずにバージョンアップすることが可能
- 全クラスのJSブリッジを作った(会場拍手)
- メソッドの転送
- methodSignatureForSelector
- forwardInvocation
- 質疑
- Q. デバッグはどうやりますか?
- A. JavaScriptCoreでは例外飛んでくる。どこかでコケるとそれ以降実行されないのが困る
- Q. CoreText触りたい
- A. CoreTextは無理ですね
- ユビレジはエンジニアを募集しています
- Webもできれば即採用!?
LT
- @akisutesama
- backboarddの怪しいバグの説明
- クリーンインストールしたあと初回起動時がURLスキームだった場合に発生
- 今は治ってるもよう
- @naoya_ito
- HBFav2のはなし
- リモートのリソースは非同期で
- ダイレクトにdrawInRect
- Twitterみたいな更新
- contentOffsetを維持する
- リアルタイムのように見せる
- データ元はRSSフィード
- WebHookの仕組みを使ってる
- @maaash
- @tamotamago
- ロック画面ハックしてみた
- mixiを退職しました
- iOSでごりってみた
- Background Mode
- 無音mp3を無限ループ
- 音楽ボタンのイベントを拾う
- アートワークもいじれちゃう
- @yashigani
- @nakajijapan
- AVFoundationを使ってみた話
- ペパボ中の人
- もう一度ご覧いただこうというアプリを作ってる
- @cockscomb
- WebViewを活用するアプリの作り方
- はてなブログアプリ作ってる
- セミナー講師もしてる
- perlかわいいですよね
- WebViewJavaScriptBridge
- @frnk
- 北海道から!
- Fasteverアプリ作ってる
- iOS 7 UITextViewの良い所を探してみよう
- 文書中に画像を簡単に入れられるよ
- 文字にエフェクトかけられるよ
- NSHTMLTextDocumentType
- HTMLからNSAttributedText作ってぶちこめる
- 逆もできる
- 北海道にお越しの際は声かけてね
- @windblume
- はるかまきり作ってる
- 自分が世界を変えられると本気で信じる人たちこそが、本当に世界をかえるているのだから
- そういう気持ちで皆さんにもアプリを作って欲しい
- @yumu19
- iBeaconについて
- 受信機はiOS側でアプリ作る
- 送信機は専用の機器でもいいし、iOSアプリでもいい
- Estimoteが有名
- @watson1978
- RubyMotionの紹介
- RubyMotion中の人
- @satococoa
- iOS でポエムを綴ろう
- ポエムアプリはハイブリッド
- 安易にハイブリッドにすると泣きを見る
- @dealforest
- CocoaPods の Plugin を作ったお話
- cocoapods-browser
- @DNPP
- メタプログラミング Objective-C
- 5分じゃとても説明できないので今日は最初の部分だけ