Submit Search
GitHub活動を通して個人のキャリアを積みつつ仕事の成果を出す方法
•
56 likes
•
17,371 views
Satoshi Asano
Follow
次の週末はGitHub活動しよう
Read less
Read more
1 of 44
Download now
Downloaded 48 times
More Related Content
GitHub活動を通して個人のキャリアを積みつつ仕事の成果を出す方法
1.
GitHub活動を通して 個人のキャリアを積みつつ 仕事の成果を出す方法 https://github.com/ninjinkun/
2.
はじめに GitHub活動とは • GitHubで行うオープンソース活動 • 自分のプロジェクトの公開 • 他人のプロジェクトへの貢献
3.
はじめに なぜiOS界隈でGitHubが盛り上がっているのか • AppleのNDA緩和 (2008/10) • それまではSDKについて話すこと自体が難しかった • ASIHTTPRequest, AFNetworkingなどの成功事例 • CocoaPodsの普及
(2011 ) • GitHubがセントラルリポジトリ
4.
はじめに 個人的なGitHub活動への道のり • PsycsさんのImageStoreでiOSの勉強 (2008) • ASIHTTPRequestにお世話になる(2009) • kishikawaさん見てすげーと思う (2011) • ishkawaさん見てすげーと思う
(2012) • 自分のOSSモジュール公開 (2013)
5.
はじめに アジェンダ • 事例紹介: NJKWebViewProgress • 事例紹介: NJKScrollFullScreen • いつモジュールを作るのか • モジュールを使ってもらう方法 • 事例紹介:
はてなブックマークiOS SDK
6.
事例紹介 NJKWebViewProgress
7.
NJKWebViewProgress • UIWebViewのロードプログレスを 取得する • 2013年4月公開
8.
NJKWebViewProgress DEMO
9.
NJKWebViewProgress 実装 • UIWebViewDelegateからロードが完了したリソース の数を数える - (void)webViewDidStartLoad:(UIWebView *)webView { _loadingCount++; _maxLoadCount
= fmax(_maxLoadCount, _loadingCount); ! [self startProgress]; } ! - (void)webViewDidFinishLoad:(UIWebView *)webView { _loadingCount--; [self incrementProgress]; }
10.
NJKWebViewProgress 実装 • JavaScriptでページロードの完了をフック • document.readyState • loading => 未表示 • interactive =>
表示済、DOMアクセス化 • complete => 完了
11.
NJKWebViewProgress 実装 • UIWebViewとViewControllerとの間に Proxyとして挟む UIWebView .progressDelegate NJKWebView Progress .delegate .webViewProxy Delegate ViewController
12.
NJKWebViewProgress どうやって作ったか • 1Passwordが実現していた • CordovaのJavaScriptを読んでいてひらめいた • 暇な週末になんとなく実装、プロト実装半日、綺麗に するのに1日 • 同僚に見てもらって.podspec追加してpush
13.
NJKWebViewProgress 作った結果 • Yahoo! Japan, Facebook
Messengerで採用 • GitHub☆500 • 仕事でも使用 • 転職先でも(!)
14.
事例紹介 NJKScrollFullScreen
15.
NJKScrollFullScreen • Facebookアプリライクな フルスクリーン表示ができる • 2014年1月公開
16.
NJKScrollFullScreen DEMO
17.
NJKScrollFullScreen 実装 • NJKScrollFullScreen • • • UIScrollViewDelegateをフックしてバーを隠す タイミングを教えてくれる proxyとして動く UIViewController+ NJKFullScreenSupport • UINavigationBar, UIToolbarなどを動かす UIまわりの機能を提供するモジュール
18.
NJKScrollFullScreen 実装 UINavigationBarが隠れる UIViewController+ NJKFullScreenSupport UIScrollViewDelegate, UITableViewDelegateをproxy 発火 NJKScrollFullScreen スクロール操作 UIScrollViewDelegate
19.
NJKScrollFullScreen どうやって作ったか • 前職で必要になったが、実装が難しくて断念 • • コードは新しく書いた 当初動きのモジュールの方は作る予定がなかった • DemoApp作ってたらできてた
20.
NJKScrollFullScreen どうやって作ったか • 正月休みに実装 • ゼルダをクリア • 実装2日、READMEとブログ書き1日
21.
NJKScrollFullScreen 作った結果 • GitHub☆380 • Issue, PullRequestぼちぼち来てる • まだ仕事では未投入
22.
GitHubチャンス!
23.
GitHubチャンス! いつモジュールを作るのか • ググっても自分の欲しいライブラリがない • Github, CocoaControlsで見つかったライブラリも要 件に合わなかった • 気づけば毎回同じ処理を書いている
24.
GitHubチャンス! 作るのにおすすめのモジュール • 手離れがよいもの • UIがないモジュール • UIが絡むとOSのアップデートに追従しなければい けなくなる… • とは言っても欲しいのはだいたいUI絡み
25.
GitHubチャンス! 作るのにおすすめのモジュール • Web連携アプリに必要なパーツはまだ足りてない • 例えば… • • • URLを良い感じに使う 決定版NSDateFormatter 他の言語、プラットフォームにあってiOSにないもの • この前見つけた JLRoutes
26.
モジュールを 使ってもらう方法
27.
モジュールを使ってもらう方法 • 試しやすくする • 組み込みやすくする • 品質を高める • 表現を工夫する • 広報
28.
モジュールを使ってもらう方法 試しやすくする • DemoAppをつける • 依存ライブラリはPodfile, submodulesで一発インス トールできるようにしておく
29.
モジュールを使ってもらう方法 組み込みやすくする • 例えば…継承前提では作らないとか • ObjCは多重継承ができない • • UIViewControllerのサブクラスだと使いづらい 疎な設計はカスタマイズ性を高める • オプションを増やすよりハックしやすい設計を工夫
30.
モジュールを使ってもらう方法 品質を高める • テストを充実させる • CIを導入する • このあたりはishkawaさんが話してくれるはず!
31.
モジュールを使ってもらう方法 表現を工夫する • GitHubのDescriptionと README.mdをがんばる • • ストレートに伝わる文言 UI系ライブラリならGIFを使う • Gyazo gifおすすめ
32.
モジュールを使ってもらう方法 広報 • CocoaPodsにPullRequest • ウォッチャーが居るので、広まる可能性が高い
33.
モジュールを使ってもらう方法 広報 • ブログ書く & Twitterで周知 • @iphone_dev_jpとか • 読みやすい日本語の解説があると人が集まる
34.
事例紹介 はてなブックマーク iOS SDK
35.
はてなブックマークiOS SDK • オープンソースプロジェクトを 仕事としてやった例 • はてブの機能をiOSに組み込む
36.
はてなブックマークiOS SDK DEMO
37.
はてなブックマークiOS SDK どうやって作ったか • シード開発者を募集 • GitHub上でシード開発者向けに クローズド公開 • Issue, PullRequest
多数 • テスト+CI整備 • 1ヶ月後に正式公開
38.
はてなブックマークiOS SDK どうやってOSSを仕事にしたか • SDK構想を前からしつこく話していた • Pocket SDK等を研究、出すならOSS • GitHubで公開を提案 • 個人活動でGithubでの振る舞いが多少分かっていた ので話を進めやすかった
39.
はてなブックマークiOS SDK どうやってOSSを仕事にしたか • 社内にコードレビューできる体制が整った • 最初のバージョンの品質担保 • OSSプロジェクトとして参加したいか見てもらう • 一人ではできなかった
40.
はてなブックマークiOS SDK 作った結果 • 様々なアプリで採用 • アクティブユーザー数への好影響 • 退職後もメンテナに • SDKを作るならGitHubでやるのがおすすめ!
41.
おわりに
42.
おわりに 大事なことはみんなPerlに教わった • OSSハッカーのロールモデルは既にある • CPAN • Perlライブラリのリポジトリ • 企業の垣根を越えてCPANにコミットする文化がある • 転職しても前職で作ったモジュールのメンテを続けて いたりする
43.
おわりに まとめ • OSSモジュールは個人と仕事の両方に良い影響がある • • • 業務効率化、見えやすい実績、承認 GitHubは履歴書 アプリ作るより簡単でメンテコスト低い
44.
次の週末は GitHub活動しましょう!
Download