動機
Rails Girlsのカリキュラムが時代に合わなくなりつつあるのでは、みたいな議論を複数人としたことがあるので、個人的な想いを書きたいと思いました。
TL;DR
「動き」のあるアプリケーションを作れるようにするといいんじゃないか。
本編
前提
まず、エンドユーザー(Rails Girlsの参加者の多くはこのタイプ、ここではアプリケーションの生産者ではなく消費者であるという意味合い)が利用するアプリケーション(特にウェブアプリケーション)の品質は年々向上しており、今やSPA(Single Page Application)を利用することすら当たり前の人もいる。
一方、Rails Girlsのワークショップで作るアプリケーションは伝統的なCRUDのアプリケーションであり、そこには現代的なアプリケーション作成における重要なパーツであるインタラクションが欠けている。
問題意識
Rails Girlsの目的は参加者に良いアプリケーションを作ってもらうことではなく、成功体験を持ち帰ってもらうこと。それはそうなのだけど、「普段自分が使うアプリケーションよりもインタラクションの面で明らかに劣るもの」を作って得られる成功体験の質はどれだけ高いのか。この問題意識がこの記事を書かせている。
解決に向けた案
やはりインタラクティブな現代的ウェブアプリケーションを作る上でJavaScriptは欠かせない。しかしRails Girlsの趣旨を考えても、そのために重量級のライブラリを導入するのは避けたい。
色々を除外した結果、ワークショップの方針として、
- Stimulusを使う
- ライブラリを使わない(Vanilla JS)
の2つを挙げたい。
Stimulus
Stimulusを使うことにはいくつかのメリットが考えられる。
- DOMに記述が必要なのは
data-target
などの属性だけで、これはコピペするHTMLに含めてしまうことができる - 新しく必要になるJSは単一ファイルなので、説明も比較的容易
- インストールが簡単(
rails new --webpack stimulus
でインストール可能)
一方、無視できない欠点もある。
- インストール時に一手間(
webpack
関連の記述)が増える - 概念は必ずしも易しくはない
- 魔法が多く、書いてないことが行われる
総じて、個人的にはアリな選択肢だと思われる。
Vanilla JS
要はライブラリを使わないで書くということ。こちらのメリットは、
- インストール不要
- 書いたままのことが起こる
欠点は、
- やろうとすることの複雑さ次第ではライブラリを使うよりもコードが多く複雑になる可能性がある
正直、Vanilla JSで何かちゃんとしたことをやるのが初学者に対してどの程度簡単に感じられるのか次第になってしまう気はする。
まとめ
実は、Stimulusを使ったRails Girlsのワークショップ向け事例を作れないかと思ったのだけど、案の定間に合わなかったので、ふわっとした議論になってしまっていることは否めない。
しかし、2020年になろうというときにせっかく作ったアプリケーションに動きがないのも寂しいと思うので、なんとかしてアプリケーションに動きを付ける方法を模索していきたいと思う。
個人的にはStimulus推し。
最後に
カリキュラムを更新する場合、本家のRails Girlsの方とも一緒にやらないといけないと思われるので、実際はそちらが大変だと思うのだけど、そちらも含めてやっていきたい。