パーソルグループとSky株式会社は、sightを通してエンジニアの自分らしいキャリアを応援しています

【第2話】プログラミング言語で「会話」ってできるんですか? 女子大生、多すぎるプログラミング言語に困惑

f:id:sky-pca:20190808123434j:plain

前回までのおさらい

プログラミングの「プ」の字も知らないし、書いたこともない。挙句の果てには、「デスマーチ」をプログラミング用語だと勘違いする、とんちんかんな女子大生。そんな彼女のもとにやってきたのは、超おおらかなエンジニアの舘さん。今回は初心者がつまづきがちな「プログラミング言語の種類の多さ」について、引き続きゆる~~く教えてもらいました。

中山彩歌

IT企業で働く父を持つ大学1年生。ねとらぼ連載「女子高生、『はじめてのパソコン』を買う」でITリテラシーがあんまり高くないことが判明し、おとぼけ回答を連発。その実績(?)を買われて今回の生徒役に抜擢された。もちろんプログラミングの知識はゼロ。

指南役(師範)

舘 勇紀

オンラインプログラミング学習サービス「CodeCamp」の大人気講師。14年間にわたり、大手電機メーカーの開発最前線で培った実装技術、デバッグのノウハウをもとに、特にプログラミング初心者にもわかりやすい指導に定評がある。現在も多くの受講生を指導する現役講師。

プログラムとオルゴールは要するに同じメカニズム

なんとなくプログラミングというものが、薄く、淡く、かすかに分かってきたが、いまいち抽象的過ぎて理解が追いついていない。舘先生、今日もよろしくお願いします!


f:id:sky-pca:20190808163910j:plain

そもそも、プログラミングが登場したのっていつ頃なんですか?

f:id:sky-pca:20190808163928j:plain

1960年頃には今のプログラミング言語に近いものができてきましたね。昔のコンピューターって総重量30トンくらいある、化け物レベルの重さだったんですよ。

f:id:sky-pca:20190808163910j:plain

さ、30トン? 象何頭分……?

f:id:sky-pca:20190808163928j:plain

すごいよね(笑)。一番原始的なプログラムで言うと1800年代には作られているんです。それは「パンチカード」という紙に穴を開けて情報を記録するもので……。

f:id:sky-pca:20190808163910j:plain

紙に穴? それがプログラミングなんですか???

 

f:id:sky-pca:20190808163928j:plain

あっ、また難しい話をしちゃった。そうだ、オルゴールってポチポチがついていて、それがピンをはじくと音が鳴ってメロディーが流れ出す仕組みですよね。あんな感じの仕組みです。

f:id:sky-pca:20190808163910j:plain

オルゴールもプログラミングと関係してるんですか? 似ても似つかないじゃないですか!

 

f:id:sky-pca:20190808163928j:plain

してるんですよそれが。昔のコンピュータはオルゴールの仕組みによく似ていて、紙に穴を開けて、その穴が開いているところの位置で機械を制御していたんです。

f:id:sky-pca:20190808163910j:plain

んんん? 穴が開いてるだけで機械が動く???

 

f:id:sky-pca:20190808163928j:plain

オルゴールも、突起の位置が少しずれるだけで、違う音が流れたり、テンポが早くなったりするわけです。少しのずれで正しく音楽が流れなくなるでしょ。

f:id:sky-pca:20190808163910j:plain

ふむふむ。

 

f:id:sky-pca:20190808163928j:plain

それと同様今のプログラミングも、書き方を間違えると機能しません。それを突起や穴ではなく、プログラミング言語で書いたのが現代のプログラミングってこと。

f:id:sky-pca:20190808163910j:plain

おお、なるほど! イメージ湧きました! オルゴールと一緒って結構原始的なんだなー、プログラミング!

 

f:id:sky-pca:20190808163928j:plain

そうそう。オルゴールはあくまで例えなんだけど、原理としてはそれと同じなんです。

f:id:sky-pca:20190808165144j:plain

オルゴールで考えたらちょっと分かったかも!

 

TwitterがRubyからJavaに移ったのってなぜですか?

f:id:sky-pca:20190808163910j:plain

オルゴールって言われたらなんとなく分かるんですけど、プログラミング言語ってなんか超たくさん種類がありますよね。

f:id:sky-pca:20190808163928j:plain

そうですね。

f:id:sky-pca:20190808163910j:plain

それが分かんないんですよ。何が違うんだか分からないし。

f:id:sky-pca:20190808163928j:plain

なるほど。彩歌さんって、Twitterやってますか?

f:id:sky-pca:20190808163910j:plain

やってますよ。なんなら毎日いじってるくらいなんで。

f:id:sky-pca:20190808163928j:plain

