高校生エンジニアが2年間頑張ってみた！

# whoami?
どうもこんにちは！2023年9月から2024年4月までFlutterエンジニアとして勤めていました 平松一誠と申します。よろしくおねがいします！ 2006年生まれで今は17歳です。

![スクリーンショット 2024-04-18 17.22.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/8ead6525-79c1-ac6d-3890-2ee6b29344ae.png)

https://twitter.com/issei_simulator

# プロローグ (IT業界に飛び込むまで)
僕のエンジニアの人生の始まりはとあるプロダクト開発の経験です。まずはそこに至るまで自分がどういう選択をしてきたか、自分がどんな人間だったのかを順を追って説明させてください。

#### ダイジェスト 
- 小中学生の頃はパソコンやプログラミングとは全く縁がなかった
- 小5の時マレーシアへ留学をする
- 田舎だったので暇、電子書籍を読むためにiPadを買ってもらう(最初の電子機器) 
- 「12歳で100万円ためました!」という本に出会う。金融経済について関心を持つ
- 13歳の時に日本に帰国。同時期に新型コロナウイルスが流行り始める
- シミュレーションゲームをやるためにWindowsPCを購入する (PCとの出会い)
- バイト, 副業, 株式売買の中で出来そうなやつをやってみた (一年越しにお金稼ぎなるものを初めてみる) -> 最終的には株式売買を始める
- 緊急事態宣言も解除され、日常を取り戻しつつあった。漠然とした将来の不安があり、初めて将来について考え始める (これから7年間の学生人生について)
- IT業界に興味を持ち、IT業界について知ることができる学校を見つける。そしてMacを手に入れる
- 中学卒業。通信高校に通いながらその学校に通い始める
- Now!

::: note 
**おまけ ダイジェスト（本との出会い)**
- ズッコケ三人組(うわさのズッコケ株式会社)
- 12歳で100万円ためました!
- いろんな経営/経済/投資本
- ビジネス教養 行動経済学
- ビジネス教養 地政学
- AIにできること、できないこと
:::

https://booklog.jp/users/eb1f18fdff157266

## ~小中学生の頃の自分
小中学生の頃は全くと言っていいほどパソコンに縁がありませんでした。代わりに使用していたのはiPadで電子書籍を読むために母が買ってくれていたものでした。

## いざマレーシアへ
転機は小学五年生の頃で、マレーシアに母と妹と弟と留学をしました。家族みんな英語もろくに喋れず頼れる知り合いもおらず、現地のインターナショナルスクールに通っていました。この時の経験が自分にとってかなり刺激的で、そして強い自立心が芽生えさせてくれました。そして「12歳で100万円ためました!」という本の影響もあり、いろんなお金の稼ぎ方についても興味を持ちました。

## シミュレーションゲームとの出会い
帰国して間もない頃、コロナが猛威を振いました。自宅待機ですることもなかった僕はいろんな遊びに手を出しましたが、あまり長続きせず。そんな中とある。シミュレーションゲームに出会いました。**これが最初のパソコンとの出会いです。** 何かをずっと考えて、行動に移し結果が出る。そんなサイクルが続くゲームがすごく楽しかった思い出があります。

また同時期、株式売買を始めました。その頃ちょうどいわゆるコロナバブルだったので、半年ほどで元手を3倍にしました。でもここで何を思ったのか、余っているお金とさらに借金して1つの株を買うという愚行に出ました。1日目は急上昇。2日目大暴落, 3日目大暴落。資産総額が1/3になり、半年間の利益が3日でなくなりました。**こうして僕のFIREの夢は崩れ去りました。**

## IT業界を志望する
緊急事態宣言も解除され、マスクがありながらも普通の生活を取り戻しつつあったこの頃、自分はある大きな選択に迫られました。正直このまま高校, 大学と進学し7年間をダラダラと過ごしたくはないと思ってしまっていて、何か自分がやりたいこと決めてそのスキルを磨いていきたいと思うようになりました。そしていろんな人にアドバイスをもらいながら、そして自分の志と照らし合わせて、最終的には通信高校に通いながら、IT業界について知ることができる学校に通うことを決めました。

::: note
なぜIT業界を志したのか
1. 何かを自分で作って、問題を自身の手解決できるスキルが欲しかった
2. 常に発見と変化がある業界、ワクワクがずっと続く業界で将来は働きたいと思っていた
:::

