入門本を終えた人向けのサンプルプログラム学習促進アイデア

書店でプログラミング本があるコーナーに行くと思うことがあります。それはプログラミング入門本は多いが、中上級者向けの本は少ないということです。

メニューや商品としてあるということは一定程度売れているからと言えますが、一方で選択肢としてそこから選ぶのだから供給側が専門性やら何かを狙って絞って置いているということも考えられます。

例えば、プログラミング系の出版社が本を出すわけですが、こういう本は出版社がある程度売れる本=入門系ということになるんだろうと言えます。これは不動の事実というよりも、僕が出版担当者、営業マン、または編集者である程度売上を作らないとという立場になれば当然「世の中のニーズに沿ったもの」を売ろうとするよなあという立場転換をしても思います。

一方よくある問題というか課題に、「では自分が届けたい本やらは作らないのか」ですが、結局これが出来るような体制を作ったり、そういう関係づくり(究極的には例えば出版社としての信頼やお客さん、読者との関係構築)がなければ出来ないはずです。

一部の現象だけ切り取ってはわりと誰でも言えることはありますが、その前後である文脈があったり、そこを想像出来るかどうかが大事になりそうです。

長くなりましたが、本題は上の話どっちに振るべきとかそういうことでなく、入門系周りにビジネスチャンスがないだろうかを考えてみたネタです。

今回はタイトルのネタを考えつくまでのいくつかの前提を出しつつ、最終的に簡単にまとめています。珍しく一つのネタのみです。

実は入門本は多いが、次にやることないよニッチがある

何を言っているかというと、例えばJavascriptというプログラミング言語で説明してみます。この言語はWebブラウザなどで動的な印象を与えます。例えば、写真が横にスライドを勝手にしてくれるサイトなど見たことがある方は多いでしょう。全てJavascriptだけではないし、また色々な流行りがあるのでそこはスルーしてください。

それで、そういうJavascriptを勉強したいと思った方はどうするか。定番としては独学=本を買って勉強することがあります。これは書店に言って2,000円から3,000円も出せば1冊買えるのでそれで勉強するということです。

勉強後にふと疑問がその方は出てきます。「入門本は一冊やったんだけど、さて次に何をしようか」ということです。実はこれあるあるネタであって、わりとハマります。失敗すると「やったんだけどやること次分からないからやめちゃった」となりますし、成功すると「作りたいものがあったのでさくっと作ってまた次のステップへ」となります。

僕自身はこの「次なにやるか分からない」ことを「アイデアの問題」だと考えています。独学でプログラミングでJavascriptでという分野なので、どうしてもプログラミング入門本の問題とか、独学の勉強の仕方とかになりがちですが、単に「次に何をやりたいか、作りたいもののアイデアがないだけ」じゃないかと考えています。ただ正確には、「次何をしたいか見えてこないからどうしようと考えていて、勉強をしていく中でこれやりたいとか、次これかなとか、次の何かが見えるようなものが見えなかった」のであって、アイデアがないから駄目とか、アイデアがあるからいいとかって話ではありません。

そもそも、インプットが少ないならやれそうなリストも減る

プログラミング初心者にとって、やりたいことも少ないし、やれることも少ない。この少ない×少ない=より少ないという現象はよく起こります。だから上級者やプロがやりたいことを形にしていくと、上手くなればやりたいことが見えると勘違いしますが、実際には「上手くなったからやりたいことが増えるのでなく、上手くなってかつやりたいことがあるからやりたいことが増える」だけかなと。つまり、1つの要因、変数を見ている初心者がいるけれど、上級者側は2つの変数を同時にコントロールしているので、認知が異なってしまっているかなということです。

インプットが少ないとは、Javascriptということについて知っている情報や知識が少ないということです。やりたいことが少ないとは全くないわけではないけど、そもそも「何がやれるのだろうか」を探る意味で勉強している人も結構いるはずで、そういう人にとっては勉強自体で「やりたいことが増える」ことが期待されます。