Twitterって、今や世界的な大きな会社になっているんですけど、会社を起こした当初は日本人のまつもとゆきひろさんが創ったRubyってプログラミング言語を使ってたんです。今は違う言語に変わってるんですが、当時日本のプログラマーの間だと結構話題になって。

f:id:sky-pca:20190808163910j:plain

へー。るびーっていうのは聞いたことないですけど、じゃば? っていうのは聞いたことありますよ。もちろん、意味は分かってないですけど。

f:id:sky-pca:20190808163928j:plain

お! まさにTwitter社が、Rubyから乗り換えた言語が、Javaですよ!

f:id:sky-pca:20190808163910j:plain

えっそうなんですか!? やるじゃんあたし!

f:id:sky-pca:20190808163928j:plain

よりTwitterの目的に合う言語を、と考えてRubyからJavaに変えたみたいですね。

f:id:sky-pca:20190808165144j:plain

とにかくRubyっていう言語とJavaっていう言語があるらしいっす!(精一杯の理解)

f:id:sky-pca:20190808163910j:plain

へーー。言語が変わるだけで何か大きく変わるもんなんですか?

f:id:sky-pca:20190808163928j:plain

けっこう変わります。例えば性能。今、Twitterを使っていてストレスを感じたことはありませんが、昔は投稿や検索をするのに時間がかかったりしてたんです。ユーザーにもっと便利なサービスを提供したいっていう思いで変えたんでしょうけど。

f:id:sky-pca:20190808163910j:plain

ほうほう。いいことじゃないですか、ユーザー思いで。

f:id:sky-pca:20190808163928j:plain

ただ、言語の乗り換えってまずやらないんです。お金もかかるし人手も必要になってくるしで、色々大変なんですよ。

f:id:sky-pca:20190808163910j:plain

そこまでの犠牲をはらってでも手に入れたい何かがあったんですか?

f:id:sky-pca:20190808163928j:plain

まさにそうですね。それが今日の本題。プログラミングって言語ごとに長所短所があるんです。

f:id:sky-pca:20190808163910j:plain

おっと、本格的な話になってきた……。

f:id:sky-pca:20190808165144j:plain

難しい話が始まったぞ……

f:id:sky-pca:20190808163928j:plain

Javaってプログラミング言語が、一番支持されている最大の理由が、どんなハードウェア上でも動くことです。

f:id:sky-pca:20190808163910j:plain

え、動かないこともあるんですか。……もしかしてですけど、MacとWindowsもプログラミング言語が違ったりします?

f:id:sky-pca:20190808163928j:plain

もちろん、違いますよ。

f:id:sky-pca:20190808163910j:plain

ええーー、言語多すぎでこんがらがるぅ!

f:id:sky-pca:20190808163928j:plain

そう思いますよね? だから共通で動いてくれるJavaに、エンジニアは飛びついたんですよ。

f:id:sky-pca:20190808163910j:plain

なら、もうJavaだけ覚えていれば何とかなりそうですね。

f:id:sky-pca:20190808163928j:plain

ただ、どのハードウェアでも動く反面、プログラムのスピードが遅いっていう短所もあるんです。速さが求められる場合は、違う言語を使う、とかそういう感じ。

f:id:sky-pca:20190808163910j:plain

え、でもTwitterはそのJavaに変わったんですよね。Twitterを使ってて、遅いって感じたこと一度もありませんよ?

f:id:sky-pca:20190808163928j:plain

Twitterはね、使われている言語は確かにJavaですけど、速くなるように、相当プログラマー達が頑張っているんです。「言語の性質+プログラムの組み方=そのプログラムの性能」になるわけです。だから慣れていないプログラマーが作るとおそらく遅くなりますよ。

f:id:sky-pca:20190808163910j:plain

ははーん、そこがプログラマーの腕の見せ所ってわけですか。

 

プログラミングで稼ぐ人の最大時給って……え! そんなにも!?

f:id:sky-pca:20190808163928j:plain

ちなみにプログラムって、言語ごとに定められたルールに従って書く作業だから、かなり“カッチリした人”の傾向が高いかな。それとは逆に、フラフラするきまぐれなタイプの人は少ない気がします。

f:id:sky-pca:20190808163910j:plain

へぇ、理系っぽいですねやっぱり。

f:id:sky-pca:20190808163928j:plain

もちろん個人差はありますけどね。ちなみに彩歌さんはどちらです?

f:id:sky-pca:20190808163910j:plain

完全に後者です!

f:id:sky-pca:20190808163928j:plain

連載終了になってしまう(笑)。

f:id:sky-pca:20190808163910j:plain

でもどちらかと言えばなんで(笑)。それよりも気になっていることがあるんですが、プログラマーのお給料っていくらくらいなんです?

f:id:sky-pca:20190808163928j:plain

