Slide 1

Slide 1 text

14日間でサクサクっと OSSをリリースした話 2018/9/20@Study Sapuri Lab kamontia 1

Slide 2

Slide 2 text

自己紹介 2 Name Tatsuya Kamohara(@kamontia) Work とあるSIerの5年目 車載(Linux)組み込みエンジニア のわりに上位レイヤー好き Hobby ダーツ レーティング7付近(3投に1投真ん中くらい) Other 最近一児の父親になりました

Slide 3

Slide 3 text

3 今回の発表は @chaspy(大学同期)と 一緒に開発した話である

Slide 4

Slide 4 text

何を作ったのか ワンライナーでGitのコミットをsquashするCLIツール • Golang製 4 プログラミング言語別の年収ランキング、中央値1位は「Go」 http://www.itmedia.co.jp/news/articles/1808/07/news087.html QUICK SQUASH

Slide 5

Slide 5 text

作成したツールの使いどころ 5 機能A追加 Typo修正 型変更 機能A1追加 Typo修正 ブランチで作業するときは、こまめにコミット(セーブポイント)を作りがち もちろんコミット単位を考えて作業出来ることが大切 けど、ビビリだからこまめにセーブしたい

Slide 6

Slide 6 text

作成したツールの使いどころ 6 機能A追加 Typo修正 型変更 機能A1追加 Typo修正 PRするときにレビューアに「コミットログ、キレイにしてからPR出してね」 とか、「結局これは機能Aについてのコミットだからまとめられるな」と 自分で気づく。あるあるである。 機能A追加

Slide 7

Slide 7 text

7 1つのコミットに まとめたい時 普通だったらこうする

Slide 8

Slide 8 text

git rebase コマンドを使う 8

Slide 9

Slide 9 text

Git Editorが開く 9

Slide 10

Slide 10 text

まとめたいコミットを「pick」→「squash(s)」 10

Slide 11

Slide 11 text

不要なメッセージを削除 11

Slide 12

Slide 12 text

「1つのコミットにまとめたよ」に決定 12

Slide 13

Slide 13 text

コミットがまとまった! 13

Slide 14

Slide 14 text

14 このシチュエーション続くと 結構めんどい

Slide 15

Slide 15 text

15 QUICK SQUASHなら ワンライナーで出来る

Slide 16

Slide 16 text

QUICK SQUASHコマンドを試す 16 qs –n i..j -m “message” i..j-1のコミットを j に-mで指定した コミットログでまとめる

Slide 17

Slide 17 text

17 QUICK SQUASHなら ワンライナーで出来る

Slide 18

Slide 18 text

なぜ作ろうと思ったのか • 社会人5年目に突入しちゃったよ! – 業務はテストや受け入れが多い・・・ – でも、技術は追いかけていきたい – 隣の席の先輩がすごい…けど自分は無力だ – とにかく誰かの役に立ちたい! 18 気づくとさまざまな思いや悩みが “ちりつも” していた

Slide 19

Slide 19 text

19 OSSでちょっとでも 貢献できないか?

Slide 20

Slide 20 text

20 実は今までも 数回OSS開発に 挑戦していた

Slide 21

Slide 21 text

21 でもリリースまで 至らなかった

Slide 22

Slide 22 text

でもリリースまで 至らなかった 22 WHY?

Slide 23

Slide 23 text

作れなかった理由 • 形から入ろうとした – OSS開発といったらGit+GitHubが主流 – 相談出来る人が近くにいない状態で「はじめてのGit」 → 当然、Gitが足かせになってやる気喪失 • スタートラインが揃っていなかった – 共通認識が薄く、時間経過により自然消滅 – コミュニケーションが維持しにくかった(物理的距離や都合) 23 そして業務が忙しくなり、モチベーション低下

Slide 24

Slide 24 text

今回リリースまで至った理由(ここを変えた) • Gitをある程度理解した – 本当に便利! – じゃあよく使ってるGit rebaseを便利するツールを作ろう ⇨ モチベーション高かった • 様々なツールを上手に活用できた 24 モチベーションを維持することができた

Slide 25

Slide 25 text

