カテゴリー: 感想

『Android Kotlin Fundamentals』をやった(1)

Android Kotlin の基礎のための Codelab

と言いつつ、まだ途中(ノ∀`)
まだLesson4までしか終わってない。

『Welcome to Android Basics in Kotlin』と異なり、英文で内容もちょっと長いかな? あと若干前の内容っぽい。英文なので読むのに時間がかかるが、知りたいことというか途中で浮かんでくる疑問を即座に説明してくれてたりするので、読む価値はあると思う。

途中でこの内容(というかcodelab全般?)翻訳・公開しているサイトを発見したが、英文で読む方に慣れてしまったがためにそのまま英文で読み進めることにした。

最近、英文を全く読まなくなっているので少しは読まないといけない気がするし…

いつものように、やっている最中の適当なメモ書きや感想であり、勘違い、おま環由来の問題等々で大騒ぎしている記録である(ノ∀`)


thus far これまでに 今までに
terminology 用語
unambiguous 明確な
complicate 複雑にする, わかりにくくする
sheer 全く, 単なる 形容詞 純然たる, 全くの
the sheer number of の膨大な数
inevitably 必然的に
radically 根本的に
underneath 下に

なんでView groupでchild viewのhorizontal positionを一括指定出来ないんだろうか?

All the view IDs in your XML file must have this prefix..
ピリオドが一つ余計。

Use the findViewById() method to get a View reference for the view that you defined in the XML class.
この場合のclassって何を指してるんだろうか?
fileじゃいけないのか?

the duration to show the message.
先頭が大文字になっていない。

The show() method at the end displays the toast.
は<li>というか<ul>外に書くべき?


Android Kotlin Fundamentals 01.3: Image resources and compatibility

Step 1: Add the images

項番3と4が2から分かれていない。
previewタブはない?

performantなんて単語あるんだな…
と思ったが、よくよく考えてみると、importancetとimportantの語形変化と一緒だな(ノ∀`) performanceの形容詞形か。


性能[行為・パフォーマンス]の
〈俗〉《コ》高性能の、効率の良い

store the View object in a field.
Kotlinにはフィールドはないと言ってたけど、それは意味が違うのかな(´・ω・`)?


5. Task: Use a default image

項番4が3から分かれていない。

The tools namespace is used when you want to define placeholder content that is only used in the preview or the design editor in Android Studio. Attributes using the tools namespace are removed when you compile the app.

ふーむ、ふーむ(・∀・)
Tools名前空間をつけた値は開発時のプレースホルダーでコンパイル時には除去されるんだな。

Namespaces are used to help resolve ambiguity when referring to attributes that have the same name.

名前空間自体は名前衝突というかコンパイラが名前で迷わないためのプレフィックスってことでええんかな?


6. Task: Understand API levels and compatibility

Step 1: Explore API levels

項番1と2が分かれていない。

Step 3: Add compatibility for vector drawables

項番1と2が分かれていない。

The app namespace is for attributes that come from either your custom code or from libraries and not the core Android framework.

なるほど、app属性は自分のカスタムコードや標準(?)のAndroidフレームワーク以外のライブラリコード由来の属性の為のものなのか。


9.Summary

Summaryのところでもっと綺麗にまとめてあった(ノ∀`)

The tools namespace for design-time attributes:
Use the tools namespace in the Android layout file to create placeholder content or hints for layout in Android Studio. Data declared by tools attributes is not used in the final app.

The app namespace:
The app namespace in your XML layout file is for attributes that come from either your custom code or from libraries, not from the core Android framework.


Android Kotlin Fundamentals 01.4: Learn to help yourself

3. Task: Use project templates

最初間違えてempty Activityでプロジェクトを作ってしまい、一瞬戸惑う(ノ∀`)
次にBasicで作ったつもりだったが、なんか出来上がった画面が違うような…

フラグメントとボタンが使われていて、TextViewの文言もなんか違う。
バージョンによる違いかな?まあ大した問題でもないからいいか。

