SlideShare a Scribd company logo
1 of 145
Download to read offline
OSS貢献超入門
builderscon2017
2017/8/5 shigemk2
自己紹介
● shigemk2
● アドテクエンジニア
● ScalaとかHadoopとかReactとか
● http://www.shigemk2.com/
超結論
好きなリポジトリを
ウォッチしよう
今日の流れ
1. 対象者
2. OSSとは
3. 貢献できない理由
4. 出来ない理由を片付けていく
5. ケーススタディ
今日の流れ
1. 対象者
2. OSSとは
3. 貢献できない理由
4. 出来ない理由を片付けていく
5. ケーススタディ
皆さん
OSS開発できてますか?
今日の対象者
(いろいろ理由があって)
OSS開発したくてもできない
(いろいろ理由があって)
OSS開発したくてもできない
=わりと昔の自分
今はわりとできてると思う
● Emacs
● cookpad/kuroko2
● rundeck
● github/hub
● なんか毎週Issueとかプルリクとか投げてる気がする
今日の流れ
1. 対象者
2. OSSとは
3. 貢献できない理由
4. 出来ない理由を片付けていく
5. ケーススタディ
OSSとは
● 概念に基づき、ソフトウェアのソースコードが無
償で公開され、改良や再配布を行うことが誰に
対しても許可されているソフトウェアのこと
○ http://www.weblio.jp/content/オープンソースソフトウェア
● 概念(OSDが提唱する。次ページ参照)
○ http://www.opensource.jp/osd/osd-japanese.html
OSSの概念
● 再頒布の自由
● ソースコード
● 派生ソフトウェア
● 作者のソースコードの
完全性
● 個人やグループに対す
る差別の禁止
● 利用する分野に対する差別
の禁止
● ライセンスの分配
● 特定製品でのみ有効なライ
センスの禁止
● 他のソフトウェアを制限する
ライセンスの禁止
● ライセンスは技術中立的で
なければならない
なるほどわからん
厳格はつらい
OSSの概念を完全に理解してなくても
パッチやバグレポートは出せる
GitHubなどにソースコードが
公開されているソフトウェアは
だいたいOSS
You Ain’t Gonna Need It!
機能は実際に必要になるまで追加しない
人力YAGNI
ライセンスとかOSSの定義は
パッチやバグレポートを出した後に
勉強しよう
今日の流れ
1. 対象者
2. OSSとは
3. 貢献できない理由
4. 出来ない理由を片付けていく
5. ケーススタディ
言語化の試み
問題解決のためには
問題を言語化する必要が
ある
OSSに貢献できない理由
● どこから手を付けていいか分からない
● ソースコードを読んでも分からない
● 時間がなくて無理
● 技術的に無理
OSSに貢献できない理由
● どこから手を付けていいか分からない
● ソースコードを読んでも分からない
● 時間がなくて無理
● 技術的に無理
どこから手を付けていいか分からない
● どんなバグレポートやパッチを出せばい
いか分からない
● OSS多すぎ
● 特に意識しないと普通に使えちゃう
どこから手を付けていいか分からない
● どんなバグレポートやパッチを出せばい
いか分からない
● OSS多すぎ
● 特に意識しないと普通に使えちゃう
ケーススタディ
Play Framework
なんかIssueとかPull Requestがいっぱい
なんかIssueとかPull Requestがいっぱい
次のアクションが分からない
↓
もうこのままでいいんじゃないかな
どこから手を付けていいか分からない
● どんなバグレポートやパッチを出せばい
いか分からない
● OSS多すぎ
● 特に意識しないと普通に使えちゃう
自社プロダクトで使われているOSS
● プログラミング言語: 2
● フレームワーク: 2
● バックエンド部分のライブラリ: 55
● フロントエンド部分のライブラリ: 60
● ミドル: 10くらい
● 参照: build.sbt/package.json
開発環境
● ターミナル
● エディタ/IDE
○ Vim/Emacs/IntelliJ IDEA/Atomとか
○ 付随するライブラリとかプラグインとか
● ログインシェル
○ bash/zsh/fish
OSSが多すぎて
どこから手を付けていいか
分からない
どこから手を付けていいか分からない
● どんなバグレポートやパッチを出せばい
いか分からない
● OSS多すぎ
● 特に意識しないと普通に使えちゃう
特に意識しなくても普通に使えちゃう
ググったりQiitaを見たり知ってる人に聞い
たりしたらだいたい解決する
↓
もうこのままでいいんじゃないかな
結果、どこから手を付けていいか
分からない
OSSに貢献できない理由
● どこから手を付けていいか分からない
● ソースコードを読んでも分からない
● 時間がなくて無理
● 技術的に無理
統計
ファイル数 行数
ファイル数多すぎて
手をつけたらええんか分からん
OSSに貢献できない理由
● どこから手を付けていいか分からない
● ソースコードを読んでも分からない
● 時間がなくて無理
● 技術的に無理
使える時間(と気力)は限られてる
1. 夜9時とか10時とかに退社
2. 1-2時間かけて電車で帰る(しんどい)
3. 夜10時とか11時とかに帰宅
4. 飯食って風呂入って
5. アニメ見たりTwitter見たり家族とか友人
とかと話をしたり
気づいたら深夜!
気力もない!(体力もない!)
しんどい
OSSに貢献できない理由
● どこから手を付けていいか分からない
● ソースコードを読んでも分からない
● 時間がなくて無理
● 技術的に無理
そうだ!
ソースコードを読んでみよう!
漫然と眺めてもわからん
● ソースコード
● Pull Request
● Issue
ちゅーかやっぱりこのままで
いいいんじゃね?
出来ない理由は
1つ1つ潰していこう
今日の流れ
1. 対象者
2. OSSとは
3. 貢献できない理由
4. 出来ない理由を片付けていく
5. ケーススタディ
OSSに貢献できない理由
● どこから手を付けていいか分からない
● ソースコードを読んでも分からない
● 時間がなくて無理
● 技術的に無理
そもそも
なぜOSSに貢献するのか
● プログラマーとしての成長のため
● バグってたりドキュメントがおかしかった
りするのを直すため
● 欲しい機能を追加するため
● パッチが取り込まれるのは嬉しい
オープンソースへの取り組みは
エンジニアにとって大きな「武器」
になる
https://doda.jp/engineer/it/guide/001/02b.htm
l
具体的なアクションが分からん
キャリアアップを考えるのは
副次的なものであってゴールじゃない
↓
自分の思う通りにOSSを
作り変えていく
具体的なアクションの一例
● 機能追加
● バグ修正
● リファクタリング
● ドキュメント編集
● ドキュメント翻訳
必要にかられないと人は動かない
↓
必然性を高めていこう
必要にかられないと人は動かない
↓
必然性を高めていこう
必要にかられないと人は動かない
↓
必然性を高めていこう
↓
使っているOSSの中身を
積極的に見る
OSS開発の必然性を高めていくために
● 公式ドキュメント/ソースコードを読む
● StackOverflowやQiitaは使わない
○ マイナス検索を使う
○ 副読書程度で
Google検索 -stackoverflow -qiitaの理由
● 最新性
● 正確性
● 本家で今何が問題となっているか分か
らない
公式が間違っている説と自分が間違ってい
る説を半々ぐらいで持ちながら開発する
心構え
OSSに貢献できない理由
● どこから手を付けていいか分からない
● ソースコードを読んでも分からない
● 時間がなくて無理
● 技術的に無理
なんかいろいろ実装されてて
分からない
↓
雰囲気をつかもう
なぜ雰囲気をつかむ
必要があるのか
↓
他の人が何をやっているか
分かるから
OSS開発の
雰囲気をつかむ
ためにとても
参考になる本
さまざまなアセ
ンブリ言語を
フィーリングで読
む本
熱血バイナリアン十訓(P1)
● まずは読め
● 楽しんで読め
● 無理やり読め
● 勘で読め
● 暇を見つけて読め
● 思うままに読め
● 納得行くまで読め
● 明日も読め
● 飽きたら次のを読め
● わからなくても気にせず
読め
その十戒はOSS開発にも適用できる
● まずは読め
● 楽しんで読め
● 無理やり読め
● 勘で読め
● 暇を見つけて読め
● 思うままに読め
● 納得行くまで読め
● 明日も読め
● 飽きたら次のを読め
● わからなくても気にせず
読め
何を読むべきか
GitHubリポジトリのチャットツールGitter
https://gitter.im/
READMEの
on gitterをクリック(あれば)
https://github.com/playframework/playframework
アプリもあるで
https://gitter.im/apps
気になるリポジトリはwatch!
https://github.com/notifications
アプリもいろいろ(一長一短)
CodeHub GHFeed
メーリングリスト
今挙げたやつを
とりあえず適当な時間を見つけて読む
いつ読むべきか
● 休憩時間
● 通勤時間
● 寝る前
● ビルド時間
● その他あいてる時間
ポイント
● 雰囲気で読む
● 分からなくても気にせず読む
● 飽きたら別のリポジトリをwatchする
● 毎日読む
注意点
● Linux/Emacsのメーリングリストは毎日数百数
千とかメールが来てやばい
○ メーリス購読してたらGmailの容量が死にか
けた
● PrestoとかElasticSearchとかは毎日すごい数
のIssueやPull Requestが飛んでてやばい
● 通知をオンにすると通知がしんどいけど通知を
オンにしましょう
これをやることで得られる雰囲気
● 他の人がどんなIssueを出しているか
● 他の人がどんなPull Requestを出してい
るか
● 他の人がどんな文章を書いているか
● 他の人がどんなコードを書いているか
http://xuwei-k.hatenablog.com/entry/20150930/1443641775
すごく参考になったブログ
OSSに貢献できない理由
● どこから手を付けていいか分からない
● ソースコードを読んでも分からない
● 時間がなくて無理
● 技術的に無理
使える時間(と気力)は限られてる
1. 夜9時とか10時とかに退社
2. 1-2時間かけて電車で帰る(しんどい)
3. 夜10時とか11時とかに帰宅
4. 飯食って風呂入って
5. アニメ見たりTwitter見たり家族とか友人
とかと話をしたり
時間がない問題の解決方法
1. 帰ったらすぐやる
2. 寝る時間を削って時間とやる気を捻出
する
3. 仕事の時間や昼の休憩時間を使う
OSSに貢献できない理由
● どこから手を付けていいか分からない
● ソースコードを読んでも分からない
● 時間がなくて無理
● 技術的に無理
技術的に無理
● 全てを理解しようと思わなくていい
○ 修正したい箇所だけを重点的に
● find-grep/検索
技術的に無理
● 最低限CONTRIBUTEページは読もう
○ IssueやPull Requestを投げるときの
ガイドラインが記載されている
○ ここをクリアしないとそもそも見てもら
えない
○ contribute xxxでググろう
技術的に無理
● どういうふうに書いていいか分からない
○ 他の人が書いたソースコードを参考に
しよう
○ 分からない関数や処理が分かる
○ 純粋にすごく参考になる
技術的に無理
● テストコードを読んで挙動を知る
○ どういう動きになっているかはテスト
コードを読めば分かる
今日の流れ
1. 対象者
2. OSSとは
3. 貢献できない理由
4. 出来ない理由を片付けていく
5. ケーススタディ
ケーススタディ
● 歴史と伝統のある大きなOSS
● 最近出来た新興のOSS
● 全然開発されていないOSS
ケーススタディ
● 歴史と伝統のある大きなOSS
● 最近出来た新興のOSS
● 全然開発されていないOSS
https://github.com/rundeck/rundeck
高機能cron
https://github.com/rundeck/rundeck/pull/1836
リンク切れ修正
ポイント
● cronまわりのドキュメントを読み漁った
結果
● 必要な箇所だけでいいので公式ドキュメ
ントをちゃんと読みましょう
● ドキュメント修正も貢献です
https://github.com/cookpad/kuroko2
GUIベースのジョブスケジューラ
いろいろ便利な
ワークフローエンジン
● Webの管理画面がある
● Webの管理画面でリトライできる
● DBはMySQL
● timeoutの値を設定できる
● Slack通知が簡単にできる
問題点
● ドキュメントにない機能の存在
● kuroko2にはないDSLがある(echoとか
retryとかif-elseとか)
● ドキュメントをなぞっても環境構築できな
い
問題点
● ドキュメントにない機能の存在
● kuroko2にはないDSLがある(echoとか
retryとかif-elseとか)
● ドキュメントをなぞっても環境構築できな
い
https://github.com/cookpad/kuroko2/pull/59
ドキュメントにない機能の存在
● GUIではなくAPIからジョブを実行する
○ incoming webhook
● 当初この機能はドキュメントになかった
ので、ドキュメント追加のプルリクエスト
を投げた
ドキュメント追加の流れ
1. 機能が存在するかどうかググる
2. Issueやドキュメントを読む
3. ソースコードを読む
4. 実装されているけどドキュメントにない場
合は、該当機能のドキュメントを追加す
る
問題点
● ドキュメントにない機能の存在
● kuroko2にはないDSLがある(echoとか
retryとかif-elseとか)
● ドキュメントをなぞっても環境構築できな
い
https://github.com/cookpad/kuroko2/pull/65
DSL追加
● 今まで
○ execute: echo “hello, world”
● 今回のプルリクエスト
○ echo: “hello, world”
機能追加の流れ
1. IssueやPull Requestを見て、既知のも
のか確認する
2. 作りたい機能のイメージを固める
a. digdagのechoを流用したかった結果
3. 既存のプロダクトコード/テストコードを読
み、書き方と挙動を知る
4. 真似る
問題点
● ドキュメントにない機能の存在
● kuroko2にはないDSLがある(echoとか
retryとかif-elseとか)
● ドキュメントをなぞっても環境構築できな
い
ドキュメントを
なぞっても環境構築
できない
≠何もしてないのに
壊れた
参考: メーリングリスト サ
ポートセンターではなく互
助会です
http://www.hyuki.com/writing/techask.html
確認事項
下準備
1. ドキュメント側で指定している
バージョンで試す
2. エラーログを読み、期待している
動作と実際の動作を確認する
3. ソースコードを読む
バグかどうかの確認
1. ドキュメント側で指定している
バージョンである
2. エラーログとソースコードを読ん
で、ソースコード側に起因するも
のならそれはバグ
https://github.com/cookpad/kuroko2/issues/57
ドキュメント通りに環境構築
しようとしてエラーになる
● インストールコマンド実行後
○ rails new -m app_template.rb
● Directly inheriting from
ActiveRecord::Migration is not
supported
Rails5にアップデートす
るときに起きるアレ
class CreateUsers < ActiveRecord::Migration[4.2]
って書けよ
http://tech.grooves.com/entry/2016/07/01/184458
https://github.com/cookpad/kuroko2/pull/63
Missing dependency commonmarker
● ジョブ登録時に起きた
○ GUIのところどころで起きる
● html-pipelineのバージョンアップデート
で記載されていたgemspecの
github-markdownが使われなくなった
○ https://github.com/jch/html-pipeline/pull/274
おまけ
開発前にソースコードを読んだら
typoが見つかったのでプルリクを出した
↓
IDEさまさま!
新しめのOSSはcontribution
pointが割と多い
ケーススタディ
● 歴史と伝統のある大きなOSS
● 最近出来た新興のOSS
● 全然開発されていないOSS
Emacsにパッチを投げた
● zshファイルのsh-modeが起動しない
● sh-mode自体にはzshに対応してた
https://www.emacswiki.org/emacs/ShMode
● 以前は自前のinit fileに書く→書きたくな
いと思った結果
http://emacs.1067599.n8.nabble.com/bug-25217-PATCH-Enable-sh-mode-zshrc-td416040.html
修正は1行
パッチを投げる前に
● contribute emacsでググる
● sh-modeのwikiを調べる
● るびきち氏にメルマガ経由で確認した
苦しいポイント
● GitHubにプルリクエストを投げるスタイ
ルではない
○ パッチファイルを作る
○ git send-email
● やり取り自体が少し面倒
● GitHubみたいにGUIでレビューされない
紆余曲折を経て
パッチが
取り込まれたときの
無上の喜び
ケーススタディ
● 歴史と伝統のある大きなOSS
● 最近出来た新興のOSS
● 全然開発されていないOSS
google-translate
Google翻訳をEmacs上で使う
Pull Requestを投げました
やりたかったこと
● Google翻訳の結果を出力
○ ポップアップ
○ エコー領域
○ 現在のバッファ
● 今の作業領域に翻訳結果を出力して欲
しいと考えた結果
問題点
プルリクを出す前の最後のコミットが
半年前
プルリクを投げても
放置されるパターン
アプローチの必要性
1. @作者でGitHubにコメントする
2. @ツイートする
3. メールアドレスに直接メールを送る
4. 何もしない
5. forkして自前で開発をすすめる
実際にやったこと
1. @作者でGitHubにコメントする
2. @ツイートする
3. メールアドレスに直接メールを送る
4. 何もしない
5. forkして自前で開発をすすめる
無事マージされました
おまけ
● プルリク出すときにCIがコケてたのでCI
で動かすテストコードを修正するプルリ
クを投げました
まとめ
● 雰囲気をつかむのはとても重要
● 毎日続けること
● ドキュメントとソースコードを読むこと
● 他人のコードを知ること
このセッションの後から
アクションを始めよう

