Flutter講義:その0(前置き編)

毎年4月になると、新入社員研修講師の仕事をやっている。Javaのことがほとんどだが、たまにPHPを教えたりしている*1

初心者向けの講義、そして「仕事」としてする講義は実は目的がはっきりしていて、ただ覚えてもらうだけではなく、きちんと成果物を作れるようになることを教えなくてはいけない。

これはお客さまである講師派遣先企業において、新人エンジニアが即戦力として、またはすぐに使える戦力にはならないまでも、現場に出て困らないような教育をするために、成果物を作るまでの流れを疑似体験させたい、という考えに基づくものだ、と理解している。

それに対して、ブログなどの記事であったりYouTubeなどの動画コンテンツは、どちらかと言うと「ある程度分かっている人向け」というか、独学で学ぶのに適したコンテンツだと思っていて、初学者にとっては若干敷居が高いと思っている。

もちろん、特にYouTubeなどでは「初心者でもわかる」と銘打った動画が数多あるが、実際に見てみると初心者が理解していなければいけない基本的な部分がわかっている前提だったり、そもそも抜けていたりするものばかりだったりする。

最初はコンテンツの特性なのかと思っていたが、そういったコンテンツのクリエイターたち(のコンテンツや経歴)を見ていると、目的が違っていることに気付く*2

ブログ/動画コンテンツの目的

前述の通り、講師と言う仕事は目的がはっきりしている。教えて、理解してもらい、使えるようになることまでがセットになっている。この1セットがまとめて責任として負わなければならない。

実際には講師派遣の企業がその責を負い、その企業と契約をした講師が責務を果たし、派遣先企業(の新人エンジニアたち)に研修を実施する、という仕組みだ。

ではブログや動画はどうか。

研修には双方向性があるが、ブログや動画にはそれがない。つまり、テレビやラジオの何とか講座と同じでテキストや動画、必要に応じて補助教材などがあったとしても、基本的にはコンテンツは一方通行になる(「インタラクティブ」ではない)。

コンテンツの消費者がそのコンテンツを見たことで理解できるかどうか、使えるようになるかどうかは消費者次第なのである。コンテンツそのものの正確性やわかりやすさはクリエイターの責任だし、わかりやすく作るべきだとは思うが、それが理解できるかどうかは実はコンテンツ消費者次第であり、クリエイターがそこに責任を負うことはできない。

ではなぜそんなコンテンツを作るのか。目的は何なのか。

クリエイターにとっては自分の知識をアウトプットすることでいろんなメリットがある。主に自分の知識を整理することができ、知識定着につながり、さらにスキルアップも望める。ほかにも、それこそ講師の仕事を探している人たちにとっては「教えること」の疑似体験にもなるし、魅力あるコンテンツはそれだけで(講師の)仕事を取るため、または既に講師をしているのであれば講師そのものの魅力をアピールする場にもなりうる。

私が作るとどうなるか

新人エンジニア研修講師の経験もあり、長く家庭教師や塾の講師もやっていた私が、そういうコンテンツを作ったらどうなるのだろう、と、私自身、実は若干不安に思っていたし、以前からそういうコンテンツを作ることに対する「責任」をどうすべきかと考えていた。

特に正確性とわかりやすさ、という部分においては気を遣う必要があるが、プログラミングの世界は日進月歩であり、作ったコンテンツはすぐに陳腐化していく。

だが、陳腐化を理由に作らないとしたら、それはいつまでたっても作れない、と言うことを意味するわけで、コンテンツを作ること、そしてそのコンテンツを使って教えることも無意味だ、ということになってしまう。

しかし、実際に講師をやっている現場に立って教えていると、そもそも教えるべき内容は「(ある程度)枯れていて」「常に最新の状況ではない」「よく使われる」ものだったりするのだ。

PHPで言えば、今メインで教えているのは7系だが、開発現場ではいまだに(そう、いまだに)5系が使われていることも考えて、7系に特化しない教え方をする必要があったりするし、逆に8系(≒現行バージョン)の存在も教え、『今講義で使っているのは7系』みたいな説明をしなくてはならないのだ。

だったらそのスタイルでコンテンツ作ればいいじゃん、と、半ば投げやりに思うようになってきた。

講義内容の紹介

そんな前置きはともかく、では教育コンテンツとして何を作ろうか、と考えてみたのだが、たまたま私自身がFlutterのキャッチアップをするためにまとめた資料があったので、それを転用しよう、と思いついたのが始まり。

そして、自分の講義スタイルがなんとなくできてきた今、「こんな感じで教えているんだ」という足跡を残してみたい、とも考えていて、かなり実験的な内容にしようと思っている。

タイトルにある通り、講義のテーマは「Flutter/Dart」である。だが、敢えて「初心者向け」という看板を外して、なんなら「初心者お断り」なモノを作ってみたい。

先に述べているように、そもそも初心者(≒初学者)に対してはFlutterとは?という説明から入らなければいけないし、そこまでの丁寧なコンテンツを作るつもりもない*3

もっと言えば、Flutter/Dartは初心者向けとはいいがたいし、ある程度プログラミングを知っている、少しかじったくらいの人たち向け*4かな、と思っていたりする。

講義内容の構成

Flutter/Dart、と書いているが、「Flutter」はUIのフレームワークであり、そのフレームワークを呼び出すための言語として「Dart」を採用している。

ja.wikipedia.org

ja.wikipedia.org

なので、まずはDart言語について、どのような言語であるか、と言うことを他の言語と比較しつつ紐解いていき、次にFlutterフレームワークDartにどう組み込んでいくか、という流れで講義を進めていく予定だ*5

なお、講義コンテンツの公開頻度は2~3週間おきくらいを考えている(ほかにもブログの記事を書きたいので)。

余談だが、いったんブログで講義内容を公開し、それを補助教材とした動画を作っていく、という計画もしているので*6、期待せずにお待ちいただければ。

*1:需要があればPythonでもJAMスタックでもできるんだが...

*2:先に書いておくが、「金儲け」目的が最優先ではない。もちろん収益も気にはなっているだろうが。

*3:そんな時間があったら新人研修用の資料を作ります

*4:ギーク向け、とまでは言わないが

*5:Javaを学習した後にSpringを学ぶ、またはPHPを学習してからLarevel、みたいな流れと同じ

*6:動画を作るとしたら夏以降