プログラミングを学んでよかった!
先輩たちの体験談
【プログラマー】“プログラミング思考”でアプリを作る仕事〜 ゲームの仕組みに興味を持ったのが原点〜
Shiro Maruyama
丸山 史郎
Shiro Maruyama
株式会社Preferred Networks
Playgram開発プログラマー
子どもたちは将来、どんな仕事をするのでしょうか?世の中には、さまざまな会社や職業があり、それらを「知る」ことが将来の道を開くきっかけになります。
今回お話をうかがったのは、株式会社Preferred Networksでプログラマーとして働く丸山史郎さんです。やる気スイッチグループが運営するプログラミング教育HALLOの教材であるPlaygram(プレイグラム)の開発にも携わっている丸山さんに、お仕事のやりがいやプログラマーに必要な「プログラミング思考」についてうかがいました。
お子さまの将来や進路選択を考える際の参考にしてください。
プログラミングでPlaygramを開発
―丸山さんのお仕事の内容について、詳しく教えてください。
私が所属しているPreferred Networksという会社では、AIの技術を強みにして、製造業や交通、ロボット、医療、教育、エンターテインメントなど幅広い分野でソフトウェアやアプリの開発を行っています。そのなかでも私は教育関係のプロジェクトに所属していて、「Playgram」※という小学生向けのプログラミング学習教材の開発や運用を担当しています。
※PlaygramはPreferred Networksとやる気スイッチグループの合併会社である、株式会社YPスイッチが運営しているプログラミング教育HALLOで利用されている学習教材。
<1日の流れ>
丸山さんの1日のスケジュール
6:00 起床、朝食
8:00 子どもの送迎
9:00 仕事開始、メール・問い合わせ確認
10:00 デイリーミーティング
10:15 作業
12:00 昼食
13:00 ミーティング or 作業
17:30 子どもの送迎
18:00 ミーティング or 作業
19:00 夕食、お風呂
22:00 就寝
―開発や運用というのは、具体的にどのようなことをしているのでしょう。
実際にPlaygramのプレイ画面を見て説明していきましょう。
Playgramは「Unity」という、ゲーム開発によく使われるツールを用いて画面や機能を構成しています。具体的には、ユーザーインターフェースと呼ばれる「ユーザーが目にしたり、接するもの」をデザインし、新しいコンテンツを作ったり、使いやすく改善したりするのが私たちの仕事です。たとえば、画面上にあるボタンやアイコン、文字や数字を表示するときのデザインなどを決めています。他にも、教室で実際に使ってもらうなかで発生したエラーを改善したり、新しい機能を追加するためにアップデートを行ったりもしています。Unity自体は「C#」というプログラミング言語を使って制御することができ、プログラミングによってこうした機能開発を行っています。
―プログラミングについて詳しくうかがいたいのですが、Playgramではどのようにプログラミングを教えているのでしょうか。
プログラミングとは、コンピュータやソフトウェアを自分の思い通りに動かすために指示を与える作業です。プログラミングを修得するには、言語だけでなく「プログラミング思考」と呼ばれる考え方を身につけていくことが大事になります。プログラミングには、具体的に「順次」や「繰り返し」、「条件分岐」といった基本的な命令の方法があり、たとえば「繰り返し」は、ある処理を繰り返し行いたいときに用います。
こうしたプログラミングスキルを最初からマスターするのは難しいので、Playgramでは「花を植える」とか「目的地までの橋を作る」といったゲーム的なミッションをクリアしながら、徐々にプログラミング思考のベースを身につけていきます。
たとえば上の画面は、「繰り返し」についての基本的な考え方を身につけてもらうミッションです。「3回繰り返す」という命令の下に、「赤い花を植える」と「右に1だけ進む」という命令を配置しています。こう指示することで、画面内のキャラクターは「赤い花を植えてから右に1コマ進む」という行動を3回繰り返します。これは日本語で書かれた指示ですが、実際にプログラミング言語を使ってプログラムを書くときも、同じように「繰り返し」を表す命令の下に「繰り返したい具体的な内容」を記述していくのです。
このようにPlaygramは、最初に日本語で書かれた命令を使って練習することで基本的なプログラミング思考を学び、同じことを今度は「Python」というプログラミング言語を用いて実践していくことで、徐々に実際のプログラミングに近いスキルを身につけられる教材です。私たちもこうしたプログラミング思考をベースにして、Playgramの画面を作ったり、新しい機能を追加したりしています。
感謝の言葉を直接伝えられる瞬間の喜び
―お仕事のなかで、どんなときにやりがいを感じますか。
プログラミングの面白いところは、パソコンやタブレットといった機械さえあれば、そのなかでいくらでも新しいアプリを開発したり機能を生み出したりできることです。物体としての形がないぶん、開発できる範囲や可能性が大きいですし、どのようにプログラムを書けば目標にたどり着けるかと考える作業は、ゲームや謎解きに近い部分があります。
Playgramの開発者としては、自分が作ったアプリを教室の生徒が楽しんで使ってくれていることにやりがいを感じます。教室に見学に行って機能面が十分ではなくて困っている生徒がいても、自分ですぐにプログラムを書いて解決できるのは嬉しいですね。時おり、会社に手紙が届いて感謝の言葉や「こういう機能がほしい」という要望をいただけることもあり、励みになっています。
―逆に、お仕事のなかで難しさや大変さを感じる場面はありますか?
プログラミングやAIの分野は進化が早く、学ぶことが多い点には大変さを感じますね。常に新しい技術が出てくるので、しっかり自分の知識やスキルもアップデートしていかないと仕事ができなくなってしまいます。ただ、最新技術も結局は基礎技術の延長にあるものなので、学生時代に数学やコンピュータサイエンスの基礎をどれだけ身につけていたかが重要になると実感しています。
コンピュータサイエンス全般を学ぶ重要性
―丸山さんがこの仕事を目指そうと思ったきっかけがあれば教えてください。
私が小学生のころは、パソコンはどこの家庭にも必ずあるという時代ではありませんでした。しかし理科の教員をしていた父親がそういうハイテクに興味があって、私も家で使わせてもらっていました。当時はパソコンでゲームに没頭していた記憶があります。
その後、独学でプログラミングに挑戦し始めたのが16歳くらいのころです。これまた父親が買ったノートパソコンを、ほとんど自分のものみたいに部屋に持ち込んで遊んでいて。自分でゲームや画像編集のソフトを作ってみたいと思って、プログラミング言語の参考書を買ったんです。ただ、言語を勉強しただけではなかなか思うようにソフトウェアを作るところまではたどり着けなくて。もっと専門的に勉強したいと思い、情報系の大学に進学することを決めました。
―大学では具体的にどのようなことを勉強しましたか。
大学時代は、興味のある授業を片っ端から受けていきました。プログラミングだけでなくコンピュータサイエンス全般を学ぶことで視野が広がったと思います。たとえば、画像や音声がコンピュータの中でどういう仕組みによって機能しているかを知っておかないと、画像編集や音声合成のプログラムは作れないんです。コンピュータといってもさまざまな分野があるので、各分野の基礎知識を知っておく必要があると身をもって実感しました。
コンピュータサイエンスの基礎には関数やベクトルといった数学の知識もある程度必要だったので、あまり数学は得意ではなかったのですが、目標に向けて勉強に励みました。また、英語も力を入れて取り組んだ覚えがあります。プログラミング言語は英語がベースというのもありますし、プログラミングのライブラリ※の仕様書は英語で書かれているものが多いため、英語の力は実際の業務にも役立ちます。
※ライブラリ=ソフトウェアを作る際に必要となる汎用的なプログラムをまとめたもの。全て1からプログラムを作ると時間がかかるため、ライブラリを利用しながら開発を行う。
大学では「基本情報技術者試験」や「ソフトウェア開発技術者試験」(現在の「応用情報技術者試験」)の勉強にもチャレンジし、資格を取得しました。資格試験ではソフトウェア開発の現場で必要となる知識を幅広く学ぶことができ、入社後にこのような資格取得を推奨される会社もあるため、これらの資格があると就活で有利になることもあります。
ゲーム好きが高じて、作りたいと思うように
―ご自身の子ども時代を振り返ってみて、今のお仕事につながっている部分はありますか。
性格としてはマイペースでおとなしかったのですが、負けず嫌いではありました。特に根拠はないのですが、一生懸命やれば自分がいちばん勉強ができるようになると思い込んでいたと思います。集団の授業でわからないことがあるとずっとそこが気になって理解が深まらなかったので、自分で勉強するほうが好きでした。そのおかげで、自主的に勉強する習慣が身についたのかなと思います。
好きだったのはテレビゲームですね。時間は決められていたのですが、親の目を盗んでいつもゲームをしていました。プログラミングに興味を持ったのも「自分でもこんなゲームを作ってみたい」と思ったのがきっかけです。仕事には適性があると思うのですが、ずっとパソコンの画面を見ながら黙々と作業を続けるのも立派な才能だと私は思っているんです。これは幼いころからゲームをすることで培われてきたことなのかなと。
手前味噌になりますが、Playgramはそうした意味でも、黙々とゲームをプレイしている感覚でプログラミングの基礎を身につけられるのがおすすめできる点ですね。
―他に、プログラマーに向いている性格はあるのでしょうか。
集中してパソコン作業に取り組む時間は多いですが、プログラマーの仕事はコミュニケーションも大事だということは伝えたいですね。ソフトウェアやアプリ、ゲームの開発はひとりではなくチームで取り組んでいくものなので、お互いに進捗を確認したり、作業分担した部分を統合するときにしっかりと報告や連絡ができていないとうまくいかなくなってしまいます。作業に取り組む職人的な性格とコミュニケーション能力を両立できるといいですね。
テクノロジーで教育を加速させたい
―丸山さんのこの仕事における将来の目標があれば教えてください。
私がPlaygramの機能開発に携わるようになったのは、子どもが生まれて教育に強く興味を持つようになったからです。テクノロジーの力を使って、もっと教育を加速させたいという思いがあります。
学校の授業はどうしても平均に合わせなければいけませんが、人それぞれに最適な勉強法があり、個人個人に合った難易度の授業を提供できれば子どもはもっともっと伸びると思うんです。
やる気スイッチグループではすでに個別最適化をめざしたレッスンを提供していると思いますが、私たちも講師と生徒をよりサポートできる技術を作れたらいいなと思っています。 プログラミング教育HALLOで提供しているPlaygramも生徒の好きなペースで進めるようになっていますが、まだまだ改善の余地はあります。たとえば、生徒が問題を解けなくて詰まっているときに、何がわからない可能性があるのかを提示するなど、生徒をサポートするための改善は、今後も続けていきたいです。教育現場の声を聞きながら、よりよい教育を提供できればと思っています。
―最後に、お子さまの背中を押す保護者さまへのメッセージをお願いします。
保護者が子どもにできることのひとつは、子どもが夢中になれるものを見つけるきっかけを作ることだと思っています。
私の場合は、父親のノートパソコンに勝手に夢中になっていたという経験がそれにあたります。父は、当時ノートパソコンはすごく高価なものだったにも関わらず、嫌な顔ひとつせずほとんど私に使わせてくれました。そのおかげもあって、情報系の職種に進む道を選べたのだと実感しています。夢中になったらそれを応援しさえすれば、子どもは勝手に成長していくものだと思います。
私にもふたりの子どもがいるので、さまざまなことを経験して視野を広げてもらって、なにか夢中になることを見つけたら全力で応援していきたいと思っています。
取材協力:株式会社Preferred Networks
機械学習・深層学習(ディープラーニング)、ロボティクスなどの最先端技術を実用化し、製造業、医療、交通システム、ロボット、教育、エンターテインメントなど幅広い分野でソフトウェアやアプリ、ロボットの開発を行っている。
https://www.preferred.jp/ja/
プログラミングのスタートは、無料体験から!
コーチが一人ひとり丁寧に指導するので、初めての方も安心してご参加下さい。