ヒモ男エンジニアになる
吾輩は犬である
衣食住を与えられ犬のように生きていた人間が、G'sアカデミーに通った体験記です
エンジニアかっけえ
昔からプログラミングやパソコンに興味はあった。
小学生の時、友達のお兄ちゃんが学校のパソコン室で先生のPCを遠隔操作して、先生を困らせてケタケタ笑ってるのが最高にかっけえと思ったのがきっかけ。
ブラッディマンデイにも影響されて、ファルコンのUSBメモリにLinuxをインストールして、学校のPCに挿して友達と喜んでた(なぜできたのかも、どう入れたのかも覚えてない)
それ以降は、特にPCをいじる事は無かった(この時どハマりしてればよかったのに。。。)
G'sに通う前の会社で、スマホショップに関わっており、超おじいちゃんおばあちゃんが「Lineてやつで孫とテレビ電話ができるのよ〜」とか「このゲームずっとやっちゃうの」とか、
高校入学前の子が初スマホで「やっとTiktok見れる!!」とか
こんなに人の生活に入り込んで、ワクワクさせたり幸せにしたりするアプリを作ってる人達に、憧れとリスペクトと羨ましい気持ちがあった。
自分の仕事は、業績を上げる事だけが目的で「何も生み出してない」し「誰かを幸せにしてもいない」と思っていた。
何かを生み出すことにめっちゃ惹かれてた
そろそろやべえ
二次会を断ると後ろ回し蹴りが飛んでくるような会社だったが、頑張っていれば何かにつながると、脳死で頑張っていたが、ふとスマホでこれを見た。
学生時代25歳までにマセラティーに乗りたいと、カウントダウンアプリを入れていた。
何もないまま23歳になっていた。「なんか変えないとやべえ」
BMXに乗り始めたのもこの少し前、
断固たる決意で会社の飲み会とゴルフをフル断りし始めたのもこの辺り。
ずっと興味のあった、プログラミングをやってみようとN予備校を始めたのもこの辺り。
こんなの初めて////
飽き性極まりない自分が、初めて強制もされず自分から何かを学んで継続することができた。(プログラミング)
N予備校での勉強も楽しかったし、教材を見ながら、物をつくる体験はできたが、
「どれだけやっても教材がなくなった瞬間全て分からなくなる。」
らちがあかないと思いスクールを探し始めた。
G's発見
どうせ通うなら、仕事もやめて、1番厳しそうな所でフルコミットしようと思った。独学でダラダラやるよりも、これでダメだったら向いてないと思おうと思ってた。
校舎に通えて、1番大変そうな所で、しっくりくる所に通おうと思っていた。
色々なスクールの話を聞きに行ったが、営業の意志がすっごい見えて嫌だった。w
G'sの「プログラミングはあくまでも、物を創るためのツールだ」というのが刺さった。
そして「超ハイスペが集まる入学するのも難しい学校」って印象があったので、G's一択になった(校舎にも通えるし)
わし仕事やめます
犬生活をしていたので、お金は貯まってた。
そしてしいたけさんもこんな事を言っていた。
2022年の会社の初詣で、今年も頑張るぞ!的な空気の中、でっかい熊手を持ちながら最終的な退社を伝えた。
家を失う
家を失った。
要因としては大きく3点
1.仕事をしなくなる(ガチひもニートは嫌だったらしい)
2.ビジュを最近手抜いてる(センターパートは嫌でマッシュが良いらしい)
3.遊べなくなる(G'sハードだから)
余談として元カノがジャニオタだったので、ホストぐらいジャニーズについて語れるようになった(ちなみに僕はSixTONESのきょも推しです)
G's始まる
ここで頑張れなかったら、終わりだという思いで望んだ
今までドラマの中でしか見たことのないようなハイスペの方々が実在した。
自分は24年間フラフラしてきて、今更頑張ろうとか思ったけど、
今までずっと頑張ってきて、さらに勉強しようとしている人がこんなにいるなんて。と更に頑張ろうと思った。
ん??楽しいぞ??
地獄のような辛いだけの半年間を想像していたが、なぜか楽しかった。
自分の解釈だが、
プログラミングを勉強するのでは無く、「遊び道具とその使い方ちょっと教えるからあとは自分の好きなように遊んでみな」って感じ
元々ど田舎出身で、山とか川で遊んでいたし、学生の頃も変な遊び考えて遊んでたり、いたづらが大好きだったから、その延長でハマったんだと思う
環境のおかげもあった。G'sには最高に面白い人たちがいっぱいいるのでおすすめです。
WhyMe?
なぜエンジニアになりたいのか?なぜ自分がこのプロダクトを作るのか?
これには、悩みすぎて「Who I am?」状態になってちょっと病んでる時があった。ww
人生で自分についてこんなに考える時間は無かった。
今まで「楽しそう」とか「カッケー」とか「成長できそう」ぐらいで全部選んできた自分にとっては苦行だった。
正直卒業してもまだ模索中ではあるが、ちょっと人間的に変われてきてるっぽい。
JavaScript選手権
GGAで発表した「Wavy'sMap」の前身的な物を作っていた。
(この時はGGAでこれを作るとは考えてなかった)
BMXとかスケボーのプレイヤーがお互いの位置を共有できる物を作ろうとした。
山崎大先生のBingMaps GO! を使って作った。
現在位置の緯度経度を常にFirebaseにぶち込むスタイルで作ったが、他のユーザーの位置情報がリアルタイムで動かなかった。
未完成の状態で提出したが、これが自分の中で結構悔しくて、JS選手権後もやって完成させた。
悔しすぎて、次からは何がなんでも、取り敢えず作り上げると心に決めたw
Flutterに出会う
元々、JSで作っていた物もモバイルアプリにしたいなーって物だった。
ただモバイルアプリを作るなんて夢のまた夢だと思っていた。
PHPを学んでいるぐらいに、Twitterで「Flutter」という文字をよく見かけていたので、可愛い名前の言語だなーと思ってググってみた。
Flutterの名前の意味は「羽ばたく」的な意味らしい。
「めっちゃ良いやん。。。」
元々空を飛びたくてパイロット目指したり、バンジーのインストラクターをやっていたので、ときめいた。w
触ってみたらおもろかった。
UI作りがレゴブロックを組み立てるみたいで面白い。
面白そうなパッケージがいっぱいあるし、面白そうなUIもいっぱいあった。
何よりiPhoneのシュミレーターの中で、書いたコードがアプリとして動いているの最高にワクワクした。(深く聞かれると困るけどやっぱりモバイルアプリが好きなんだなーと思った)
文字を書いただけで、こんなものができ上がるなんて意味わかんないしプログラミングってやっぱすげーなーと改めて思った
チーム開発
めちゃめちゃ良い経験だった。
FlutterとPythonで、「お題にあった表情をシェアする写真SNSアプリ」を作った。
何を作るかのアイディア出しも面白かったし、作っている過程も楽しかった。(僕はドローンで校舎内の山崎先生を追尾するという案を出したがお蔵入り)
一人では絶対に実現できないスピード感で、一人では絶対に出ないアイディアも沢山あった。
結果、チーム開発優勝することもできて、チームで何かを成し遂げるのはやっぱり最高だなと思った(GGAで入賞した時より、喜んでた)
一人より、大変な事もあるけど、喜びもマジで倍増だった。
GGAセレクションまで
入学当初はこんなメンバーの中で、GGAは出れる訳もないと思っていたので、他人事でした。
先輩方のGGAにお手伝いで参加した際に「超かっけえじゃん。俺も出たい。。」となってから意識し始めた。
企画はずっとブレてた
最初俺はこれを作るんや!!みたいなのが無かったので超悩んだ。
一般的に意義のある尊い物を作ろう的な感じで、色々な人の人生を覗ける「人生の図書館」を作ろうって思っていたが、WhyMeを考える中で自分が作る意味がなかったし、これでいってたら情熱持って作りきれてなかったと思う(だからWhyMeって大事なのかなと)
企画迷っていたとしても、コードは書けるところから書きながら、考えていかないと結構きつい。
Wavy'sMapに決めてからも色々悩んだ
最初はただのBMXに特化した位置情報共有アプリだった。
その後、スポット情報をユーザー同士で追加していくMapアプリ
→全国のプレイヤーがBMXやスケボーの動画作成のチームを組めるアプリ(いいね数でランキング出す)
→位置情報共有+トレカ的な感じでユーザープロフィールカードを出会った人と交換していく
とか色々考えた。
でもこの段階では、自分の考えと想像だけで、ユーザーヒアリングを全くしていなかった。
ヒアリング大事。。。
Parkや公園、知人、SNSでヒアリングをした。
自分の想像でしかなかったものが、ユーザーの意見を聞くことで、明確になった。
転職だし自分の好きなものを作るんだからヒアリングしなくていいや。とか思ってたけど、ヒアリングはするべし。
何故かはヒアリングしてみたら分かる。w
自分の想像だけだった物もあったし、他のユーザーに求められてる事もあったし、全く想像していなかったニーズもあった。
「分かろうともしてないのに一方的にこれ良いでしょ!!ってラブレター送ってるだけじゃダメで、ちゃんと相互にやりとりをしないといけない」 的な?w
ショート動画でスポットの情報をMap上にUPしていくアイディアになった。
銀の弾丸的な機能が欲しいね。
面白そうだけど、銀の弾丸的な機能が欲しいとフィードバックを頂いた。
一撃必殺を考えなければ。。。w
自動トリミングとかできたらかっこいいですけどね
Flutterの師匠にこの言葉を頂いた。
よし。やったろう。。。
動画自動トリミング機能
記事がねえ。。。。。。。
「自動トリミング」を実装すると決め、ググり始めたが「自動トリミング実装に関する記事がない。」
今までやり方が既にWeb上にあるものしか実装してこなかった自分からすると、今までのプログラミングとは全く別物だった。
開発期間も約1ヶ月ぐらい?だったので、早く方法を見つけないといけない。
AIを使うのだろう。ぐらいしか分かっていなかった。
AIで取り敢えず使えそうなものを単体で動かしまくった。
GoogleMLKit、Yolo、TensorFlow等々。。。。
全く実装できる気配が無かった。
二つの記事に出会う
二つの記事のおかげで実装できる見込みができた。
①Flutterでゴルフのフォーム修正アプリ
この記事でFlutterを使ってフォーム修正を実装できるのであれば、自動トリミングも実装できそうというイメージが湧いた。
アーキテクチャも近しい物になるのではないかと思った。
②AIを活用した、Google Photos内の動画検索システム
この記事が無かったら絶対に実装できていなかった。
Google Photos内の動画をVideoIntelligenceAPIで解析し、動画内のオブジェクトやテキスト等を取得し、検索ワードと一致するものを表示させるものだった。
検出したオブジェクトの写っている時間を取得出来ることが分かり、時間もなかったので、これに時間をぶっこむと決めた。
クライアントライブラリってなんやねん
解析データを取れるようになるまで超時間がかかった。
APIのイメージは、URLを叩けばデータがもらえるシンプルなものだと思っていたが、RestAPIでは全くうまくいかなかった。いく気配もなかった。
こうして、時間の無い中触ったことのないCloud FunctionsとNode.jsを触ることになった。
データ取れた時の喜びえげつない
技術選定から欲しいデータが取れるまでリアルに2週間ぐらいかかった。
ひたすらcloud functionsだけをいじってた。
データを取れた時は嬉しすぎて発狂した。
その際実家に帰省しており、帰省時はずっと遊んでいたやつが、
ずっと家でPCを触り一人で発狂していたので、家族にガチで頭がおかしくなったと思われ実家に帰ってこいと言われた。w
マジ無理と思ってた機能を実装できた時の快感はマジで癖になりそう。
また壁
データさえ取れてしまえば、あとは楽勝だと思っていたが圧倒的に勘違いだった。
動画編集機能パッケージを使って実装用予定だったが、値をただ渡しても、下記のバーが動かなかった。
0から動画編集機能を作れる力量も時間もなく、パッケージの中身のコードをいじくり回すことになる。
この強強エンジニアが作った完成した綺麗なコードの中身を自分なりに読みといて、ここを変えれば良いのでは?ってところを弄り回したのは自分の中でかなり良い経験だったと思う。
ただ使うのではなく、初めて中身を理解した上で使う。というのが少しできた気がする。
イケてるMapを
これだけは、当初から固く決めていた。
「Zenlyのように、POPでアートのようなMapを作る。」
Mapに元々興味はあり、flutterでgoogleMapを使った地図アプリのクローンを作っていたので、時間的にはGoogle Mapを使いたかったが、MapBoxを採用した。
ZenlyがMapBoxを使っているというのは、明確に見つけられなかったが、WoovというサービスがMapBoxを使っており、理想に近かったのでMapBoxに決めた。
Mapに関しては、もっとMapBoxを使いこなせればもっともっとカッコ良くできたと思っている。
密かなこだわり
①
ピッチでは時間がなかったので、省いたが、
画面上部に表示されているカルーセルは、ユーザーの現在位置からPinの位置までの、実際の移動距離が近い順に表示されるように並んでいる。
(この機能のせいで、海外で利用した時に距離が算出できずエラーで、AppStoreの審査めっちゃ時間かかってる。たぶん。)
(計算とかのロジックは理解してない。)
②
Pinの画像はランダムで入れ替わるようにしている
感じた課題
疲れてきたので、Wavy'sMapに関しては、Qiitaとかでちゃんと書きます。w
動画ページに関しては、早く実装したかったので、Youtubeを見ながら脳死で書いていた。
そのせいで、RiverpodとGetXが混在するというカオスなコードになっている。
どうにかこうにか動くものは作れたレベルなので、業務レベルで通用する理解とコードを書けるように頑張る。
根本的にプログラミングに関する理解が薄いので学ぶ
状態管理を理解して自分で考えて使えるようにする
iosとAndroidの差異とかも
GGAセレクション
当たり前だけど、セレクションに通らなかったらそこで終わってしまうので、結構頑張った。
GGAに出ることが全てではないけど、自分は出たかったのでやった。
G's名物の壁打ちは絶対に色々な人に頼むべきだと思った。
でも、色々な人の意見を取り入れるのが大事なのではなくて、色々な人の意見を自分の中で考えて落とし込んで、取り込んでいくのが大事だと思った。
一人でやってるとバグってきて、気づかずブレてることがあるので、こまめに見てもらうのがおすすめ。(企画段階も)
あとスライドの枚数とかは、人とかプロダクトとか、プレゼンのスタイルとかによっても変わると思うのであんまり気にしなくていいかなと今は思う。(知らんけど。)
GGAまで
GGAまでにAppStoreにアプリをリリースしたかったので、リリース作業と並行してプレゼンの練習をしていた。
結果間に合わなかった。悔しい。
リリースに関しては、リリースできたら記事書きます。(大変だった。)
プレゼンはなるべく、人がいる環境で練習するのが良いかも。
自分の部屋とかで、めっちゃ良いプレゼンができても、人がいる環境で緊張してうまくいかなかったら悲しいので、
だったら練習から人がいる環境でやっておくのよろしいかと思った。
この辺りになると、スライドもある程度固まって自分の中で、スライドに対して疑問を持たない部分が出てくるので、
新しい方や、少ししか見てもらってない方に見てもらうと、「なんで今まで、気づかなかったんだ。。。」的な事があるのでおすすめ
そして他の方のいい部分は徹底的に頂戴する。w
GGA当日
つい最近先輩方の手伝いで参加した記憶のGGAに、自分が出るのが不思議な感覚だった。
なぜかお手伝いで参加したGGAより会場小さく感じた。
意外と、緊張より「自分の作った物を観てもらいたい」という気持ちだった。
ちょっと緊張した時は、もっと大人数の前でよく分からんけどかっこいいダンスを踊り狂うTohjiを見て余裕を作ったw
順位が大事な訳ではないけど、認めてもらえたのは嬉しかった
刺激的な半年間だった
人生で一番遊びの誘いを断った半年間だったけど、最高に楽しかった。(今までの友達と遊んでも面白く感じないという弊害は生まれた。)
プログラミングはもちろん、今まで出会えなかった人達や考え方に出会えて、人生が変わったかはまだ分からないけど、自分自身はめちゃめちゃ変わったと思っている。
エンジニアとして、少しでも人生をハッピーに生きられる人が増えるようなサービスに関わっていきたい。
人間はもっとふざけて良いと思う。w
byニート