Composition APIでVue 3に入門する研修教材を運用している話

[Vue Advent Calendar 2022](https://qiita.com/advent-calendar/2022/vue)の25日目の記事です。

12月25日といえばクリスマスの日です。みなさんはサンタさんからプレゼントをもらえましたか？

私からもささやかなプレゼント（？）としてComposition APIでVue 3に入門する研修教材のGitHubリポジトリを共有します。MIT / CC-BYライセンスのもと公開しているので、ライセンスの範囲内でご自由にお使いください。

https://github.com/tuqulore/vue-3-practices#readme

## 使い方

2通りの使い方ができます。各自学びやすい方法で使ってもらえればと思います。

### [スライド](https://tuqulore.github.io/vue-3-practices/)を読みながらハンズオン環境で手を動かす

![リアクティブな値のテキスト展開のスライドのスクリーンショット](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3036625/ee104283-53c1-00c1-f791-aeb567cff081.png)

https://tuqulore.github.io/vue-3-practices/22

### [学習資料](https://github.com/tuqulore/vue-3-practices/blob/main/LEARNING_MATERIAL.md)でキーポイントが分かるか確認しながら対応する演習環境で手を動かす

![演習環境のスクリーンショット](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3036625/06eb8201-854b-071e-aaff-21b64ebf8cd0.png)

https://stackblitz.com/github/tuqulore/vue-3-practices/tree/main/practice-computed?file=src%2FApp.vue&terminal=dev

## なぜ作ったのか

私が所属している[ツクロア](https://tuqulore.com/)という会社に、[WebDINO Japan](https://www.webdino.org/)さんから「研修を受け持っているのですが、Vueアプリケーション開発についてレクチャーできますか？」というお声がけをいただいたのがきっかけです。[@Hidetaro7](https://qiita.com/Hidetaro7)と一緒に作りました。

研修の内容が

- ウェブアプリケーション開発の企業研修
- 全社でUIフレームワークとしてVueを採用
- 初学者向け
- 全10回中3回分（約16時間）がVue
- **レガシーについては取り扱わなくてよい**

とのことだったので、Vue 2とOptions APIをスキップして、Vue 3とComposition APIで入門できるような教材にしたいねというコンセプト決めをしました。

## どんなツールを使っているのか

### Slidev

[Slidev](https://sli.dev/)はスライドの作成に使っています。Vueのコードをページ上で実行することができるので、動作するサンプルコードを埋め込むことで実行結果をスライドに含めることができる点がいいなと思っています。

### StackBlitz

[StackBlitz](https://stackblitz.com/)はハンズオン環境、演習環境の提供に使っています。ブラウザ上で動作するので、受講者に動作環境のセットアップをしてもらわなくて済むのと、フォーク機能があるので動作しないコードの共有ができサポートしやすいです。

## Vue.js 3 ハンズオンとの違い

Vue.js 日本ユーザーグループの方々が作られたハンズオン教材もあったりします。 https://handson.vuejs-jp.org/

こちらはVue 3でハンズオンするという点は同じなのですが

- Vue.jsプロジェクトを作るところから始める
- Options APIを使う

というところが大きな違いになっています。Vueでアプリケーション開発をする際は自分で開発環境をセットアップできるに越したことはありませんし、Options APIでもVueのコアとなる考え方（宣言的レンダリング、リアクティブに値を取り扱う等）は変わらず学ぶことができるので、作った研修教材と併用して学習することもできそうかなと思いました。

## 運用のこれまでとこれから（とオチ）

いまのところ研修が約4～6か月に1回のペースでおこなわれているので、研修前に少しずつ内容を改修しています。過去に2回の研修で利用しました。

次回の研修に向けては、setup関数での記述からscript setupでの記述にアップデートしようとしています。

ただ、この記事を書いている最中に気づきましたが、https://ja.vuejs.org/ （https://v3.ja.vuejs.org/ ではない）はOptions APIとComposition APIのどちらでも入門できるようなコンテンツになっていますね…！

> 学習を進める段階では、どちらか一方のスタイルにこだわる必要はありません。このドキュメントの続きの部分に登場するコードサンプルは、該当する場合、両方のスタイルで提供されます。左サイドバーの上部にある API 選択スイッチを使って、いつでもスタイルを切り替えることができます。

![最新の公式ドキュメントはOptions APIとComposition APIでコンテンツを切り替えられるようになっている](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3036625/f1b94fdc-81c3-2606-fb88-fe030651c9a3.png)
引用元：https://ja.vuejs.org/guide/introduction.html#api-styles

もはやコンセプトの独自性という観点では作った研修教材の意義は薄れつつあるかもしれないですね。オンラインで学習するにあたっては、公式ドキュメントのほうが頻繁に更新され続ける期待があるのでそちらを使ったほうがいいです。

...という結論もあまりにさみしいので一応補足しますと、実は研修教材にはVueだけではなく、Vue Routerなどの周辺ライブラリ、Nuxt 3の内容も含んでいるので、Vueでアプリケーション開発を始めたい方にとっては引き続き役に立つコンテンツにはなっているかと思います。興味あれば見てみてください。フィードバックあれば[issue](https://github.com/tuqulore/vue-3-practices/issues)立てるなどしてもらえればと思います！

公式ドキュメントの翻訳に関わられた方々に感謝して締めたいと思います。メリークリスマス :christmas_tree: 

https://twitter.com/vuefes/status/1579626897759424512?s=20&t=RR0Ul6FnUHrVlfBxeJhlNg