文系出身の僕はこうやってAndroidアプリ開発のエンジニアになりました!【後編】

こんにちは!!ソルです!

前回は入社前までの出来事についてお話させていただきましたが、
後編では入社後僕がどんなことをやってきたのかをお話していこうと思います!

 

 

  • ゆめみ入社後の最初のミッション: ゲームプレイ(CodinGame)

    スクリーンショット 2015-09-16 11.48.49

 

ゆめみ入社して最初の1ヶ月間取り組んだことは、なんとCodinGameゲームをプレイすることでした!(↑上のいかにもゲームっぽい画像がCodinGameです!これは一部で、他にも色々なゲームが用意されています)

CodinGameはプログラミング・スキルを向上させられるゲームをサービスしているwebサイトで、フランスで開発・運用されています。

CodinGameのすごい所は、プログラミングの勉強をゲーム化したことだけではなく、それが多くのプログラミング言語でプレイできるということです。

C, C++, C#, PHP, RUBY, JAVA, Python, JavaScriptなどほとんどの言語をサポートしており、様々な言語の練習が可能です。

ただ、人間の言語には多様性がなく英語かフランス語しか選択できません。(おかげで英語の勉強になってむしろ良かったのですが)

それ以外にも外部Editorと連動できたり、マルチプレイができたり、CodinGameは本当すごいんです。

 

最初に取り組む仕事?が、CodinGameだった訳は、僕はプログラミング経験が浅かったので、自分の考えをなんとかプログラミング言語に移して書くことはできても、

プログラマー的な考え方や、コードの効率的な書き方(スマートな書き方)は身についていなかったですし、言語自体の知識も足りなかったからです。

それをCodinGameを通じて補い、プログラマーとしての素養を育てたかったそうで、僕にCodinGameをプレイする任務が与えられたのです。

最初は問題が難しすぎて一日中取り組んでも解けなかった問題もありました。

英語も障壁の一つで、今まであまり見たことないプログラミング関連単語もありました(例えばvariable変数, integer整数, initialization初期化,  sequence順序・連続とか)

しかし、この課題は僕にとって本当に最高の教材でした

まず、ゲーム形式で楽しかったです。難しいパズルを解くようなゲームなので、考える楽しさと、難しい問題が解けた時の喜びが大きかったです。

また、問題を解くにはずっとプログラマー的に考える必要があったので、コードを書く上での考え方にも変化がありました。確実にスキルアップにつながりました。

特にプログラミングでのデータの扱い方がよく勉強でき(例えばデータを必要な違う形に変換する問題が多くありました)、全般的なプログラミングのスキルも向上させることができました。

CodinGameでは難易度によってEasy, Medium, Hard, Very Hard の問題がありますが、僕は1ヶ月かけてMediumまでクリアし30問くらいを解けました。

その結果、世界ランキングは177,702人中1,396位(0.78%)に登りました。これは僕みたいに本気でCodinGameをプレイしてるユーザーが少ないからこういう結果になれるのですが(笑)

でも世界で1%以内のランキングに入ることは気持ちいいことですよね!世界1%のプログラマーだぜ〜イェーイ!という気分になれます(なれるか!)

 

  • 次のミッション:Java & Android

僕は入社する前からアプリを作りたいという夢がありました。

なぜなら入社前のウェブサービスを作る課題を通じて、PHPだけでは動きを作ることができず(例えば、物体をクリックしてそれを動かしたりすることはPHPではできません)、PHPでできることには限界があることが分かったからです。

もっと面白いものを作るにはアプリしかないと思いました。

そして主に大手電機メーカーのアプリを開発するプロジェクトチームに配属させていただき、Androidアプリを開発するためのJava言語の勉強を始めることになりました。

せっかくCodingameを通じてPHPにある程度自信を持つようになった状態でしたので、またはじめから新しい言語を学ぶことには少し抵抗と不安がありました。

しかし勉強してみると、PHPの勉強で学んだことの多くがJavaでも役立つものでしたし、Codingameで学んだことや使ったスキルは、Javaにも同様に通用するものでした。

 

Javaの勉強を始めた最初の頃は、文法的な書き方がPHPとそう変わらなかったので(for文, if文などの書き方がほとんど変わらなかったです)、簡単じゃん!と思いました。

しかし、さらに勉強を進めると、Javaには「オブジェクト指向」という概念があり、PHPとは全く考え方が違っていました。

Javaには「オブジェクト指向」という非常に抽象的な概念が入っていますが、それはPHPでは考えることがなかった(考える必要がなかった)ので、理解するのに苦労しました。

また、PHPではデータの型(種類)を宣言する必要もなく、気にする必要がなかったのですが、Javaでは厳密にチェックされています。

なのでPHPより考慮すべきことが増え、PHPの学習よりは時間がかかりました。

 

勉強に使用した教材は、Java入門という学習サイトと、dotinstallの動画レッスン、そして社内の本棚に置いてあったこの本『新人君! RPGの世界でJavaを学ぼう』です。

この本もCodingameと同様にゲーミフィケーションに基づいた本で、既存の学習書とは大きく異なり、すんなり読めて楽しく勉強できちゃう本なんです。

一ヶ月すぎた頃には、Javaの入門書を読み終え、Javaのコードが少し読めるようになりました。

 