color.xmlにcolorAccentがない?


4. Task: Learn from sample code

dagger.hilt.android.AndroidEntryPoint
なんだこのアノテーション…

Hilt は Android 用の依存関係インジェクション ライブラリです。これを使うことで、プロジェクトで依存関係の注入(DI)を手動で行うためのボイラープレートが減ります。手動で依存関係の注入を行うには、すべてのクラスとその依存関係を手作業で作成し、コンテナを使用して依存関係の再利用と管理を行う必要があります。

Hilt は、プロジェクト内のすべての Android クラスにコンテナを提供し、そのライフサイクルを自動で管理することで、アプリケーションで DI を行うための標準的な方法を提供します。Hilt は、よく知られた DI ライブラリである Dagger の上に構築されているため、コンパイル時の正確性、実行時のパフォーマンス、スケーラビリティ、Android Studio のサポートといった Dagger の恩恵を受けられます。詳細については、Hilt と Dagger をご覧ください。Hilt

Dagger is a fully static, compile-time dependency injection framework for Java, Kotlin, and Android.

ふーん(´・ω・`)
この場合の依存関係の注入って@AndroidEntryPointでGardenActivityに各Fragmentを結びつけてるのか…?
と思いきや、

@AndroidEntryPoint は、プロジェクト内の Android クラスごとに個別の Hilt コンポーネントを生成します。これらのコンポーネントは、コンポーネント階層で説明されているように、それぞれの親クラスから依存関係を受け取ることができます。

依存関係を注入したいコンポーネント全てに引っ付けるのかな?
まあ取り敢えずはこのくらいの理解でいいかw

Changing the launcher icon
項番4,5が改行されていない

日本語化してるから、その差分かもしれないがLegacyタブはなくてオプションタブだった。そもそもAPIバージョンをほぼ最新にしてるからその影響かもしれないがよくわからないw


Android Kotlin Fundamentals: LinearLayout using the Layout Editor

3. Task: Create the AboutMe Project

新規プロジェクト作成ダイアログに"This project will support instant apps"という項目がないな。


5. Task: Add a TextView using Layout Editor

Layout Editorの表示属性切り替えのアイコンってどれだ…
一応下までスクロールすると全属性が表示されるからまあいいか。

項番3,6,7が改行されていない。

Attributeでは大文字の"ID"だけどLayoutEditorだと"id"だな。
textColorの変更がよくわからなかったので@color/blackをGUIから選択した。
→後でstyles.xmlを直接編集したけど、GUIから指定する方法がわからなかったな(ノ∀`)


6. Task: Style your TextView

「Right/left versus start/end」の

Add "start" and end" in addition to "left" and "right".
For example, use both android:paddingLeft and android:paddingStart.

で一瞬悩む。これは"left"や"right"に"start"や"end"を追加するっていうんじゃなくて、"left"や"right"に加えて"start"や"end"も使えるよって話なのかな?

項番7の改行がない。

Step 3: Add a font

robotoフォントの追加手順は3,4を変えるべきでは?
画面配置が逆なので、非常に微妙ながらも逆流手順に思える。

A style is a collection of attributes that specify the appearance and format for a view.