これらの解決策としては考えられるのは、

  • 知識を増やす。勉強をする。詰め込む形でも何でも良いので増やすことで選択肢を増やす。
  • 勉強という中で、やりたいことを考えて形にしていく事例やうまい人のやり方を見ていく
  • 別のやり方で、そもそもやりたいことが何かを洗い出してアイデア出しをする

などです。

現実的なのは勉強を当該分野でやりつつ、やりたいことはなんだろうかを探して、何かあればそれをまず実現していくということになります。

僕はこれに関しては「勉強の仕方」と言われやすいですがどちらかといえばこれも「アイデアの出し方」と考えていて、また「やりたいことがない人も多い」という、いわば好奇心や面白いという感性を殺してしまったり、錆びてしまっているとこれが辛いんじゃないかと思っています。普段何か面白いことアンテナがある人は「苦なんかなくぱっと出てきます」からここが大事です。

ちなみに、勉強の仕方という意味では、入門本にそこまでヒントはないはずです。矛盾しがちなところを丁寧に読み解いていくのはかなり難しい。例えば、知識は詰め込んだ方がいいけどとはいってそれで思考して形に出来るとか、やりたいことが見つかるかというとまずない。みたいなことをいきなり言われてもかなり辛いのと、それを入門本の中で解説をしていく中で出すのは、哲学的+実践的+入門的という視点が求められるからですね。

あえていうなら、哲学的プログラミング的入門書があればいいのですが、つまらなさそうです(笑)そしてニッチはあるかもしれないので、作りたい方はぜひやってくださいと思いますが、読者は「プログラミングを自分で出来る状態にしたい」のであって「哲学を学びたいのではない」と思っているはずです。しかし、作る側からすれば「プログラミングも必要だが、やりたいことをどう探すか、見つけるか、考え方のレッスンみたいな小面倒くさい話が大事」となります(笑)僕は哲学大好きですけど、とはいえプログラミング本といわれてそれを求めるかというとないでしょう。ということから分かるように、入門本が提供しているものと、実際のズレがかなり顕在化している気がします。

サンプルプログラムの学び方サービス

哲学的プログラミング的入門本(笑)が何を意味するかは文字面では意味不明ですが、それはいいとして、他のアイデアを考えてみました。

それを簡単に書くと、

  • 世の中のプログラミング入門系で出てくるサンプルプログラムを集める、データベースといってもいい
  • そのサンプルプログラムを誰がどのように考えると面白く学習できるか、または仕事に使えるかという視点でまとめる
  • 特徴は、データベースでなく、あくまでターゲットとする人が喜ぶ視点を提供し、かつそのサンプルプログラムから学べることを増やすこと
  • マネタイズとして出版社を応援したいなら、サンプルプログラム掲載の本を紹介するのもいいし、著者自体に送客して本を売るというのもあり。またサンプルプログラムのビジュアル化としてGIFとか動画で見せるという説明形式を変えるのもあり。

というアイデアです。

