社会人の方にプログラミング教えてほしいと言われることがちょくちょくあるのだけど、何をテーマに教えるのがいいか悩んでる🤔

どうせなら自分の生活がほんの少しでも豊かになるものを作ってもらいたいよね。 — ちゃんけ (@ketancho) 2018年2月4日

このツイートについて考えたことを整理しようと思います。というよりは、考えがまとまらないので、とりあえず記事にすることで整理するきっかけにしたいというのが本音です（笑）。この記事を通して、教材のネタ集めができれば嬉しいです。

背景

先日、文系出身の友人と飲んでいた時に「プログラミングできるようになりたい」ということを言われました。曰く、

職場で上の方の年次の方の人でExcelやPowerPointを使えない人がそれなりにいる。その人達は（仕事上）結構損をしていると思う。でも自分が同じくらいの年次になった時に、同じように後輩から「あの人はプログラミングできないから損している」と思われるんじゃないか、そんな危機感を持ってるんだよね。

これは決してOffice製品が使えない人を蔑みたい訳ではなく、「文系職でもプログラミングできるのが当たり前」な世界が来たときの危機感からくる本音なのかなと思います。

こんな記事がある

diamond.jp

記事の内容をまとめると、

学習指導要領にプログラミングが追加され、プログラミングできることが当たり前な世の中がすぐにやってくる。

AI やら IoT やらの波で、なくなる仕事が増える一方、IT人材の需要は増え続けるだろう。プログラミングできれば食いっぱぐれないはず？

とは言っても、ちょっと習ったくらいでは本職にはできない。でも、簡単なプログラミングができるだけでも業務の生産性を上げることはできるので、プログラミングを学ぶことは有意義。

将来的にIT人材の人と一緒に仕事をすることが増えるのは間違いないので、少しでもIT知識がある方が仕事がしやすい。

といった内容です。

食いっぱぐれないかどうかは分かりませんが、個人的にはどれも確かになーと思います。記事にある通りで、少しやっただけでは本職のエンジニアになるのは難しいと思いますが、仕事上役立つシーンはが多くなるのは間違いないです。（エンジニアサイドからしても、経験上、IT知識がある非エンジニアの人と働くのはやりやすいですし、とても楽しいです。）

どう学ぶかを考える

最初の話に戻ります。ツイートを再掲すると、

社会人の方にプログラミング教えてほしいと言われることがちょくちょくあるのだけど、何をテーマに教えるのがいいか悩んでる🤔

どうせなら自分の生活がほんの少しでも豊かになるものを作ってもらいたいよね。 — ちゃんけ (@ketancho) 2018年2月4日

これについて考えていきたいです。

プログラミングはあくまで手段なので、社会人の方が今からプログラミングを勉強するのであれば、何か具体的な目的を設定した方がいいと思います。つまり、「何を作るか」です。

もちろん「Excelのマクロを書いて業務の生産性を上げたい！」でも構わないのですが、↑の友人は既にマクロは使えるようで、「マクロではないんだよなー」と言っていたのでこれは除外して考えようと思います。

もう一つ、「ホームページを作る」も外して考えたいです。HTMLとCSSで静的なWebページを作ることも勉強にはなると思いますし、有意義だと思うのですが、この文脈の「プログラミング」からは外れるような気が（個人的には）したので。

と書いているうちに、（動的な）Webページを作ることは初手としてはハードルが高い気がしてきました。プログラミングを学ぶだけではなく、デザイン面の勉強をしないといけないのと、インフラ面（サーバー構築・設定などなど）を考えないとならず、完成がとても先になってしまうと思ったからです。初手のマイルストーンはなるべく手前に置く方がよいです。となると、自分のPCだけで完結するようなバッチ処理系のアウトプットにするのがいいんじゃないかと思いました。

案１：Twitterボットを作る

フロントエンドの出力先として Twitter は非常に優秀だと思います。出力が140文字のテキスト（＋画像）に限定されますが、無料で使える上に、APIを叩くだけでよいからです。何かしら自分の知りたい情報をつぶやいてくれるボットにすれば、「日常生活が豊かになる」と言えるのではないかと思います。自分のアウトプットが日頃から目に入ると、 次のネタを考える→それを解決するために技術的にどうすればいいか考える→実装する というサイクルで勉強を進めることができ、そういう点でもいいかなと考えています。

何を作っていいかネタが思いつかない方には、retro ボットがおすすめです。1年前の自分のつぶやきを1年後の同じ時間につぶやくというものです。こんな感じです。

1年前にやろうと思ったこと、読もうと思った本や記事をそのまま放置してること結構ないですか？そのリマインダとして最適です。1年周期じゃ遅いという方は、3ヶ月後とかにしてもいいかもしれないです。需要があれば、どこかで作り方をまとめようと思います。

AWS の Lambda というサービスを使うと、ほぼ無料で運用することもできます。プログラミングだけではなく、AWSの勉強にもなっておすすめです（笑）。

www.ketancho.net

案２：情報収集クローラーを作る

Webから情報を定期的に取得して、それをお知らせするようなイメージです。APIを叩きに行くでもいいですし、スクレイピングするでもいいと思います。本来であれば能動的に取りにいく必要がある情報を、コンピュータに任せることができて便利だと思います。

個人的に今年はスクレイピング技術を取得したいと思っているので、人に教えるトリガで自分が勉強するという意味でも、この案はいいなーと思っています。何冊か読みたい本があるので、先行して勉強を始めようかと思ってます。

まとめと今後

まだ２つしか案がないのですが、どちらも応用が効くネタだと思います。小さいもので構わないので、個々人が感じている不を解決できると、勉強が楽しくなってくると思います。忙しい社会人が新しいことを学ぶには、そういう動機づけが必要だと思うので、そういう観点で考えてみました。

他にもいいネタがあれば、ぜひコメントいただければありがたいです。参考にさせていただきたいと思います。