その後、より体系的に本格的にJavaと向き合う必要がありましたので、社内の色んな方からおすすめ頂いたこの本を読みました。

この『AndroidエンジニアのためのモダンJava』は、非常に体系的にJavaの基本を詳しく網羅していて、解りやすいです。

本当に良書で、Javaのバイブルだと思っています。

ただタイトルに「androidエンジニアのための」と書いてありますが、実際にはandroidと直接的は関係はない気がします。

この本をほぼ読み終わる頃には(実はまだ少し残っていますが)、Javaのコードを見て文法的に言語的に分からないことはほとんどなくなりました。

 

そしてAndroidの勉強に入りました。

ドットインストールの動画レッスンと、下記の書籍と、実際のandroid開発案件に取り組みながら勉強しました。

また先輩からmixiのAndroidTrainingという資料も教えて頂いたんですが、勉強を始めたばっかりの頃の僕には分からないことがあまりに多かったので、ある程度、androidを触っている人におすすめです。

Androidの学習に関しては、プログラミング言語の学習と違い、体系的に学べる教科書のようなものが少なく、範囲も大変広いですので、実際に作ってみながら、慣れながら必要な知識を勉強していくのが一番良いと思います。

プログラミング言語の学習が、もし英語・フランス語のような外国語そのものの学習だとすれば、Androidなどアプリ開発は、その外国語を用いて論文を書くようなものだと思います。しかし、それはその外国語が話せるならそれほど難しいことではありません。論文を書くには、言語自体の知識に加え、書き方のコツ・スキルが必要です。例えば、書き言葉の使用する、文の構成(序論・本論・結論)を意識する、読み手が理解しやすいような書き方をする等です。

アプリ開発もそれと同じで、アプリ特有の書き方・スキルが存在しますが、それは実際にアプリを作りながらすぐ学習できます。僕の経験でいうと、(個人的な印象ですが)Javaを学習している段階でAndroidに2、3ヶ月くらい触れば、ある程度簡単なアプリは作れるようになります。

 

僕も案件を通じて実際にアプリを作りながらAndroidアプリ開発を勉強しています。(また案件を通じてGitも勉強して使っています)

今まで大手電機メーカーの照明システムを管理するアプリやポータルアプリの制作に携わり、最近はQRコードをスキャンする機能を作っています。

また個人的な勉強のため音楽プレイヤーアプリも作っています。残念ながら実際の案件のアプリはお見せすることができませんが、個人的に作っている音楽プレイヤーアプリのスクリーンショットを載せます↓

Screenshot_2015-09-16-11-54-37

実際には宇宙の背景は流れていて、プレイヤー表示部のグラデーションの背景色もオローラのように変化するeffectが入っています。

単純な音楽プレイヤーの機能以外に、AB再生(一部をリピート再生する機能)や再生速度調節機能などを入れています。きっかけは、趣味のギターでコピーする時にこんなアプリが欲しかったので作り始めましたw。今作ってから2ヶ月位経っています。

 

  • 最後に:次のステップへ

周りのエンジニアのほとんどが理系出身で、学生時代積んできた知識があるので、僕のような文系出身者がそれに近づくためには、当然たくさん勉強が必要です。

しかし、このIT業界ではわずか1年前の技術が古くなったりします。なのでエンジニアは文系・理系出身を問わず、日々勉強が必要なのです。

そういう意味では、文系・理系は関係なく同じような立場にいると思っています。

勉強と言っても、勉強するのは、人類の最先端な技術なので面白みがあります。

たとえ文系出身であっても興味さえあれば、十分エンジニアになれますので、是非チャレンジしてほしいです。

特に、大学時代の僕のように「パソコンは好きなんだだけど、プログラミングは専門すぎるし〜」と思っていてエンジニアの道を諦めている文系の方は是非チャレンジして下さい。

プログラミング自体は勉強すれば 割と2ヶ月以内に学習できるものですから!

 

そして未経験で文系出身の僕が今Androidアプリ開発エンジニアとして仕事できるようになれたのは、たっぷり勉強できる環境を提供してくれたゆめみのお陰です。

入社してから仕事に投入されるのではなく勉強できる時間がたくさん与えられ、「書籍購入補助制度」や「勉強し放題制度」など、勉強への投資を惜しまない社風があったからこそ可能なことでした。

また、先輩方のサポートもたくさん頂けました。

文系でエンジニアを希望する方は、ゆめみのように勉強への支援をたくさんしてくれる会社を選んだ方が良いと思います。

 

僕の今後の計画としては、

僕はまだAndroidをはじめて4ヶ月も経っていないひよっこプログラマーですので、Androidエンジニアとしての知識とスキルを上げること。

そして、基本情報処理技術者試験の資格を取得し、IT技術者として必要な基本知識を得ること、

また、良いコードを書くために必要な勉強をすること。それは、とりあえずデータ構造とアルゴリズム(大規模なシステムでパフォーマンスの効率化を図るため)と、デザインパターン(コーディングのノウハウの集約)分野の勉強を予定しています。

さらに将来、グラフィックにこだわったアプリを作りたいですので、OpenGLも触ってみたいと思っています。

 

以上、ソルでした!



Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 16275217 bytes) in /home/yumeco/www/prod/wp-includes/wp-db.php on line 1171