SlideShare a Scribd company logo
1 of 26
新卒2年目から始めるOSSのススメ
〜明日からできるコミットデビュー〜
JJUG CCC Spring 2017 梶栗 芳夫
#ccc_m7
1
目次
■ 自己紹介
■ ERFluteについて
– 特徴紹介
■ ERFluteを通したOSS活動について
– 学び、コツ
– 始めたキッカケ
■ まとめ
2
自己紹介
■ 梶栗 芳夫
■ U-NEXT (動画配信サービス)
■ 2年目 サーバサイド エンジニア
3
ERFluteとは?
■ EclipseプラグインのERDツール(ER図作成ツール)
■ ERMaster をフォークした ERMaster-b をフォーク
4
ERFluteの特徴
■ 特徴1. シンプルbutグラフィカル
– テーブル間のカージナリティの表現 (0:n, 1:n)
– テーブルのフォントや背景色の変更
– ダイアグラム上でのノートやグループ
■ 特徴2. シンプルbutファンクショナル
– 対象DBMS用のDDL出力
– ダイアグラムモニターによるダイアグラムの移動
– Outlineによるテーブル検索、対象テーブルへの移動 (control+O)
– 仮想ダイアグラムでカテゴリごとのモデリング
■ 特徴3. マージできるERD
引用 http://dbflute.seasar.org/ja/manual/function/helper/erflute/index.html
5
特徴3. マージできるERD
■ ermファイルはxml形式。
■ もし、コンフリクトしても人間がマージできるレベル。
6
OSSのススメ。
■ 簡単な修正から始めよう。
■ Githubのプルリクは簡単。
7
OSSのススメ。
簡単な修正から始めよう。
■ 最初のプルリク
– ノート削除時のヌルポ対応
– https://github.com/dbflute-session/erflute/pull/6
8
OSSのススメ。
簡単な修正から始めよう。
■ 文字化け対応
– https://github.com/dbflute-session/erflute/pull/10
9
OSSのススメ。
Githubのプルリクは簡単。
2つのリモートを1つのgit管理下にすればよい。
■ Origin => 自分のgitリポジトリ
■ Upstream => erfluteリポジトリ
git remote add upstream git@github.com:dbflute-session/erflute.git
git fetch upstream develop
git branch develop upstream/develop
■ Upstream のdevelopからfeatureブランチを作成。
■ Originに向けてpush。 erfluteリポジトリのdevelop対してプルリク。
10
学びその1。
API修正とERFlute修正の違い。
■ API
– URLから対象クラスがすぐわかる。
– 例: member/get =>> memberGetAction.java
– 関係しているクラスが少ない。
– 基本的な動作は保障されている上で業務ロジックを
考える。
■ ERFlute
– クラスたくさん。フィールド値もたくさん。
– どのクラスからどう引き継がれているのか、流れを
読むのが大変。全体像を把握するのがキツイ。
11
ERFluteアーキテクチャマップ
12引用 http://dbflute.seasar.org/ja/manual/function/helper/erflute/index.html#classworldmap
学びその2。
業務とは異なるのエラー読み
■ 例 仮想ダイアグラムの削除
■ https://github.com/dbflute-session/erflute/pull/18
普段より一階層深く潜ってエラーを読み取る必要があった。
ArrayList.javaの実装を初めて読むことに。
13
public int remove(ERVirtualDiagram vdiagram) {
final int index = this.vdiagrams.indexOf(vdiagram);
vdiagrams.remove(index);
firePropertyChange(PROPERTY_CHANGE_MODEL_SET, null, null);
return index;
}
学びその3。
タスク管理の重要性
■ 業務はほぼ毎日、継続して行なっている。
■ つまり、昨日書いたコードは覚えている。
■ OSSは完全にプライベートな時間で不定期。
■ 中途半端で終わると、次見た時に意味不明。
■ 短い時間で完結する、細かいタスクに分解する必要があ
る。
14
学びその4。その他。
■ 業務知識が関係ない
– ソースコードに書いてあることがすべて。
– 業務だと、その業務に特化した知識が必要となる。
– OSSだとその前提が共有されているので、面白い。
■ 自信になる。
– 先輩方より詳しいものがある。
15
なんでERFluteなの?
16
特殊な環境。
■ メインコミッターが会社の技術顧問
– 全く知らないプロジェクトではない。
– 取り組んでみないと誘われた。
■ 明確に不具合が分かっていた。
- HPにプルリクエスト募集の項目がある。
http://dbflute.seasar.org/ja/manual/function/helpe
r/erflute/index.html#pullreqreq
– タスク化された。(ERFluteプルリク少林寺)
17
18
特殊な環境。
■ 社内のプロジェクトで導入が決まっていた。
– 社内の雰囲気が新しい技術に前向き。
– 梶栗が直してくれるからねー。(諸刃の剣)
– 自分も使うので改善すれば、助かる。
– 使ってもらう人が身近にいる。
19
特殊な環境まとめ。
■ 身近にメインコミッターがいた。
■ 明確に不具合が分かっていた。
■ 社内で導入が決まっていた。
20
取り組みやすい環境が整っていた
自分のメリットもはっきり分かっていた。
でも、そんな環境ないし。。。。
21
明日からできるコミットデビュー
■ 明日、ERFluteもくもく会をするので参加する。
時間 5月21日 14:00 – 20:00
場所 Yahoo Japan Lodge (千代田区紀尾井町)
https://lodge.yahoo.co.jp/
■ その日のうちにERFluteのプルリクを送る。
22
明日予定あるし。。。。
23
数ヶ月後からできるコミットデビュー
U-NEXT では、
Java8 を使ったWebアプリ開発者を募集しています!
https://inside.unext.jp
■ OSSのプロジェクト色々始めています。
– 社内の開発改善からOSS公開へ:DBFluteのプラグインを開発したお話
– http://slides.com/nashcft/jjug_ccc_2016_fall#/
OSSを実際に使って、そして修正もして貢献をしていく。
それをU-NEXT社のエンジニアの精神としてやっていきたい。
24
まとめ
■ 簡単な修正から始めれば、プルリク自体は簡単にで
きる。
■ 業務以外にプログラムを触ると学びがたくさん。
– 特に社内で利用しているOSSだと身近にフィードバックがもらえ
るのでモチベーションが保ちやすい。
■ OSS活動を一般にすぐ始めることは難しいかも。
– 自分のためになる。やりたいという思いが来る日があるはず。
25
ご静聴ありがとうございました。
Special Thanks
偉大な先輩エンジニアの皆さん
26