スタイルはビューの外観やフォーマットを指定する属性のコレクションであると…φ(・ω・` )メモメモ…


7. Task: Add an ImageView

6.To rename the id of the ImageView, right-click on "@+id/imageView" and select Refactor > Rename.

の通りにするとThe resource name must start with a letterというエラーが出てリファクタリング出来ない。"@+id"は自動補完されるのか、除去して残りの"star_image"だけ入力すればいいのかな。

項番10でOKは二回クリックする必要があるか?

星マーク(アスタリスク?)2つは何を意味してるんだっけか…

無料配信漫画等々をいろいろ読んだ(・∀・)-73

1日外出録ハンチョウ(1) 上原求/新井和也/福本伸行/萩原天晴

地の獄…! 底の底…! 帝愛地下労働施設…! 劣悪な環境である地下にいながら「1日外出券」を使い、地上で贅の限りを尽くす男がいた…! その名は大槻…! E班・班長にして、1日を楽しみ尽くす匠…! 飲んで食って大満喫…! のたり楽しむ大槻を描く、飯テロ・スピンオフ第1巻‥!

トネガワ同様に本編の『カイジ』では嫌なキャラだった大槻太郎が主人公だけど、このパロディ作品は面白いw

厳しいグルなび採点とかKPUとかジワジワ来るw
商売敵として台頭しつつある小田切に対して大槻が何か企んで動き出すところで1巻は終わってしまうので続きが気になるw

『中間管理録トネガワ』は全10巻で終了してるようだが、この作品は現在11巻まで出てる模様。まだまだ巻数は増えそうw 

最終回、大槻は借金を返済して地上の生活に戻るのだろうかw?


悪魔が町にやって来る 恐怖!!ブタの町 日野日出志

不気味な赤い満月の夜。
町は赤く染まった。
黒装束の馬に乗った男たちが、僕や家族、そして町中の人々を次々に
連れ去っていく。
どこへ、そして何のために!?
そして、僕らの町は忌まわしいブタの町になった。
怖さ際立つ一人称ホラーの世界。

11円で購入。
子供の頃に読んで恐怖した作品((((;゚Д゚)))ガクガクブルブル
でも今読み直してみるとわっけわっからん(・∀・)

豚にして働かせてるところをみると人間社会を揶揄した感じなんかねぇ?
一般的な社会人になって働くということに対するアンチテーゼ的何か?
でもどう考えても「何故けん一が…?」という疑問が解けないわw

ちょっとぐぐってみたら…工エエェェ(´д`)ェェエエ工

 「まんだらけZENBU創刊号」(1998年12月20日発行)に、日野日出志先生へのインタビュー記事がありまして、漫画家の谷口亜夢先生がこのマンガのラストがどういう意味なのか質問しております。
 それに対する日野先生の答えは「あれは私もよくわかりません」(p81)とのこと。
 続けて、「悪夢」だと考えればいいとか述べておりますが、ごまかしている印象が拭えないな~。
日野日出志「悪魔が町にやってくる 恐怖!!ブタの町」(1985年10月16日発行/青72)

オチが訳わからんことが尚更に子供心に恐怖を植え付けたんかもねぇ…


CLAYMORE 八木教広

古より人が「妖魔」に喰われる存在であったこの世界。人は長く妖魔に対抗する手段を持てずにいた…。だが背に大剣を背負い、妖魔と戦い続ける一人の戦士が現れ…。「クレイモア」と呼ばれる少女の戦いが始まる!!

