Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Apache Cassandra
プロジェクトに
飛び込もう
Cassandra Summit Tokyo 2015
森下 雄貴
Apache Cassandraコミッター。
DataStaxで働くソフトウェアデベロッパー。
テキサス州オースティンにて、毎日ほぼ100% Cassandraの
コードを書く仕事をしています。
twitter: @yukim
gi...
Apache Cassandra
コミュニティーに参加して
プロジェクトに貢献しませんか?
プロジェクトに貢献する
!=
コードを書く
コード以外での貢献
コードを書くこと以外にもプロジェクトに貢献できま
す
● バグレポート/改善要望
● ヘルプ
● 事例紹介
コードを書くのが好きな人
● バグの修正
● 新機能の追加
● 周辺ツールの開発
貢献して何が嬉しいの?
プロジェクト全体として...
● バグの減少
● 新機能
● ノウハウの蓄積
● ...
貢献して何が嬉しいの?
個人として
● トラブルシュートに強くなる
○ コミュニティの活用
○ ソースコードの理解
● 世界有数のサービスを間接的に支えている
○ Apple、Netflix、Playstation Network
貢献して何が嬉しいの?
● お給料?
http://stackoverflow.com/research/developer-survey-2015
コミュニティーに参加する
コミュニケーション
● userメーリングリスト
○ アーキテクチャやデータモデリングの質問
○ 運用のアドバイス
○ エラー報告
● JIRA
○ バグの報告
○ 新機能の要望
○ 開発の中心
● IRC
○ メーリングリストのリアルタイム版...
コミュニケーション
● まずはメーリングリストに参加してみよう
○ user-subscribe@cassandra.apache.org に空メールを送るだ
け。確認メールが来たら返信ボタンを押して返信。
● 月に500通以上のメール
● ほ...
そうは言っても英語の壁が...
● 慣れる
○ メーリングリストを眺め続ける
○ 毎日ちょっとずつが大事
● 真似る
○ 英語で書くときは他の人の真似をする
● 間違えは気にしない
○ 時制、3単現はよく間違える
○ 読んでる人の半分はネイティ...
でもやっぱり日本語で...
● 日本Cassandraコミュニティ
○ https://groups.google.com/forum/#!forum/cassandra-jp
● 見てます! 必ず返信するのでよろしくお願いしま
す!
でもやっぱり日本語で...
● Qiita
○ http://qiita.com/tags/cassandra
でもやっぱり日本語で...
● stackoverflow日本語版
○ http://ja.stackoverflow.com/questions/tagged/cassandra
Cassandraをハックする
必要なツール
● Java SDK
○ 2.1から8でコンパイル可能
● git
● Apache Ant
● (Python 2.x)
○ テストツールを動かすとき
開発者向け
コミュニケーションチャンネル
● メーリングリスト
○ dev@cassandra.apache.org
■ ディスカッション
■ リリース投票
○ commits@cassandra.apache.org
■ JIRA
■ git...
ソースコードの取得とビルド
● Apacheのレポジトリから
$ git clone  https://git-wip-us.
apache.org/repos/asf/cassandra.git
● ビルドはAntを利用
$ ant
IDEのセットアップ
● Eclipse
$ ant generate-eclipse-files
● IntelliJ IDEA
$ ant generate-idea-files
コードを書く前に
● Cassandraのアーキテクチャを理解する
○ 基本的な考え方は変わっていない
■ CommitLog, Memtable, SSTable etc.
○ 日本語ドキュメント
http://docs.datastax.c...
コードを書く前に
● ソースコードを読む
○ アーキテクチャと対応させながら読み進める
■ 書き込み/読み込み
● StorageProxy.java を起点に
■ オペレーション系
● StorageService.java を起点に
■ ク...
コーディングとテスト
● Cassandraコーディング規約
○ http://wiki.apache.org/cassandra/CodeStyle
● ユニットテスト
○ test/unit 以下がユニットテストソースコード
○ Ant を...
分散環境でのシステムテスト
● Cassandraは分散システム。
どうやってテストする?
○ ccm (Cassandra Cluster Manager)
○ cassandra-dtest
ccm
https://github.com/pcmanus/ccm
● CassandraクラスタをコマンドラインとPythonか
ら操作する
$ ccm create -n 3 test_cluster
$ ccm node1 stress...
cassandra-dtest https://github.
com/riptano/cassandra-dtest
● ccmを用いたcassandraクラスタテストスイート
● 実行には `nose`テストツールが必要
$ pip ins...
“Low-Hanging Fruit”
● 難易度低めのJIRAチケット。
● まずは LHF からはじめて見よう。
https://issues.apache.org/jira/browse/CASSANDRA-8817?
jql=proje...
まとめ
● コードを書かなくてもApache Cassandraプロ
ジェクトに貢献できます
○ 英語がダメなら日本語でも!
● 書ける人はぜひチャレンジしてみてください。
○ “LHF” もあるよ!
お手伝いします。
yuki@datasta...
[Cassandra summit Tokyo, 2015] Apache Cassandra日本人コミッターが伝える、"Apache Cassandraプロジェクトに飛び込もう!" by 森下雄貴
[Cassandra summit Tokyo, 2015] Apache Cassandra日本人コミッターが伝える、"Apache Cassandraプロジェクトに飛び込もう!" by 森下雄貴
[Cassandra summit Tokyo, 2015] Apache Cassandra日本人コミッターが伝える、"Apache Cassandraプロジェクトに飛び込もう!" by 森下雄貴
Upcoming SlideShare
Loading in …5
×