# これまでのエンジニア人生を振り返る
ここからは僕が高校に入ってから始めた、プロダクト開発をベースにこの2年間を振り返っていきます。
## 1. 初めて立ち上げたプロジェクト
入学して間もない頃、Web開発に関する基礎知識を身につけた私はすぐにプロダクト開発に取り組みたいと思っており、学校の調査や運営スタッフへのインタビューを通じて様々な情報を集めていました。ある日とある先生から、キッチン教室を運営している知り合いが**非効率な予約管理システムに悩んでいる**と聞き興味を持ち、さっそく話を聞いてみることにしました。

その先生に聞いたところによると、この予約システムの問題点としては、すべての予約管理システムが紙とエクセルをベースにして行っていると言うことがわかりました。そのため、これまで何回も紙の紛失やそれをエクセルに入力する際の打ち間違いなどでトラブルも多くあったそうです。

またコロナ禍の影響で、使用前の体温チェックが必須。さらに、食材の使用量の確認や掃除の有無なども確認する必要があったため、常に担当のスタッフが常駐していないといけない状況でした。これでは「**運営,利用者双方に負担が大きい**」と思い、さらに詳細に話を聞くため、そしていくつかの解決手段を提案するためにミーティングの約束も取り付けてもらいました。早速デザイン案を`Figma`で作成し、開発環境も整え始めました。

|  |  | 
|:-:|:-:|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/74e22717-a775-ebcc-ec40-861f44769b8f.png)| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/b89aa5e1-b2f1-7892-b902-358e32f1a7ab.png)
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/a0eb064a-559d-e86e-e732-2ebedab570a7.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/8026147e-96ef-9741-31b1-f80e1801a98f.png)|

予定を調整し早速、顔合わせも兼ねてのミーティングを行いました。事前に聞いていた要件の確認や機能のについての確認も行いました。作ってきたデザインもさっそく見せ、かなり喜ばれ、好感触で手ごたえがありました。

その後さっそく`Django`と`HTML/CSS`を使ってアプリを完成させ、導入について動き始めます。2回目のコンタクトを試みて、まずは完成の連絡とさらなる改善のため`大規模アンケート`の実施の提案を行いました。ですが返信をいただくことはできず、**最後まで導入について話すことはできませんでした。**

:::note warn
補足: 導入についての話ができなかった原因として、
1. 話した担当者がかなり多忙な方だったこと
2. 次のコンタクトまでに、2週間の期間を空けてしまっていたこと
3. この問題自体が担当者と私の間のみの問題となってしまい、運営メンバー全体を巻き込んだ問題提起, 広報ができていなかったこと

などが挙げられると思います。他にも様々な要因がありましたが、いずれにせよ自分にとってかなり苦い経験で、この時の反省をのちのプロダクト経験にもしっかりと反映させています
:::

## 2. 校内スタートアップの始まり
前述したアプリの進展に行き詰まっていたころ、私はとある学生主導の校内イベントの運営に関与していました。このイベントの趣旨としては、「**たくさんの学科があるこの学校の交流を促進し、より活気のある学校にする**」というものでした。2日で申込者は150人をこえ、アンケートではイベントの満足度もかなり高く大成功でした。

運営メンバーとはその後も度々ご縁があり、「**さらなる学校の活性化と学校の流動性をあげ、効率化する！**」をミッションとしていること。そのためにSNSを中心としたアプリを作ろうと思っていることを聞き、そのミッションにとても共感しチームを結成しました。自分も以前の経験を生かせると考えマーケターとして参加することにしました。

|  |  |  |
|:-:|:-:|:-:|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/de6a3614-079f-1109-9286-b1393191ec92.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/2d80bd91-c9ad-40c3-8170-e624ceee51bd.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/27cc5ecd-095d-e138-4d12-e818d1b6c7b6.png)|

:::note 
※ 私が主に担当した資料を一部抜粋。インタビューを通して生徒やスタッフの事象を収集。事象から導き出せる本質的ニーズ, ペルソナを作成した。
:::
#### Flutterエンジニアとして
しばらくはマーケターとしてプロジェクトを促進していた私でしたが、要件が固まり、開発が本格化していく中で、いよいよ**チームのエンジニア不足が顕著**となっていました。またマーケターとしての仕事もなくなりつつあり、焦りも感じていました。そのためマーケターとしてだけでなくエンジニアとしてもチームに貢献したいと思い始めるようになり、Udemyを活用しFlutterについての学習を始めました。