More Related Content

What's hot

ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』Yoshitaka Kawashima
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチYoshiki Hayama
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込むYoshiki Hayama
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugItsuki Kuroda
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話Yusuke Hisatsu
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019Tokoroten Nakayama
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論Tokoroten Nakayama
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣Masahiro Nishimi
 
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースモジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースHajime Yanagawa
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめpospome
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 

What's hot (20)

ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースモジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 

Viewers also liked

ITエンジニアのための英語勉強法
ITエンジニアのための英語勉強法ITエンジニアのための英語勉強法
ITエンジニアのための英語勉強法Etsuji Nakai
 
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014Nov Matake
 
ドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_techドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_techMichihito Shigemura
 
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜Masaru Kurahayashi
 
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てRyosuke Uchitate
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Sho Douhashi
 

Viewers also liked (7)

ITエンジニアのための英語勉強法
ITエンジニアのための英語勉強法ITエンジニアのための英語勉強法
ITエンジニアのための英語勉強法
 
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
 
ドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_techドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_tech
 
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
 
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13
 

Similar to Oss貢献超入門

How to spread reST and Sphinx
How to spread reST and SphinxHow to spread reST and Sphinx
How to spread reST and SphinxTakanori Suzuki
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm鉄次 尾形
 
秘伝:クラウドに開発環境をえいっ!と構築する方法
秘伝:クラウドに開発環境をえいっ!と構築する方法秘伝:クラウドに開発環境をえいっ!と構築する方法
秘伝:クラウドに開発環境をえいっ!と構築する方法Masahiko Hashimoto
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話Naoto Koshikawa
 
