web開発初心者がReactに手を出すのは正しかったか
この記事は久留米高専プログラミングラボ部AdventCalendarの23日目として書かれています.
自己紹介
こんにちは,2年生のanninです。私は今年,チャレキャラというアプリ開発初心者対象のコンテストに4人チームで参加しました。そこでReactとFirebaseを用いてチャットアプリを開発しました。この記事では、タイトル通りチャレキャラに参加するまでほとんどweb開発に触れていなかった私が、半年Reactを使ってみて感じたことを書きたいと思います。 なお、筆者はまだまだ未熟のため技術的に曖昧な記述をしているところもあるかもしれません。その時は優しくまさかりを投げてくださると助かります。
Reactとは
そもそもReactを知らない人に向けて簡単に説明すると,動的なwebサイトやwebアプリ(例えばSlackやDiscord)のフロント部分(実際にユーザーが触る部分)を作ることができるJavaScriptフレームワークです.よくわからないと思った人は,ChromeやFirefoxなどのwebブラウザで動くアプリを作れるやつと理解していいと思います.
ちなみに、このReactで実装できるようなwebでユーザーが直接操作する部分をフロントエンドと呼ばれます。このフロント技術に関してですが、私がReactを学ぶ前にフロントエンドロードマップというものを見つけました。
見てもらうとわかるのですが、Reactを含むフレームワークがロードマップに出てくるのはかなり後です。これを最初見た時は、JavaScriptを一切触ったことなく、HTML/CSS もまともに書けない自分がReactでアプリを作れるのだろうかと、とても不安になりました。
では、このような自分がReactに手を出したのは正解だったのでしょうか?結論から言うと、私は正解だったと思います。それは以下の理由からです。
理由
派手なことが比較的簡単にできる
私はチャレキャラに参加する以前、二ヶ月くらいかけてpython とPyQtと呼ばれるフレームワークを用いて画像ビューアを開発しました。その時に、まず画像を表示させる方法が分からず悩み、縦横比を調べて拡大の仕方を変える処理も標準では用意されていなかったので書き、挙げ句の果てにはウィンドウの移動の処理も書かされました。 PyQtが酷すぎるだけの気もしますが、世の中にある「GUIを作れます!」と言っているライブラリやフレームワークって「作れはするけど作りやすいっては言ってない!」って感じのやつが多い気がします。こういうライブラリは使った時間や努力の割に作れるものが地味だったり、得られるものが少ないため、文化部発表会の展示で、努力が伝わらず結果展示を見にきたエンジニアに「この程度かww」って感じのえみを浮かべながら話されたという筆者のような悲しい事態が起きたりします。 その点Reactはそのようなライブラリやフレームワークに比べれば非常に書きやすく、簡単にGUIを書くことができます。情報も多いので、分からないことがあっても解決策を見つけれることが多いですし、何より簡単に派手なことができるので、モチベが維持しやすいです。
HTMLやCSSを学ぼうと思うきっかけにもなる
私は実はチャレキャラに参加する前にも、ちょっとだけHTMLとCSSを学んだことがありました。しかしこれらはかなりデザインよりであることや、情報を調べた時にコーダーと呼ばれる職種の記事が多く、「自分がしたいことはこんなことではないのでは?」と思ってしまい長続きしませんでした。
ではReactを使うとどうなったでしょう。実はReactをただ使うだけなら、HTML/CSSの知識は最低限あればなんとかなります。webサイトのコードをディベロッパーツールで見ても全然分からない自分でもなんとかなりました。むしろReactはコンポーネント指向の考え方が分かっているほうがすんなり入ってきます。デザインに関してもCSSフレームワークを使うことによって、CSSをかけなくてもなんとかなります。が、しかし自分は使ってる途中で、細かいところをいじり方が分からないことにむずむずするようになりました。何をいじれば望み通りの見た目になるか分からないのです。結果HTML/CSSをやっぱりもっと学ぼうと思えるきっかけになりました。
終わりに
もちろんHTML/CSSにすら一切触れたことがないだけでなく、そもそもプログラミング自体が初心者の人がReactに手を出すのはきついと思います。が、しかしプログラミングの基礎はあるけどやりたいことが見つけられない人や、webやってみたいけどHTML/CSSに興味を持てなかったという人はReactをやってみる価値は全然あると思います。やってみないと分からないことは人生多いので、もし今やりたいことを見つけれてない人は、Reactをやってみるのは良いと思います。