**これが僕とFlutterとの出会いです**

https://www.udemy.com/course/learn-flutter-dart-to-build-ios-android-apps/?couponCode=ST7MT41824

またチームで採用されていた`Atomicデザイン`と`クリーンアーキテクチャ`についても学習を進めていました。チーム開発が現実味を帯びてきたこともあり併せて`リーダブルコード`も読み、**良いコード・読みやすいコード**を意識するようになりました。Gitの使い方も学び直し、正しいコミット頻度 , コミットメッセージについても意識しました。


|  |  |
|:-:|:-:|
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/5a095ef8-69e5-386e-8c3d-0a88770312bc.png)|  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/24f89114-d838-fafa-1142-d99caff095fd.png)|

https://www.youtube.com/watch?v=Yi-A20x2dcA

https://www.youtube.com/watch?v=vrPk6LB9bjo

最後にはしっかりメンバー全員と話し、最初はアプリの`template層`までを担当することが決まりました。その後`riverpod`についてもある程度は習得し、見様見真似だったものの`状態管理`や`provider`, `Firebase`についての機能実装も任せてもらうようになりました。


### プロダクトのあゆみ
1人の頃と違って、他のメンバーの高い推進力のおかげで、最初こそは学校の管理者の方とのみ要件の確認を行っていたものの、話はどんどん進み、学校のコーディネーター, 学校の責任者, そして学校運営部の部長、にまで話を通すことができていました。そしていよいよ忘れもしない2023年1月。**当時の学校運営企業の代表取締役社長**の方にプレゼンする機会をいただきました。

::: note 
ここまで物事が進んだ要員として、当初の学生のためのSNSアプリ構想から大きくプロットし「**学校生活の効率化アプリ (出席管理アプリ)**」としたことが挙げられます。

意図としては
1. 運営コストに直結し、そして明確に導入するメリットがあり、コストが削減できるアプリにすることで、導入のハードルを下げる
   (特に出席管理のコストについては運営側も問題視)
2. 学生がアプリを開くインセンティブをあらかじめ構築しておくことで、その後本命のSNS機能の浸透が易い状況にする

もちろんSNS機能の重要性についてもしっかり話していました。中でもインタビューを行った**スタッフの1人がノーコードを使って生徒のためのアプリを作ろうとしていた**という事実は双方にとって衝撃でした。
:::
::: note warn
当アプリが解決したかった出席管理のフロー

1. 出欠は紙もしくはエクセルで行う
2. 遅延証の有無などをチェック
3. 一定期間の集計後それらをクラウドサービスにデータ入力

紙の場合は3回, エクセルの場合でも2回のデータ入力が必要になります。そして同時に生徒は毎授業ごとに出席を取る必要があったため、毎回のロスタイムが発生してしまっていました(多い時には5分程度)。また欠席の連絡などをDMを介して行われ運営の負担になっていました(データ入力専門の部署も存在)

そのためそれらを
1. アプリで出席を集計, もしくは欠席の連絡をアプリから
2. 遅刻理由/遅延証なども添付
3. クラウドサービスと連携し自動で出席データを更新

にすることで問題を解決しようとしていました
:::

### 代表取締役社長にプレゼン
当日はメンバー全員で本社に赴きました。先に会議室に案内してもらい、社長が到着。挨拶と軽い自己紹介をしました。

::: note 
改めてこの時のプレゼンの目的は2つ
1. このプロダクトを社長に公認(応援)してもらうこと
2. 実際に校内でのテスト運用の許可をいただくこと

解決したい課題を社長にも共有し、導入の後押ししてもらうことを期待していました。
:::

さっそく社長に対して、このチームを立ち上げる必要があったわけについてを説明。その後は資料も交えてアプリの概要や趣旨についてを10分ほどいただき説明しました。

|  |  |
|:-:|:-:|
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/8f99566e-b4cd-384b-fbfa-e93c80bcfc31.png)  | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/5e9407a5-f20e-c92b-151b-94fedfa47c47.png)  |
| ![スクリーンショット 2024-04-19 23.23.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/a9645210-37dc-dc0e-81e8-1b8f20c61009.png)   |  ![スクリーンショット 2024-04-19 23.24.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/18a15aa0-9a9a-7ac1-dc44-9e32a9dfd4a2.png)  |
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/05ab60e7-b128-3386-7ebc-e7fcf5eb438f.png)|  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/0f265414-5acb-c626-623f-041ec9aec2d7.png)|

