GitHub活動を通して個人のキャリアを積みつつ仕事の成果を出す方法
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

GitHub活動を通して個人のキャリアを積みつつ仕事の成果を出す方法

  • 14,921 views
Uploaded on

次の週末はGitHub活動しよう

次の週末はGitHub活動しよう

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
14,921
On Slideshare
13,072
From Embeds
1,849
Number of Embeds
9

Actions

Shares
Downloads
39
Comments
0
Likes
55

Embeds 1,849

http://blog.koogawa.com 1,625
https://twitter.com 150
http://s.deeeki.com 59
http://feedly.com 4
http://slideshare-download.seesaa.net 4
http://dev.classmethod.jp 2
http://tweetedtimes.com 2
http://webcache.googleusercontent.com 2
http://geechscamp.lovepop.jp 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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活動しましょう!