俺はやりたいことをやる。好きなお仕事をするために勉強したこと。

今回はしんどくて泥臭い話をします。

体力的にしんどいという話です。精神論は嫌いなんですが、こうするしかなかった話です。

フルタイムで仕事をしているとやりたいことって仕事が始まる前と終わった後からじゃないとできません。

例えば次のサラリーマンのスケジュールで考えると

6時:起床
--- この時 ---
8時:出社、午前業務
12時:お昼
13時:午後業務
17時:退社
18時:帰宅
--- この時 ---
23時:就寝

5時間ぐらい確保できそうですね。

こう見ると思ったほど時間ってないんですよね。

働きだしてから時間の大切さを痛感した人は沢山いると思います。

「学生時代もっと勉強しとけばよかった」って後悔しますよね。僕もそうでした。

じゃあ次のスケジュールだとどうでしょう。

6時:起床
--- この時 ---
8時:出社、午前業務
12時:お昼
--- この時 ---
13時:午後業務
17時:退社
18時:帰宅
--- この時 ---
27時:就寝

10時間ぐらいは確保できそうですね。

毎日がんばると1週間で50時間以上は勉強できます。

今回はそんな生活を転職するためにやっていたお話です。


勉強しようと至った理由

2017年5月

本格的に会社を辞めてやろうと決意しました。

前回の記事に書いていた通り、仕事が面白くなくなったからです。

その時に持っていたスキルは

・技術
C++実装、システム・機能設計(UML)、Linuxやシェルの知識

・ディレクション
見積もり、タスク管理、利害関係者との折衝、ツール(Skype、JIRA、Redmine、Powerforceなど)

です。みなさんの馴染みのないツールも使っていました。

じゃあこのスキルでどこに転職できるのかリクルートやWantedlyなどを使って調べました。

調べたところ、同業のメーカーしかありません。

組み込み製品の開発はお腹いっぱいだったのと同じように製造メーカーのエンジニアになりたいとも思っていなかったので同業他社への転職は考えていませんでした。

スマフォを触りながら考えていた時。

そーいえばアプリってどうやって作るんだろう。

そう思い、ググって調べてみました。

「iOS アプリ開発」

たしかこんなググり方だったと思います。調べるとアプリ開発するための記事が大量にヒットしました。

ふむふむ、Swiftという言語を使うんだな。

そしてQiitaやteratail、Stack Overflowなどのサービスも見つけました。

前者は開発者が知見を共有するサービスで後者は技術的に困っている事を投稿して知見のある方から回答得れるサービスでした。

ここで衝撃だったのがQiitaに投稿されている内容の全てがすごい楽しそうに執筆されていることでした。

執筆楽しい!って明示的に書かれているとかではなく、記事を読んでいると投稿者は得た知見をアウトプットするのが楽しくて面白いから記事を書いていると伝わりました。

そしてアプリ界隈の情報を漁っているとブログやTwitterなどを見てやはりみなさんとてつもなく楽しく開発されている事を知りました。

めちゃくちゃ衝撃的でした。

何故なら自分の勤めていた会社で僕含め楽しく開発している人なんて見た事なかったからです。

一刻も早く、この業界へ転職したいと思いSwiftの勉強を始めました。

初めてのアプリ開発

C++をやっていたからといってすんなりiOSアプリが開発できるほど甘くはありませんでした。

iOSアプリを開発するためにはSwiftiOSフレームワーク(画面などを提供するUIKitなど)の知識が必要でした。

またMacが必要でXcodeで開発する必要がありました。

ちょうどブログ執筆用にMacbook airを持っていたのでそれで勉強を進めました(でもすぐにProを買いました。スペック的にairはキツかったからです)。

初めはSwiftを体系的に勉強したかったのと簡単なサンプルアプリを作りたかったので本を購入しました。

たしかこれだったかな(アフィリエイトではないの気になさらず笑)
www.amazon.co.jp/dp/4797398558

この本すごい良かった記憶があります。

勉強始めて1ヶ月で読破(写経完了)しました。

しかし経験上、本1冊読んでも業務で通用するとは思わなかったので、自分のポートフォリオとなるアプリを作ろうと決心しました。

作るアプリも最初は自分が関心のあるものにしようと思い、元々陸上部の短距離をやっていたので短距離選手用のストップウォッチアプリを作りました。作ったアプリがこちらです。
https://apps.apple.com/jp/app/id1254746611

スマフォを持って走りながら計測できてタイムを保存できて更にスタートの合図まで知らせてくれるストップウォッチというコンセプトで作りました。

でもそう簡単に作れないんですよねぇ笑

初めてのiOSアプリ開発で苦労した点です。

・Storyboardの使い方と画面遷移
・Autolayoutの仕組み(これが一番辛かった)
・TableViewの仕組み
・iPhoneとiPadの対応
・CocoaPod(ライブラリ管理ツール)の使い方
・Realm(ローカルデータベース)の使い方
・AppleDeveloper登録、AppStoreへの申請

初めての開発はGoogle先生に素直に聞くのが効率的だと思っていたので逆引き検索(ここで語ってます)でやりたい事のサンプルコードを見つけて実装していました。

でも掲載されているサンプルコードが旧バージョンのものだったりでそのまま書いても動きません。ビルドエラーの嵐です(あるある)。

さらに、Autolayoutが全く理解できていなかったのでiPhoneのサイズを変えると面白いほど崩れる崩れる。

Autolayoutの使い方を調べていたんですが欲しい情報が得れなかったので必死にStoryboardを触りに触りまくってました(これが一番イライラした笑)。

しかも当時はググり方がすこぶる下手くそだったので解決するまでかなり苦労しました。

