この記事をお読みのあなたは、ただ漠然と「プログラミングができるようになりたい。」と考えていませんか?
20年間プログラミングをしてきた私からのアドバイスは「プログラミングは手段である。」とうことです。極論、これに尽きます。
プログラマーはいったい何で利益をえているのでしょうか?顧客がプログラミングにお金を払うことはありません。
「プログラミング」は単なる作業の名前です。<プログラミング>をすることによって、<プログラム>が作られます。
<プログラム>はその規模によって、<アプリ><ソフト><システム>など呼び方が変わることが変わりますが、どれにも共通して言えることは、それを使った結果により、何らかの価値が得られると言うことです。
それは、「仕事が効率化すること」かもしれませんし、「海外の洋服が安く買えること」かもしれません。
つまり、<プログラミング>はゴールではなく、その手段でしかないと言うことです。
そこで独学のテーマを「フリーソフトの公開」とする方法をご紹介したいと思います。
「〇〇ができるプログラム」をゴールにするのではなく、「〇〇したい人が喜ぶ何か」を実際に作成し、それをインターネットで公開することで、学習結果を確認することもできます。
具体的にどのようなフリーソフトを題材にしたらよいのか?
過去に経験したことを思い返して創出
「〇〇したい人」を設定するためには高度な想像力が必要です。
とても難しいことです。
そこで、実際に自分が過去に経験したことを思い返して創出してみてはいかがでしょうか。
ちなみに私にはこんな経験がありました。
私はあるオンラインゲームにはハマっていました。週に数日ログインしてプレーしているうちにフレンドも増え、そのフレンドが集まるとあるSNSのコミュニティが盛り上がっていました。
いつしか、ゲーム本体よりもコミュニティの方が活発になってしまったくらいです。
コミュニティが突然の閉鎖予告
ところがある日、そのコミュニティが突然の閉鎖予告。
掲示板に書き込んだ内容が消えてしまうのが惜しく、何とかして保存することができないかとフリーソフトを漁ったことがあります。
結果、思い通りのソフトは見つからず、やむなく手作業でコピペして保存することになりました。
インターネット上の掲示板を自動保存するフリーソフト
この事を思い出し、過去の自分を仮想顧客として、「インターネット上の掲示板を自動保存するフリーソフト」を作成するに至ったことがあります。
わたしは、「大切なメッセージを自動保存したい人(過去の私)が喜ぶ何か」をテーマにしてソフトを公開する過程で、多くの事を学ぶことができました。
数あるプログラミング言語の中からどれを使えば良いのか?
プログラムの骨格を作ることも容易
私は「VB.NET」をお勧めします。
このプログラミング言語はフリーの開発環境もあり、日本語の解説が多く公開されています。
インターネット上のサンプルをコピペしてプログラムの骨格を作ることも容易です。
そして、最大のメリットは、Windowsのパソコンさえ持っていれば、誰にでも使ってもらえる点です。
プログラミングの基本はまず、サンプルプログラムの継ぎ接ぎ
プログラミングの基本はまず、サンプルプログラムの継ぎ接ぎです。
そこで、注意すべきキーワードは「ネットワーク」「サーバー」「オープンソース」です。
これらのキーワードが含まれるサンプルは、プログラミング以上に<環境構築>などの厄介な壁をクリアしなくてはいけません。
とにかく、まず「〇〇したい人が喜ぶ何か」を作ることだけに専念する必要があります。
見栄えの良いものを作る必要はありません。
シンプルに実現するだけのプログラムを目指す
ただ、「○○ができること」をシンプルに実現するだけのプログラムを目指して
フリーソフトを作ってみましょう。
100%完成している必要はありません。
どうしてもうまく実現できない部分があれば、それはマニュアルやホームページで捕捉して、使う人に気を付けてもらえばよいだけのことです。
まとめ
どうでしょうか、このお話は何かの参考になったでしょうか。
重要なことは次の三つです。
・「プログラミングは手段でしかない」ということ。ゴールそのものではないと言うこと。
・題材にするプログラミング言語はシンプルであること。「ネットワーク」「サーバー」「オープンソース」は避けること。
・実際にプログラムを使って公開すること。利用者からフィードバックを受けること。
多くの成功者は「必要な知識は仕事をしながら学んでいる」のだそうです。
ただ教科書を開き、知識を頭に叩き込むのではなく、実際に体験することが大切です。
そして、「プログラミング」というジャンルにおいては、ユーザー明確にを想定しながら道筋を立てることが効果的です。
ちなみに、私の公開したフリーソフトはさほど多くの人にダウンロードされることはありませんでした。
しかし、モデルとするユーザが私自身なので、要求を自己創出してとてもきめ細かいソフトになったと思っています。
この経験で言語自体は習得し、もう役割が終わったかのように思えましたが、いまでも新しい手法を実験するときには、あの時のソフトをアップデートしながら実装検証(実際に動くものをプログラミングしてテストすること)を続けています。