LibreOffice ヘルプを翻訳してみよう
LibreOffice ヘルプを翻訳してみようLibreOffice ヘルプを翻訳してみよう
LibreOffice ヘルプを翻訳してみようKazumi Ohhashi
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方Yusuke Wada
 
非技術者のためのオープンソース入門 LibreOffice コミュニティで質問してみよう
非技術者のためのオープンソース入門 LibreOffice コミュニティで質問してみよう非技術者のためのオープンソース入門 LibreOffice コミュニティで質問してみよう
非技術者のためのオープンソース入門 LibreOffice コミュニティで質問してみようKazumi Ohhashi
 
goog.require()を手書きしていいのは小学生まで
goog.require()を手書きしていいのは小学生までgoog.require()を手書きしていいのは小学生まで
goog.require()を手書きしていいのは小学生までTeppei Sato
 
フレームワーク使おうぜ!
フレームワーク使おうぜ!フレームワーク使おうぜ!
フレームワーク使おうぜ!Takuya Sato
 
NodeJSでCLI開発を楽しくするライブラリの紹介
NodeJSでCLI開発を楽しくするライブラリの紹介NodeJSでCLI開発を楽しくするライブラリの紹介
NodeJSでCLI開発を楽しくするライブラリの紹介Ryo Iinuma
 
