最近、「IT」とか「モノのインターネット」とか「IOT」とか「プログラミング授業」だとかをよく耳にするようになった。
Yahoo!知恵袋でも「ウチの子がプログラミングを習いたいと言い出したんだけど、そもそもプログラミングの勉強って将来何の約にたつの?」「プログラマーって儲かるの?」というような質問を見た気がする。
プロブラミングで何かを作ったことのある親だったら子供の質問に「使えたら便利なんだよー」で完結するのだが、英語や国語の授業と違い全くプログラミングなんて触れた事の無い親からしたら「プログラミングってどこで必用なの??」とチンプンカンプンな世界なのだ。
丁度「数学って将来使う事あるの?」と学生が聞いているような話だ。
そこで、
「そもそも、プログラミングって出来て何の約に立つの?」という素朴な疑問をIT職でもプログラマーでも無い僕がプログラミングを勉強してみて解ったこと。役に立ったことを纏めてみることにした。
【何に使われているのか】
プログラミングは身の周りでは何に使われているでしょうか?
答「便利な自動で何かをしてくれる電気製品、ほとんど。」
です。
ドライヤーやアナログ時計など単純な仕掛けや昔の製品でない限り、殆どの電気製品に使われています。
- デジタル目覚まし時計
- エアコン
- 給湯器
- IHコンロ
- レンジ
- オーディオ
- TV
- 車
- 信号機
- スマホ
- 充電器
- パソコン
- プリンター/コピー
- レジスター
朝起きて、夜寝るまでの間に一度もプログラミングの恩恵を受けない生活をしている人はこのブログを読んでいる人の中にはいないと思う。
【何の約に立つのか】
上記の電気製品で使われるということは、「便利な電気製品を作る」ということも可能なのです。
そう!プログラミングはパソコン内部で動くものは勿論、それだけじゃ無いんです。
「電子工作」という分野になりますが、プログラミングしたICチップを利用することで電気回路を作って外部機器を制御することが出来るのです。
僕が実際に電子工作で作ったもの
- エアコンの監視システム
ペット用に室温を監視し、異常温度になると自動でエアコンをON、それをメールで通知するシステム。また室温の記録を残すことも出来る。エアコン遠隔操作も可能。
- 停電監視システム
真夏などエアコンが動いている状態で停電が起こるとエアコンが停止してしまう。なので停電復旧後に「停電がありましたよ」とメールで通知するシステム。
- オートフィーダー
自動的に時間になると餌をあげる給餌システム。作動後にはきちんと作動しているのか記録映像を残す。
- ホームセキュリティー
簡単な侵入者記録システム
- タッチセンサライト
実験で作ったライトをタッチして点けるだけのシステム
これらのシステムは既に製品として存在するかもしれないシステムだけど結構高価だったりする。自作することで費用を浮かすことが出来る。そして自分用にカスタムすることでカユイ所に手が届くというメリットがある。
次に、パソコン用のソフト
- 製品管理アプリ
内容はヒミツ。知り合いの事務所で絶賛稼働中のシステム
- 宛名印刷アプリ
メルカリ用に作ったシステム。注文情報からコピペで丁度良いレイアウトで宛名ラベルや封筒に印刷してくれるシステム
- メール自動送信アプリ
メールフォームとリストから必用な情報を取得して送信するシステム。シリアルナンバーを個々に送信する時などに利用出来る。
これらもカユイ所に手が届くシステムだ。そしてもちろん自分用に作ったものなので既存のシステムとは違って自由にカスタム可能だ。
これらのソフトも外部に発注をすると数万になると思う。自分で自由に弄れるというのはそれだけでメリットだ。
ということで、僕の結論
「仕事にしなくても、プログラミングの活用する場はいくらでもある」
「生活をより便利にしてくれるものである」
【始める時の障壁】
で、「じゃあやってみようか」と思った時に障壁となるのが自分自信のプログラミングに関してイメージしていることだと思う。
まず、僕がプログラミングを勉強する前に感じていたこと
- パソコンの中で何か動くもの
- 専門的なソフトウェアが必用
- 難しい知識が必用
- 英語が出来ないと無理
- 高スペックな機材が必用
- 電子回路って計算とか難しそう
プログラミングに触れた事の無い多くの人が上記の理由で「オレには無理だぁ」と感じていると思う。
確かに、「昔」はそうだったのかもしれない。
今は先人達が残してくれた遺産が山ほどあるので上記の理由は一つずつ解決出来る。
- パソコンの中で何か動くもの?
これは上の実例を見て頂くと解るように、電子工作として作成することで現実に動作させるものとして出力することが出来る。
検索ワード「シリアル通信」「パラレル通信」「RS232通信」「GPIO」
- 専門的なソフトウェアが必用?
専門的なソフトウェアとして言語に応じた「開発ツール」が必用であるが、無料のものが多く存在する。
パソコンにインストール可能なものをインストールすれば良い。
そしてそれらのインストールガイドはWeb上に広く出回っているのでその通りにインストールすれば良い
検索ワード「無料 開発環境」「無料 プログラミング言語」「(言語) 開発環境インストール」
- 難しい知識が必用?
確かに「難しいことをしよう」と思うと難しい知識が必用。
ただ、簡単なものはサンプルが多くWeb上に出回っているのでそれに手を加えれば良い。
そして簡単なコードを組み合わせて複雑なコードを完成させるのだ。
検索ワード「(作りたいもの) サンプルコード」
- 英語が出来ないと無理?
英語が出来ると最新の情報を集めることは早いが、初心者に必用な情報、ぶつかるであろう問題はほぼ先人が日本語で説明してくれているので心配無用。
検索ワード「(問題) (使用言語)」
- 高スペックな機材が必用?
よほど複雑なコードを書かない限り、ノートパソコン1台でOK。
デュアルスクリーンとかハイクラスなGPUとか、初心者がそこまで扱える訳もないので心配無用。必用になってから揃えた方が最新の良いものが手に入る。
検索ワード「(開発ソフト) PCスペック」
- 電子回路って計算とか難しそう?
確かに、温度センサなどアナログ値をデジタルデータに変換して処理させるのはアナログ回路を組むなど複雑な回路が必用だが「温度センサモジュール」を使うと簡単に接続出来る。
このような便利な「○○モジュール」というものが数多く出回っているので入出力の電圧さえ間違わなければ失敗して火を噴くということもない。
検索ワード「(使いたいセンサなど) モジュール」
特にAuduino用のモジュールは種類が豊富で安い!
このように現在では1つ1つのハードルが非常に低くなっているのでパソコンとやる気さえあれば誰でも気軽に始めることが出来る。
そして一番大事なものは
何を作りたいのか明確な目標があること
これが無いと右往左往して結局何も出来なかったりする。
少なくともあなたが現在このページを読んでくれているということは少しプログラムに興味があるけどどうしようか迷っている段階ですよね?
プログラミングを始めるには 「難しく考えすぎない事」「調べすぎないこと」ですよ。
パソコンさえあれば誰でも無料で気軽に始められるのがプログラミングです。
今回は言語については言及しないけど僕はJavaが好きです。
最近では小学生でもGUIを使ったプログラミングで遊びながらロジックを楽しめるようですね。スバラシイ!
プログラミングについての書籍も多くなり、
さらに、 kindle版なら無料のものまで!
kindleタブレットも今ならクーポンコード(商品ページに書かれているコード『PRIMEFIRE』)を使うと4000円引きになるそうです。
8,980 - 4000 = 4,980円でタブレット端末Get!?
さらにPrime会員だと1ヶ月に1冊、書籍が無料でGet出来ちゃうそうです(@@
amazonさん太っ腹すぎる!
ということで低スペックな書籍用タブレットとして僕も1つポチっとしちゃいました(笑)