「共同開発環境」によって変化しそうなものを妄想してみた
最近は、TDDやペアプロに興味があります。それらにとって「共同開発環境」がどう影響するかを妄想してみました。
目次
共同開発環境
先日、立て続けに VSCとAtomで共同開発環境の発表がありました。
ペアプロではどういう効果があるのか、とても興味がありました。
試してみたいなーと思ったところで、技術メンターで弊社にいらしている@t_wadaさんと試してみる機会がありました。
驚いたことや使用感は、@t_wadaさんがtogetterにまとめていらっしゃいます。
これに加え、今回は、自分で勝手に「共同開発環境によって変化しそうなもの」を妄想してみました。
共同開発環境によって変化しそうなもの
テストの価値が上がりそう
リアルタイム共同編集、普及したら、より「テストの価値」が高まりそう。ゆるいconflictが常に起きているわけで、動作保証のテストが重要になると思う。
— at_grandpa (@at_grandpa) 2017年11月20日
「テストのあるコード」と「テストのないコード」の開発スピードに、今まで以上の差が生まれそう。
これは真っ先に思いました。共同で開発している時は、「ゆるいconflictが常に起きている」というイメージでした。「見えない箇所で相手が修正していて、こっちの修正と噛み合わないのでは。。」と少なからず思ってしまうので、都度テストを回さないと不安が増大してくと思います。別ブランチが同時に存在しているようなもので、お互いの修正方向が別の方向に向かっていくと、もうそれは手遅れになります。頻繁にテストを回して確認する必要があります。
こういった状況なので、テストの価値をとても感じました。テストがないコードは、共同開発環境で開発を進めるのは難しいでしょう。テストのないコードは共同開発環境の恩恵を受けられず、テストのあるコードとの開発スピードがどんどん広がっていくと思います。
ペアプロの変化
今までのペアプロは、
— at_grandpa (@at_grandpa) 2017年11月20日
・共通の1台を用意
・ドライバーが書く、ナビゲータは指摘
・スイッチする
だったけど、共同編集環境によって
・自分のマシンで作業
・ドライバーとナビゲータが書く
・スイッチの必要なし
と変わりそう。
一つ思ったのは、「スイッチ」のタイミングがわかりづらくなったかも。今までは明確にドライバー/ナビゲータが分かれていたから「スイッチ」しやすかったけど、共同編集環境だと知らぬ間にスイッチしてそう。どちらも俯瞰して見れなくなる可能性があるから、少し気をつけたほうがいいのかな。
— at_grandpa (@at_grandpa) 2017年11月20日
共同開発環境はペアプロに少なからず変化をもたらすと思います。いままでのペアプロは、ドライバーとナビゲータに分かれていましたが、共同開発環境によってその差は曖昧になると思います。もはや、スイッチという概念すらなく、時には二人がドライバーになったりもすると思います。こうなると、ナビゲーターの俯瞰的な視点が失われかねないので、少し注意が必要かもしれません。
おそらく、また「新しいペアプロの方法」が考え出されるのではないかなと思っています。自分でもこのあたりを編み出してみたい気もします。いろいろ試してみたいですね。
並列プログラミングと似ている「並列開発」
他にも、今までのペアプロとは異なる世界観が作られそうな気がしていて、やり方も新しい方法があるんじゃないかと思う。思考の並列化がより進む。
— at_grandpa (@at_grandpa) 2017年11月20日
並列プログラミングが複雑なのと似ていて、並列コーディングも難しそう。でも、なんらかの解決策があれば、爆速な開発が可能なんじゃないか。
— at_grandpa (@at_grandpa) 2017年11月20日
並列コーディングをsyncするのがテストってことになるかなぁ。
— at_grandpa (@at_grandpa) 2017年11月20日
やはり、どう考えてもテストの価値は上がるはず。
リアルタイムで共同編集できるので、「これは並列プログラミングに似ているな」と思いました。爆速で処理できるけど、それは使いどころがあるし、かなり複雑な処理になる。syncして同期もしないといけない。共同開発環境での開発も、そのようなものだと思います。使い所によっては逆にコストになることもあるでしょう。各々の開発をsyncする場面では、テストを回すことになると思います。そういう意味で、テストの価値が上がるという話にもつながってくると思います。
なかなか難しい「並列◯◯」ですが、その流れがついにコーディングの世界にもやってきたという感じでしょうか。
まとめ
まだまだ試行錯誤が続く共同開発環境ですが、大手もこのような機能を大々的に発表しているわけですし、新たな開発スタイルの誕生は近いかもしれません。このあたり、非常に興味があるので、どんどんチャレンジして知見を増やしていきたいと思っています。