ゼブラックで最後まで読んだ。全27巻分。結構な長さであった…(ヽ'ω`)

少年漫画の宿命とも言える「なん…だと……( ;・´ω・`)ゴクリッ」展開の繰り返しやキャラクターの判別が難しいところが若干きつかった。

まあ後者のキャラクターの判別が難しかったのは俺氏の顔判別能力の低さと一日最大2.5話分(チケット+CMx3+30pt)と小刻みにしか読めないが為に顔と名前を覚えきれなかったのが一因かも(ノ∀`)

でもなんかこの作者の漫画は白っぽい感じで何かキャラとして覚えにくかったな…
ってよくよく考えてみると、クレイモアの少女達は白い肌と白髪かそれに近い感じになるって言う設定があったな、そういえば。だから漫画が白っぽい感じがしたんだなw

内容に関しては上記の冗長さは否めない部分はあったが悪くはなかったし、特にその結末は文句のつけようがない出来であった(・∀・)

週刊少年ジャンプならあの後も無理に連載を続行させたかもしれないけども、あの終わり方でちょうど良かったような気がする(・∀・)

イースレイとリフルが何となく好きだったわ…
クラリスはなんか他人とは思えないわ…(´・ω・`)

戦士黎明編とかいう8ページの前日譚があるが単行本未収録らしい。
ぐぐって普通に0話としてあったから読んでみたけど、まああくまでも番外編といった感じだったな……

って、俺が見たサイト、違法サイトじゃねぇか( ;・´ω・`)ゴクリッ?
余りにも堂々とした感じだったから、マイナーな電子書籍サービスかと思っちゃったけど…

作者の八木教広は『エンジェル伝説』でデビューして、この作品が二作目なのか Σ(゚∀゚;)
『エンジェル伝説』って心優しい怖い顔の人が主人公のギャグ漫画だったっけか。全然方向性が違うなw

余り詳細に書くとネタバレになってしまうのでこの辺でやめておくが、ダーク・ファンタジーとしては中々良いんじゃないかなと思った。過去にアニメ化もされてるらしい。

まあ何はともあれ、
( `・ω・)o彡゜テ・レ・サ!テ・レ・サ!


もいちどワンスモア 矢野 健太郎

いい仲になってきてそろそろベッドインになりそうだったまなみにふられた仁悟郎。二日酔いで目覚めると隣には見知らぬ裸の女が眠っていた。なにがあったか思い出すことができない仁悟郎は、知らない女と肉体関係をもった結果、自分がAIDSにかかったのではとあせり始める。そこから始まるゆきずりの女とのちょっと大人なラブコメ漫画『もいちどワンスモア』とさまざまな男女の恋愛にまつわる悩みがコミカルにリレーされる『恋愛不全症候群』の2つの作品を収録。矢野健太郎の大人向けラブコメ漫画をお楽しみください。巻末に「電子版あとがき」を収録。

99円で購入。解説によれば『恋愛不全症候群』の方が先に描かれた作品で、矢野健太郎のエロコメディ系の嚆矢となった模様。この作品も『もいちどワンスモア』もエロシーンはあるにはあるが以降の作品に比べると控えめというかストーリーの方に重きが置かれた作品群と言えるかな。そっちの方の需要で買うと不完全燃焼な気分になるかもしれないw

少なからず『恋愛不全症候群』の方はつまらなくはない。『もいちどワンスモア』の方はなんか微妙。担当が全て悪いんかなw

いつものように掲載誌廃刊で突然終わってしまうパティーン(´・ω・`)


ドリーマー 矢野 健太郎

少年・達也が実在化させてしまった夢魔(ムマ)はセクシーなやんちゃ娘。ムマとくるみ、達也の兄・直人の4人で恋は複雑模様に。やがて、人間の間引きを画策する魔族が出現する、ラブコメ+邪神伝説シリーズな異色作『ドリーマー』。巻末には、衝撃的なオチが待ち受ける学園ギャグ漫画『ヒーロー野郎』と電子書籍版あとがきを収録。

99円で購入。色々と酷かったw
『Race Queen Angel』収録の『あたしのアニムス』系か。あいつと似たようなのも出てくるしw

雛子バリエーション』とも似た系統といえるか。

そういえばエントリに『Race Queen Angel』の感想がないのは何故だろう…
あれを読んだ頃は単発のエロコメディ漫画については言及してなかったんだっけかな?

一応、邪神伝説シリーズ…になるのか……(´・ω・`)? ← 絶対違うと思う(ノ∀`)


若殿はつらいよ! 大波瀾! 東海道編

ケン月影 (著), 鳴海丈
ケン月影特選時代劇。
剣は強いが女に弱い若殿・松平竜之介。
危険と美女が忍び寄る波乱万丈のひとり旅。
松平竜之介は、徳川御親藩の血をひく若殿である。
だが、ある事が原因で藩を旅立つ。
藩主である父のいる江戸を目指して。
その道中、宿場ごとに、悪党に遭遇し、妖しい美女たちに出会う。
竜之介は無事、江戸へ辿り着けるのか……。

1円で購入。
まあいつものお色気時代劇と言えばその通りなのだが、今作はお銀系と異なり、松平竜之介という経験浅き巨根男性が主人公だからか、こっちの方が読んでいて面白い感じがした。
道中物であるという点も良かったかな。機会があれば続きを読みたい(・∀・)

結構、うっかりさん

続 悪の華 闇華 / 柳沢きみお

芸能界の闇に翻弄され最愛の女であった順子と海の藻屑となった津島・・・。
津島プロの二代目社長になっていた川合は、立ち寄ったバーで津島によく似た男に出逢う…!

悪の華』の続編。

10x12=120円で購入。
前作に比べると比較的芸能プロダクションの話っぽかったかなぁ…
でもそうでもなかったかなぁw

登場当初の桐野はクソ野郎ぽかったのでイマイチなキャラだったが、徐々にまともになっていき、さあこの先どうなっていくのかな(・∀・)?って思ってたら、なんか呆気なく消化不良な感じで終わってしまった(ノ∀`)

前作よりは芸能界のdisりは少なかったかな?
少なからず文字で埋め尽くされるような作者の叫びはなかったような気がする。

あと柳沢きみおの画力なので、誤差と言われれば誤差かもしれないが、登場する女の子達は前作よりも可愛かったかな? もしかすると前作が雑だっただけかもしれないなw

DINO』と『悪の華』のエントリ化で疲れたので、手抜きモード&若干ネタバレモードで。


桐野利夫
前作の主人公・津島の面影を持つ男。チンピラヤクザ。半人前だから半ちゃんと自称してる。上納金を滞納し、偶然知り合った川合に借金を申込む。

その肩代わりをしてもらう代償として津島プロに入社する。


川合ジョージ
津島プロダクション社長。前作から色々と裏の仕事をしながらも順調に歳を重ねた模様。前作の海山プロの木嶋のような感じで女遊びにも芸能界の仕事にも飽きてきていたところで、慕っていた津島に瓜二つの桐野と出会い、少しだけ元気を取り戻した。

芸能界の女達や自分達を闇の中の花に例え、闇華と呼んでいる。


高山
津島プロのNo2の部長。社長昇進後、桐野を解雇し、更に桐野が設立した桐野プロの妨害をする。

藤井
津島プロの社員。定年退職後、桐野プロで働く。大ベテランで顔が広く、芸能事務所社長としてはひよっこの桐野を支える。

横山
テレビ極東の編成局長。川合と知り合いで、生前の津島との交流もあった。そういった関係から桐野とつながりを持った。

和久井
テレビ極東のプロデューサー。香華の体を狙い、仕事を欲しがっていたジュンに香華との3Pを持ちかける。

役場幸一
A芸能プロ所属のトレンディ俳優。映画『ラストラブ』で久美子と共演。久美子を狙う。意外とゲスかったw

大善大馬
金策に困っていた桐野が藤井から紹介された謎の金主。1000万の入った口座のカードを桐野に渡す。色々な方面に顔が利く。

桐野の女
桐野がチンピラヤクザ時代に付き合っていた女。思い上がった桐野に罵られて、怒って別れる。以降全く出て来なかったw

花井ジュン
45歳。かつてのセクシー系アイドル。金に困り、川合に仕事を紹介してもらおうとすがってきた。

有田久美子
19歳。聖京女子大生。最高の闇華を探す桐野にジュンが噂話程度に教えた。後に菜々木久美としてデビュー。

秋野香子
ボクサー崩れのDV男から逃げる途次、偶然出会った桐野に助けを依頼する。
顔は不細工だが、超一級品のナイスバディーを持つ。 後に香華(画像右)としてデビュー。

大木
ジュンの知り合いの知り合いのエロ人妻。一晩10万で桐野を買う。不感症。

丘のぞみ
19歳。桐野が偶然行った居酒屋のバイト。店主の姪。香華に瓜二つ。丘のぞみとしてデビューする。本名不明w

日向
三上と一緒に行ったお持ち帰りOKのキャバクラ嬢。何回か出てくるけれども、投げっぱなしジャーマン。

面倒くさくなったので、以下は文字のみw

岡田
桐野のチンピラヤクザ時代の知り合い。一晩30万でジュンとのせっくるを斡旋するよう強要してくる。

少女A
15歳。桐野が初めてスカウトに成功した可愛い女の子。初登場以後出て来ないw まあ津島プロ所属ということだからいいのか。

ハチスカ
芸人。香華を口説き落とし、クスリを教える。

三上常雄
三上芸能事務所代表。桐野と意気投合する。特にストーリーそのものには関係して来ない。


まあ、柳沢きみおが好きなら読んでもいいんじゃないかねぇくらいw

『Welcome to Android Basics in Kotlin』をやった(終)

フラグメント間の共有 ViewModel

4. 共有 ViewModel を作成する

OrderViewModel を作成する

クラスのプロパティで料金と言ってるのに、値段にはセッター メソッドは必要ありません。というのはどうだろうか。意味は通じるけども。

5. ViewModel を使用して UI を更新する

Kotlin プロパティのデリゲートを使用する

変更可能な各(var)プロパティにってなんか変だな
読み取り専用プロパティ(val)と対応させるなら
変更可能なプロパティ(var)のそれぞれにかな
原文からしてeach mutable (var) propertyFor a read-only property (val),なんかいw
これは原文が悪いw 翻訳AIは悪くないw

Kotlin のプロパティ委任委任じゃなくて移譲に統一して欲しいところだな。もしかして意図的に使い分けてるのかな?

activityViewModelsというか共有ViewModelって結局のところ、親にViewModelを持たせて、子であるFragment達で共同で使いましょうねっていう話じゃないの(´・ω・`)?

もしそうだったらFragment(activityViewModel : activityViewModels)みたいなコンストラクタとかxml側で処理出来ないんだろうか? activityViewModelsってクラスだから先頭大文字にならんのか…もしかしてandroidxのパッケージというかクラスはみんなそうなのかな…?

radiogroupのxmlでの設定ってなんか面倒くさいな…
もっと簡略できないのかな?

xml自体はそのままでもいいんだけどscss?みたいな感じで簡略表記したものを自動ジェネレートしてくれるような仕組みはないのだろうか


仕方がないといえば仕方がないのだが、この"E MMM d"だと日本語ロケールでは"土 6月 5"みたいな感じになってしまうw

そこまでの機能も必要性もないのかもしれないけど、翻訳AIに新機能を組み込むならロケールに合わせてこういった表記(それに関わるコード部分)を変更できるようにするってのもありかな。

initブロックって変数宣言の前に置いちゃいけないんだな…( ;・´ω・`)ゴクリッ
正確にはそれらの変数の初期化処理が入ってるというかアクセスしてしまう場合は。
OrderViewModelのところでそれをやって
java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.lifecycle.MutableLiveData.setValue(java.lang.Object)' on a null object reference
を食らった(ノ∀`)

エルビス演算子のElvisってどういう意味かなぁ…エルビス・プレスリーとかは関係ないよなぁ…
と思ってたら…まじか(・∀・)

エルビス演算子はエルビス・プレスリーの顔文字 (emoticon) に形が似ていることからこう呼ばれる

って、下に書いてあった(ノ∀`)

豆知識: elvis 演算子(?:)は、ロックスターのエルビス プレスリーにちなんで名付けられました。横向きで見ると、クイッフ スタイルのエルビス プレスリーの絵文字に似ているからです。

なんで android:text="@{@string/subtotal_price(viewModel.price)}"の挿入位置が
fragment_flavor.xmlと残りの2つと違う指示をするのだろうか…

8. 注文の詳細から価格を計算する

LiveData 変換で価格の表示形式を設定する

LiveData.


ナビゲーションとバックスタック

4. タスクとバックスタックについて学ぶ

Cupcake アプリのバックスタックを変更する

なんで次の行とかh2なんだろ?

キャンセルボタンのクリックリスナーを追加する

sharedViewModel.resetOrder().
R.id.action_flavorFragment_to_startFragment.

5. 注文を送信する

sharedViewModel.priceString.value.toString()
priceじゃない? issueの#8と#9にあったわ(ノ∀`)

おかしい…何かを間違えてるのか、一つ注文しても複数形のままだ…
まあいいや(ノ∀`)


コルーチンの概要

4. Kotlin のコルーチン

何が書いてあるかさっぽろわっかない(・∀・)


詳解 Kotlin Coroutinesという電子書籍が第二章まで無料公開されていたので、それを読んで何となく理解し、こちらの方も何となく読み進められた。

**********************************************
"一方で、Kotlin Coroutinesは単一のスレッドを再利用することができます。実行しているCoroutinesがdelay等の中断状態になると、他のCoroutinesを同じスレッドで実行します。これにより、並行に動作し、メモリを効率的に使うことができます。"

いまいちよくわからない(´・ω・`)
コルーチン1の処理①というか中断状態になったスレッドの保持しているデータは何処に行くの(´・ω・`)? 書き込んでいるなら書き込みと読み込みが発生しそうだけど、その時はメモリじゃなくてもっと遅いストレージに書き込む…わけはないよね……

多分スレッドをきちんと理解してないんだな、俺氏(ノ∀`)
昔Javaを弄っていた時は理解していたと勘違いしてたんだな
Javaとかだとスレッドプールだかいうやつで再利用してなかったっけ?

Chapter 02 Coroutinesの基礎を学ぶ
jcenter()ってもう利用不可能だったっけ? ← 読み込みはOK?

"Coroutinesを起動するためには"
何か意図があるわけではないのなら"Kotlin Coroutines"以外では"Coroutine"の単数形で表記した方が良さそうな。なんか併用してるけど、意味が違うんかな?

"Coroutinesを起動するためには、CoroutineScopeが必要です。CoroutineScopeはいくつかの方法で作成することができますが、ここではrunBlockingを使っています。runBlockingは新しいCoroutineScopeを作成し、その中で起動された全てのCoroutineが完了するまで処理をブロックします。"

これがわかってなくて、playgroundでlauchだけを使ってエラーになってたわ(ノ∀`)
https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/run-blocking.html

"CoroutineScopeはCoroutineContextを指定することで作成することができます。"

runBlockingはデフォルト値でEmptyCoroutineContextを使うのか。

3.コルーチンの説明として正しいものは次のうちどれですか。
コルーチンは実行される場合と実行されない場合がある。
**********************************************

もう既に読み直しても、何の話をしているのかが微妙に分からなくなってる(ノ∀`)
またちゃんと勉強しないとなぁ…


6. インターネットに接続する

MarsApiService.

8. Moshi で JSON レスポンスを解析する

[]を角かっこと呼んでいるなら{}は中かっこではなく波かっこの方が良いような。

ViewModel を更新する

listResult.


インターネットから画像を読み込んで表示する

3. インターネット画像を表示する

バインディング アダプターを使用する

説明がよくわからん(ノ∀`)

画像ビュー
ImageViewは訳してはいけないような

何かを間違えて

java.lang.IllegalStateException: Required DataBindingComponent is null in class GridViewItemBindingImpl. A BindingAdapter in com.example.android.marsphotos.BindingAdapters is not static and requires an object to use, retrieved from the DataBindingComponent. If you don't use an inflation method taking a DataBindingComponent, use DataBindingUtil.setDefaultComponent or make all BindingAdapter methods static.

というエラーが(ノ∀`)

色々とぐぐったり、チュートリアルを見直すもわからず。
issueにも上がっていない…
つまりは俺氏のミスオペの可能性が高い。

再びエラーメッセージを眺める。よくわからんがstaticじゃないのが問題らしい…
web上の他のBindingAdapterのサンプルやこのエラーメッセージでヒットするページを眺めていると皆objectキーワードを加えて@JvmStaticみたいなのをくっつけて回避している。

そんなことしてたっけかと改めてチュートリアルを眺める…

ん(´・ω・`)?

何かチュートリアルの指示表現が今までの指示表現と違うことに気づく。

( ゚Д゚)ハッ

class BindingAdapters {} は要らないのか Σ(゚∀゚;)
ファイル内には@BindingAdapter("imageUrl")をつけたbindImageが存在すれば良かったんやヽ(`Д´)ノ

これはちょっと引っかかったわ(ノ∀`)


4. RecyclerView で画像のグリッドを表示する

RecyclerView を追加する

1.layout/gridview_item.xml を開きます。viewModel データ変数を削除します。
2. タグ内に、MarsPhoto 型の photo 変数(以下を参照)を追加します。

外でもこういうパターンはあったのかもしれないけれども、この書き方は好ましくないような気がしてきた。
この書き方をするなら、viewModel データ変数を削除します。は一手順として項番2とし、その次を項番3にすべきだろう。

でも、そもそも、ここでの手順はgridview_item.xml内の<data>タグ内の変数 viewModelをphotoに書き換えるだけなのだから、わざわざ削除後に追加するように指示する意味はないというか冗長だと思う。

1.layout/gridview_item.xml を開きます。
2.データ変数 viewModel を MarsPhoto 型の photoに書き換えます。
(データ変数は<data>タグ内の<variable>要素のことです。)

みたいな感じの方がいいんじゃね( ゜σ・゚)ホジホジ?

注: この時点で RecyclerView Codelab を復習することをおすすめします。
というならリンク貼っといてよと思ったw

この辺も余り理解せずに、写経ですらない、貼経というか御札貼り的作業になる(ノ∀`)

4. RecyclerView で画像のグリッドを表示する

写真グリッド アダプターを追加する

ListAdapter(リフレッシャー)

ListAdapter.

引き続き onCreateViewHolder() の PhotoGridAdapter クラス内で
逆?

バインディング アダプターを追加して要素を接続する

adapter.

5.RecyclerView にエラー処理を追加する

Kotlin の enum クラス

} catch (e: Exception)
"{"抜け

