“自分も使いたい”、”みんなも喜んでくれる”、そういうものを作りたい。

橘健司さん、即戦力コース修了。現在エキスパートAIコース受講中。大学卒業後、大手メーカーでハードウェアのエンジニア職に就き、その後コンサルタント企業でビジネス開発を行う。エンジニアとしてキャリアを進んできたが、「よりダイレクトにお客さんに使ってもらえるものを作りたい」との思いが芽生え、DIVE INTO CODEへ入校。

https://gyazo.com/fda37074b9155a42bcfb21580fc4b9a0

作ったアプリが、職場で採用されるまでに成長した

ご自身の経歴や経験を教えてください。

大学の機械工学科を卒業してから、大手メーカーでハードウェアエンジニアをしていました。その後転職し、現在はコンサルタント企業で、ビジネス開発に従事しています。
今後の身の振りをどうするのかは、実はまだ決めていません。

そういった状況で、なぜプログラミングを学習しようと思ったのでしょうか?

今までやってきたハードウェア開発やビジネス開発は、たくさんの人が関わるんです。
たくさんのリソースが必要で、いろんな技術が求められます。自動車を作ることをイメージしていただくとわかりやすいかもしれません。メカニック、電子回路、デザイナー、それから量産するための知識も必要です。一つのものが出来上がるまでに、とても時間がかかります。
そういった経験を経るうちに「自分のアイデアを、ダイレクトにお客様に使ってもらうこともしたい」と漠然と考えるようになったんです。
ハードウェアだと、「世に製品を出してから、お客様からフィードバックをもらう」という手順のやり方は難しい。でもソフトウェアであれば、ベータ版を出したり、ABテストを行ったりなど、フィードバックを得られやすいイメージがあったのでそういった理由でもアプリケーション開発をやってみたいな、と思うようになったんです。
そんなときにたまたまDICの「3時間でアプリをWeb公開まで体験できるプログラミングのセミナー」というのがあり、受講してみました。ここでアプリ開発を学べば、会社にも役立てられそうだということで会社からもお墨付きを得て、入校を決めました。

始めてのアプリ開発は、わからないことだらけ

入校されてからもっとも大変だった出来事を教えてください。

一番大変だったのは、DEMODAYです。オリジナルアプリを開発しプレゼンする大会なのですが、とにかく大変でした。もともとDICに入ったのは、アプリを作ることが目的ではありました。それでも、機能実装されたものをWeb上に公開するということが大変だということを感じました

まず作り始めるにあたり、何から始めていいのかが、わかりませんでした。作りたいアプリのイメージは頭の中にあるのに、まず何からやって何を質問したらいいのか、「わからないことがわからない」状態でした。
カリキュラムの課題でもアプリは作りますが、その時はテキストにヒントがあり肉付をしていけば、アプリができるわけです。
一方で、DEMODAYの場合は、まず自分で作りたいものを企画から始め、作り上げていかなくてはなりません。私の場合は二人でチームを組み、バックエンドは自分でやり、パートナーにはHTML、CSSなどのフロントエンドを担当してもらいました。DEMODAYに出すまで、約3ヶ月ほどかかりました。

イメージを書き出すことで、カタチになる。

最終的に作ったものは会社の「工数管理システム」です。きっかけは、業務上で使用していた既存のシステムがとても使いづらく、それを解決したかったからです。汎用型のソフトを入れていたのですが、業務上そこまで複雑で高度なものを使う必要が全くなかったので、業務に最適化したような、GoogleカレンダーからAPIを読み込んで工数管理が自動で行えるものを考えていました。

でも頭の中のイメージの具現化の仕方が、全くわからなかったんです。

https://gyazo.com/31defe5f4a59b343c3686f76a910862c

それをどのように乗り越えましたか?

袋小路に入りかけ解決方法がわからず、メンターにアドバイスを求めると、「アプリで表示される画面をまず書き出してみる」という助言をもらいました。
そこで、画面遷移図を全て書き出しました。どんな機能や処理があるのかをつぶさに書き記していきました。管理者機能やAPI、グラフ表示など、機能にフォーカスしてイメージしていたものを実装順にどんどん並べていったら次第に光が差してきました。しかしまたすぐに壁にぶち当たりました。GoogleカレンダーのAPIとの接続部分です。ここは最も苦労しました。カリキュラムでは網羅しきれない部分もあり、ソースコードが何をしているのかメンターに質問しつつ、自分でもネットで調べて、なんとか接続できました。

そのようにしてまずは全体のイメージを固め、次に細分化をしてみて実装順に並べる、という手順を踏んでいったらなんとか形にできたんです。

会社のみんなに喜んでもらえるアプリができた

要件定義や画面遷移図の部分の設計の進め方でつまずいていたんです。プログラムの動かし方については、ライブラリをどこかから持ってきて使えばいいのですが、設計の部分ではどの機能をつければどれくらいの時間を要するのか、という必要工数の見積もりができず非常に難しかったです。「この機能は入れたいけど時間がかかりすぎるから捨てる」、みたいな判断がそもそもできなかったんです。それは経験を積むしかないんですが。

結果的にこのアプリは実際に会社で使われ喜ばれています。各個人のGoogleカレンダーの情報を自動で読み込み、どのプロジェクトにどれくらいの時間を要したか工数計算をしてくれるので、自分でも助かっています。

エンジニアスキルを身につけるうえで、”大切にしていること”はありますか?

必ず手を動かすことを重視しています。本を読んで勉強するだけでは覚えられない。
コードを書く、デバッグする、変数に何が入っているのかを調べる、メソッドをちゃんと理解する……常に定理を紐ときながら、原理的にどうなっているのかを理解しながら覚えるようにしています。

人工知能を組み込んだアプリ開発をやってみたい

https://gyazo.com/d90de1006e6f9aaf3cf3f927493db21b

今後の目指す姿について教えてください。

次は「AIを組み込んだWebアプリケーション」を作りたいです。今考えているのは、自分も作りたくて、他人も使いたくなるようなもの。たとえば「音声を自動で拾い、議事録をスマートに作ってくれる」というようなみんなが喜んでくれるサービスを作りたいです。

これからエンジニアを目指す方、受講を検討している方へメッセージをお願いします。

DICにはすごくいいテキストがあります。ただそれだけではなく、自分で手を動かし、カリキュラムを終えたら主体的にアプリ開発などどんどんやってみることも大事だと思います。ちゃんと要件定義から考えられるようにメンターのサポートを受けつつ、自分でプラスアルファの実践をやる事で自分の力になります。その環境がDIVE INTO CODEにはあると思います。

ダイビックのことをもっと知ってみませんか?