前回までのおさらい
プログラミングの「プ」の字も知らないし、書いたこともない。挙句の果てには、「デスマーチ」をプログラミング用語だと勘違いする、とんちんかんな女子大生。そんな彼女のもとにやってきたのは、超おおらかなエンジニアの舘さん。今回は初心者がつまづきがちな「プログラミング言語の種類の多さ」について、引き続きゆる〜〜く教えてもらいました。
中山彩歌
IT企業で働く父を持つ大学1年生。ねとらぼ連載「女子高生、『はじめてのパソコン』を買う」でITリテラシーがあんまり高くないことが判明し、おとぼけ回答を連発。その実績(?)を買われて今回の生徒役に抜擢された。もちろんプログラミングの知識はゼロ。
舘勇紀
大手電機メーカーでキャリアを培い、現在はフリーランスのエンジニアとして活躍。Webアプリの開発などを行うほか、プログラミングのオンラインレッスン「CodeCamp」の講師も務める。二児の父で初心者にもていねいに伝えるレッスンに定評がある。
プログラムとオルゴールは要するに同じメカニズム
なんとなくプログラミングというものが、薄く、淡く、かすかに分かってきたが、いまいち抽象的過ぎて理解が追いついていない。舘先生、今日もよろしくお願いします!
そもそも、プログラミングが登場したのっていつ頃なんですか?
1960年頃には今のプログラミング言語に近いものができてきましたね。昔のコンピューターって総重量30トンくらいある、化け物レベルの重さだったんですよ。
さ、30トン? 象何頭分……?
すごいよね(笑)。一番原始的なプログラムで言うと1800年代には作られているんです。それは「パンチカード」という紙に穴を開けて情報を記録するもので……。
紙に穴? それがプログラミングなんですか???
あっ、また難しい話をしちゃった。そうだ、オルゴールってポチポチがついていて、それがピンをはじくと音が鳴ってメロディーが流れ出す仕組みですよね。あんな感じの仕組みです。
オルゴールもプログラミングと関係してるんですか? 似ても似つかないじゃないですか!
してるんですよそれが。昔のコンピュータはオルゴールの仕組みによく似ていて、紙に穴を開けて、その穴が開いているところの位置で機械を制御していたんです。
んんん? 穴が開いてるだけで機械が動く???
オルゴールも、突起の位置が少しずれるだけで、違う音が流れたり、テンポが早くなったりするわけです。少しのずれで正しく音楽が流れなくなるでしょ。
ふむふむ。
それと同様今のプログラミングも、書き方を間違えると機能しません。それを突起や穴ではなく、プログラミング言語で書いたのが現代のプログラミングってこと。
おお、なるほど! イメージ湧きました! オルゴールと一緒って結構原始的なんだなー、プログラミング!
そうそう。オルゴールはあくまで例えなんだけど、原理としてはそれと同じなんです。
TwitterがRubyからJavaに移ったのってなぜですか?
オルゴールって言われたらなんとなく分かるんですけど、プログラミング言語ってなんか超たくさん種類がありますよね。
そうですね。
それが分かんないんですよ。何が違うんだか分からないし。
なるほど。彩歌さんって、Twitterやってますか?
やってますよ。なんなら毎日いじってるくらいなんで。
Twitterって、今や世界的な大きな会社になっているんですけど、会社を起こした当初は日本人のまつもとゆきひろさんが創ったRubyってプログラミング言語を使ってたんです。今は違う言語に変わってるんですが、当時日本のプログラマーの間だと結構話題になって。
へー。るびーっていうのは聞いたことないですけど、じゃば? っていうのは聞いたことありますよ。もちろん、意味は分かってないですけど。
お! まさにTwitter社が、Rubyから乗り換えた言語が、Javaですよ!
えっそうなんですか!? やるじゃんあたし!
よりTwitterの目的に合う言語を、と考えてRubyからJavaに変えたみたいですね。
へーー。言語が変わるだけで何か大きく変わるもんなんですか?
けっこう変わります。例えば性能。今、Twitterを使っていてストレスを感じたことはありませんが、昔は投稿や検索をするのに時間がかかったりしてたんです。ユーザーにもっと便利なサービスを提供したいっていう思いで変えたんでしょうけど。
ほうほう。いいことじゃないですか、ユーザー思いで。
ただ、言語の乗り換えってまずやらないんです。お金もかかるし人手も必要になってくるしで、色々大変なんですよ。
そこまでの犠牲をはらってでも手に入れたい何かがあったんですか?
まさにそうですね。それが今日の本題。プログラミングって言語ごとに長所短所があるんです。
おっと、本格的な話になってきた……。
Javaってプログラミング言語が、一番支持されている最大の理由が、どんなハードウェア上でも動くことです。
え、動かないこともあるんですか。……もしかしてですけど、MacとWindowsもプログラミング言語が違ったりします?
もちろん、違いますよ。
ええーー、言語多すぎでこんがらがるぅ!
そう思いますよね? だから共通で動いてくれるJavaに、エンジニアは飛びついたんですよ。
なら、もうJavaだけ覚えていれば何とかなりそうですね。
ただ、どのハードウェアでも動く反面、プログラムのスピードが遅いっていう短所もあるんです。速さが求められる場合は、違う言語を使う、とかそういう感じ。
え、でもTwitterはそのJavaに変わったんですよね。Twitterを使ってて、遅いって感じたこと一度もありませんよ?
Twitterはね、使われている言語は確かにJavaですけど、速くなるように、相当プログラマー達が頑張っているんです。「言語の性質+プログラムの組み方=そのプログラムの性能」になるわけです。だから慣れていないプログラマーが作るとおそらく遅くなりますよ。
ははーん、そこがプログラマーの腕の見せ所ってわけですか。
プログラミングで稼ぐ人の最大時給って……え! そんなにも!?
ちなみにプログラムって、言語ごとに定められたルールに従って書く作業だから、かなり“カッチリした人”の傾向が高いかな。それとは逆に、フラフラするきまぐれなタイプの人は少ない気がします。
へぇ、理系っぽいですねやっぱり。
もちろん個人差はありますけどね。ちなみに彩歌さんはどちらです?
完全に後者です!
連載終了になってしまう(笑)。
でもどちらかと言えばなんで(笑)。それよりも気になっていることがあるんですが、プログラマーのお給料っていくらくらいなんです?
ピンキリだけど、安くて時給2000円程度。優秀な人だと8000円以上もふつうにありますよ。
え、たっか!!
そこまでいかなくてもそこそこの腕になれば、5〜6000円は余裕です。
ひょえーーーーーー!
国の統計だとプログラマーの人手不足は現状でも数十万人にも及ぶらしいんで、身につけておくスキルとして狙い目ですよ。特に若者は大歓迎ですし、パソコン1台でできるので副業にも向いてます。どうです、彩歌さん?
ううむ、プログラマーも視野に入れるかー。
本音を聞かせて! 舘さんはどうしてプログラマーになったんですか?
そもそもなんですが、舘さんはどうしてプログラマーになったんですか? 相当なきっかけがない限り、「プログラマーになろう!」なんて思わないのかなーと。
中学生の頃に学校にパソコンが導入されたんですよ。当時、男子は興味津々で、「こんな世界があるんだ!」って思ってプログラミングに興味を持ち始めたんです。
ひょえー、あたしは高校までパソコン持ってなかったのに。
中学生のとき、BASICってプログラミング言語を使って、クラスメイトとゲームを作ったんです。今みたいに凝ったゲームじゃなくて、もっとすごく単純なものですけど。
中学生男子が好きそうな遊びですねー、なんか想像つきます。
そのときすごくワクワクしたのが私の原体験ですね。今でも鮮明に覚えています。
その経験がなかったら今は違う職についていたかも?
ですね。あの当時、パソコンが私に与えた影響はとても大きかったです。だから今もプログラミングに関する仕事もしていれば、自分でプログラミングを書くこともあるくらい。
今はインターネットが普及しすぎて、そこまで影響力を感じないのは、やっぱりあたしも現代っ子なんだな。
それですよ。今や、小学生もスマホ1台与えられる世の中になっているんで、プログラミングを勉強する価値とか新鮮さは見えづらくなっている気はしますね。
確かに……。公園に来てる小学生たちが無言でスマホの画面を見ている光景とかを見ると、「いや、ならわざわざ集まらなくてもよくない?」とか思っちゃいます。
2020年から、小学校でプログラミングに関する授業も始まりますけど、そういう部分も教えてほしいですね。プログラミングって便利で楽しいものですから。
プログラミング言語で会話ってできるんですか?
ところで「プログラミング言語」って言語って言ってますけど、会話とかできるんですか?
か、会話?
例えば、「今日の昼飯どうするー?」「じゃあ今日は寿司にするか!」的な感じで。
それは無理があるかな(笑)。言語と言っても全体像とか完成図がある上でそれを組み上げていくパズルのピースみたいなものなので。
なんだー。言語と言われると、文系だとどうしても「言葉」のイメージがありまして。
意味合い的には、数式が近いかな。旅行のプランを立てるときに、「何時」の「飛行機」で「アメリカ」に行くとか、そういうことを決めるためのものって感じです。
うーむ、日常会話みたいに言語として話せたら面白いのに。
発想は面白いですけどね(笑)。ちなみにプログラミング言語で使うのは、ifとかcatchとかの中学レベルの英語なので慣れてしまえばそんなに難しくはないですよ。
へー。英語だと単語、熟語、文法とかを学びますけどプログラミング言語だと何を勉強すればいいんですか?
どのプログラミング言語もまず覚えるのは文法ですね。何を作るかによって使う言語が変わりますけど基本は文法。
言語って何種類くらいあるんですか?
いくつだろう……。Webページを書くための言語がHTMLやCSS、AndroidはJava、iOSはswift……50とか100とかあるかもしれないです。
うわー言語量が半端ないな。舘さんは何言語使えるんですか?
数えたことなかったなあ。まあ10言語はできますかね。
え、うわ、10カ国語喋れるのと同じですよね。ちょーバイリンガル(※)じゃないですか舘さん!
そうかな(笑)。といっても、言語によってはパターンが似ているので、1つ覚えると同じ感覚でさくさく覚えられますよ。
それでもリスペクトだな〜。やっぱり多い方がすごいんですか? 俺は10言語できるぜ、的な?
いやぁ、それは場合によりけりで例えばゲーム業界は全くの逆ですよ。1言語をペラペラになる勢いで極める方が伝説のプログラマーみたいになったりしますし。隅々まで知っている人とそうでない人とでは、できる内容が違うので。
へーー。じゃあこの世で一番使われているプログラミング言語って何なんです?
あ、それはもうC言語が圧倒的に多いです。歴史が長くてさまざまなところで使われているので。
ほう、しぃーげんごなんですね〜(よく分かってない)。
そうなんです(よく分かってないな)。
結局どれから学べばいいの?
いろいろ教えてもらったんですけど、結局あたしは何から学ぶのがいいんですかね〜。
そうですねえ、まずは彩歌さんがなじみのあるものから入るのがいいかもしれません。
ホームページを作るのもプログラミング言語ですか?
お、それはHTMLというプログラミング言語ですよ!
そうなのか! 前にわけのわかんない文字列をカタカタいじってサイトの更新してるところを見たことがありますよ。
じゃあ次はHTMLで彩歌さんの簡単なホームページのようなものを作ってみましょうか。実際に形になるところを見たほうが理解しやすいと思うので。
いよいよプログラミングが始まるのか……。
今回は結構多くのことを学んでもらったかと思いますが、どうです、プログラミングに対して興味の度合いは。学ぶ前をゼロだとしたら、今は何点になりましたか?
100点満点中ですか?
そうです。正直に、辛口で構いませんよ。
うーーーん、12点!
だいぶ上がった! ……と思っていいのかな?(笑)
今回の「女子大生から一言!」
次回予告
まだまだプログラミングがどういうものか分かったような分からないような状態の女子大生。もう実際に触ってみたほうが早い(かも)! ということで次回ははじめてのホームページ作りにチャレンジします。
- この記事はSky株式会社が提供する「エンジニアのちょっと未来な視点」をテーマにしたメディアとのタイアップ企画です。ぜひこちらのサイトも合わせてチェックしてみてください!
Copyright © ITmedia, Inc. All Rights Reserved.
提供:Sky株式会社
アイティメディア営業企画/制作:ねとらぼ編集部/掲載内容有効期限:2019年10月22日