例えばですが、

  • おみくじプログラムというものがあります。これは今の書籍もですが、過去の本でも同様でしょう。みんなおみくじ大好きなんでしょうか。みんな好きならいいけど、嫌いな人には全く刺さりません(笑)
  • 例えばおみくじプログラム自体は、なぜやるかというと学習意図があります。それは例えばランダム関数というランダムにコンピュータが選ぶという仕組みであり、仕掛けです。1回目は大吉、2回目も大吉、3回目も大吉ならおみくじでなく、ただの「必ず大吉が出るプログラム」ですが、もちろん一般的に「おみくじではないプログラム」でもあります。これをランダム関数を使うことで、1回目は吉、2回目は凶というように変わることをプログラムがやってくれます。
  • ランダム関数自体はものすごく意義があると思いますが、学習者によってはインプットが少ないのと他にやりたいことがない場合は、「おみくじプログラム=ランダム関数」という世界しか構築出来ません。乱暴ですが、これが「あー乱数使えば色々出来るよね、例えば」とかいう人はすでに初心者ではないという感じです。また企画なり違う経験値から広げられる人は「おみくじプログラムがあって、これはランダム関数でやっていて」というところで「ならば、例えば音楽再生ソフトとかもランダム再生ってこれを使ってるんだな」とカンが良いはずです。しかし、これが初心者には分かりづらいというか分からない。
  • そこでランダム関数というものを取り上げて、例えば仕事で色々なサービスを使う人なら「パスワード作成に困っている」から「パスワードメーカー」を作りましょうと提案します。これは乱数を作れば出来るはずです。パスワードの強度チェックとかちゃんと知りませんが、調べて勉強すればできるでしょう。これならおみくじよりやる気出ませんか?それが一つの学習動機づけにつながります。
  • 上でもあげたようなWebデザイナー向けとして、写真をスライドするようなものを作りたいけど、という人でサンプルを貼り付けたりだけしかしていないと「中身」が分からないので、どういう原理で動いているか分からないことがあります。それが駄目ということでなく、メンテナンスや長期で付き合っていくと困るシーンがあるというのが実際でしょう。そこで写真スライドプログラムも同じ写真をスライドでなく色々な写真をスライドしたい。となるときここでも乱数が出てきます。こっちのほうが学びたくならないか?あくまでそういうWebデザイナー向けで考えてみました。

という感じです。たまたまおみくじプログラムですが、例えば画像データベースとかもあったりそれ誰が使うんだろうとか、ストップウォッチとかもそうです。サンプルプログラム自体が悪いというか、サンプルプログラムからもっと色々学べるはずなのでそこってかなりぽっかり穴が空いているかなという視点です。

学習の仕方という盲点

アイデアは以上ですが、入門本をやるとき、入門本の通りやればまあ問題ありません。しかしそれはあくまで写すレベルなので、出来るとは異なります。しかし自分で写しても出来たものがあるのはステップアップです。一通り出来た、本を終えたというのは素敵ですが、それと同時に残るのは「書かれたものを写せば出来る、動かせる」ということであって、「自分が考えたものを書いて動かせる」とはかなり差があります。

  • 自分でやりたいものがあるかどうか
  • その考えたものをコードやプログラミングとして書けるか
  • そもそもプログラミングで実現可能なのか

など検討事項がわりとあります。

よくあるのが、Javascriptだけでいけるとおもったら色々な知識がいるのでどうも実現できないから諦めた。または他のその必要なことをやっていたらやる気がなくなってできなかった。辞書で調べたら分からない単語が出てきてまた辞書を調べるみたいなパターンです。これでより辞書が好きな人ならいいのですが、そうでない人はハマって終わります。

世の中の学習法自体はそこまで変わってないはずと思っていますが、入門本を批判してるのでなく、入門本を終えた段階ではやりたいものがあるかなしは関係ないという話です。やりたいことがあってそれを入門本レベルで実現する人はかなり上達が早そうです。

考えたものをプログラミングでやりたいかは、結構面白い話題です。世の中に自分が考えるプログラムよりも良いものがたくさんあって、それと戦うのは意味がないからです。意味とはそれに勝ちたいとかの場合です。別に売る必要はないですが、最終的に売りたいなら商売やビジネスを学ぶ必要が出てきます。世の中にあるものを上手く使うほうが効率的な面もありますし、一方でメンテナンスという意味や自分が作りたいとか不満になったものを解消するためにやるというのも力強いモチベーションになりますから常にあるものを使えばいいわけでもないでしょう。

プログラミングに限らず、

  • 自分がどのレベルにいるかが初心者には分かりづらい。なぜなら自分が当該分野の全体像などが分からないから。
  • よってどういうことをやればいいかも分かりづらいので、やりたいことがあってこれをやりたいレベルになるまでは隔たりがある
  • 良い先生やアドバイスする人がいると効率性があがる気がするが、一方で自分で考えるという時間を奪うことにもなるので溜めが生まれにくい
  • 学ぶことは結局、わからん→わかった→やった→わかってない→そういうことか!の繰り返しなので、それを面白がれば大体いけそう

