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

Like this? Share it with your network

Share

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

on

  • 14,748 views

次の週末はGitHub活動しよう

次の週末はGitHub活動しよう

Statistics

Views

Total Views
14,748
Views on SlideShare
12,901
Embed Views
1,847

Actions

Likes
54
Downloads
39
Comments
0

9 Embeds 1,847

http://blog.koogawa.com 1623
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
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

GitHub活動を通して個人のキャリアを積みつつ仕事の成果を出す方法 Presentation 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活動しましょう!