ピンキリだけど、安くて時給2000円程度。優秀な人だと8000円以上もふつうにありますよ。

f:id:sky-pca:20190808163910j:plain

え、たっか!!

f:id:sky-pca:20190808163928j:plain

そこまでいかなくてもそこそこの腕になれば、5~6000円は余裕です。

f:id:sky-pca:20190808163910j:plain

ひょえーーーーーー!

f:id:sky-pca:20190808174012j:plain

プログラミングってすげー!

f:id:sky-pca:20190808163928j:plain

国の統計だとプログラマーの人手不足は現状でも数十万人にも及ぶらしいんで、身につけておくスキルとして狙い目ですよ。特に若者は大歓迎ですし、パソコン1台でできるので副業にも向いてます。どうです、彩歌さん?

f:id:sky-pca:20190808163910j:plain

ううむ、プログラマーも視野に入れるかー。

本音を聞かせて! 舘さんはどうしてプログラマーになったんですか?

f:id:sky-pca:20190808163910j:plain

そもそもなんですが、舘さんはどうしてプログラマーになったんですか? 相当なきっかけがない限り、「プログラマーになろう!」なんて思わないのかなーと。

f:id:sky-pca:20190808163928j:plain

中学生の頃に学校にパソコンが導入されたんですよ。当時、男子は興味津々で、「こんな世界があるんだ!」って思ってプログラミングに興味を持ち始めたんです。

f:id:sky-pca:20190808163910j:plain

ひょえー、あたしは高校までパソコン持ってなかったのに。

f:id:sky-pca:20190808163928j:plain

中学生のとき、BASICってプログラミング言語を使って、クラスメイトとゲームを作ったんです。今みたいに凝ったゲームじゃなくて、もっとすごく単純なものですけど。

f:id:sky-pca:20190808163910j:plain

中学生男子が好きそうな遊びですねー、なんか想像つきます。

f:id:sky-pca:20190808174012j:plain

男子ってゲームとか好きだもんねー(ちなみにあたしはファミコンも見たことないです)

f:id:sky-pca:20190808163928j:plain

そのときすごくワクワクしたのが私の原体験ですね。今でも鮮明に覚えています。

f:id:sky-pca:20190808163910j:plain

その経験がなかったら今は違う職についていたかも?

f:id:sky-pca:20190808163928j:plain

ですね。あの当時、パソコンが私に与えた影響はとても大きかったです。だから今もプログラミングに関する仕事もしていれば、自分でプログラミングを書くこともあるくらい。

f:id:sky-pca:20190808163910j:plain

今はインターネットが普及しすぎて、そこまで影響力を感じないのは、やっぱりあたしも現代っ子なんだな。

f:id:sky-pca:20190808163928j:plain

それですよ。今や、小学生もスマホ1台与えられる世の中になっているんで、プログラミングを勉強する価値とか新鮮さは見えづらくなっている気はしますね。

f:id:sky-pca:20190808163910j:plain

確かに……。公園に来てる小学生たちが無言でスマホの画面を見ている光景とかを見ると、「いや、ならわざわざ集まらなくてもよくない?」とか思っちゃいます。

f:id:sky-pca:20190808163928j:plain

2020年から、小学校でプログラミングに関する授業も始まりますけど、そういう部分も教えてほしいですね。プログラミングって便利で楽しいものですから。

プログラミング言語で会話ってできるんですか?

f:id:sky-pca:20190808163910j:plain

ところで「プログラミング言語」って言語って言ってますけど、会話とかできるんですか?

f:id:sky-pca:20190808163928j:plain

か、会話?

f:id:sky-pca:20190808163910j:plain

例えば、「今日の昼飯どうするー?」「じゃあ今日は寿司にするか!」的な感じで。

f:id:sky-pca:20190808163928j:plain

それは無理があるかな(笑)。言語と言っても全体像とか完成図がある上でそれを組み上げていくパズルのピースみたいなものなので。

f:id:sky-pca:20190808163910j:plain

なんだー。言語と言われると、文系だとどうしても「言葉」のイメージがありまして。

f:id:sky-pca:20190808163928j:plain

意味合い的には、数式が近いかな。旅行のプランを立てるときに、「何時」の「飛行機」で「アメリカ」に行くとか、そういうことを決めるためのものって感じです。

f:id:sky-pca:20190808163910j:plain

うーむ、日常会話みたいに言語として話せたら面白いのに。

f:id:sky-pca:20190808163928j:plain

発想は面白いですけどね(笑)。ちなみにプログラミング言語で使うのは、ifとかcatchとかの中学レベルの英語なので慣れてしまえばそんなに難しくはないですよ。

f:id:sky-pca:20190808163910j:plain

