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
370
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
25
Other Decks in Programming
See All in Programming
Djangoの開発環境で工夫したこと - pre-commit / DevContainer
hiroki_yod
1
230
Quine, Polyglot, 良いコード
qnighy
4
650
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
310
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.8k
初めてDefinitelyTypedにPRを出した話
syumai
0
430
flutterkaigi_2024.pdf
kyoheig3
0
170
受け取る人から提供する人になるということ
little_rubyist
0
250
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
110
Tauriでネイティブアプリを作りたい
tsucchinoko
0
380
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
250
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
2k
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
95
5.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Building Adaptive Systems
keathley
38
2.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Speed Design
sergeychernyshev
25
620
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
How to Ace a Technical Interview
jacobian
276
23k
Embracing the Ebb and Flow
colly
84
4.5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
120
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
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 ありがとうございました