利用したサービスやツール • Git + Github – これは言わずもがな • Slack – コミュニケーションツール – Githubと連携して通知 • HackMD – BIG PICTUREを素早く共有 • Visual Studio Code – リモートペアプログラミング 25 各自頑張ってるのが分かる わざわざ知らせる必要もない 今回 紹介したい内容の1つ

Slide 26

Slide 26 text

26 リモートペアプログラミング の前に ペアプロって?

Slide 27

Slide 27 text

ペアプログラミング 27 ペアプログラミングとは、2人でプログラミング(および分析、設計、テスト)と プログラムの改良を同時に行うやりとりのことである。 Kent Beck、Cynthia Andres著/角征典訳『エクストリームプログラミング』オーム社、2015、p.40 • コードの質が向上する • 問題解決が速い • 開発Tipsの共有 – そのショートカット何?みたいな But… • 場所を共有する必要がある

Slide 28

Slide 28 text

28 そこでリモート!

Slide 29

Slide 29 text

29 リモートペアプログラミング ってどうせ 画面共有するんでしょ?

Slide 30

Slide 30 text

30 「387行目の条件分岐のところの~」 「あ、そこじゃなくてもう少し後ろの…」 「んーちょっと行き過ぎ~」 「あ、うんうんそこそこ」 ってなるんでしょ?

Slide 31

Slide 31 text

31 今回紹介するのは ちょっとだけ進んでます

Slide 32

Slide 32 text

How to リモートペアプログラミング • 必要なもの – Visual Studio Code (AtomでもたぶんOK) – VS Live Share (Teletype for AtomでもたぶんOK) – 快適な回線(RTTが小さい方がいい) 32

Slide 33

Slide 33 text

セットアップ 33 ①コマンドパレットで「live」で検索 ② MicrosoftかGithubのアカウントでログイン

Slide 34

Slide 34 text

やってみる 34 ④ 招待用のURLをコピーして 相手にSlackなどで送る ③ セッションを開始する ⑤ URLをクリックすると自動でエディタが立ち上がる

Slide 35

Slide 35 text

実際の動作デモ 35 自分のPC 相手のPC

Slide 36

Slide 36 text

リモートペアプログラミングをやってみて • 大学時代の友人とのOSS開発に使ってみたら とても捗った 僕の今までのあるある – 最初につまづくとやる気無くなる ⇨ 解決が速い! – 事前に決めたことと、ちょっと違う実装になる(=認識がズレてる) ⇨ 実装レベルで認識が合う!モチベーション維持できる! それに「リモート」だと ペアプログラミングの恩恵を簡単に受けることができる 36

Slide 37

Slide 37 text

Go言語を選んだ理由 開発の側面 • 2人のスタートを出来るだけ一緒にしたかった – 片方が詳しすぎると任せてしまう恐れ • チュートリアルがシンプルだった – tour of goを8割程度さらっと読んだ – ドットインストール1周した 37

Slide 38

Slide 38 text

Go言語を選んだ理由 言語仕様や思想の側面 • クロスコンパイルに対応 – 1つのソースコードでWindowsやMac、Linuxに展開可能 • シングルバイナリで動く – 配布が楽チン • コーディングフォーマットが言語仕様に含まれている – 書き方が強制される – 本質的なところに集中できる 38

Slide 39

Slide 39 text

まとめ モチベーションの維持は大切 仕事を定時で終わらせて早く開発したい と思えたらとりあえず大丈夫(な気がする) そのために出来ること • 一人ではなく仲間を作る – @chaspy に感謝 • 使えるツールは積極的に使う – 遠い距離=障壁になることはない – Gitは必要条件にはならないが、絶対覚えておくべき • 言語の選定も大事 – リリースまでの期間に影響は与える • リリースに時間がかかるとモチベーションは下がる 39

Slide 40

Slide 40 text

ちょっとだけ宣伝 • Qiita – 最速でgit-rebaseするコマンドQS(quick squash)を 作ってみた – https://qiita.com/kamontia/items/ac5c7f99599049b545e9 40

Slide 41

Slide 41 text

41 ありがとうございました