【Code Girls Stories CROSSTALK#01 】「とにかく手を動かすこと」が成長のカギ(石川愛海さんのストーリー)
慶應義塾大学 環境情報学部1年生の石川愛海さん(以下、石川)とGoogleソフトウェアエンジニア 2021年度入社の堀しのぶさん(以下、堀)のクロストークの様子をお届けします!
Rubyを覚えて数か月で プログラミングコンテストに参加
堀:大学は情報系なんですよね?
石川:はい。慶應義塾大学の環境情報学部で学んでいます。「情報」の授業でPython[1]を使ったプログラミングをしたりしています。まわりの友達に教えたりしながら……。
堀:高校時代からプログラミングを学んでいるとやっぱり差がつくんですね〜。個人的にも何か開発してます?
石川:今は毎日の献立をランダムに提案してくれるアプリをつくっています。私、ひとり暮らしなんですけど、献立決めるのが苦手で……。
堀:私も献立決めるの苦手だから共感できる〜。iOS[2]ですか?
石川:そうです。iPhoneアプリは高校時代からつくっていました。
堀:そもそもプログラミングに興味を持ったきっかけは?
石川:中学2年次の「情報」の授業で、Webサイトを制作したんです。そこで文字の羅列がサイトとして形になっていくのが面白くて、プログラミングに興味を持つようになりました。その後、同年の春休みに「Life is Tech ! [3]」というプログラミングのキャンプに参加して、オリジナルのWebサイトづくりを経験して、すっかりハマりました。
堀:外部のスクールは、中学の授業とは違うんですかね。
石川:やはり自分のオリジナル作品づくりに挑戦できるところですよね。学校の授業は教科書通りにマネするだけなので……。
堀:なるほど。
石川:その後、同じスクールでWebデザインの定期的なスクールに通って、スキルを磨きました。ちょうどケガが理由で、部活を引退して、何か特技を見つけたいと思っていたので、WebデザインからiPhoneアプリ作成、Webサービスとスキルの幅を広げていきました。そのまま中高の青春をすべてプログラミングに注ぎましたね(笑)。
堀:このコンテストはどこで見つけたんですか?
石川:私も最初はわからなくて、当時通っていたプログラミングスクールの学生メンターさんに相談しました。そうしたら、コンテストを探せるサイトを教えてもらって……「登竜門」というサイトです。
堀:そういうのがあるんですね!ちなみに、こういうWebサービスをつくるとき、まず特定のプログラミングスキルを身につけて、できることを形にしていくか、それとも理想とする機能があって、そのために新しい言語やスキルを覚えていくのか、石川さんはどっちでした?
石川:私の場合、後者ですね。実装したい機能のために、ひたすら手を動かしながら、新しいやり方を覚えていきました。
堀:手を動かしながら……私も学生時代はそうでした。でも解決できない壁にぶつかることもあったのでは?
石川:もちろんです。そのときは、スクールのメンターさんに相談したり、インターネットのサイトを見たりしました。「Qiita(キータ)[5]」とか、「スタック・オーバーフロー[6]」とかですかね。
アプリやWebサービスを使って環境問題の解決に貢献したい
堀 :「My Design Memo」はどんなところが難しかった ですか?
石川:「非同期処理[7]」を実装したことですね。データベースと通信をするWebサービスは、動作が遅くなりがちなんです。そこでリロードせずにデータベースと通信できる機能を入れて、お気に入り登録やメモを非表示にする機能をスムーズにできるようにしました。
堀:技術的には、どんな言語を使ったんですか?
石川:Rubyに加え、JavaScript[8]のAjax[9]やjQuery[10]を使いましたね。まさに、手を動かしながら挑戦したら、でき上がった感じです。
堀:Rubyを覚え始めて、数か月でそれはすごいことですよ!私なんて高校時代は、プログラミングすらしていないですよ。
石川:バックエンドで地味なのですが、「非同期処理」の実装は、コンテストのプレゼンでもしっかりアピールしました。
堀:きっとそこも評価されたんでしょうね。それにしても大学の受験勉強もある中、よく開発の時間を確保できましたね。
石川:正直、寝ずにプログラミングをしていたこともあります。エラーほったらかして、寝るのとかムリなんですよね(笑)。とはいえ、基本的にはその日のタスクを決めて、着実にこなしていった感じです。
堀:プログラミング技術を向上させたい人にアドバイスはあります?
石川:まずは、先人が書いたコードをひたすらコピーして、覚えることですよね。その過程でトライ&エラーを繰り返すことで、技術力が身につきます。やっぱり大切なのは、手を動かすことなんですよね。
堀:何をつくりたいか、わからない人はどうすればいい?
石川:難しく考えなくていいと思うんです。自分の趣味とか好きなものを発信するWebサイトづくりからスタートしていけばいい。するとだんだん日常生活の課題解決とかに興味が出てくるはずです。
堀:毎日の献立とかね。
石川:そうなんです! 私はプログラミングによって、家族や友達、そして自分自身の課題を解決することが開発の大きなモチベーションになっていますね。
堀:誰かの課題を解決した具体例とかあります?
石川:タイマーを複数同時に使えるアプリを作成したときがあったのですが、それをリリースしたことをSNSで発信したら 、陸上部のマネージャーの友達が部活で使ってくれて、「すごく便利、ありがとう!」と言ってもらえて……。思わず「おお!!」ってなりましたね。
堀:すごくいい話ですね。そんな石川さんの将来の目標は?
石川:まずは、大学生のうちにいろんなアプリやWebサー ビスの開発を経験して、スキルの幅をどんどん広げたいですね。
堀:もっと先の未来は?やっぱりエンジニアを目指す?
石川:コードを書くのは大好きなんですが、それは手段であって、むしろ最近は社会課題の解決に興味があります。例えば、最近はSDGsが注目されていますが、 私も環境問題にかなり危機感を持っています。そこで、みんなが無意識のうちに、環境にやさしい行動をとってしまうような社会を、プログラミングの力で実現したいと思っています。これはエンジニアの仕事ですかね?
堀:エンジニアでもその夢は実現できるし、より企画職に近いプロダクトマネージャーのような職業もありますよ。将来が楽しみですね。
石川:将来の仕事についても少しずつ考えていきたいです!
[1]Python:プログラミング言語の一種。アプリの開発、人工知能、データ解析などさまざまな用途に用いられる。
[2]iOS:Apple社のiPhoneで用いられているOS(オペレーティング・システム)のこと。
[3]Life is Tech ! :中学生、高校生向け IT・プログラミング教育サービス。全国でプログラミング教室やイベントを展開している。
[4]Ruby:オープンソースのプログラミング言語のひとつ。日本人が開発した言語として知られている。
[5]Qiita(キータ):プログラミングに関する知識を 共有するサービス。さまざまな事象に関するQ&A が公開されている。
[6]スタック・オーバーフロー:Qiitaと同様、プログラマーが利用するQ&Aサイト。
[7]非同期処理:プログラムのひとつの処理が終わる前に次の処理を行うことができる機能。データベースとのやりとりを高速にできる。
[8]JavaScript:プログラミング言語の一種。国内外のほとんどのWebサイトで使用されている。
[9]Ajax:Asynchronous JavaScript + XMLの略。JavaScriptでサーバとの非同期通信を行う際 に用いる。
[10] jQuery:JavaScriptのライブラリ(用途に合わせてまとめたプログラム)の一種。JavaScriptを使 いやすくしてくれる。