(2015年久留米高専プロラボ部のアドベントカレンダーの8日目の記事です)
こんにちは。
僕のことを知らないプロラボ部関係者のために簡単に自己紹介をしておきます。
岩本海童です。
2014年3月くらいに久留米高専の制御情報工学科を4年の途中で退学して、現在はカラクルという会社で働いています。
高専時代には、2013年の高専プロコンで「避難Routing」という作品を作ったりしました。(懐かしや)
今までカラクルでは「カラクル」という社内向けSNS(グループウェア)の開発をしていました。(今もしてますが) 具体的には、PC版(Web)のフロントエンドと、Webとモバイル用のバックエンドを作っていました。それぞれ JS と Ruby です。
ところが最近、社内でモバイルアプリの仕事が多くなり、エンジニアが足りなくなってきたので僕も Android の開発をすることになりました。めでたしめでたし。
と筆を置きたいところですが、まだ続きますよ。
ところで、「筆を置く」を現代風に言うと、何でしょうか。
「キーボードを置く」 ← なんか違う
「PCの電源を切る」 ← 電源は滅多に切らないし・・・
「:wq」 ← これだ!
さて、 Android の開発を始めるにあたって、会社の本棚の中で一番易しそうなこちらの本を参考にしてみました。
Android StudioではじめるAndroidアプリ開発の教科書
この本は、まだプログラミング経験が浅い人も対象に書かれているので、 Android 初心者の僕にもかなり分かりやすかったです。
最初は開発環境である Android Studio の導入や Android の簡単な説明があります。
その次に、簡単なサンプルアプリを作り、それを少しずつ改造しながら、レイアウトやアニメーション、アクティビティなどを学んでいきます。
本を一通り読み終わるころには、「Android アプリってこうやって作るんだ〜」というのが何となく分かってきました。
次は、本で得た知識をもとに、さらに広げていきます。
さらに他の本を読んだり、 Android Developers を見たり、 Google で検索したり・・・。
勉強しながら、いろいろ作ってみました。
などなど。
作ったアプリのソースは Github にあげて、会社の Android エンジニアの方に見てもらい、コメントをもらったりしました。
しばらくそんなことを続けていると、今度は開発中のアプリの方を手伝うことになりました。
僕がすることになったのは既存の画面の動作の改善なのですが、
今まで表からしか見ていなかったアプリの裏側を見てワクワクしたり、コード量の多さに圧倒されたりしています。
こうして僕は、 Android エンジニアとしての一歩を踏み出したのでした。 (終)
最後に、 Android 開発を1ヶ月ちょっとやってみての感想をまとめてみます。
今まで僕は Ruby や JavaScript で Web の開発をするのがメインだったので、 Android の開発は、いろいろな面において自分の中で新しいものでした。
大きく3つに分けると、言語、開発環境、プラットフォームです。
Java です。
一応高専の授業でやったので、全く分からないわけではありませんでしたが、知らないことも多かったです。
匿名クラスとか、スレッドとか。
まず、 Ruby や JS を使ってきた人間からすると、手足を縛られてるくらい書きにくいです。
変数に型があるはいいとしても、 Foo foo = new Foo(bar, 12);
とか書くのはちょっと辛かったり、
ダッグダイピング的なことができないので、同じような処理を何度も書く羽目になったり。
あとはやたらとキャストを書く必要があったり。 textView = (TextView) findViewById(R.id.foo);
なんて... (格納する変数の型に勝手にキャストしてよ)
あまりに辛いので、プライベートでは Kotlin などの別の言語を使ってみようかなと思い、いろいろ調べてます。
言語は辛いですが、開発環境が素晴らしいので、そのつらみを和らげてくれます。
これまで Ruby, JS を書くときは Vim で、簡単な補完機能を使う程度だったので、 IDE の便利さにはびっくりしました。
メソッドや変数名の補完が表示されるのはもちろんですが、
import 文を自動で書いてくれたり、キャストを書いてくれたり、なんでもやってくれます。
IDE 万歳!
これは主に、Android のアクティビティやレイアウトの仕組みなどです。
アクティビティは少し新しい概念でしたが、 React のコンポーネントもライフサイクルがあったので、割と分かりました。
フラグメントという曲者は、まだ全然理解していません。(何のためにあるのかもよく分かってない)
レイアウトの仕組みは、 HTML+CSS の世界とは少し違っておもしろかったです。
RelativeLayout で部品同士を相対的に配置できるのはちょっと嬉しいです。(これWebにも欲しい)
あと、アプリを古い OS に対応させるのはかなり辛いです。(Android 5 未満は滅びればいいのに。)
必要に迫られて始めた Android 開発ですが、やってみるとかなり面白かったです。
新しいことをするのはいいものですね。
プロラボのみなさん、 Android 楽しいのでまだやったことがない人は是非やってみてください!
長くなりましたが以上、Android 開発を始めた話でした。
お読みいただきありがとうございました。
ちなみに僕の働いているカラクルでは、 iOS, Android, Ruby のエンジニアを募集しています。
http://colorcle.com/company/#offer ← 採用情報
興味のある方は、ぜひオフィスに遊びにいらしてください。天神から歩いて10分くらいです。