XPを始める新人に伝えたい近道の鍵

NTTテクノクロスのなかしょ（中島進也）です。

この記事は[NTTテクノクロスアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/ntt-tx)、23日目の記事です。昨日は@Echosさんの記事「チームで複数のAWSアカウントを運用するときのそこそこ良い感じのID管理方法」でした。

本記事では[XP祭り2022](https://xpjug.connpass.com/event/255712/)でLT参加したネタを紹介します。


## XPの目的は圧倒的なソフトウェア開発の実現

![スライド3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/7efddaa1-94d1-9918-7828-e8a659f935cd.jpeg)

みんな大好きXP本。「はじめに」のところでXPの目的について記述されています。
* もっと安いコスト 
* もっと少ない欠陥数
* もっと高い生産性
* もっと高い投資効率

実現したいですね。

## XPのために新人は何から覚えるべきか？

![スライド4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/969da0c5-b054-90b2-6f2e-8360082df8c7.jpeg)

そんなXPのために新人は何から覚えるべきでしょうか？
『テスト駆動開発？』『オブジェクト指向設計？』『CI/CD？』『基本構文？』
いやいや、チーム内のコミュニケーションのためには『飲み会の幹事』でしょ
という声もあるかもしれません。
でも、私が勧めるのは．．．

![スライド5.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/112b2d16-4475-7e28-769f-e30a5ff8ce34.jpeg)

ショートカットキーです。

## なぜショートカット？

![スライド6.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/fe1c6df1-0128-d430-1c00-efc6df474270.jpeg)

では、なぜショートカットなのでしょう？

ペアプロやモブプロが当たり前の昨今、キーボードを叩いている時間は参加している全員の時間を消費しているという認識が必要です。

そして新人はコーディングしながら思考・会話するのに慣れておらず、キーボードを叩き始めると会話が止まりがちです。

コーディングしながら思考してペアと会話できるのがより良い姿ですが、それに慣れるまではショートカットキーを活用してコーディング時間を減らしてペア間の思考に集中できることが良いと考えます。

## マウスよりもキーボード

![スライド7.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/ab961daf-59d2-5886-1598-9aede90e5d08.jpeg)

書籍、プロダクティブプログラマでも「マウスよりもキーボード」というタイトルのセクションで、ショートカットキーの重要性について6ページにわたって扱っており、ショートカットキーを覚えるコツなども解説しています。

ただコツがあるにせよ、ショートカットキーを覚えるには自分のものにしようと絶えず意識する必要があります。

![スライド8.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/ea151dab-c58e-15d0-b96d-06aaabbd98b1.jpeg)

慣れていない人はたくさんのショートカットを意識したら余計にペアとの会話が難しくなるんじゃないかと思っちゃいませんか。


ちょっと視点を変えてみましょう。

## マルチプレイゲーム（やゲーム実況）

![スライド9.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/33ba9ad9-1bcd-3e78-f912-5317266e1ddb.jpeg)

マルチプレイゲームやゲーム実況はやったことある人はいますか？

ゲーム実況はなくともマルチプレイゲームはやったことあるんじゃないでしょうか。

これらに求められているスキルを考えましょう。


思考を共有しながら操作が必要だけど、操作をするために思考の共有を止めてはいけませんよね。

そのためには操作に慣れていないといけないのに昨今のゲームは操作が複雑です。

それでもゲームは楽しいからやりこんだ結果、操作方法を覚えるのではないでしょうか。

これって、ペアプロ、モブプロでも同じですよね。

## 例えば格闘ゲーム

![スライド10.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/58ede9b9-3c25-ab48-933a-b444c8afc0f6.jpeg)

例えば格闘ゲームを例にしましょう。

相手が飛び込んできて、カウンター技を出すとしたら、どういう風に考えますか？

その技を使おうとして、キー操作を思い浮かべて、実際に操作して技を出す、なんてプロセスでしょうか？






![スライド11.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/66ba7b53-e847-9877-fc3a-028a85c9f59b.jpeg)

そんな思考プロセスじゃ遅いですよね。
カウンターが決まらず負けてしまいます。

![スライド12.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/8e89cf31-686a-8d82-fccf-1ea34ab083c3.jpeg)

相手が飛び込んできたら、反射的に技を出せることが大事ですよね。
そのためにやりこみは必要です。

![スライド13.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/4b31796a-2993-d720-c941-eb583b0d5522.jpeg)

あるアニキが言いました。

「ショートカットキーを使う」と心の中で思ったなら、その時すでに行動は終わっているんだ

ショートカットキーは『意識せず』使えるようになるまで、『意識して』覚えなきゃいけません。

では、どうやって覚えたら良いでしょう？


## 反復練習には CodeKata

![スライド14.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/98f29eda-ec8c-0d99-74af-be3d50c9f4fc.jpeg)

おススメは[CodeKata](http://codekata.com/)や[CyberDojo](https://cyber-dojo.org/)にあるような小さなお題を何度も繰り返しショートカットを意識して対応することです。

最初は1時間かかっていたお題が、ショートカットを使いこなせるようになるうちに30分、15分に短縮していくことでしょう。

短くなっていくたびに、成長を実感して、開発者としての自信につながっていくと考えます。


## XPの目的は圧倒的なソフトウェア開発の実現(おさらい)

![スライド15.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/cc6e3589-0840-b476-082d-7d3670ab3f57.jpeg)

さて、最初のスライドに戻ります。

XPの目的についてショートカットキーと一緒に考えてみましょう。
* もっと安いコスト 
    * IDEやエディタに標準で搭載されているから、実質無料ですね。
* もっと少ない欠陥数
    * ショートカットキーによる一括操作でミスが減るので欠陥数を抑える効果がありますよね。
* もっと高い生産性
    * 複数の操作をショートカットキー1回で実現できるって、本当に生産性が高くなりますよね。
* もっと高い投資効率
    * ショートカットキーを覚えれば、別の開発や他の言語でも活用でき、今後の開発者人生においてとても投資効率が高いですよね。

と、いうことはですよ。

![スライド16.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/9c488fee-d817-ab57-5363-d0269f47468b.jpeg)

『XP ≒ ショートカットキー』と言っても過言ではないと考えます。

## まとめ

![スライド17.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/b4cac292-285c-5599-9c69-1c5d3e2f377e.jpeg)


## おまけ

タイトルで出オチしたくなかったので『ショートカットキー』ではなく『近道の鍵』と表現しました。
タイトルだけ見た人が『銀の弾丸』みたいなものかな、と『ショートカットキー』を連想していなかったら計画どおりです。




以上、読んでいただいてありがとうございました。
明日は @sa-da さんが担当します。お楽しみに！