「プログラマーってどんな仕事?」って中学生・高校生・(たまに小学生)に良く聞かれるので簡単にまとめた。
コレを読んでプログラマーを目指す人が一人でもできたら嬉しい。
そしていつか一緒に何か作りたい。
プログラマーがやること
みんなが毎日見ているアプリや、ゲーム、ニュースサイトを作ったり、世の中に沢山ある仕事を便利にする「システム」を作る。
それはスマホで動いたり、パソコンで動いたり、お店のレジで動いたり、色んな所で動いているんだ。(…それ以外にもプログラマーの仕事は広くあるけど、一旦これに絞る!)
何のためにあるのかちょっと想像しづらいけど、コンビニで買い物ができたり、安くて美味しいパンを食べれたり、自動販売機でジュースが飲めたりするのも、その裏側に「システム」が動いているからだったりする。
システムは最悪無くても人は生きていけるけど、システムの無い世界は、危険で不便で何をやるにも面倒。
きっとそんな世界って好きじゃない人が多いと思う。
プログラマーの良い所
良いところ紹介する。まあ、当てはまらない職場もあるかもしれないけど、そういうところはサッサとやめて良いところに行けるのもプログラマーの良い所だ!
- お金は頑張れば超沢山貰える。適当にやっててもソコソコ貰える。
- 精神的にも、肉体的にも比較的楽。
- 仕事してて「敵」が出来づらいから、人間関係そんなに得意じゃなくても活躍しやすい。
- 人間では出来ないようなことも、コンピュータが「ワーー!!!」って効率的に働いてくれて魔法使い感ある。やってて凄く気持ち良い!
- 戦国時代が「武将」の時代で、大航海時代が「冒険」の時代なのと同様、きっと1900-2100年位は「IT」の時代として教科書に記される。そんな時代にITやるのってイケてる感ある!(凄く個人的な感想)
プログラマーの大変な所
プログラマーの辛い所。
努力でどうにかなるかもしれないけど、まあわりと避けられない。
- (男なら)女性との出会いが少ない。
- コンピュータがアイマイなものを許してくれないので、毎日細かい所を凄く気にしないといけない。結果、細かい奴になってしまうことも!
- 割と恵まれた仕事なので、自分で苦労を買ってでもしないと甘ったれなまま40代とかになる。
- 「プログラマーになれると思ってたのに、実はプログラミング出来ない」って職場がたまにあって、そういうところに当たると結構しんどい。
- 英語読めないと辛い。(別に聞いたり喋ったりはしなくてもいいけど、読むだけは必要。)
プログラマーのスター
歌手やスポーツ選手みたいにスターがいると燃えるよね!
紹介する人はプログラミングの能力だけでスターになったわけじゃないけど、プログラミングなしではきっとスターになれなかった人たち。
マーク・ザッカーバーグ
「Facebook(フェイスブック)」というサービスを作って、世界最年少億万長者になった人。
仕組みやタイミングや仲間が良い感じにハマったところに超努力をぶち込んで、結果世界中の人をつなげる巨大なサービスを作り上げた。
いつもラフな格好していて、中国の偉い政治家と会うときに久しぶりにスーツを着たらそれがニュースになった。ロックスターよりロックな生き方だと思う。
ビル・ゲイツ
「Microsoft(マイクロソフト)」という会社を作って、13年連続世界一の金持ちになった人。
Windows(ウィンドウズ)はインターネットの個人利用を爆裂に推し進め、会社での仕事のあり方も変えて、世界中の人の日々の行動を変えた。
世界最大の民間ボランティア団体を作って、エイズ・マラリア・結核等の病気の撲滅を本気で目指している。人類自体に貢献していると言えるマジ偉人。
スティーブ・ウォズニアック
iPhone(アイフォン)とかMac(マック)で有名なApple(アップル)というブランドの中身を作った魔法使いのようなコンピュータエンジニア。
お金への執着が無いため損をしたことが多いけど、伝説的な製品を作って身の回りの人たちを笑顔にしながら時代を前に押し進めた人生は、相棒のスティーブ・ジョブズよりも幸せと見ることも出来る。
ナーシャ・ジベリ
ファイナルファンタジーや聖剣伝説というゲームのプログラミングを行った天才的プログラマー。元々イランの王族で世界放浪の人生の合間に趣味でプログラミングをしていた自由人。
ゲームに大きくて綺麗な絵を見せるプログラミングをした元祖で、ゲーム界のミケランジェロと呼ぶ人もいる。
自分の書いたプログラムを暗記して、遠く離れた国から電話ごしに修正をした逸話も有名。
まつもと・ゆきひろ
Ruby(ルビー)というプログラム言語を開発した日本人プログラマー。
彼の開発したRubyはWikipedia(ウィキペディア)に61もの外国語で紹介ページが作られるほど世界的に有名。(世界的に有名な日本文化「浮世絵」でさえ47言語でしか紹介されていないことを考えると異常…!)
Rubyというプログラム言語では、芸術のように美しいプログラミングが可能なので、プログラミングが生活の一部になっている「ハッカー」達から愛されている。
リーナス・トーバルズ
Linuxという、コンピュータを動かすものを作り上げて無料で公開したハッカー。
大企業が同じようなものを作って莫大なお金を稼いでいた時に、それを無料で公開したことで世界中に敵が出来た。
その敵達はリーナスを打ち倒すことで莫大な利益を手に出来るので、マジで容赦無い攻撃をしまくった。
けれども、リーナスとその仲間達は強い意志で戦い続けた。
結果、昔はシステムはお金のある人しか作れなかったけど、今では誰でも安価に作ったり使ったりできるようになったし、どんな小さくて安い装置にもそのシステムを載せられるようになって、今の便利な毎日が出来ている。
以上、プログラマーのスター達。
有名ドコロで、好きなスターの1/100位しか紹介していない感じ。本当はもっと一杯スターがいる!
プログラミングの具体例と問題
ここで、具体的な話を一つ。
例えば銀行でお金を預けるってことの裏にはこんなプログラミングがある。
ちょっと想像しながら見てみて。
- 銀行カードを入れさせる
- 出力「カードを入れて下さい」
- カードが正しい銀行カードかチェックする
- →正しくないカードだったらカードを返して終了
- →正しいカードだったら3.へ
- 暗証番号を入力させる
- 入力受付「暗証番号を入力して下さい」
- 暗証番号をチェックする
- →暗証番号間違い3回目でカードを没収して終了
- →暗証番号間違い2回目までは3.に
- →暗証番号が正しかったら5.に
- 今の貯金額をデータベース(数字や文字を記録する所)から読み取って表示する
- 預けるお金を入れさせる
- 「お金を入れて下さい」
- 預かったお金をチェックする
- →変なお金が入ってたらお金を返して6.へ
- →正しいお金が入ってたら8.へ
- 今の貯金額と、預かったお金の合計額を計算する
- データベースに合計額を貯金額として書き込む
- カードを返す
- 「ありがとうございました」
と、ここで問題 (正解はページの最後)
A お金を入れてもらう時のメッセージを「預けたいお金を入れて下さい」に直したい。
何番目を直したら良いかな?
B 間違えておもちゃのお金を入れたばあい、何番目で止まるかな?
良いプログラマーになれる遊び
パソコンとか使わないで「システム」を作って遊ぶ練習してみるのは凄く良い。
システムを作るって難しそうだけど、例えば遊びのルールとか、家のルールを作って、実際のそのルールに合わせて行動するってこともシステムを作ることなんだ。
例えば…
自分で作ったすごろくで友達と遊んでみる。
どうしたら面白くなるかとか、逆転しやすいルールはどうやったら作れるかとか考えながら作るのは、実際のプログラミングと同じ。
「このマスに止まったら3すすむ。ただしトップの人の場合は4戻る」みたいに。
やる人が理解できる範囲で色々工夫してみると面白いはず。
紙とペンで面白いゲームを作れない人は、いくらパソコンが上手く使えても面白いゲームは作れないから、紙とペンで面白いゲームを作るっていうのは基本的だけど凄く大事。
家のルールを作って、家族にもそのルールに合わせて行動してもらう。
掃除、食器洗いの手伝いをしたら1回50円の小遣い。
1週間欠かさずにできたら連続ボーナス100円の小遣い。
みたいな感じのルールを作って、実際に手伝いしたらチェックできる表を自分で書いて親と相談してやってみる。
親も自分もハッピーになれる仕組みを作れたらそれは、世界中の人をハッピーにする仕組みを作る第一歩だったりする。
ゲーム機があるなら、ステージ作る系のゲームで面白いステージ作る
リトルビッグプラネットとかマリオメーカーを買って、面白いステージを作るってのもいい練習。
で、絶対友達とか家族にやってもらおう。
人を喜ばせたりがっかりさせたりすると、どうしたらもっと良く出来るかを真剣に考えるようになるから。
ちなみに、DSとかスマホにもそういうゲームあるんだろうけど、残念ながら俺は知らないんだ。オススメ有ったら教えて。
以上ーーー。
超長いので、コレを全部読んでくれた人は凄い。マジで凄いと思う。
(問題の答え:Aは6, Bは7 。できたら割と凄い。)