個人的には、JavascriptかDart(Flutter)をおすすめします。理由はUIが実装できて、ロジックもかけるから。
JavascriptはHTML/CSSなどと組み合わせてUIを実装することができ、Node.jsによってバックエンドのプログラミングも実装できる万能な言語です。ユーザーも多いし、ブラウザだけあれば動かせるので、環境構築も容易です。Webアプリケーション作るなら絶対通る道なので、はじめからやったほうがいいじゃんっていうだけ。
この記事では、Dart(Flutter)に焦点を当てます。プログラミングの学習教材として、Flutterという技術(SDK)が優れていると感じました。
本記事の対象者
if
for
function
ぐらいは書けるが、本格的なアプリケーションを作ったことがない- クラスとオブジェクトの区別は怪しいが
Sample sample = new Sample()
という構文は見たことがあって、とりあえず使うことができる - 連想配列(辞書型)を使ったコードが書ける。連想配列・・・?だとちょっと厳しい。
- スマホのアプリ開発に興味がある
おそらく、プログラミングをやり始めて数ヶ月〜1年ぐらいの方がフィットすると思います。
Flutter is 何
2018年にGoogleが世に出した、クロスプラットフォームフレームワーク。1つのコードで複数のプラットフォームで動作するアプリケーションを提供するもの。以下のプラットフォームで動作すると公式では謳っている。
- iOS
- Android
- Web(PWA)
- Windows デスクトップアプリ
- Macデスクトップアプリ
- 組み込み
すごく簡単に言うと、iPhoneアプリとAndroidアプリ、1個で作れるものです。
OSにインストールして利用するタイプのアプリケーションは、言語も動作環境も全く違います。iOSで動作するアプリを作っても、Androidでは動かない。同じ機能を持つアプリを2つ作る必要がありました。
flutterは、その辛みから解放してくれるため、2021年に私はヘッドスライディングで飛びつきました。大正解だと思っています。
Flutterはプログラミング初学者に向いている
Flutterの本質を表現したツイートがあります。本当にこのとおりだと考えています。
「やったことに対してできることがめちゃくちゃ大きい」という一文がFlutterの本質を表現しています。やったこと=実装するコードだと考えて良いです。
Flutterは「あ、こうやって書くとすぐ動くじゃん」という成功体験がとても得られやすいフレームワークです。2025年時点で、アーリーアダプターが一周回った程度です。これから、どんどんマジョリティが食いついてくるので、将来性も高いと言えます。
自分が作ったものが「操作できて動かせる」
プログラミングの楽しさをFlutterを通して感じてほしいです。
プログラミングを覚えるのに、Flutterでのアプリ開発はとてもよい教材だと思います。書いたものが目に見えて、動かせるから。どんなコードを書いたらどう動くのか、どこを変えたら何が変わるのか、視覚的に見ることが出来ます。
プログラミングの学習だと、黒い画面に print("hello world")
って書いて、地味にコードを動かすより、刺激が大きいです。UIを実装するのが、プログラミングの最初の一歩として、適切なだと思います。
バックエンドのコードを書くには、インフラを初めとした周辺技術の理解も必要となります。HTTPがよくわかってない、Webサーバを立てたことがないのに、WEBアプリケーションを実装できるなフレームワークを使っても、使われているだけです。応用が効かない。
ソフトウェア開発は「カタカナ用語」とずっと付き合っていく必要があり、一語多義的で抽象的な考え方や概念を、いかに自分の言葉で噛み砕いて、比喩化して、モノにしていくか。それがプログラミングの学習において一番大きな壁だと思っていますし、乗り越えられないと例外なく挫折します。Flutterはその挫折要素が少ないと感じています。
まずは、イディオムをなぞって覚える
プログラミングって、英熟語の学習に似てるような気がします。
クラスってなんですか?っていう状態でFlutter(正確にはDart)のコードを読み解けるわけがないけど、なぞることはできる。イディオムを覚えることは、誰でもできる。機械的に覚える。決まった表現(句)に理由はないから、素で書き取れるまで、書き写して進める。
英単語のイディオムを覚えたように、Flutter / Dartのイディオムをとにかく覚える。FlutterのWidgetを作るコードなんて、9割イディオムだから、初学者がプログラミングを覚えるのに向いている。
イディオムの存在や成り立ちを疑うのは中級レベルから。イディオムの向こう側がわかるようになるには、自分でコードを設計するようになって、クラスや関数を自作できる必要がある。そこは具体と抽象を行き来するという別のハードルがある。初学者にはハードルが高い。
初心者はターミナルで何かを作るより、UIを実装する中で基礎文法などを学ぶほうが、楽しいように思います。