へー。英語だと単語、熟語、文法とかを学びますけどプログラミング言語だと何を勉強すればいいんですか?

f:id:sky-pca:20190808163928j:plain

どのプログラミング言語もまず覚えるのは文法ですね。何を作るかによって使う言語が変わりますけど基本は文法。

f:id:sky-pca:20190808163910j:plain

言語って何種類くらいあるんですか?

f:id:sky-pca:20190808163928j:plain

いくつだろう……。Webページを書くための言語がHTMLやCSS、AndroidはJava、iOSはswift……50とか100とかあるかもしれないです。

f:id:sky-pca:20190808163910j:plain

うわー言語量が半端ないな。舘さんは何言語使えるんですか?

f:id:sky-pca:20190808163928j:plain

数えたことなかったなあ。まあ10言語はできますかね。

f:id:sky-pca:20190808163910j:plain

え、うわ、10カ国語喋れるのと同じですよね。ちょーバイリンガル(※)じゃないですか舘さん!(※編注 バイリンガルは「2言語」なので正しくは「マルチリンガル」ですね)

f:id:sky-pca:20190808163928j:plain

そうかな(笑)。といっても、言語によってはパターンが似ているので、1つ覚えると同じ感覚でさくさく覚えられますよ。

f:id:sky-pca:20190808163910j:plain

それでもリスペクトだな~。やっぱり多い方がすごいんですか? 俺は10言語できるぜ、的な?

f:id:sky-pca:20190808163928j:plain

いやぁ、それは場合によりけりで例えばゲーム業界は全くの逆ですよ。1言語をペラペラになる勢いで極める方が伝説のプログラマーみたいになったりしますし。隅々まで知っている人とそうでない人とでは、できる内容が違うので。

f:id:sky-pca:20190808163910j:plain

へーー。じゃあこの世で一番使われているプログラミング言語って何なんです?

f:id:sky-pca:20190808163928j:plain

あ、それはもうC言語が圧倒的に多いです。歴史が長くてさまざまなところで使われているので。

f:id:sky-pca:20190808163910j:plain

ほう、しぃーげんごなんですね~(よく分かってない)。

f:id:sky-pca:20190808163928j:plain

そうなんです(よく分かってないな)。

f:id:sky-pca:20190808174012j:plain

よく分かってなくてすいません

結局どれから学べばいいの?

f:id:sky-pca:20190808163910j:plain

いろいろ教えてもらったんですけど、結局あたしは何から学ぶのがいいんですかね~。

f:id:sky-pca:20190808163928j:plain

そうですねえ、まずは彩歌さんがなじみのあるものから入るのがいいかもしれません。

f:id:sky-pca:20190808163910j:plain

ホームページを作るのもプログラミング言語ですか?

f:id:sky-pca:20190808163928j:plain

お、それはHTMLというプログラミング言語ですよ!

f:id:sky-pca:20190808163910j:plain

そうなのか! 前にわけのわかんない文字列をカタカタいじってサイトの更新してるところを見たことがありますよ。

f:id:sky-pca:20190808163928j:plain

じゃあ次はHTMLで彩歌さんの簡単なホームページのようなものを作ってみましょうか。実際に形になるところを見たほうが理解しやすいと思うので。

f:id:sky-pca:20190808163910j:plain

いよいよプログラミングが始まるのか……。

f:id:sky-pca:20190808163928j:plain

今回は結構多くのことを学んでもらったかと思いますが、どうです、プログラミングに対して興味の度合いは。学ぶ前をゼロだとしたら、今は何点になりましたか?

f:id:sky-pca:20190808163910j:plain

100点満点中ですか?

f:id:sky-pca:20190808163928j:plain

そうです。正直に、辛口で構いませんよ。

f:id:sky-pca:20190808163910j:plain

うーーーん、12点!

f:id:sky-pca:20190808163928j:plain

だいぶ上がった! ……と思っていいのかな?(笑)

f:id:sky-pca:20190808174012j:plain

でも舘さんと話すのは楽しかったですよ!

今回の「女子大生から一言!」

今やっと「よいこらしょ」と腰を上げた程度の理解でしょうか。前回は、何も見えなかったプログラミングのイメージが、やっと薄く見えてきた気がします。

と言っても、まだプログラムを書けるわけではないしパターンも文法もさっぱり。おそらく、プログラミングの0.4割程度しかまだ理解し切れていないと思うので、それはこれからですね。この先、長い旅になると思いますが、ちょっとだけお付き合い願います(笑)。

次回予告

まだまだプログラミングがどういうものか分かったような分からないような状態の女子大生。もう実際に触ってみたほうが早い(かも)! ということで次回ははじめてのホームページ作りにチャレンジします。

【第3話】いよいよホームページ作りに挑戦!? Coming soon