More Related Content

Viewers also liked

JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 

Viewers also liked (20)

Jjug ccc
Jjug cccJjug ccc
Jjug ccc
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug 日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
 
Introduction of Project Jigsaw
Introduction of Project JigsawIntroduction of Project Jigsaw
Introduction of Project Jigsaw
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
 
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
 
将来 自分で サービスを持ちたいエンジニアの葛藤
将来 自分で サービスを持ちたいエンジニアの葛藤 将来 自分で サービスを持ちたいエンジニアの葛藤
将来 自分で サービスを持ちたいエンジニアの葛藤
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
 
サーバサイド Kotlin
サーバサイド Kotlinサーバサイド Kotlin
サーバサイド Kotlin
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
 
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilation
 

Similar to 新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~

初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
Kentarou Mukunasi
 
Jubatusの特徴変換と線形分類器の仕組み
Jubatusの特徴変換と線形分類器の仕組みJubatusの特徴変換と線形分類器の仕組み
Jubatusの特徴変換と線形分類器の仕組み
JubatusOfficial
 
第3回SEMAT勉強会 SEMATエッセンス解説
第3回SEMAT勉強会 SEMATエッセンス解説第3回SEMAT勉強会 SEMATエッセンス解説
第3回SEMAT勉強会 SEMATエッセンス解説
Hironori Washizaki
 

Similar to 新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~ (20)

2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
 
無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々
 
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
 
2014年の社内新人教育テキスト #1(プログラミング言語概論)
2014年の社内新人教育テキスト #1(プログラミング言語概論)2014年の社内新人教育テキスト #1(プログラミング言語概論)
2014年の社内新人教育テキスト #1(プログラミング言語概論)
 
UEFIベアメタルプログラミング
UEFIベアメタルプログラミングUEFIベアメタルプログラミング
UEFIベアメタルプログラミング
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
 
最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17
 
鹿駆動
鹿駆動鹿駆動
鹿駆動
 
MCB2トレーニング
MCB2トレーニングMCB2トレーニング
MCB2トレーニング
 
MBSD ツールチェーンと今後の活動
MBSD ツールチェーンと今後の活動MBSD ツールチェーンと今後の活動
MBSD ツールチェーンと今後の活動
 
SeRanet
SeRanetSeRanet
SeRanet
 
Jubatusの特徴変換と線形分類器の仕組み
Jubatusの特徴変換と線形分類器の仕組みJubatusの特徴変換と線形分類器の仕組み
Jubatusの特徴変換と線形分類器の仕組み
 