20100619 wakhok important_of_io_with_jror
20100619 wakhok important_of_io_with_jror20100619 wakhok important_of_io_with_jror
20100619 wakhok important_of_io_with_jrorYoshiharu Hashimoto
 
最近作ったもの
最近作ったもの最近作ったもの
最近作ったものonozaty
 
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョンEmscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン兎 伊藤
 
分散Key/Valueストア Kai 事例紹介
分散Key/Valueストア Kai事例紹介分散Key/Valueストア Kai事例紹介
分散Key/Valueストア Kai 事例紹介Tomoya Hashimoto
 

Similar to Oss貢献超入門 (20)

How to spread reST and Sphinx
How to spread reST and SphinxHow to spread reST and Sphinx
How to spread reST and Sphinx
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
 
秘伝:クラウドに開発環境をえいっ!と構築する方法
秘伝:クラウドに開発環境をえいっ!と構築する方法秘伝:クラウドに開発環境をえいっ!と構築する方法
秘伝:クラウドに開発環境をえいっ!と構築する方法
 
Hiroshima.rb on github
Hiroshima.rb on githubHiroshima.rb on github
Hiroshima.rb on github
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
LibreOffice ヘルプを翻訳してみよう
LibreOffice ヘルプを翻訳してみようLibreOffice ヘルプを翻訳してみよう
LibreOffice ヘルプを翻訳してみよう
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
非技術者のためのオープンソース入門 LibreOffice コミュニティで質問してみよう
非技術者のためのオープンソース入門 LibreOffice コミュニティで質問してみよう非技術者のためのオープンソース入門 LibreOffice コミュニティで質問してみよう
非技術者のためのオープンソース入門 LibreOffice コミュニティで質問してみよう
 