:::note 
実際に使用したスライド, その後リメイクしたスライドからそれぞれ一部抜粋
:::

結果は成功だったと思います。かなり好感触でぜひやってほしいと言われました。目標である、テスト運用の許可もいただきました。社長自身も問題について重々承知しており、改めて社長自身からこの問題について共有してもらいました。

またSNS機能を開発するにあたっても重要な情報を入手することができました。現状使用されている**コミュニケーションツールから得られる情報は、意思決定にも使われる極めて重要な指標**だということでした。

ただ１つ引っかかったことがあり、それは**まずは出席管理などができるようにすること**と言われたことです。SNS機能については重要視している反面、現状のツールで満足しているふうにも見受けられました。

::: note warn
この微妙なずれに当時の私は気付けず、チーム解散の一因を作ってしまうことになります。
:::

### チームの解散

2週間後、細かい機能の調整やバグ修正も終わり、改めてテスト運用を実施することにしました。`Firebase App Distribution`を使用して実際に生徒やスタッフに使ってもらう想定です。

https://firebase.google.com/docs/app-distribution?hl=ja

さっそく使ってもらいそこそこの反応。リリースするためのいくつかの課題も改めて再確認しました。(出席を管理する側のためにPC画面が必須) そのため僕はPC画面も開発できるように準備を進めていました。

**しかしここでメンバーのうちの半分が学校を卒業することが決まりました。** 

卒業で？ と思うかもしれませんが、就職, 親の事情など、いろんな原因からこれまで通りの開発が進められない状況になりました。

そしてこの頃の僕は開発を優先してしまい、他のメンバーに交渉や意思決定を任せっきりでした。

残ったチームメイトもこのまま出席管理ツールを作ることには否定的になってしまいました。

**そうしてチームは解散しました**

::: note warn
ニーズに迎合しすぎた結果、本来やりたかった目標が達成できなくなった結果だったのかなと僕は思いました

もちろんこのまま1人で続けていくことも考えました。ですが4人で分担していた作業を1人でやっていくことに自信がなく、学校側とも相談しこのプロジェクトを終わらせることにしました
:::


## 3. 個人開発(sakuraシミュレーション)
しばらく黎明期が続きます。仲間とチーム開発を始めようとしてみたり、Swiftに挑戦したものうまくいかず、今後どうすべきかがわからず日々挑戦し失敗し悩むの連続でした。**とにかく自分の開発に自信がない状態や気力がない状態でした。**

ふとした時に、一度ポジティブに考え直す機会を作ることができました。改めてこれまで悩んでいた論点や将来像を再確認。当面の目標は**インターンに行くこと** そしてそのために何か**アプリを完成させること** この二つです！

|  |  |
|:-:|:-:|
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/5ef4ccb4-463f-21fb-6d1d-85ffb35df5b8.png)  | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/b3d7f9e3-b8d9-a597-b956-e0706eabe557.png)  |
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/fb775d02-165b-b55d-d9d9-264df59ad1b3.png)  |  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/2f17fd5b-66c7-5bef-4b67-811b757b37fc.png) |
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/1539d53b-25f5-3625-e3de-787ea8b4c340.png)  | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/704a73e3-70af-a83b-c098-c08865562b89.png)  |
|  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/de044c52-1b0f-200b-0ad9-09cf2cb4b6ef.png) |   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654147/47e47229-4ba7-d1cc-8973-39658000aa83.png)| 

紆余曲折はあったもののアプリ自体は完成。リリース作業を行うかインターンかを迫られ、ここでようやく重い腰を上げインターン先を探し始めることにしました。

::: note warn
反省点はこれを今までの集大成と割り切ってしまっていたこと。新しい技術や経験にもっと飢えておけばよかったです。そしてもっとイベントにも積極的に参加すべきでした(どのイベントもすごく刺激的で楽しかったので)
:::

## 4.インターンに行く
### 採用までの経緯
すでに就職やインターンを経験していた友達の影響もあり、まずはWantedlyで探すことにしました。自分の経歴やプロフィールを埋めつつ、いくつかの企業に候補をつけ始めていました。(`Flutter`, `学生インターン`で検索)

