OSS についてあれこれ

28,552 views

Published on

java-ja.OSS http://connpass.com/event/19690/

Published in: Technology

OSS についてあれこれ

  1. 1. 和田 卓人 @t_wada Oct 5, 2015 at #java_ja_oss OSS についてあれこれ
  2. 2. 和田 卓人 id: t-wada @t_wada github: twada
  3. 3. 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
  4. 4. スタンド名は「ワイルド・サバンナ」 よろしくお願いします
  5. 5. 第一部 OSSとして この先生きのこるために
  6. 6. http://t-wada.hatenablog.jp/entry/active-oss-development-vs-simplicity 発端はモリスさんの講演の感想エントリ
  7. 7. 例えば上手く設計できたソフトウェアが あるとして、「これ以上減らすところがな く、実質的に完成していて、手を入れると ころもほとんどない」ことによって「開発 が活発ではなく、メンテナンスされていな い」というイメージを与えてしまい、それ が悪い評価につながりかねないのは、不 幸なことではないだろうか http://t-wada.hatenablog.jp/entry/active-oss-development-vs-simplicity
  8. 8. http://tagomoris.hatenablog.com/entry/2015/08/31/101025
  9. 9. 戦略1: 地道な更新
  10. 10. https://twitter.com/tmtms/status/635743856714055680
  11. 11. http://rebuild.fm/106/
  12. 12. https://github.com/power-assert-js/power-assert/commit/7d6552c5
  13. 13. 戦略2: 最終コミット以外も 見てもらう
  14. 14. https://twitter.com/kurehajime/status/635041257400569856
  15. 15. https://twitter.com/nazoking/status/635216180886679552
  16. 16. コミット以外にダウンロード数等を見せる試み
  17. 17. 戦略3: プラグイン機構
  18. 18. https://twitter.com/kazuho/status/635009225026961408
  19. 19. https://twitter.com/sonots/status/634978258878988288
  20. 20. https://www.gitbook.com/book/azu/javascript-plugin-architecture/details
  21. 21. http://aosabook.org/en/index.html
  22. 22. http://aosabook.org/en/index.html
  23. 23. 戦略4: 適者生存の法則
  24. 24. https://twitter.com/Dryad/status/635841558932099072
  25. 25. http://d.hatena.ne.jp/essa/20140330/p1
  26. 26. しかし、今の業界は、「エコシステム」の時代だ。 熱帯雨林のように、食いあいつつ共生しあうさまざな タイプのプレイヤーが、自分の為だけの個別の意思決 定をして、その相互作用で技術が発展していく。「エ コシステム」は矛盾だらけで、ある技術が発展するの と同時に、そのアンチテーゼとなる技術も伸びる 「ロードマップ」が指し示す未来の方向と違う方向 に進むことは致命的な間違いだが、「エコシステム」 はむしろ中心部がレッドオーシャンで、周辺部に生き 残りが容易なブルーオーシャンがある http://d.hatena.ne.jp/essa/20140330/p1
  27. 27. 普通の人は「ロードマップ」 の中では真ん中を進むべきで、 「エコシステム」の中では真ん 中を避けるべきだ http://d.hatena.ne.jp/essa/20140330/p1
  28. 28. 第二部 自己鍛錬としての OSS
  29. 29. • 週末に自分のプロダクトを頑張る作戦、失敗 • 平日と同じ馬力では書けない • 全ての週末が空いているわけではない • 一週間 (あるいは二週間) は長い。コード を忘れてしまう • そこで John Resig が行ったことは…… あの jresig でもうまくいかないこと
  30. 30. http://ejohn.org/blog/write-code-every-day/
  31. 31. 1.毎日コードを書くこと。ブログ、ドキュメン ト、その他はコードを書いたらやってよい。 2.意味のあるコードを書くこと。インデント やフォーマットの修正、可能ならばリファク タリングもコード書きにはカウントしない。 3.深夜 24 時前に終わらせること。 4.書いたコードを github で全て OSS にする こと。 四つのルール http://ejohn.org/blog/write-code-every-day/
  32. 32. 現在の @jresig の github profile https://github.com/jeresig
  33. 33. • 必要最小限のコードへの集中: 一日30分∼1時間程度で意 味のあるコードを書くことが強いられる (休日にはもっと かけられる) • プログラミングの習慣化: github に草を生やすのが目的で はない。自分で自分自身のために生活習慣を変えるのが大 事 • 不安との戦い: 以前は「十分に」進んでいるか、「十分 に」完成しているか、不安があった。毎日コードを書いて みて、進んでいるという実感は、実際の進 と同じくらい 重要だという気づきを得た jresig に起こった変化 (1)
  34. 34. • 週末の過ごしかた: 以前は開発の全てを週末に けて失 敗していたが、いまや週末はそれほど重要でなくなり、 リアルライフを充実できるようになった • バックグラウンド処理: 散歩中、シャワー中、常にコー ドのことをバックグラウンドで考えるようになり、良 いアイデアが浮かぶようになった • コンテクストスイッチ: 以前は週に一回の開発だったの でコンテクストスイッチのコストがあったが、いまは 毎日なのでそれがない jresig に起こった変化 (2)
  35. 35. • ワークライフバランス: 仕事/生活/自分のプロジェクト のバランスの取り方が分かったのが最大の収穫だった。 毎日やるということは、バランスを取るということ • まわりからの理解: 「毎日コードを書く」という習慣を 公言したことで、パートナーからの理解も得られるよ うになった • どれだけコードを書いたか: この習慣を続けると書く コードやアウトプットは自分でも覚えられないくらい の量になり、充実感を得られる jresig に起こった変化 (3)
  36. 36. 要するに筋トレのようなものか http://hrnabi.com/2015/09/17/9372/
  37. 37. トレーニングが継続可能であるように意識しながら 仕事をしていくと、運動や食事、あとは生活習慣とい うものの重要性に気づくことができると思います ちゃんと目的を持つこと。記録を伸ばすようにやら ないと効果がないように思うんです。記録を伸ばした いと思えるかどうかって、「好きのバロメーター」の 1つです http://hrnabi.com/2015/09/28/9411/ 握力王も仰っている
  38. 38. 自分もやってみた https://github.com/twada
  39. 39. 自分もやってみた 受託開発をやっている時期 ど忘れ(くやしい)
  40. 40. ○ 毎日コードを書くこと。ブログ、ドキュメン ト、その他はコードを書いたらやってよい。 △ 意味のあるコードを書くこと。インデントや フォーマットの修正、可能ならばリファクタ リングもコード書きにはカウントしない。 △ 深夜 24 時前に終わらせること。 △ 書いたコードを github で全て OSS にする こと。 達成度
  41. 41. 実際にやってみて •小モジュールを沢山作るようになる •リリース回数が思ったより多い •年間 100 リリースくらい •CHANGELOG 作りにコストが掛かる •リリース作業を省力化したい
  42. 42. https://github.com/ajoslin/conventional-changelog conventional-changelog
  43. 43. <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.
  44. 44. 第三部 semver 重要
  45. 45. http://semver.org/lang/ja/
  46. 46. http://codelunch.fm/16/ #codelunchfm でもしゃべっています
  47. 47. 1.4.3 semantic versioning
  48. 48. 1.4.3 major minor patch semantic versioning
  49. 49. 1.4.3 major minor patch semantic versioning 下位互換性のあるバグ修正は patch を上げる
  50. 50. 1.4.3 major minor patch semantic versioning 下位互換性のある機能追加は minor を上げる
  51. 51. 1.4.3 major minor patch semantic versioning バグ修正だろうが、機能追加だろうが、 下位互換性が無ければ major を上げる
  52. 52. 1.4.3 major minor patch semantic versioning 個人的にはデフォルトの挙動を変えるときに major を上げることが多い
  53. 53. ^1.4.3 semver は作者と利用者の約束と信頼関係 ~1.4.3 下位互換性のある機能追加もどんどんダウンロードする 下位互換性のあるバグ修正だけダウンロードする
  54. 54. 完全密着 semver 警察24時
  55. 55. https://github.com/jashkenas/underscore/issues/1684
  56. 56. https://github.com/jashkenas/underscore/issues/1805
  57. 57. https://github.com/mozilla/source-map/issues/99
  58. 58. semver に 従わないと燃える 🔥 🔥 🔥 🔥 🔥 semver 警察24時
  59. 59. 見出し http://book.impress.co.jp/books/1113101014 では下位互換性とは何か
  60. 60. 三つの下位互換性 •ソース互換性 •バイナリ互換性 •機能互換性
  61. 61. 機能互換性: アメーバ効果
  62. 62. | 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
  63. 63. semver 過激派 1 commit, 1 release
  64. 64. ご清聴ありがとうございました

×