goog.require()を手書きしていいのは小学生まで
goog.require()を手書きしていいのは小学生までgoog.require()を手書きしていいのは小学生まで
goog.require()を手書きしていいのは小学生まで
 
フレームワーク使おうぜ!
フレームワーク使おうぜ!フレームワーク使おうぜ!
フレームワーク使おうぜ!
 
NodeJSでCLI開発を楽しくするライブラリの紹介
NodeJSでCLI開発を楽しくするライブラリの紹介NodeJSでCLI開発を楽しくするライブラリの紹介
NodeJSでCLI開発を楽しくするライブラリの紹介
 
EPIU
EPIUEPIU
EPIU
 
Mishimasyk6 iwatobipen
Mishimasyk6 iwatobipenMishimasyk6 iwatobipen
Mishimasyk6 iwatobipen
 
20100619 wakhok important_of_io_with_jror
20100619 wakhok important_of_io_with_jror20100619 wakhok important_of_io_with_jror
20100619 wakhok important_of_io_with_jror
 
Oss builder
Oss builderOss builder
Oss builder
 
最近作ったもの
最近作ったもの最近作ったもの
最近作ったもの
 
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョンEmscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン
 
Net fringejp2016
Net fringejp2016Net fringejp2016
Net fringejp2016
 