[DL輪読会]StyleNet: Generating Attractive Visual Captions with Styles
[DL輪読会]StyleNet: Generating Attractive Visual Captions with Styles[DL輪読会]StyleNet: Generating Attractive Visual Captions with Styles
[DL輪読会]StyleNet: Generating Attractive Visual Captions with Styles
 
第3回SEMAT勉強会 SEMATエッセンス解説
第3回SEMAT勉強会 SEMATエッセンス解説第3回SEMAT勉強会 SEMATエッセンス解説
第3回SEMAT勉強会 SEMATエッセンス解説
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
 
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
 
初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?
 

新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~

Editor's Notes

  1. このセッションでは、ERFluteのようなOSSを実際に使って、そして修正もして貢献をしていく。そんな流れを2年目のエンジニアが進めていく上での、学びやコツをお話します。
  2. OSSのススメなので実際にどのような修正を行ってきたかをご紹介します。 人生で一番嬉しかったヌルポ制御ですね。
  3. OSSの修正って難しいモドだと思うかもしれませんが、意外といけませんか?
  4. 普通に自分のリポジトリを扱う感覚でできる。
  5. 今まで行ってみて印象に残っていること。
  6. Javaの標準クラスなんて業務中に読まないぜ。 普段業務でDBFluteというORマッパーを利用しているのですが、tableのdeleteのソースコードを書いたらdeleteされる。
  7. やめているときは、何かがうまく行かず集中力が切れたとき。 次回始める際に、何がうまくいっていたのかがわからない。 特に、起動時にエラーが起きるままやめていたらかなり出鼻を挫かれる。 ローカルではこまめにコミット。 これって、自走できるエンジニアに必要なことだね。 誰からも、何も言われず、怒られずのOSSならでは。
  8. 〜明日からできるコミットデビュー〜 サブタイトルまで誤解があったらまずい。
  9. これJJUGで発表する時に、社内で言われました。色々お膳立てされているじゃんって。スライド作っていて感じたのですが、確かにその通りですね。 うまい具合に流れに乗っていました。ただ、それにきちんの乗せられる力も必要ですね。 だって、ここに上げた、特殊な環境がなければ私は絶対、取り組んでいなかったと思います。 OSSのススメと書いたのですが、まぁ一般化してススメることはできないですね。 。 個人的にも、業務に慣れてきて、新しい取り組みをしたかった。 自分にとって明確なメリットがあった。 これJJUGで発表する時に、社内で言われました。色々お膳立てされているじゃんって。スライド作っていて感じたのですが、確かにその通りですね。 うまい具合に乗せれらせていました。ただ、それにきちんの乗せられる力も必要ですね。 すいません。運が良かっただけでした。
  10. これJJUGで発表する時に、社内で言われました。色々お膳立てされているじゃんって。スライド作っていて感じたのですが、確かにその通りですね。 うまい具合に流れに乗っていました。ただ、それにきちんの乗せられる力も必要ですね。 だって、ここに上げた、特殊な環境がなければ私は絶対、取り組んでいなかったと思います。 OSSのススメと書いたのですが、まぁ一般化してススメることはできないですね。 。 個人的にも、業務に慣れてきて、新しい取り組みをしたかった。 自分にとって明確なメリットがあった。 これJJUGで発表する時に、社内で言われました。色々お膳立てされているじゃんって。スライド作っていて感じたのですが、確かにその通りですね。 うまい具合に乗せれらせていました。ただ、それにきちんの乗せられる力も必要ですね。 すいません。運が良かっただけでした。
  11. OSSのススメとかいって起きながら、そもそもこの特殊な環境でなかったらやっていなかったんでしょ。
  12. 〜明日からできるコミットデビュー〜 サブタイトルまで誤解があったらまずい。
  13. おそらく、このセッションを聞きに来るということは、何かしら共通の関心があるはず。気があうかも。
  14. 〜明日からできるコミットデビュー〜 サブタイトルまで誤解があったらまずい。
  15. 俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略 去年の冬のJJUGでビズリーチの渡辺さんが話していたのですが、 マイナーOSSの生存戦略のに一つに若手のエンジニアをうまく巻き込むっていうのもあるのかなぁと思っています。 なんで、今日の発表を聞いてすぐに、同行とはいかないかもしれないけど、それをどっかに印象持ってくれると。今後のきっかけをつかみやすいのではと思っている。
  16. 今回の発表を通して、少しでもキッカケに触れるアンテナを張っていただけたら嬉しいです。