Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
14日間でサクサクっとOSSをリリースした話 / Talking of releasing O...
Search
kamontia
September 20, 2018
Programming
2
390
14日間でサクサクっとOSSをリリースした話 / Talking of releasing OSS in 14 days
kamontia
September 20, 2018
Tweet
Share
More Decks by kamontia
See All by kamontia
Super beginners for MQTT
kamontia
0
33
Other Decks in Programming
See All in Programming
どの様にAIエージェントと 協業すべきだったのか?
takefumiyoshii
1
570
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
3.1k
iOS 17で追加されたSubscriptionStoreView を利用して5分でサブスク実装チャレンジ
natmark
0
480
Чего вы не знали о строках в Python – Василий Рябов, PythoNN
sobolevn
0
150
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
7
1.5k
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
170
Swiftビルド弾丸ツアー - Swift Buildが作る新しいエコシステム
giginet
PRO
0
1.6k
CSC509 Lecture 01
javiergs
PRO
1
430
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
2
310
2分台で1500examples完走!爆速CIを支える環境構築術 - Kaigi on Rails 2025
falcon8823
3
2.8k
そのpreloadは必要?見過ごされたpreloadが技術的負債として爆発した日
mugitti9
2
2.8k
クラシルを支える技術と組織
rakutek
0
190
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.8k
Building Adaptive Systems
keathley
43
2.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
54
3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Building an army of robots
kneath
306
46k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
For a Future-Friendly Web
brad_frost
180
9.9k
Automating Front-end Workflow
addyosmani
1371
200k
Transcript
14日間でサクサクっと OSSをリリースした話 2018/9/20@Study Sapuri Lab kamontia 1
自己紹介 2 Name Tatsuya Kamohara(@kamontia) Work とあるSIerの5年目 車載(Linux)組み込みエンジニア のわりに上位レイヤー好き Hobby
ダーツ レーティング7付近(3投に1投真ん中くらい) Other 最近一児の父親になりました
3 今回の発表は @chaspy(大学同期)と 一緒に開発した話である
何を作ったのか ワンライナーでGitのコミットをsquashするCLIツール • Golang製 4 プログラミング言語別の年収ランキング、中央値1位は「Go」 http://www.itmedia.co.jp/news/articles/1808/07/news087.html QUICK SQUASH
作成したツールの使いどころ 5 機能A追加 Typo修正 型変更 機能A1追加 Typo修正 ブランチで作業するときは、こまめにコミット(セーブポイント)を作りがち もちろんコミット単位を考えて作業出来ることが大切 けど、ビビリだからこまめにセーブしたい
作成したツールの使いどころ 6 機能A追加 Typo修正 型変更 機能A1追加 Typo修正 PRするときにレビューアに「コミットログ、キレイにしてからPR出してね」 とか、「結局これは機能Aについてのコミットだからまとめられるな」と 自分で気づく。あるあるである。
機能A追加
7 1つのコミットに まとめたい時 普通だったらこうする
git rebase コマンドを使う 8
Git Editorが開く 9
まとめたいコミットを「pick」→「squash(s)」 10
不要なメッセージを削除 11
「1つのコミットにまとめたよ」に決定 12
コミットがまとまった! 13
14 このシチュエーション続くと 結構めんどい
15 QUICK SQUASHなら ワンライナーで出来る
QUICK SQUASHコマンドを試す 16 qs –n i..j -m “message” i..j-1のコミットを j
に-mで指定した コミットログでまとめる
17 QUICK SQUASHなら ワンライナーで出来る
なぜ作ろうと思ったのか • 社会人5年目に突入しちゃったよ! – 業務はテストや受け入れが多い・・・ – でも、技術は追いかけていきたい – 隣の席の先輩がすごい…けど自分は無力だ –
とにかく誰かの役に立ちたい! 18 気づくとさまざまな思いや悩みが “ちりつも” していた
19 OSSでちょっとでも 貢献できないか?
20 実は今までも 数回OSS開発に 挑戦していた
21 でもリリースまで 至らなかった
でもリリースまで 至らなかった 22 WHY?
作れなかった理由 • 形から入ろうとした – OSS開発といったらGit+GitHubが主流 – 相談出来る人が近くにいない状態で「はじめてのGit」 → 当然、Gitが足かせになってやる気喪失 •
スタートラインが揃っていなかった – 共通認識が薄く、時間経過により自然消滅 – コミュニケーションが維持しにくかった(物理的距離や都合) 23 そして業務が忙しくなり、モチベーション低下
今回リリースまで至った理由(ここを変えた) • Gitをある程度理解した – 本当に便利! – じゃあよく使ってるGit rebaseを便利するツールを作ろう ⇨ モチベーション高かった
• 様々なツールを上手に活用できた 24 モチベーションを維持することができた
利用したサービスやツール • Git + Github – これは言わずもがな • Slack –
コミュニケーションツール – Githubと連携して通知 • HackMD – BIG PICTUREを素早く共有 • Visual Studio Code – リモートペアプログラミング 25 各自頑張ってるのが分かる わざわざ知らせる必要もない 今回 紹介したい内容の1つ
26 リモートペアプログラミング の前に ペアプロって?
ペアプログラミング 27 ペアプログラミングとは、2人でプログラミング(および分析、設計、テスト)と プログラムの改良を同時に行うやりとりのことである。 Kent Beck、Cynthia Andres著/角征典訳『エクストリームプログラミング』オーム社、2015、p.40 • コードの質が向上する •
問題解決が速い • 開発Tipsの共有 – そのショートカット何?みたいな But… • 場所を共有する必要がある
28 そこでリモート!
29 リモートペアプログラミング ってどうせ 画面共有するんでしょ?
30 「387行目の条件分岐のところの~」 「あ、そこじゃなくてもう少し後ろの…」 「んーちょっと行き過ぎ~」 「あ、うんうんそこそこ」 ってなるんでしょ?
31 今回紹介するのは ちょっとだけ進んでます
How to リモートペアプログラミング • 必要なもの – Visual Studio Code (AtomでもたぶんOK)
– VS Live Share (Teletype for AtomでもたぶんOK) – 快適な回線(RTTが小さい方がいい) 32
セットアップ 33 ①コマンドパレットで「live」で検索 ② MicrosoftかGithubのアカウントでログイン
やってみる 34 ④ 招待用のURLをコピーして 相手にSlackなどで送る ③ セッションを開始する ⑤ URLをクリックすると自動でエディタが立ち上がる
実際の動作デモ 35 自分のPC 相手のPC
リモートペアプログラミングをやってみて • 大学時代の友人とのOSS開発に使ってみたら とても捗った 僕の今までのあるある – 最初につまづくとやる気無くなる ⇨ 解決が速い! –
事前に決めたことと、ちょっと違う実装になる(=認識がズレてる) ⇨ 実装レベルで認識が合う!モチベーション維持できる! それに「リモート」だと ペアプログラミングの恩恵を簡単に受けることができる 36
Go言語を選んだ理由 開発の側面 • 2人のスタートを出来るだけ一緒にしたかった – 片方が詳しすぎると任せてしまう恐れ • チュートリアルがシンプルだった – tour
of goを8割程度さらっと読んだ – ドットインストール1周した 37
Go言語を選んだ理由 言語仕様や思想の側面 • クロスコンパイルに対応 – 1つのソースコードでWindowsやMac、Linuxに展開可能 • シングルバイナリで動く – 配布が楽チン
• コーディングフォーマットが言語仕様に含まれている – 書き方が強制される – 本質的なところに集中できる 38
まとめ モチベーションの維持は大切 仕事を定時で終わらせて早く開発したい と思えたらとりあえず大丈夫(な気がする) そのために出来ること • 一人ではなく仲間を作る – @chaspy に感謝
• 使えるツールは積極的に使う – 遠い距離=障壁になることはない – Gitは必要条件にはならないが、絶対覚えておくべき • 言語の選定も大事 – リリースまでの期間に影響は与える • リリースに時間がかかるとモチベーションは下がる 39
ちょっとだけ宣伝 • Qiita – 最速でgit-rebaseするコマンドQS(quick squash)を 作ってみた – https://qiita.com/kamontia/items/ac5c7f99599049b545e9 40
41 ありがとうございました