[Cassandra summit Tokyo, 2015] Apache Cassandra日本人コミッターが伝える、"Apache Cassandraプロジェクトに飛び込もう!" by 森下雄貴

981 views

Published on

Apache Cassandra日本人コミッター 森下雄貴さんによる、米国でオープンソースのコミッターになるには? 

Published in: Technology
  • Be the first to comment

[Cassandra summit Tokyo, 2015] Apache Cassandra日本人コミッターが伝える、"Apache Cassandraプロジェクトに飛び込もう!" by 森下雄貴

  1. 1. Apache Cassandra プロジェクトに 飛び込もう Cassandra Summit Tokyo 2015
  2. 2. 森下 雄貴 Apache Cassandraコミッター。 DataStaxで働くソフトウェアデベロッパー。 テキサス州オースティンにて、毎日ほぼ100% Cassandraの コードを書く仕事をしています。 twitter: @yukim github: https://github.com/yukim freenode: yukim
  3. 3. Apache Cassandra コミュニティーに参加して プロジェクトに貢献しませんか?
  4. 4. プロジェクトに貢献する != コードを書く
  5. 5. コード以外での貢献 コードを書くこと以外にもプロジェクトに貢献できま す ● バグレポート/改善要望 ● ヘルプ ● 事例紹介
  6. 6. コードを書くのが好きな人 ● バグの修正 ● 新機能の追加 ● 周辺ツールの開発
  7. 7. 貢献して何が嬉しいの? プロジェクト全体として... ● バグの減少 ● 新機能 ● ノウハウの蓄積 ● ...
  8. 8. 貢献して何が嬉しいの? 個人として ● トラブルシュートに強くなる ○ コミュニティの活用 ○ ソースコードの理解 ● 世界有数のサービスを間接的に支えている ○ Apple、Netflix、Playstation Network
  9. 9. 貢献して何が嬉しいの? ● お給料? http://stackoverflow.com/research/developer-survey-2015
  10. 10. コミュニティーに参加する
  11. 11. コミュニケーション ● userメーリングリスト ○ アーキテクチャやデータモデリングの質問 ○ 運用のアドバイス ○ エラー報告 ● JIRA ○ バグの報告 ○ 新機能の要望 ○ 開発の中心 ● IRC ○ メーリングリストのリアルタイム版 ○ 時差が難点
  12. 12. コミュニケーション ● まずはメーリングリストに参加してみよう ○ user-subscribe@cassandra.apache.org に空メールを送るだ け。確認メールが来たら返信ボタンを押して返信。 ● 月に500通以上のメール ● ほぼすべてのメールに返信あり
  13. 13. そうは言っても英語の壁が... ● 慣れる ○ メーリングリストを眺め続ける ○ 毎日ちょっとずつが大事 ● 真似る ○ 英語で書くときは他の人の真似をする ● 間違えは気にしない ○ 時制、3単現はよく間違える ○ 読んでる人の半分はネイティブじゃない ○ ネイティブだって間違える
  14. 14. でもやっぱり日本語で... ● 日本Cassandraコミュニティ ○ https://groups.google.com/forum/#!forum/cassandra-jp ● 見てます! 必ず返信するのでよろしくお願いしま す!
  15. 15. でもやっぱり日本語で... ● Qiita ○ http://qiita.com/tags/cassandra
  16. 16. でもやっぱり日本語で... ● stackoverflow日本語版 ○ http://ja.stackoverflow.com/questions/tagged/cassandra
  17. 17. Cassandraをハックする
  18. 18. 必要なツール ● Java SDK ○ 2.1から8でコンパイル可能 ● git ● Apache Ant ● (Python 2.x) ○ テストツールを動かすとき
  19. 19. 開発者向け コミュニケーションチャンネル ● メーリングリスト ○ dev@cassandra.apache.org ■ ディスカッション ■ リリース投票 ○ commits@cassandra.apache.org ■ JIRA ■ git コミット ● IRC ○ #cassandra-dev
  20. 20. ソースコードの取得とビルド ● Apacheのレポジトリから $ git clone  https://git-wip-us. apache.org/repos/asf/cassandra.git ● ビルドはAntを利用 $ ant
  21. 21. IDEのセットアップ ● Eclipse $ ant generate-eclipse-files ● IntelliJ IDEA $ ant generate-idea-files
  22. 22. コードを書く前に ● Cassandraのアーキテクチャを理解する ○ 基本的な考え方は変わっていない ■ CommitLog, Memtable, SSTable etc. ○ 日本語ドキュメント http://docs.datastax.com/ja/cassandra-jajp/2. 0/cassandra/architecture/architectureTOC.html
  23. 23. コードを書く前に ● ソースコードを読む ○ アーキテクチャと対応させながら読み進める ■ 書き込み/読み込み ● StorageProxy.java を起点に ■ オペレーション系 ● StorageService.java を起点に ■ クラスタリング ● o.a.c.locator/o.a.c.dht パッケージ ● cassandra-2.0 ブランチがおすすめ ○ 最近はパフォーマンスアップのためのテクニックが満載
  24. 24. コーディングとテスト ● Cassandraコーディング規約 ○ http://wiki.apache.org/cassandra/CodeStyle ● ユニットテスト ○ test/unit 以下がユニットテストソースコード ○ Ant を使って確認 $ ant test $ ant test -Dtest.name=CompactionsTest
  25. 25. 分散環境でのシステムテスト ● Cassandraは分散システム。 どうやってテストする? ○ ccm (Cassandra Cluster Manager) ○ cassandra-dtest
  26. 26. ccm https://github.com/pcmanus/ccm ● CassandraクラスタをコマンドラインとPythonか ら操作する $ ccm create -n 3 test_cluster $ ccm node1 stress $ ccm node2 stop
  27. 27. cassandra-dtest https://github. com/riptano/cassandra-dtest ● ccmを用いたcassandraクラスタテストスイート ● 実行には `nose`テストツールが必要 $ pip install nose $ nosetests repair_test.py
  28. 28. “Low-Hanging Fruit” ● 難易度低めのJIRAチケット。 ● まずは LHF からはじめて見よう。 https://issues.apache.org/jira/browse/CASSANDRA-8817? jql=project%20%3D%20CASSANDRA%20AND%20labels%20%3D%20%22lhf%22% 20AND%20resolution%20%3D%20Unresolved
  29. 29. まとめ ● コードを書かなくてもApache Cassandraプロ ジェクトに貢献できます ○ 英語がダメなら日本語でも! ● 書ける人はぜひチャレンジしてみてください。 ○ “LHF” もあるよ! お手伝いします。 yuki@datastax.com

×