SIer営業からiOSエンジニアになったお話し

# はじめに

[からくり Advent Calendar 2019](https://qiita.com/advent-calendar/2019/caraquri)の16日目を担当します。
宜しくお願いいたします。


# 本記事を書こうと思った経緯

**私は新卒で入社したSIerで技術営業を4年していました。**
ですが、今ではiOSエンジニアをしています。

私は元々理系4大卒で、最初にプログラミングを勉強したのが情報処理の講義で扱ったC言語でした。
その際、C言語に挫折し必修の単位を落とし掛けそうになりました。

結果的にプログラミングを毛嫌いするようになってしまい、この先プログラミングをすることはないだろうと当時思っていたほどです。

それが今では、コードを書くエンジニアになっています！

その背景や経緯を知ってもらい、**これからエンジニアを目指す方の参考に少しでもなればと思い**記事を書くことにしました。

# 経歴

- 理系4大卒
- 2015年に大手SIerに入社
- 技術営業として配属
- 2018年7月に退職
- 2018年8月よりiOSエンジニアとして[からくり株式会社](https://caraquri.com/)に転職


# iOSアプリを開発したいと思ったきっかけ

前職で携わっていた案件で、お客さんのiOSアプリをiPadに導入し全国に展開するというサービスを担当していました。
その際に、**自分でもアプリを開発してみたい！**という思いが芽生えたことが、iOSアプリを開発したいと思ったきっかけです。
他にも友人からの助言があったりと、この先自分が本当にやりたいことはなんだということを考え抜いた末にプログラミングをやってみたいと思うようになりました。
この時点ではまだ転職してiOSエンジニアになるとは考えていませんでした。プログラミングもまずは趣味程度で始めることになります。

# 開発環境を整える

自宅にWindowsのデスクトップがあったのですが、iOSアプリを開発したいと最初から考えていたのでMacBook Proを購入しました。iOSのアプリを開発するには基本的にはMacの標準アプリケーションであるXcodeで開発します。

ここでの後悔は一番低スペックのMacBook Pro（HDD:128GB、メモリ:8GB、プロセッサ:Core i5）を購入したことです。業務に入って早々にキャパ不足で買い換えることになりました。
容量が足りずXcodeがWarningを吐き出し、ビルドができず、いつも容量を気にしなくてはならなかったためストレスとなりました、、
様々なプロジェクトをビルドしたり、IDEを複数入れたりすると、想像以上にストレージ容量を食うので注意が必要です。

現在は**MacBook Pro（HDD:512GB、メモリ:16GB、プロセッサ:Core i7）で十分快適に開発ができています。**
これからiOSエンジニアを目指すのであれば上記スペック以上のマシーンを用意すると良いのではないでしょうか。

# プログラミングを好きになる

最初にやったことは、参考書を購入しひたすらコードを写経、参考書通りにコーディングすることから始めました。
シミュレーターや実機のiPhoneで、自身が書いたコードの通りにアプリが動く様を見て非常にワクワクした記憶があります。

- [たった2日でマスターできるiPhoneアプリ開発集中講座](https://www.amazon.co.jp/dp/B07K8RH5J2/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
    - まずはサンプルアプリをとにかく動かしたいのであればこちらがオススメです。私は2日でマスターできませんでした。笑
- [絶対に挫折しない iPhoneアプリ開発「超」入門](https://www.amazon.co.jp/%E7%B5%B6%E5%AF%BE%E3%81%AB%E6%8C%AB%E6%8A%98%E3%81%97%E3%81%AA%E3%81%84-iPhone%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%80%8C%E8%B6%85%E3%80%8D%E5%85%A5%E9%96%80-%E7%AC%AC7%E7%89%88-%E3%80%90Xcode-%E5%AE%8C%E5%85%A8%E5%AF%BE%E5%BF%9C-ebook/dp/B07KQTQ5VJ)
    - タイトル通り私でも挫折しませんでした。

全くの初心者であれば最初にProgateをやることが推奨されたりしますが、MacであればXcode、WindowsであればAndroid Studioでモバイルアプリ開発を直ぐに始めることもできます。

**普段使っている自身の端末でアプリが動くのを目の当たりにするとモチベーションの持続に繋がります。**

まずはとにかく手を動かし、実際にコーディングしデバッグ、ビルドを一通りやってみることをお勧めします。（あくまでも私の場合です）（今ではさくっと他の言語を勉強したい時に[Progate](https://prog-8.com/)のお世話になっています。感謝です。）

この頃から、iOSエンジニアになりたいと強く思うようになりキャリアチェンジを意識し始めます。
  

# エンジニアとして働くことの心構えを学ぶ

初めて転職を意識したので、働くことの意義や自身の価値観を改めて見つめ直すため、様々なビジネス本を読んだり、メルマガを購読したり、様々な手段でインプットを増やすことを意識しました。
読むべきと多く紹介されているものから、個人的に面白そうだなと思ったものを中心にインプットしていました。（下記に一部紹介します）

- [7つの習慣](https://www.amazon.co.jp/dp/B00KFB5DJC/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
    - ビジネス本の王道ですね。個人の成長や人間関係の向上において、インサイドアウト（自分自身の内面から始めようとい考え方）で内面を磨くことの重要性を学びました。
- [嫌われる勇気](https://www.amazon.co.jp/dp/B00H7RACY8/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
    - この本で特に印象に残っているのが、` 「変わらない自分への言い訳」
それは「やればできる」という可能性を残しておきたいから`という内容。一歩踏み出す勇気が欲しい時に読むと何かヒントが得られるかもしれません、、！
- [週刊 Life is beautiful](https://www.mag2.com/m/0001323030.html)
    - 中島聡さんのメルマガです。中島さんは過去にマイクロソフトで働いていた経歴をお持ちで、現在はiOSエンジニアとしてご活躍されています。エンジニア目線でのトレンドな情報を発信されているのでメルマガを購読してインプットしています。最近はFirebaseを用いた開発についても言及されていたりします。
- [エンジニアとしての生き方](https://www.amazon.co.jp/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AE%E7%94%9F%E3%81%8D%E6%96%B9-IT%E6%8A%80%E8%A1%93%E8%80%85%E3%81%9F%E3%81%A1%E3%82%88%E3%80%81%E4%B8%96%E7%95%8C%E3%81%B8%E5%87%BA%E3%82%88%E3%81%86%EF%BC%81-%E3%82%A4%E3%83%B3%E3%83%97%E3%83%AC%E3%82%B9%E9%81%B8%E6%9B%B8-%E4%B8%AD%E5%B3%B6-%E8%81%A1/dp/4844329944)
    - 中島聡さんのメルマガを購読していたこともあり、読んでみたのですがとても参考になりました。エンジニアとして働くことの心構えを学べる上に、エンジニアとしての会社との向き合い方や使えるエンジニアになる必要性を説いています。仕事を楽しむ重要性であったりと、コーディング以外の部分で勉強させて貰いました。
- [Voisy](https://voicy.jp/)
    - アプリ版が便利です。隙間時間で様々な分野の情報が得られるので、通勤時間とかによく聴いてました。

私は元々大手志向で、特に大きな目標もなく、大企業で働いて安定したお給料を貰えたら十分と考えていました。
しかし、様々なインプットから**このまま会社にしがみついていては、限定的なスキルしか身に付かない、自身の市場価値は上がるのか、という観点から流れの早いIT業界においてこのままでは非常にリスクを抱えることになる**と考えるようになりました。

様々な価値観を知ることで考え方が徐々に変化していきました。

たった一度の人生。人生のオーナーシップを握り、やりたい/やってみたいことにチャレンジした方が絶対に充実するし楽しめると今は考えています。


# 上司に転職の意思を伝える

私は当時のマネージャーを個人的に飲みに誘い、そこで意思を伝えるという卑怯な手を使いました笑
でも腹を割って話ができ、結果的にとても良かったと思っています。目的のある飲みニケーションはとても有効ですね。
最終的にキャリアチェンジを応援してくれる形となり、特に揉めることなく退職の手続きを進めてくれた当時のマネージャーには本当に感謝しています。


# 転職活動
私は[Green](https://www.green-japan.com/)を使って会社を探しました。
完全未経験者を雇ってくれる会社はほとんど無いだろうと考え、面接で落ちたらスクールに通おうと思っていました。（実際にいくつかプログラミングスクールに出向き説明を聞きました）

1社目に面談を受けたのが、今勤めている[からくり株式会社](https://caraquri.com/)でした。
GWに面談をお願いしたところ、最初から代表との1on1でした。

数回面談と面接を経て、「ここで働けなかったらプログラミングスクールにいって自分で勉強します」と伝えると、代表より「一緒にやろう」と言ってくれました。
当時業務未経験でありながらも、私を採用してくれたことに感謝しています。


# 会社の研修時に参考にしたもの

入社後の研修課題で、1つの課題アプリ(フロント：iOS/Android、バック：Ruby on Rails)を制作することになります。
UIについて今まで参考書で勉強していたStoryboardではなく、コードで書くと言われた時は驚きました。笑
**チーム開発となるとStoryBoardではなく、コードでUIを実装することが多くあります。**
なので、研修ではどちらも使って開発をすることになります。

研修時に参考にしたのが下記です。

- [Lets Build That App](https://www.youtube.com/watch?v=NJxb7EKXF3U&list=PL0dzCUj1L5JHDWIO3x4wePhD8G4d1Fa6N)
    - YouTube動画です。UIをコードで描画してたり、基本的なSwift文法や作法について動画で直感的に学ぶことができます。オススメです！
- [スッキリわかるJava入門](https://www.amazon.co.jp/dp/B00MIM1KFC/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
    - Javaの本ですが、オブジェクト指向を勉強するのに最適でした。
- [Swift実践入門](https://www.amazon.co.jp/dp/B07JWCXW4R/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
    - より詳細なSwiftの文法を勉強したい時に読むことをお勧めします。Swiftの書籍で一番繰り返し読んでいるのがこちらです。
- [サルでもわかるGit入門](https://backlog.com/ja/git-tutorial/)
    - Gitについて全く理解していない状態でした。先輩にオススメされたのでこちらのサイトを見てまずは勉強しました。
- [Webを支える技術](https://www.amazon.co.jp/Web%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93-HTTP%E3%80%81URI%E3%80%81HTML%E3%80%81%E3%81%9D%E3%81%97%E3%81%A6REST-WEB-PRESS-plus/dp/4774142042)
    - APIて何それ？という状態だったので、こちらを読んで勉強しました。APIKitを用いたAPI実装をする際に参考にしました。REST APIについて体系的に学ぶには程良い情報量でした。
- [ノンデザイナーズ・デザインブック](https://www.amazon.co.jp/%E3%83%8E%E3%83%B3%E3%83%87%E3%82%B6%E3%82%A4%E3%83%8A%E3%83%BC%E3%82%BA%E3%83%BB%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%96%E3%83%83%E3%82%AF-%EF%BC%BB%E7%AC%AC4%E7%89%88%EF%BC%BD-Robin-Williams-ebook/dp/B01LW1BC2L)
    - デザイナーでなくとも最低限のデザインが描けるような原則を学ぶことができます。プログラミング以外でもパワポの資料を作成する場合などでも、ここでの知識が活きています。

# どうしてもエラーが解決できない時の対処

まずはエラーと向き合うことが必要です。どんなログが吐き出されているか、そしてログをググり、解決の糸口を探すことになります。

ググり力は仕事をしていても重要です。根気と粘り強さが必要で、本当に分からない時は潔くヘルプを求める姿勢が重要になります。（最初はこのバランスがもの凄く難しい）

私はとにかく必死だったので、業務時間外に少し暇そうにしている先輩を捕まえて、根掘り葉掘り教えて貰うことが多かったです。

その際意識していたのが**つい教えたくなる後輩になる**ことです。
教えて貰ったことは素直に実践する。そうでないと教える側は「こいつに何言ってもダメだ」と思われて、今後積極的に話しを聴いてくれなくなってしまうかもしれません。
なので、教えて貰ったことは直ぐに実践スタイルで教え甲斐のある後輩になることを意識していました。（プログラミング以外でも）

# 一番成長を実感した学習方法

一番はやはり会社に入ってできるエンジニアの人に直接コードを見てもらい、レビューを受けることや綺麗なコードを見て学習することで、成長スピードが加速したと思います。

エンジニア集団の中にいると自然とトレンドな情報が耳に入ってきます。また、困った時には助けあってバグを解消したりもします。
初学者においてはエンジニアが周りにいる環境がとても大切であると思います。

また、会社の取り組みでエンジニアメンターシップ制度という有難い制度があり、若手のエンジニアを早く一人前にすることを目的としています。

私もメンティーとなり、大先輩に直接コードを見て貰ったり、ペアプロ的な感じで自身が書いたコードを先輩がリファクタリングしてくれたりしました。そこで勉強させてもらったことで一番成長を実感しました。


# 終わりに

私が勤めている[からくり株式会社](https://caraquri.com/)では現在エンジニアを募集しています！

研修ではiOS/Android/Ruby on Rails を使って簡単なアプリを作ってもらいますので、体系的な知識を身に付けることができます。
もっとがっつりコードを書きたいと考えているエンジニアの方を募集しています。
これからエンジニアを目指す方で主体的に学習できる方、一緒に組織を作っていく意思がある方であれば大歓迎です！

少しでも興味を持って頂けたのであれば、是非一度[会社に遊びに来てください〜！](https://www.wantedly.com/companies/caraquri)お待ちしています。

拙い文章ですが、最後までお読み頂きありがとうございました。