1. yykamei's Podcast
  2. #9 Android開発
2024-01-10 12:42

#9 Android開発

Android開発をこの1,2ヶ月試してみたのでその体験談を語っています。

00:01
はい、kameiです。 yykamei's Podcastをやっていきます。
今回は、Android開発というテーマでやっていこうと思います。
このPodcast、実はテックのカテゴリーでやり始めたので、
にもかかわらず、あんまりテックっぽいことをやっていないので、
ちょっとそういう話をしてみようかなって思って始めてみました。
Android開発、私はですね、
Ruby on Railsを使った開発がその仕事ではやっているので、
あんまりモバイルの開発というものに対して、
慣れもなくどうすればいいのかという感じだったんですけど、
興味があって、この1,2ヶ月ちょっとトライしてみました。
本当に些細な機能を作って、
自分だけのためのアプリなんですけど、
それをリリース直前まで行ったんですよね。
そもそもそこに至るまでが面白いのか。
全然違いますね。
Ruby on RailsとAndroid、何が違うんでしょうね。
プログラミング言語の特徴の違いというのもあるんですけど、
プログラミングコードを書いていくと、
文化の違いみたいなのを感じるところがあって、
非常に学びになりました。
別のプログラミング言語をやっていたところから来て、
別プログラミング言語の考え方を持ち込んで何かするというのも、
一つの手だと思うんですけど、
それは文化は文化なので、
文化になれるというのも非常に大事だなというのを感じたところですね。
どんな違いがあるのかというと、
なんかやっぱりかっちりしている感じですよね。
一つには性的片付け言語と動的片付け言語と、
そういう違いはあるとは思うんですけど、
特にテストですね。ユニットテスト、単体テスト。
単体テストを結構な頻度で走らせたいんですけど、
Androidの場合、
03:01
基本的には私はもう2024年ですからね、
Kotlinで書いてみたんですけど、
それでもやっぱりコンパイルというかビルドが必要で、
そこが結構かったるいというか、
時間がかかるポイントだなと。
多分昔に比べれば、
だいぶビルドの時間って短縮されていると思うし、
マシンの性能も良くなっていると思うんですけど、
それでも打って待たされるというのがありますね。
なのでその待たされるのを嫌って、
頻繁にテストを回すというのを避けたくなる気持ちが分かってきました。
でも人によるのかもしれないですけどね。
Ruby、Railsの開発においても、
結局データベースの準備にめちゃくちゃ時間がかかるようになるアプリケーションとかもあるので、
同じことが言えるんですけど、
もしデータベースの準備がなかったらめちゃくちゃサクッと終わるのが、
Rubyの単体テストの特徴だなというのを感じます。
特にLibraryを書いているときは、
Rubyは本当にフィードバックが速くていいなというのを思っていました。
でもAndroidの開発、
というかKotlinを使った開発、
それはそれでとても面白くて、
そうですね。やっぱり片付けというのも、
型が好きな人の気持ちは分かったという感じですね。
Androidの開発は、
よくあるパターンですね。
Ruby on RailsだとMVCというパターンを使いますが、
AndroidだとどうもMVVMというのが、
主流なんですかね。分かんないですけど、
なんならAndroidが提供しているLibraryに、
ViewModelという名前をついたクラスがあるぐらいなので、
Android自身が多分MVVMを基本としているような感じがします。
ちなみにMVVMは、
モデル、ビューモデル、ビューの略らしいですね。
モデルとビューをつなげるのがVViewModelというやつらしいんですけど、
Androidの開発、
Jetpack Composeというのを使ってみたんですけど、
これ何かというと、
従来のAndroidってXMLを使って、
レイアウトとか色々やって、
プログラム的に何かをするっていうのをコードを書くみたいならしいんですけど、
06:09
ここ最近Jetpack Composeになるものが出てきて、
それは何かというと、
プログラミングのコードでレイアウトとかを組むことができると。
これ説明がリアクトというJavaScriptのフレームワークがあるんですけれども、
それを分かっている人にはめちゃくちゃ説明がしやすいものでして、
要はJetpack Composeってリアクトだよねと。
本当にそのリアクトのパラダイムを使って開発ができまして、
何の苦労もなかったですね。
APIのリファレンス、ライブラリでこういうパラメーターが必要だねみたいなのは、
当然見ないといけないんですけど、
考え方は完全にリアクトで、
ちょっと差分があるとは思うんですけど、
リアクトやっていればすぐにできるっていうのがありましたね。
これやり終えて、
もう私は立派なコートリンアンドロイド開発者だと名乗れるぐらいには、
名乗りたいなとは思うんですけど、
思いました。
Jetpack Composeのステート管理についてのドキュメントが結構面白くて、
リアクトで開発してたときに言語化されてなかった概念が書いてあったんですね。
それがステートホイスティングっていうやつでして、
要するにステートっていうのを、
ステート要は画面の状態だとか、
画面ですよね、
例えばボタンを押してローディング状態でやる、
ローディングが終わった状態でやるみたいな、
それ以外にもいろいろ管理するためにステートというもので扱うんですけど、
ステートホイスティングっていうのは何かというと、
各コンポーネントでステートっていうのを維持するのは、
メリットとしてはカプセル化っていうか、
各コンポーネントにステート管理任せちゃうことができるから、
そのコンポーネント呼び出し側はあんまり気にしなくていいよねっていうのはあるんですけど、
でもそれぞれのステートを利用して、
それぞれのお互いにステートに依存し合って何かするみたいなことが、
実は結構起こりがちで、
そうなってくると各コンポーネントに任せちゃうっていうのがしづらくなってくると、
そういったときにいよいよコンポーネント呼び出す側にステートを持とうかみたいな話になるんですよね。
そのあたりが多分ステートホイスティングっていうやつで、
09:02
リアクトでもこういうことがよく起こっていて、
最終的にステート管理のライブラリーを使い始めて、
そこで一元管理とまでは言わないかもしれないですけど、
でもほぼほぼそれに近いぐらいの状態で管理し始めると。
例えばリアクトだと別ライブラリで、
何でしょうね、ちょっと私は思い浮かばないですけど、
例えばReduxとかそういうやつですよね。
リアクトの、今は分かんないですけど、
当時私がリアクトやってたときは、
そのあたりについて言及しているドキュメントは多分なかったはずで、
アンドロイドは割と最初の方にステートホイスティングとはね、
みたいなふうにドキュメントとして書いてあるんですよね。
非常に良かったですね。
そんな感じで、ステートホイスティングって概念、
言語化されたのがすごく個人的には学びになりました。
できたんですけど、ある程度のものが、
それをリリースしようと思ったら、
壁が立ち塞がりまして、
去年の2023年の11月何日だったかな、
13日だったかな、ちょっと分かんないですけど、
それ以降にGoogle Playデベロッパーのアカウントを作った人は、
リリースする前にクローズドテストで20人以上のテスターによる、
14日間連続のテストを実施しなければならないっていうのがあって、
個人開発者だけなのか分かんないんですけど、
個人開発者それ必要なんですよね。
めちゃくちゃハードル高いわけですよ。
個人開発者で20人の、
友達はいるかもしれないんですけど、
テストやってくれる友達っていうのがめちゃくちゃハードル高いし、
ただテストやるだけじゃなくて、
14日間連続でやらなきゃいけないっていうのがあって、
これは無理じゃんみたいな状態が今のステータスです。
ちょっとどうすればいいのか、どうすればいいんでしょうね。
ちょっと調べた限り、
お金払ったら20人のテスターが14日間頑張るよっていう海外のサービスがあって、
そういうの使うかなって思うんですけど、
それなりに高くて、
なんでこんな今までの人たちはそんなにお金払わなくてよかったのに、
なんでこんなにお金払わないのっていう気分になりつつ、
じゃあクラウドソーシングみたいなのでやるかっていうと、
それもそれでお金結局かかるから、
そういったサービス使うのもありな気がしてきました。
12:03
このあたりのポリシー変えてくれないですかね。
Googleプレイ上のアプリの質を高めるためにはしょうがないですかね。
ということで、今回はAndroid開発についてしゃべってみました。
実は最後、これを収録しているのが1月10日なんですけど、
今日、RSGTというイベントがあって、
それに現地参加してみようと思っています。
その話もできたらいいなとは思っています。
それでは。
12:42

コメント

スクロール