2017.8.10
Androidアプリ開発日誌#2【Kotlin Android Extensions】
今日は本来、始発の電車に乗って5時過ぎから戸塚で作業をしようと思ったのですが、一本乗り遅れた影響で5時半過ぎスタートでございます。っていうか東海道本線って始発逃したらその次が30分後とかなんですね。昼の感覚でいたらほんと接続最悪すぎますね・・・・・・。
まぁクープランのピアノアレンジが店内に流れてるから良しとしよう。(?)
というか割と本気で気づいたのですが、
夜作業するぐらいだったら朝やった方がよくねって思いつつあるんですよねー。まぁ近場に24時間営業の喫茶店なりファーストフード店とかないので、なんらかのついでにって感じでしかこなせないのが痛いところですが・・・・・・。
品川のデニーズは悪目立ちしすぎて行きづらいしな
もちろん朝はねっむいですし作業能率激落ちです。夜も大してかわんないですけどね。
この辺の問題は会社辞めたら全部解決するんですけどね
いい感じのパラサイト先をまずは探さねばって感じですね。少なくとも会社辞めるまでは。会社辞めてからは気持ち良い時間に気持ちよく作業できると思うのですが・・・・・・。
しっかしほんと会社勤めてると、あらゆることが非効率的に見えて仕方ありませんね。はやく独立したいなぁ・・・・・・。
さてさて、こうアプリを作りながら今後どうするかが決まりつつあるわけですが。ソフトはほんとは外注したいけど、その後のメンテとそれに伴う費用とか考えると、最初のうちはやっぱ自分で書かないとなって感じはします。
インフラのこととか考えても仕方ないし、そもそも多分最初からそんな人気のコンテンツにはならない眺望なので、とりあえず動くものが作れればいいやって感じはします。
どっちにしろプロトタイプは作んなきゃですしね。地図さえ表示できれば、あとはどうとでもなりますしね。その地図を表示させるのがなかなかうまく行ってないんですけどね・・・・・・。
さて、今日の話は
その前段階として、
Kotlin Android Extensionsというライブラリっていうんですかね?まぁこいつの使い勝手がなかなか良さそうなので導入しましょうって話を覚え書きとして書いてみようと思います。
アプリは基本的にボタンだったりフォームだったり、そのへんのパーツと連動させて画面遷移なり処理なりってしていくんですが、そのイベントハンドラの受け取り方ってこんな感じなんですよね。
Buttonクラスがなかなかインポートできないっていうか
インポートに失敗してますね。
おかしいなぁー、前に作ったプロジェクトだとできたんだけど、なにが違うんだろ。わっかんね。
まぁ話したいのはそこじゃなくて
findViewByIdの部分ですね。
こいつが何やってもエラー吐きやがる。
僕が悪いのかも知れないが理由が全くわからんのでどーしようもない。身近に書けるプログラマもいないしな。
それで解決方法をこの前探してたんですが、どーやらこのExtensionsを入れれば書きやすそうな感じはしたので、入れてみようかと思ってるんですよね。というか、実際入れて使ってみて非常に気持ちよかったので使いましょう的な。
基本的には
Kotlin Android Extensionsを試してみたを参照って感じですね。
1.Pluginを追加してbuild.gradleにdependencyを追加
apply plugin: 'kotlin-android-extensions'
|
build,gradleの最初の方に上のを突っ込めばいいだけですね。
2.XMLをインポート
import kotlinx.android.synthetic.main.activity_main.*
|
これをインポートすれば使えるようになります。
たぶん、activity_mainのところはファイル名と連動して変わるんじゃないかなぁとは思ってますが、少なくともMainActivity.ktではこれで動きますね。
雰囲気としてはこんな感じに使います。めんどくさいキャストや長々とした記述が減り、すっきりしますね。
なによりエラーが出ない。(重要)
ただ、2.に関しては設定で自動インポートしてくれるみたいですね。
今気づいた。
ここの設定をこうします。具体的には
on the flyとか言ってるとこ全般にチェックを入れますと、自動的にインポートしてくれます。
import文を消してもゾンビのように蘇るので、大変気持ち良いです。インポート文なんて覚えてる人誰もいないでしょうし、こーいうのは全部IDEにやらせてしまいましょう。そのほうがみんな幸せです。
たぶん、この設定を入れたらfindViewByIdまわりのエラーも勝手に解決してくれそーな気もするんですが、Extensionsのが優秀なので当然こっち採用ですね。
とりあえず新しいプロジェクトを作ったらプラグインを入れる!ちなみにこれ標準で入ってるっぽいので辺にいろいろインストールとかしなくてもいいのが素敵ですね。
ちなみに、地図を表示させようとしたらエミュレータのGooglePlayをアップデートしろって言われてクラッシュするんですよね・・・・・・
なんか
マニフェストファイルに色々書いたりしてたら動いた。これは大きな一歩だぞ・・・・・・!!!
あとはいい感じに弄くれば思い通りのサービスが作れるかもだな!?!?
次に思い悩むことがあるとしたらデータベースまわりなんですけど、最初のうちは全部MySQLでいいかなーと・・・・・・。
ほんとは集計用にmongoDB使ってみたいんですけど、新たにVPS借りないとなのでコストがねえ・・・・・・。費用対効果があるのならやるけど、しばらくはMySQLでもいいかなぁ。場当たり的なスキーマ設計にしても、nullを許容すればいけそーな感じはしますしね。mongoDB使ってみたいんだけどなぁ、、、
とりあえず明日からの開発がたのしみですね!!!とはいえ明日はまともに開発できなさそーなんですが、、、笑