Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
和田 卓人 @t_wada
Oct 5, 2015 at #java_ja_oss
OSS についてあれこれ
和田 卓人
id: t-wada
@t_wada
github: twada
OSS についてあれこれ
assert(typeof item.id === 'strong')
| | | |
| | | false
| | "foo"
| Item{id:"foo",name:"bar"}
"string"
--- [string] 'strong'
+++ [string] typeof item.id
@@ -1,6 +1,6 @@
str
-o
+i
ng
power-assert
https://github.com/power-assert-js/power-assert
スタンド名は「ワイルド・サバンナ」
よろしくお願いします
第一部 OSSとして
この先生きのこるために
http://t-wada.hatenablog.jp/entry/active-oss-development-vs-simplicity
発端はモリスさんの講演の感想エントリ
例えば上手く設計できたソフトウェアが
あるとして、「これ以上減らすところがな
く、実質的に完成していて、手を入れると
ころもほとんどない」ことによって「開発
が活発ではなく、メンテナンスされていな
い」というイメージを与えてしまい、それ
が悪い評価につながりかねないのは、不
幸なことではないだろうか
http://t-wada.hatenablog.jp/entry/active-oss-development-vs-simplicity
http://tagomoris.hatenablog.com/entry/2015/08/31/101025
戦略1:
地道な更新
https://twitter.com/tmtms/status/635743856714055680
http://rebuild.fm/106/
https://github.com/power-assert-js/power-assert/commit/7d6552c5
戦略2:
最終コミット以外も
見てもらう
https://twitter.com/kurehajime/status/635041257400569856
https://twitter.com/nazoking/status/635216180886679552
コミット以外にダウンロード数等を見せる試み
戦略3:
プラグイン機構
https://twitter.com/kazuho/status/635009225026961408
https://twitter.com/sonots/status/634978258878988288
https://www.gitbook.com/book/azu/javascript-plugin-architecture/details
http://aosabook.org/en/index.html
http://aosabook.org/en/index.html
戦略4:
適者生存の法則
https://twitter.com/Dryad/status/635841558932099072
http://d.hatena.ne.jp/essa/20140330/p1
しかし、今の業界は、「エコシステム」の時代だ。
熱帯雨林のように、食いあいつつ共生しあうさまざな
タイプのプレイヤーが、自分の為だけの個別の意思決
定をして、その相互作用で技術が発展していく。「エ
コシステム」は矛盾だらけで、ある技術が発展するの
と同時に、そのアンチテーゼとなる技術も伸びる
「ロードマップ」が指し示す未来の方向と違う方向
に進むことは致命的な間違いだが、「エコシステム」
はむしろ中心部がレッドオーシャンで、周辺部に生き
残りが容易なブルーオーシャンがある
http://d.hatena.ne.jp/essa/20140330/p1
普通の人は「ロードマップ」
の中では真ん中を進むべきで、
「エコシステム」の中では真ん
中を避けるべきだ
http://d.hatena.ne.jp/essa/20140330/p1
第二部
自己鍛錬としての
OSS
• 週末に自分のプロダクトを頑張る作戦、失敗
• 平日と同じ馬力では書けない
• 全ての週末が空いているわけではない
• 一週間 (あるいは二週間) は長い。コード
を忘れてしまう
• そこで John Resig が行ったことは……
あの jresig でもうまくいかないこと
http://ejohn.org/blog/write-code-every-day/
1.毎日コードを書くこと。ブログ、ドキュメン
ト、その他はコードを書いたらやってよい。
2.意味のあるコードを書くこと。インデント
やフォーマットの修正、可能ならばリファク
タリングもコード書きにはカウントしない。
3.深夜 24 時前に終わらせること。
4.書いたコードを github で全て OSS にする
こと。
四つのルール
http://ejohn.org/blog/write-code-every-day/
現在の @jresig の github profile
https://github.com/jeresig
• 必要最小限のコードへの集中: 一日30分∼1時間程度で意
味のあるコードを書くことが強いられる (休日にはもっと
かけられる)
• プログラミングの習慣化: github に草を生やすのが目的で
はない。自分で自分自身のために生活習慣を変えるのが大
事
• 不安との戦い: 以前は「十分に」進んでいるか、「十分
に」完成しているか、不安があった。毎日コードを書いて
みて、進んでいるという実感は、実際の進 と同じくらい
重要だという気づきを得た
jresig に起こった変化 (1)
• 週末の過ごしかた: 以前は開発の全てを週末に けて失
敗していたが、いまや週末はそれほど重要でなくなり、
リアルライフを充実できるようになった
• バックグラウンド処理: 散歩中、シャワー中、常にコー
ドのことをバックグラウンドで考えるようになり、良
いアイデアが浮かぶようになった
• コンテクストスイッチ: 以前は週に一回の開発だったの
でコンテクストスイッチのコストがあったが、いまは
毎日なのでそれがない
jresig に起こった変化 (2)
• ワークライフバランス: 仕事/生活/自分のプロジェクト
のバランスの取り方が分かったのが最大の収穫だった。
毎日やるということは、バランスを取るということ
• まわりからの理解: 「毎日コードを書く」という習慣を
公言したことで、パートナーからの理解も得られるよ
うになった
• どれだけコードを書いたか: この習慣を続けると書く
コードやアウトプットは自分でも覚えられないくらい
の量になり、充実感を得られる
jresig に起こった変化 (3)
要するに筋トレのようなものか
http://hrnabi.com/2015/09/17/9372/
トレーニングが継続可能であるように意識しながら
仕事をしていくと、運動や食事、あとは生活習慣とい
うものの重要性に気づくことができると思います
ちゃんと目的を持つこと。記録を伸ばすようにやら
ないと効果がないように思うんです。記録を伸ばした
いと思えるかどうかって、「好きのバロメーター」の
1つです
http://hrnabi.com/2015/09/28/9411/
握力王も仰っている
自分もやってみた
https://github.com/twada
自分もやってみた
受託開発をやっている時期
ど忘れ(くやしい)
○ 毎日コードを書くこと。ブログ、ドキュメン
ト、その他はコードを書いたらやってよい。
△ 意味のあるコードを書くこと。インデントや
フォーマットの修正、可能ならばリファクタ
リングもコード書きにはカウントしない。
△ 深夜 24 時前に終わらせること。
△ 書いたコードを github で全て OSS にする
こと。
達成度
実際にやってみて
•小モジュールを沢山作るようになる
•リリース回数が思ったより多い
•年間 100 リリースくらい
•CHANGELOG 作りにコストが掛かる
•リリース作業を省力化したい
https://github.com/ajoslin/conventional-changelog
conventional-changelog
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
特定形式のコミットログからCHANGELOGを出してくれる
https://github.com/ajoslin/conventional-changelog/blob/master/conventions/angular.md
feat(pencil): add 'graphiteWidth' option
fix(graphite): stop graphite breaking when width < 0.1
Closes #28
perf(pencil): remove graphiteWidth option
BREAKING CHANGE: The graphiteWidth option has been removed.
The default graphite width of 10mm is always used for
performance reason.
第三部
semver 重要
http://semver.org/lang/ja/
http://codelunch.fm/16/
#codelunchfm でもしゃべっています
1.4.3
semantic versioning
1.4.3
major minor patch
semantic versioning
1.4.3
major minor patch
semantic versioning
下位互換性のあるバグ修正は patch を上げる
1.4.3
major minor patch
semantic versioning
下位互換性のある機能追加は minor を上げる
1.4.3
major minor patch
semantic versioning
バグ修正だろうが、機能追加だろうが、
下位互換性が無ければ major を上げる
1.4.3
major minor patch
semantic versioning
個人的にはデフォルトの挙動を変えるときに major を上げることが多い
^1.4.3
semver は作者と利用者の約束と信頼関係
~1.4.3
下位互換性のある機能追加もどんどんダウンロードする
下位互換性のあるバグ修正だけダウンロードする
完全密着
semver 警察24時
https://github.com/jashkenas/underscore/issues/1684
https://github.com/jashkenas/underscore/issues/1805
https://github.com/mozilla/source-map/issues/99
semver に
従わないと燃える
🔥 🔥 🔥 🔥 🔥
semver 警察24時
見出し
http://book.impress.co.jp/books/1113101014
では下位互換性とは何か
三つの下位互換性
•ソース互換性
•バイナリ互換性
•機能互換性
機能互換性: アメーバ効果
| Q | A
| ------------- | ---
| Bug fix? | [yes|no]
| New feature? | [yes|no]
| BC breaks? | [yes|no]
| Deprecations? | [yes|no]
| Tests pass? | [yes|no]
| Fixed tickets | [tickets fixed by the PR]
| License | MIT
| Doc PR | [ref to the documentation PR if any]
Symfony の PR 形式が る
http://symfony.com/doc/master/contributing/code/patches.html#make-a-pull-request
semver 過激派
1 commit, 1 release
ご清聴ありがとうございました

More Related Content

OSS についてあれこれ