Ciecleci
CiecleciCiecleci
Ciecleci
 
分散Key/Valueストア Kai 事例紹介
分散Key/Valueストア Kai事例紹介分散Key/Valueストア Kai事例紹介
分散Key/Valueストア Kai 事例紹介
 

More from Michihito Shigemura

1年くらいScalaプロジェクトに関わった結果 #ichigayageek
1年くらいScalaプロジェクトに関わった結果 #ichigayageek1年くらいScalaプロジェクトに関わった結果 #ichigayageek
1年くらいScalaプロジェクトに関わった結果 #ichigayageekMichihito Shigemura
 
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2Michihito Shigemura
 
brainfuckであそぼう #lldiver LT資料
brainfuckであそぼう #lldiver LT資料brainfuckであそぼう #lldiver LT資料
brainfuckであそぼう #lldiver LT資料Michihito Shigemura
 

More from Michihito Shigemura (6)

Ansibleに貢献してみよう
Ansibleに貢献してみようAnsibleに貢献してみよう
Ansibleに貢献してみよう
 
1年くらいScalaプロジェクトに関わった結果 #ichigayageek
1年くらいScalaプロジェクトに関わった結果 #ichigayageek1年くらいScalaプロジェクトに関わった結果 #ichigayageek
1年くらいScalaプロジェクトに関わった結果 #ichigayageek
 
Web屋の運用その極意
Web屋の運用その極意Web屋の運用その極意
Web屋の運用その極意
 
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
 
brainfuckであそぼう #lldiver LT資料
brainfuckであそぼう #lldiver LT資料brainfuckであそぼう #lldiver LT資料
brainfuckであそぼう #lldiver LT資料
 
すくすくスクラム44
すくすくスクラム44すくすくスクラム44
すくすくスクラム44
 

Recently uploaded

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (11)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Oss貢献超入門