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

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

on

  • 14,346 views

次の週末はGitHub活動しよう

次の週末はGitHub活動しよう

Statistics

Views

Total Views
14,346
Views on SlideShare
12,508
Embed Views
1,838

Actions

Likes
54
Downloads
39
Comments
0

9 Embeds 1,838

http://blog.koogawa.com 1615
https://twitter.com 149
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活動を通して個人のキャリアを積みつつ仕事の成果を出す方法 GitHub活動を通して個人のキャリアを積みつつ仕事の成果を出す方法 Presentation Transcript

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