というところです。

いきなり、入門本を終えてやりたいことが見つかってこれだという人は稀だと思います。僕自身がプログラミングを始めた頃、全く同じ状態だったからです。自分はゲームを作りたいが本には載ってないのでどうすればと思っていました。しかし、ゲームプログラミングになると環境が変わっていてなんか難しそうだし本が高すぎて買えないみたいな感じでした。そうなるとわりと詰んでしまうのですが、一方で全くフリーのプログラミング言語でもゲームを作成している人がいたりして、そのゲームが面白いと嫉妬までいかないですが、すごいなあとどうやるんだろうと思ったことがありました。

実際にはゲームを作る=プログラミングだけではなく、企画やデザインやら色々な要素があって、なんか変なゲームは出来るけどそれが面白いわけじゃないですからね。

これって「やりたいことがゲームで例えば落ちゲーを作りたいけど」というある程度明確であっても、「それをやるには多分プログラミングだけではなくて」となって、学ぶ範囲も膨大になります。とはいえ、膨大なことを一人で全部やれということでなく、どうやっていくか。わりと最短でなくても、楽にモチベーションが続いていくものを考えていくことで、結構良い感じで学べそうです。そういう意味では強い意志とかよりも、どの局面でも、つまり「入門本を終えてぽっかり次何しようモード」であっても、「楽しい」と思えるようにするということです。

分解法もあります。落ちゲーの要素を分解して、一個ずつ作っていって全体にする。でも哲学じゃないれですが、部分の総和は全体ではない(笑)、つまり、一個ずつやっても出来たのは落ちゲーでなくアクションでしたということもありうるということです。その時当初とは違うけど、まあそういうのも面白いし勉強になったと思えれば多分それって良い学習をしたんじゃないかと思えます。

話を戻して、初心者を脱したという目安は、多分ですが自分がこういうレベルだからこれが分からないから、こういうことをすればいいだろうという考えが述べられることでしょう。言える、書けるといってもいいですが、それが出来るのは一定のことを当該分野で学んだり、または別で学んだストックがあるからです。そしてその対応や解決を考えていって説明できたり、論理的にいえたり出来ればグッドです。

そしてやりたいことを自分で調べる、考える、プログラミングして形にするのはわりと中級者以上であり、わりと最短距離とかでやりたいことを考えて実現するのは上級者とかプロだとか思っています。これらの人を見ると「ああ、プログラミングってすごいな。簡単にできるんだ」と錯覚しますが、これは罠で、そう簡単に出来るように見えるものが自分が出来るかは別です(笑)罠とは意図的でなく、結果的なということです。実際に潜在的に学習時間やそのことに対して気づいたこと、その人のやり方、考え方、環境があって出来ることですから。

自分の周りにヒントがあるということ

今回の話は自分が書店にいったり、プログラミング学習ということを意識した時に何度も出会ったことでした。実際にそういう話を聞いたりもしましたから、事実というかニーズとしてはあるはずです。

ただ入門の次というのは、どちらかというと偏見かもしれませんが、現役合格を目指す塾でなく、予備校っぽいイメージです(笑)または新卒でなく、第二新卒という言葉が完全に定着しましたが、なんか落ち目を感じるというか意図がなくてもなんだろうなと思います。とはいえ実際は新卒という定義が広がるのは良かったかもと。

それでプログラミングも本を終えて最短でとか、Webの学習コースを終えて次はとかって気持ちよく出来ることって稀です。多くは試行錯誤で何したいんだっけとか、色々とプログラミングのスキルとやりたいことと相談して実現できるかどうか、どこまでやれるかの話で結局モチベーションになります。好きとか楽しい部分がないとまあ進まないですよね。お金もらったり、仕事とかになると話が異なりますが、そこではストレスとか別の話がついてきますからね。

こういった潜在的というか小さなニーズは実は知っていても手を付けない人が多いです。僕はアイデアだけ置いておきますが、やるにはプログラミングが好きとかそういう学習者を支援したいとか、何か熱が必須です。僕にはそこまでありません。気が向けばですが多分ないでしょう(笑)

