Help us understand the problem. What is going on with this article?

エンジニアとして働くために独学してきてよかったこと

More than 3 years have passed since last update.

この記事は 株式会社アイスタイルアドベントカレンダー の14日目の記事です。

主にiOSアプリ開発を担当しています @mishimay がお送りします。
この記事では、就職してから今までの約4年間に業務時間以外で学んできてよかったなと思うことを、アプリ開発者の視点で紹介しようと思います。
ちなみに私はデザイン系の工学部出身で、趣味でiPhoneアプリの開発はしてはいましたがそれ以外のITとかエンジニアリングの知識はこの業界に入るまでほとんどなかったです。

内容はIT業界で働き始めた人、非エンジニアからエンジニアへ転職された方などが主な対象です。

英語

これは異論を唱える人はいないと思います。
プログラミング言語は英語ですし、AppleやGoogleが出すドキュメントは英語です。
WWDCや Google I/O は英語で行われます。
技術的なことをググる場合も、英語がわかれば体感的に10倍くらい情報に質の違いを感じます。

特にアプリ開発の場合は流行り廃りが激しいので、日本語訳を待っていると一足遅れることになってしまいます。
僕も最初は英語を読むのは苦痛でしたが、やり続けているとだんだん慣れていくものです。
苦手意識を持っている方も是非挑戦してみてはいかがでしょうか。
世界が開けると思います。

以下、英語学習に参考になったWebページを紹介します。
英語上達完全マップ

IPAの試験

IT全般の知識を体系的、網羅的に学ぶにはどうすればいいか?というのを前の会社で入社当時の先輩に聞いたところ、返ってきた答えが「基本情報技術者試験を受けてみては」というものでした。

IPAの試験はいくつも種類がありますが、エンジニアとしての登竜門的な存在が基本情報技術者試験です。
ITに関する知識を広く浅く学べるので、ITってどういう範囲を指すのか、どういう知識が常識として求められているのか、ということがわかると思います。
参考書がいろいろ出ていて学びやすいのも魅力です。

基本情報技術者試験に合格すればもう1レベル難しい応用情報技術者試験、さらに難しい専門的な試験へと挑戦できます。
自分の実力、興味にあった試験の勉強ができるのもいいところです。

IPA 独立行政法人 情報処理推進機構:情報処理技術者試験

セキュリティの知識

何の開発をするにもセキュリティの知識は必要だと思いますが、セキュリティ全般を学ぶ機会はなかなかないです。

しかし一度学んでおくと、現在どんなセキュリティ攻撃が存在するのか? どこまで対策すれば妥当と言えるのか? を考える材料ができると思います。

アプリの開発の場合はそこまで網羅的に学ぶ必要はないかもしれないですが、暗号化の仕組みなどは汎用的な知識として知っておいて損はないはずです。

これもIPAの試験で勉強しました。
情報セキュリティスペシャリスト試験

データベースの知識

主にリレーショナルデータベースについての知識です。
データベースは業務でそれなりに関わるとある程度の知識が身につくと思いますが、触れる機会がないとずっと知らないままになってしまいます。

iOS開発だと Core Data やSQLiteを使う機会がありますが、データベースの知識がないとインデックスやトランザクションの考えが理解できず、処理速度の最適化ができなかったりや思わぬバグを引き起こしてしまったりするかもしれません。

これもIPAの試験にあります。
データベーススペシャリスト試験

アジャイル開発の知識

「アジャイル開発」はいくつもある開発手法のうちの1つです。
歴史的に用いられてきた「ウォーターフォール型開発」と対比されることが多く、古い開発手法に対する新しい開発手法、という捉え方をされている場合が多いと思います。

将来アジャイル開発を行うことにならなくても、今どんな開発手法が盛り上げっているのか知っておくと視野が広がると思います。

こちらはとても読みやすく有名な書籍です。
入門としては最適です。
アジャイルサムライ――達人開発者への道

アジャイル開発手法にもいろいろな種類があります。
こちらはその中でも有名な「スクラム」のガイドです。
スクラムガイド - Scrum Guides

正規表現

正規表現は文字を検索するときや置換するときに知っていると非常に便利なものですが、わざわざ学ぶ機会はあまりないかもしれません。

例えば、「りんご」と「リンゴ」を両方いっぺんに「林檎」に置換したり、()の中に何の文字列が入っていても別の文字列に置き換えたり、ということができます。
どういったことができるのか一通り知っておくと、煩雑に思える作業であっても一瞬で終わらせる方法を思いつけるようになるかもしれません。

「正規表現」で探せばたくさん情報が見つかるので検索してみてください。

デザイン

特にアプリ開発の場合はエンジニアであっても使いやすさや分かりやすさを意識して開発することになるので、いいデザインとは何か?を理解していることがいいプロダクトを生み出すことにつながります。

個人的におもしろかった書籍を挙げてみます。

製品デザインの古典とも言える本で有名です。
デザインについての普遍的な考え方を知ることができます。
誰のためのデザイン?

さまざまな研究の紹介で、読み物としておもしろいです。
インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針

アプリは1つ1つのインタラクションの集合だという考え方は、アプリの本質ではないかと感じました。
マイクロインタラクション ―UI/UXデザインの神が宿る細部

おわりに

仕事をしていると業務で関わることは覚えていくと思うのですが、機会がないとずっと知らないままなことも結構あるのではないでしょうか。
ここでは仕事で直接的に学ぶ機会は少ないけれど、1度しっかり学んでおけばいろいろな場面で役立つような知識を書いてみました。
参考にしていただけたら光栄です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away