ステータス ImageView のバインディング アダプターを追加する

enum 状態のセットを使用して、OverviewViewModel に MarsApiStatus を設定しました。
こういう自動翻訳部分が多いけれど、こういう地味に意味の伝わらない文章が脳を疲弊させ、理解の妨げになるんだろうなと思ったけど、原文はYou have set up the MarsApiStatus in the OverviewViewModel, using a set of enum states.か…
直訳ならあながち間違いではないのか…

OverviewViewModelクラス内に、ダウンロードの状態を表す列挙型 MarsApiStatusを設定しました。(列挙型とは、状態を識別させる為の列挙子(定数)を集めたものです。)
だとちょっと違うか…

原文のニュアンスを重視するなら状態のセットを表す列挙型(enum)を使用して、~か?

com.example.android.marsrealestate.overview.MarsApiStatus
というimportはパスが違う?
自動でOverviewViewModel.MarsApiStatus?という形になるな…

import com.example.android.marsphotos.overview.MarsApiStatus
を追加しても上手く行かない…

enumにpublicとかつけないと駄目なのか…?

あ、OverviewViewModel.ktでenumの宣言をOverviewViewModelクラス内でしてたわ(ノ∀`)
前も似たようなミスをしたなw
早くkotlinの書き方に慣れないといけないな。


まあなんやかんやで色々と勉強になったのだけれども、すぐに忘れちゃうし、応用できるレベルではないので引き続き勉強して行こうかな。

しかしながらにしてcodelabの遅さはなんだろうかな。
うちのネット環境だけの問題にしては遅すぎるような気がした。

kotlinは楽でいいなと思う反面、ここから入って行った人はJavaとかで苦労したりするのではないかと思わぬこともないw
昔よりかは楽になっているんだろうけれども…