つまり、感じたり気づいたネタ×あなたの情熱がセットです。これがないものをお金やリソースを投下しても空回りしますし、仮にうまくいっても手応えがなく虚しいだけかもしれません。別に止めるわけでもないので考え方として。

今回のネタは、プログラミングとか全く興味なければ思いつかない話ですし、また学習視点や学び方について何か興味がある必要があります。掛け算といえば掛け算ですが、今回のネタはあなたならプログラミング×入門の次でなく、自分が学んでいる分野×入門の次と考えれば新たなアイデアは出てくるはずです。もちろん、学びたい興味がある程度持続してやってみたら問題点やここがフォローされてないということに気づけるかどうかですが、一定学べば多分気づけるはずです。

おわりに

今回はプログラミング入門本の次が空いているという視点でした。そしてそれには、サンプルプログラムとかをもっとターゲット別にわけて、即戦力で使えるものとか、またはそれだとサンプルの仕分けだけなので、学習視点を強くしてサンプルをこう考えると良いというものを出すことというアイデアでした。

ただ冷静に考えると最近出てきたプログラミング学習サービスが多数ありますがそれらはこういう考え方に近い気がします。つまり独学というよりも、本でなくリアルタイムで正解やらコーディングを覚えていって必要なら低額で先生やアドバイスを受けられる。時代の流れはそっちですね。

学習自体について、僕は溜めがあるかはどうかは大事だと思いますが、時間がなくて即効性を求める人は受け入れられないでしょう。ですから、即効性の高いものばかりをやっていると、断片的になるかなと。だからこれは正解はないのですが、時間がないなら即効性ただしある時や強制的に総合的に学ぶとか、何か仕組みが大事です。もちろんのんびり独学をすればいいわけでもないんです(笑)例えば3ヶ月かけて1冊学んでも学習したものはすぐ忘れるので使わないと駄目です。ですからサンプルでもなんでもいいので定着させるようにプログラムする。それで覚えるなり、理解していくことです。

まあなんでもやってみてどうかということですよね。

プログラミング学習系サービスは入門系がほとんどで、それ以外は多分ニッチすぎて成立しないのではないかなと思っています。入門本と同じでそうであるなら、入門コンテンツを終えたら次を何をするかというぽっかり穴が空いた人は一定程度いると思っています。でも上で書いたようにある程度の難しさがあって、こちらが提示するとそれに従うだけだと自分の頭で考えられなくなることです。

つまり、ヒントやこう考えたらいいのでは、相談してくれたら(私はこう考えているんだけど)アドバイスするというのが最適かもしれません。ただこれはその人に「ぽっかり空いている」だけでなく「ぽっかり空いたけど、何かやりたい」でなく、「ぽっかり空いたけど、何かやりたいことがあって、それはこういうことなんだけど、どうしていくのがいいか」というくらいまで落とし込んでないと辛そうです。

辛いというのは、やる気がないとか、全くやりたいことがないのにプログラミングをしていてもなんとも言えないからですよね。ある程度の興味と方針、そこに対するないなりに未来や将来のイメージがないと何でもできないかもしれません。できないというか、「学習したところで使えるにはかなり遠い話」になりそうですからね。

今回は以上です。

筆者プロフィール

シゴトクリエイター 大橋 弘宜
シゴトクリエイター 大橋 弘宜
「シゴクリ」運営者。アイデアの力でお客様に貢献するゼロイチ大好きアイデアマン。ビジネスアイデア相談実績等は200超を超える。好きな言葉は三方良し。詳しい自己紹介仕事実績も合わせてご覧ください。お仕事メニューお問い合わせはお気軽にどうぞ。

違和感で発想のやり方が学べます

日常生活で感じる違和感を用いて、アイデアを出すやり方が学べます。「違和感発想法」は誰でも気軽に出来るサービスです。

LINE公式アカウント登録で無料で学べます。気になる方はチェックしてみて下さい。