実装 → ビルドエラー → ググる → ググる→ ググる... → あった!修正 → ビルドエラー → なんでやねん! → キレて寝る → 朝起きて再開 → 解決、やった! → アプリ起動 → 画面崩れまくり → ......帰ってからやろ.....

こんな流れが毎日続きました。

教えてくれる人が周りにいなかったので自力で情報を取ってきてはトライアンドエラーの繰り返しです。

プログラミングスクールに行こうかなと考えた事がありました。スクールへ電話で技術的な事学べますかと問い合わせてみたんですが、求めている回答が得られなかったので行く意味はないと判断してやめました。

めちゃくちゃ大変なんですけどこの泥臭いやり方をしたおかげで自走力がかなりつきました。

この時、勉強にかけた時間は1日10時間ぐらいだったと思います。

時間の使い方としては

・仕事終わってから寝るまではがっつり実装
・朝とお昼は実装に必要なQiitaなどの技術記事を調べてリンクをメモ

恐らく会社員という時間に限られた生活をしていたからこんなタイトな時間の使い方ができたんだろうなと思います。

ただ簡単に開発が進むわけではないので毎日寝るのが夜中の3時以降でした。

体が興奮状態になっていたせいか体は疲れているんですが疲れは感じなかったです。金曜日の夜ももちろんひたすらアプリ開発して土日は1日中やっていました(人によっては無理はしないほうが良いです)。

友達と飲みに行ってもスマフォで記事を検索して技術記事のリンクをメモしていました。

そして開発を初めて1ヶ月で初めてアプリをリリースしました(2017年7月9日)。

リリース当初は使ってくれる人は全然いなかったんですが、その年の世界陸上以降から今でも毎日20件ほどダウンロードされるアプリになりました。

ダウンロードされレビューも増えめちゃくちゃ嬉しかったです。

レビューを見ると作って良かったと思えるようになりこの時初めて開発の楽しさ面白さを実感しました。

「ユーザーとの距離が近い開発は面白い。アプリ開発を仕事にしよう。」

アプリ開発ができる企業への転職が適していることを再確認できました。


父親をクライアントにして開発

初のアプリをリリースできたんで親に自慢しました。

すると父親から

「四国88ヶ所のお遍路をバーチャルで歩くアプリ作って欲しい」

と言われました。

その時「親をクライアントと見て、親から作って欲しいアプリ仕様をヒアリングして要件定義して設計して実装する」ってことをしてみようと思いました。

親を使った擬似的な開発プロセスを経験できるので、この経験は転職に有利だと思い再びアプリを作り始めました。

作ったアプリが「お遍路ウォーキング」というアプリです。
https://apps.apple.com/jp/app/id1305120342

自身2回目のアプリ開発だったのもあり前回よりは開発スピードは上がりました。

しかし、クライアント(父親)との仕様決めや初めて触る技術もあったので時間はかなりかかりました。

このアプリで苦労した点。

・MapViewの実装
・CoreMotionとHealthKitの実装
・3ヶ国語対応(日本語、英語、中国語)
・キャラクターデザイン(姉との折衝)
・クライアント(父親)の五月雨要求(一番イライラした)
・リリース申請してから公開まで1ヶ月かかった

前回のアプリと同様、夜中の3時までひたすら開発していました。

途中、クライアント(父親)から「フレンド登録して他のユーザーと一緒に散歩できる機能を入れて欲しい」などの当時の僕からすると高難易度の要求をしてきたりと大変でした(結局ボツになりましたが)。
余談ですが、その時に初めてFirebaseを知りました。そしてFirebaseのポジションを高専のパイセンがとっていたことをこの記事で知りましたw

開発完了してリリース申請して謎に1ヶ月以上待たされましたが無事にリリースできました。

見せれるポートフォリオが二つできあがったのでそれをもって転職活動を始めました。

Wantedlyを使い関西圏内でアプリ開発ができるベンチャー企業を探しました。結果、関西本社で地元にサテライトオフィスがあるベンチャー企業へ転職できました。

ちなみに転職活動中も勉強していました。

アプリ作るならAndroidも作れた方が良いっということで同じようにAndroidの本を購入して体系的に学びました。

そしてiOSアプリで作ったストップウォッチアプリのAndroid版を作りました。
https://play.google.com/store/apps/details?id=com.gmail.hukusuke1007.sprintwatch&hl=ja

こちらはiOSアプリ開発の経験が活きてそこまで苦労することはありませんでしたが、すでに作ったアプリをもう一個作るという感覚だったのでモチベーション維持が大変でした笑

モチベーション維持の秘訣は別途記事にしたいと思います。



いかがでしたでしょうか。

頼る人がいなかったのでかなり泥臭く勉強していたと思います。

この経験もありフリーランスとなった今も勉強は続けています(当時のような時間の使い方ではありませんが笑)。

おかげさまでiOSとAndroidの両OSでアプリ開発のお仕事をいただいております。

好きなお仕事ができるようになりました。楽しく書かれたあのQiitaの投稿者の気持ちが分かるようになりました。

また、Appleの厳しすぎるレビューのおかげでWebの勉強もしました。おかげさまでお仕事をいただいております。こちらはフリーランスになる前に勉強して習得しました。Vue.jsとTypeScriptの習得はかなり良かったのでこちらの話はまた記事にしたいと思います(紆余曲折あったお話)。

これからも好きなお仕事するために勉強していきます。

ではまた次回。

この記事が参加している募集

私の仕事

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
57
Never Inc. CEO & Engineer. https://neverjp.com/ もくもくエンジニア@YouTube https://www.youtube.com/channel/UCNGOyGpyS42d8jlFoItCBVw