そんな中、日課であるNewsPicksを見ていたところ、とある会社のCEOのインタビュー記事が目に止まりました。**常に新しいことに挑戦していてサービスをグロースさせ大きな野望を持つその人に強く感銘を受けたのを今でも覚えています。** そしてその日になんとその会社がWantedlyで求人を出していました。悩む余地もなくすぐに応募。その後そのCEOからメッセージを受け取り実際に面談することが決まりました。

後日、CEO,COOと私の三人で面談を行いました。GithubやWantedlyにまとめた経歴をベースに僕が今まで取り組んできたプロダクトの説明や技術についての説明を一通り話しました。少し緊張しましたがどのプロダクトも強い思いで取り組んできたので、伝えたいことは伝えられたと思います。その後オフィスを紹介してもらい、**契約書の準備が出来次第,NDAを締結して業務開始となることが決まりました！** 

### 業務としての開発
腕試し的な意味合いもあったと思います。最初は簡単なUI変更タスクを任せてもらいました。具体的にはアイコンの差し替えタスクでしたが、すぐに追加でデザインの統一タスクを投げてもらいました。同じデザインのWidgetが 3つのそれぞれ別々に作られていたので、拡張の余地を残しつつもや新しいWidgetを作った意図を汲み取り可読性と再利用性を上げることができました。

開始2週間、試用期間も終わり業務委託として改めて契約をしました。そしてこの日私がJOINしてから**初めてのアップデートが実施**され、私が開発したUI/機能を含むバージョンがリリースされました。これまで紆余曲折ありながらもプロダクト開発を続けてきた中で、実際に世に出たものはこれが初めてだったので**その時の感情は名状し難いものがありました。** 

### この業界に入ってきて
それからたくさんの機能を開発,リリースをしました。毎日の開発が本当に楽しくて、自分が作った機能が実現していくのがすごく楽しくて、この業界に入って良かったとつくづく思いました。頼ってくれる仲間がいて、頼もしい仲間がいて自分にとって最高の環境でした！

# 今後の展望
進路を選ぶ上で、私は自身の興味や将来について今一度考える中で最終的には**大学進学という結論に行きつきました。** 特にエンジニア以外の分野にも選考を持つというに対して強い興味と憧れを抱くようになりました。身近には地震学、心理学、気象学、UI/UXデザイン、そして芸術など、多岐にわたる専門分野を持つ方々がおり、彼らの姿には本当に感銘を受けます。彼らの多様な専攻と知識に対する尊敬は、私の進路選択にも影響を与えてくれました。

学部は**経済学部** です。何かをよくするために一番必要な行為、僕は知るということだと思っています。昔の経済、今の経済, そして未来の経済を学び、知ることで、自分の所属する組織, 地域, そしてこの国を少しでも良くできるんじゃないか、そうしたいと思ってます。

まあ実際,かなり長い期間金融経済については興味を持ってきましたし、勉強という観点から見ても、これまで2年間、プログラミングやプロダクト開発に集中してきたので、その反動で勉強は格段楽しいですし、エンジニアとしての道を歩む上でも、英語と数学が必要不可欠であることをこの半年で痛感しました。そういう意味でも自分の選択には迷いはありません。

# まとめ
ここまでお読みいただきありがとうございました！ 初めて自分の人生そして、プロダクト開発を振り返る記事を書かせていただきました。読みにくい部分など至らないところがあるとは思いますが何卒ご容赦ください(改善点あればお願いします！) 

そして最後に、僕の17年間。そして特にこの2年間。本当に多くの人に助けられ、支えられてここまでくることができました。まずは、このとっけもない選択を応援してくれた母と父。共に切磋琢磨した友達。僕に新しい価値観を示してくれた先生。一緒にプロダクトを作ろうと言ってくれて、最高のビジョンを掲げてくれた先輩。エンジニアとして次のステップを示してくれた先生。君たちの隣に並びたいと思わせてくれた中学からの親友。そしていろんなエンジニアのあり方を教えてくれたイベントで知り合ったたくさんの先輩エンジニアの皆様、最後に高校生だからって、否定せず受け入れてくれたインターン先、他にも他にも、そして僕に関わってくれた全ての人には本当に感謝の気持ちでいっぱいです。+ ここまで僕を連れてきてくれた昔の僕にも

改めて御礼申し上げます！ これからも精進して、自分の道を歩んでいきます！