サンデープログラマが考える、プログラミングの高い壁

 どうも、最近になってサンデープログラマを自称してもいいかなと思っているKZEです。

 まず、職業的プログラマではありません。けれども、日々を便利にするために、好き勝手にプログラミングをしています。Excel + VBAで入力フォームを作ったりとか、jQuery + canvasJSでドラクエ10の鍛冶職人サポートツール(DQX鍛冶職人ダメージチェッカー)を作ったりとか、Ruby on RailsでTweet履歴をカレンダー形式で表示するウェブアプリ(TwiCal)を作ったりとか、割とやりたい放題です。GitHubアカウントはこちら>rotelstift · GitHub

 なぜ職業的プログラマではないのかというと私の人生に関わる長い話になるので省略しますが、プログラミングは好きだと言えます。

 さて、このエントリで何を言いたいかというと、みんなもっとカジュアルにプログラミングできたらよくね?ということです。というわけで、このエントリはCUIGUIなどといった専門用語はなるべく使わない方向で、プログラミングを知らない人でも読めるように書きたいと思っています。

 夫が職業的プログラマということもあり、職業的プログラマの知り合いは多いですが、一方でプログラミングとは全く縁のない知り合いも多いです。

 しかしそうしたプログラミングとは縁のない知り合いでも、パソコンを使っていない人はまずいません。これはとてももったいないことのように思うのです。

 そうした人たちがプログラミングを始めるのに、何が一番高い壁なのか?そんなことを時々考えますが、それは最近の高度化したコンピュータ環境そのものなのではないのかと思います。

 例えば、プログラミングを全く知らない人がプログラムを作りたいと思った時、それがテキストだけで完結するものであることはまずありえないでしょう。必ずと言っていいほどまずウィンドウが出てきてといった何かしらのグラフィカルなものを連想しているはずです。

 様々な開発環境の充実により、グラフィカルなものを扱うプログラムを作る難易度は下がってきています。それでも、WindowsならコマンドプロンプトMacならターミナルといったテキストだけの環境で動くプログラムを作る難易度と比べたら、グラフィカルな環境で動くプログラムを作ることは格段に難易度が高いです。

 けれども、プログラムを全く知らない人がコマンドプロンプトやターミナルを見て、難しそうだと思わないわけも又ないと思うのです。

 プログラミングは今のところ、このギャップを何らかの手段で超えられた人だけのものになっていないかと感じています。

 このギャップを埋める手段として理想的であり、今目指されているものは、グラフィカルなものを扱うプログラムを作る難易度をさらに下げる、というものでしょう。しかしそれにはまだしばらく時間がかかりそうです。

 そうではなく、今プログラミングを始めたい人に対してはどうしたらいいのでしょう?

 個人的には、遠回りにはなってもコマンドプロンプトやターミナルといった、テキストだけの環境を学ぶことから始めたほうがいいのではないかと思います。そのほうが、小さい問題から取り組めると思うからです。

 例えば、1から100まで表示するプログラムを作るときに、テキストだけの環境ならば1を表示して次は2を表示して…、とやることはシンプルですが、これを『普通の』プログラムのようにするには、まずウィンドウを表示させて、そのウィンドウの中に文字を表示するスペースを確保して、その中に1を表示して2を表示して…、とやることが途端に煩雑になります。

 大きな問題を小さな問題に分解して、小さな問題の答えを組み合わせて大きな問題を解く、というのはプログラミングをする中で非常に重要な考え方になります。

 けれどもその手法を扱うには、小さい問題とはどのくらいのもので、それらをどうやって解けばいいのかということを学ぶ必要があります。そしてそれを学ぶのにはテキストだけの環境のほうが有利だとおもうのです。

 でもこれは、私の体験談から出てくる話なので、もっと別のアプローチからプログラミングを始めて楽しんでいるよというお話や、こういうやり方でプログラミングを始めようとしたんだけどうまくいかなかった、というお話などがもしあったら聞きたいなぁと思っています。