プロが教えるわが家の防犯対策術!

Androidアプリ開発の教科書 Kotlin対応 ㈱翔泳社
を読んでいます。
BASICとBASICは少し知っています。
BASIC はN88BASIC VisualBASIC98
C言語 は QuickC VisualC98
をやった程度の初心者です。

定年で家で遊びレベルで
AndroidStudioを習っています。
しかしながら文章中の説明が難しくて全く頭に入ってこないばかりか
読むことを拒否してしまいます。
私の推察では、基本的なコンピューターの仕組みの基礎知識が全くないと思います。

今の実力は
EditTextに入れた文字列を加工しTextViewに表示したり
ファイルに保存と読込程度まで何とかできました。

どうですか?どうしたら読めるようになりますか?

質問者からの補足コメント

  • 書籍としては
    Androidアプリ開発 Kotlin編 秀和システム
    Kotlin入門 カットシステム
    Kotlinハンズオン 秀和システム
    も買っています。

    Kotlinはバージョンがいろいろあって
    日々改良がなされています。そのせいで1週間後に作ったものが
    動かなかったりと。笑!
    Kotlinで動いてもAndroidStudioに持ってくると動かないこと(閉じてしまう、閉じなくても実際動かないこと)があまりに多いです。

    全くイメージがわかないのは
    コンストラクタ
    バッファー
    ストリーム
    コンテキスト
    アダプタ

    変数にはいろいろな型があって
    EditTextに文字を入力するとEditText型の文字が入力される
    文字のフォントや大きさや色等のプロパティー?が引き継がれます。

      補足日時:2023/06/19 10:22
  • ◎Editable型に含まれる情報
    Editable型は、テキストを編集可能にするインターフェースです。
    Editable型は、Spannable型とAppendable型を継承しており、
    テキストにスタイルやアクションを付けたり、
    テキストを追加したりできます。
    Editable型のメソッドには、clear()やdelete()、insert()、replace()などがあります。
    Spannable型とAppendable型がわからない。

      補足日時:2023/06/19 10:23
  • BASICやC言語には型がなかった。

    この下記構造もチンプンカンプンです。(下記は安全なサイトです。)
    https://developer.android.com/guide/platform?hl=ja

    私のAndroid関係のHPです。(下記はもちろん安全なサイトです。)
    http://cadconv.world.coocan.jp/smartphone/

      補足日時:2023/06/19 10:24
  • Androidアプリ製作の本は
    KotlinとJavaがあって
    KotlinはJavaより新しく簡潔にできるとのことと
    またHTMLでホームページを作るとき動きを作るJavascriptがあるし
    なんかJavaは古いイメージがあって
    Kotlinを選びました。

    今日地元のMARUZEN JUNKUDO書店に行きましたが
    Android開発の本はJavaとKotlinの本も含めて
    3段しかなかったですし、しかも日本人の著書の本しかなかったです。
    (田舎はいやだなあ。笑!)

    ずいぶん久しぶりですが
    5000円(高速バス代)ほど払って東京に行かないとダメかなと思いました。

    とりあえず明日Javaの本を買います。

      補足日時:2023/06/19 21:11
  • AndroidStudioに関しては以下のところがありますが私はうまく検索できません。
    https://developer.android.com/studio/install?hl=ja

      補足日時:2023/06/19 21:11

A 回答 (4件)

単純に Android Studio を使った Mobile開発というのは


難しいです。

KotlinやJavaの知識、Androidの独特のフレームワークの知識
が必要ですし、
Android Studio は IDE としては少し特殊です。
そのビルドシステムはそれだけで結構奥が深いです。

プロの技術者でも結構戸惑うし、書籍もそれなりの
技術者を想定してます。

それと、私も体験したことですが、50過ぎると簡単なことが
頭に入ってこなくなります。繰り返し、繰り返し覚えても
数か月後にはすっかり忘れてしまいます。それでも頑張って
覚えるしかないです。若い頃より何倍も苦労しないと
頭に入りません。若い頃の知識はなんなく思い出せるので
こんなはずではと思うのですが、駄目なんです。

ド根性が必要です。残念ながら。
    • good
    • 0
この回答へのお礼

AndroidStudioは
エラー入力があるとそこの文字が赤くなってエラーを示すので
やさしいといえばやさしいけど
ものすごく厳しいスパルタです。笑!

JAVAの本を買うよりKotlinの本の中でも多少は書いてあるようなので
本で解らなかったら本を見に行くでもいいかなと思ってきました。
本を開けて見ながらスマホを見るのは怒られたけど。笑!
いろいろありがとうございました。

お礼日時:2023/06/21 15:30

> Androidアプリ製作の本は


> KotlinとJavaがあって
> KotlinはJavaより新しく簡潔にできるとのことと
> またHTMLでホームページを作るとき動きを作るJavascriptがあるし
> なんかJavaは古いイメージがあって
> Kotlinを選びました。

まぁ、正しいでしょうね。
今だとJavaそのものを学ぶよかC#の方がマシでしょうし。
しかもAndroid提供元のGoogleがKotlinを推奨してる。

まぁでも、Javaそのものが人気が無くなっても、意外とJava仮想マシン上で動くJavaで書かれたプログラミング言語はそこそこ人気があります。
Javaはライブラリ資産がデカいんで、「新しいプログラミング言語を作る」際にJavaを利用すれば、まるっとJavaの資産を流用出来るんですよ。
言わばコバンザメ作戦で(笑)。
Kotlinもそうだし、他にもTwitterを作ってるScala、Clojure、Processingなんかが代表的なJava仮想マシンを利用してる言語です。JVM言語、等と呼ばれます。

> 今日地元のMARUZEN JUNKUDO書店に行きましたが
> Android開発の本はJavaとKotlinの本も含めて
> 3段しかなかったですし、しかも日本人の著書の本しかなかったです。
> (田舎はいやだなあ。笑!)

Amazonじゃダメなんですかねぇ。

> とりあえず明日Javaの本を買います。

別にJavaそのものに習熟する必要はないんでは?
まぁ、C++みたいな「オブジェクト指向」を知りたい、ってぇのならいいですが・・・。
ザーッと概念知る程度ならネットの記事で十分だと思いますよ・・・とか思って検索してみたらロクなサイトがねぇ(苦笑)。
ええとね、多分M.Hiroiさんのサイトが一番いいかな。ホント、何でもあるな、ここ(笑)。

お気楽 Java プログラミング入門:
http://www.nct9.ne.jp/m_hiroi/java/

安心のM.Hiroi氏、だ。
いや、本を買うんでもいいけど、重要なポイント。
2014年(約10年前)にJava 8ってのが出たんですが、この時点で大幅に新機能が追加されたんです。Java 8以前とJava 8以降だと、「基本は同じ」なんだけど、使えるライブラリがメチャクチャ広がった。
で、Kotlinの話とも絡むんだけど、例えばStream。これが使えるのはJava 8以降、なんです。
んで、今ザーッと検索してみたんだけど、その辺の「新機能」まで含めてキチンと初心者向けに解説してるサイトが無い、んです。M.Hiroiさん「だけ」は調べてみたらそこをキチンと押さえてる。
2014年「以前」のJavaの書き方「だけ」を指南してるようなサイトは意味がないです。
同様に、もしどうしても本屋で書籍を選びたい、って言った場合、ザーッと目を通して、「ラムダ式」と「ストリーム」と言う項目をキチンと説明してる書籍を選びましょう。この2つを扱ってない本は買っちゃダメ、です。それじゃ少なくともKotlin対策には役に立ちません。
そしてぶっちゃけ、C言語やBASICに「慣れすぎてると」この2つは非常に難解に映るらしい。
逆にC言語やBASICに「慣れてなければ」割に「そんなもんか」って納得出来る機能です。

また、JavaはOracleが仕様書を公開してるんだけど、日本語に翻訳してねぇんだよなぁ・・・。

Java言語仕様:
https://docs.oracle.com/javase/specs/jls/se20/ht …

ホントは、「何か不明な事があったら」仕様書を調べるクセを付けて欲しいトコなんだけど、まぁ、英語だからいっか(笑)。一応参考まで、に。
なお、「言語仕様書」ってのは、リファレンスマニュアルと違って、理想論的には「仕様書に書いてる通りにプログラムを作れば」自然と仕様書で定義されているプログラミング言語実装になる、と言う性質のモノです。
つまり「プログラミング言語設計図」ですね。
従って、「分かんない事があったら」仕様書見ると結構早いんですよ。

> AndroidStudioに関しては以下のところがありますが私はうまく検索できません。

あ、ごめんなさい。Kotlinの最新版って1.8なのか。
ええと、インストール方法はここ。

Kotlin/インストール方法:
https://ja.wikibooks.org/wiki/Kotlin/%E3%82%A4%E …

Windows用バイナリはここにあります。

Kotlin 1.8.22:
https://github.com/JetBrains/kotlin/releases

繰り返しますが、「Kotlin 1.9.0-Beta」ではないです。これが前に話した「開発版」です。
テスターを広く集めてはいるけど、今Kotlin自体を勉強したい、って場合には向いてません。あくまでバグ情報を集める為にベータ版として公開してる。

また、インストールを試みる前に一回、自分がどのヴァージョンをインストールしてたのか調べましょう。
多分、WindowsではAndroid Studioで

ファイル > 設定 > 言語とフレームワーク > Kotlin アップデート

で辿れば調べられるらしい。
また、そこでアップデートチャンネルが「安定版(Stable)」になってるかどうか確認しましょう。
「Android Studio 難しい」の回答画像3
    • good
    • 0
この回答へのお礼

お礼が遅くなりすいません。
火曜日は書店に行きましたが、時間がなくて本を選べなかったです。
夜は運動(卓球教室)しているので帰ってからフロ+寝るしかできなくて。

お礼日時:2023/06/21 15:22

> BASICやC言語には型がなかった。



BASICには型はないですが、C言語は静的型付け言語で型はあります。
intとかcharと言うアレです。
Java以降、言語が提供する型が増えてきた、って事ですね。

> この下記構造もチンプンカンプンです。

いや、これは単にAndroidで何がどの上で走ってるか書いてるだけでしょう。

・Linux Kernel

平たく言うと、AndroidはLinuxと言うOSを使ってます。
Kernelってのは日本語で「核」の事で、要はLinux Kernelと言うのはLinuxのそのまんま中核です。
いわゆる「Linux OS」が全部入ってるわけじゃないけど、メモリ管理等の中心部分が入ってます。

・Hardware Abstraction Layer

「ハードウェア抽象レイヤー」。スマホに組み込まれたカメラやオーディオなんかのデバイスとやり取りする場所です。これがないと直接デバイスを操作する機械語を書かないとなんない(笑)。
いわゆるAPIですね。これがあるお陰で「フツーのプログラミング言語」で命令出来て、あたかもカメラやオーディオがOSの一部のように扱える。
それでこれがLinux Kernelの上に被ってる。

・Native C/C++ Library

これはそのまんま、ですね。「ネイティヴ」ってのは通常、あるハードウェアに特化した、って意味になるんで、Androidのハードウェア用のC/C++ライブラリ、って事です。
言い換えると、AndroidでもC/C++が動く、って事でしょうね。
LinuxカーネルはCで書かれてるんで、この辺は当然かな。
当然、オーディオやカメラに関してのライブラリも入ってるでしょうから、「ハードウェア抽象レイヤー」より上に来る。

・Android Runtime

恐らく、「仮想マシン」でしょう。多分Java仮想マシンのAndroid版じゃないでしょうか。
スマホで動くアプリはある意味「危険」なんで、ハードウェアを直接操作するより仮想マシンが間に挟まってた方が安全性は高い。
そんなわけで、「ハードウェア抽象レイヤー」に被ってる。そしてカメラやオーディオも「直接操作する」んじゃなくってここから指令を出すようになってるんでしょう。

・Java API Framework

まあJavaのライブラリでしょうね(笑)。Androidに特化した。
ここでスマホ用のツールが色々と取り揃えられてるでしょうから、ここを経由して下の層を叩く。
よってNative C/C++ LibraryとAndroid Runtimeの上に被ってる。

・System Apps

ソフトウェアです。Systemって付いてるんで、「デフォルトで工場出荷時に搭載されてる」ソフトウェアの事ですね。電卓とか。カメラ操作とか。そういうヤツ。

まぁ、大した事書いてない、ってば書いてないでしょ。
ただ、KotlinでプログラムするのはSystem Appsより上の層になる、って事でしょうし、そこに行くまで「5層」あるよ、ってだけの話ですね。
地層みたいなもんです。System Appsが来てやっと地上に出る。
貴方の作業場は「地上」です。

> 書籍としては
> Androidアプリ開発 Kotlin編 秀和システム
> Kotlin入門 カットシステム
> Kotlinハンズオン 秀和システム
> も買っています。

なるほど。
取り敢えず入門を・・・って言いたいトコなんだけど、正直言うと、カットシステムとか秀和システムの本ってあんま(苦笑)。
特に、カットの本って割に「辞書」っぽくないですかね?偏見かもしんないけど。
索引的に調べる時は重宝するけど、「プログラミング言語入門」として「通読」する分には・・・って本があそこだと多い気がします。
気がするだけだけど(笑)。
でも「そっちの本」読んでも良く分からない、ってぇのならあんま良い本じゃないんじゃないかな・・・。

> Kotlinはバージョンがいろいろあって
> 日々改良がなされています。そのせいで1週間後に作ったものが
> 動かなかったりと。笑!
> Kotlinで動いてもAndroidStudioに持ってくると動かないこと(閉じてしま> う、閉じなくても実際動かないこと)があまりに多いです。

そんなに開発が活発なんですか。
まぁ、一般的にはいい事、なんですけど、「仕様がない言語」ってある意味そこが大変ではあるんですよね。
例えば「C言語」。言語仕様の改訂は大まかに10年に1度、なんですが。10年に1度起こる「改訂」に備えときゃいいわけですが。
ところが「仕様がない言語」だといつ変更が来るのか分からない、って弱点がある。
「仕様がない」からしょーがない、んですけどね。

ただし、です。
1週間前に組んだプログラムが今週は動かなくなってる、ってぇのはあまり無いですね。いくら開発が活発でも。
良くあるオープンソースのプログラミング言語の開発モデルとしては「安定版(Stable)」と「開発版」(あるいはNightly Build版・・・夜間製作版)をリリースする、ってのがあります。
安定版はそのまま「あるヴァージョンの最終版」を意味してて、通常はこっちをインストールして使います。ヴァージョン番号はそうそう上がりません。調べてみるとKotlinの最終版(2022年6月発表・1.7)とその前の版(2021年11月・1.6)のリリース間隔は約半年、です。それ以前でも1年、とか言うリリース周期になっている。
つまり、いくら何でも「1週間」ってのはあり得ない。
と言う事は、貴方が何かで間違って「安定版」じゃなくって「開発版」をインストールした疑いがあります。開発版なら「一週間」どころか、「毎日」でさえヴァージョンが上がる可能性がある。
「開発版」と言うのは、Kotlinのエキスパート達に「最新機能を試してもらう」のと「デバッグをお願いする」目的で存在する。つまり、開発版をインストールしてたら「プログラムが上手く動かなくなる」ってのは大前提なんです。
インストールしたKotlinが安定版なのかどうか調べてみるべきかもしれません。

> 全くイメージがわかないのは
> コンストラクタ
> バッファー
> ストリーム
> コンテキスト
> アダプタ

・コンストラクタ

「コンストラクタ」ってのはここでは多分オブジェクト指向の用語でしょう。
CもBASICもオブジェクト指向言語じゃないんで。
コンストラクタは日本語に敢えて訳せば「構築子」かな?オブジェクト指向で作ったデータを「生成」する時に使う「機能」です。

・バッファー

一般にはメモリの一部、保管用途に使われる領域の事です。

https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83 …

・ストリーム

これは難しい。
2つ意味があって、1つ目はコンピュータの「入力」からやってくるデータの事、あるいは「出力」へ送り出すデータの事を言います。
もう1つは、Javaなんかの新機能で遅延評価用のデータ型の事を指します。

遅延評価:
https://ja.wikipedia.org/wiki/%E9%81%85%E5%BB%B6 …

この2つは文章の内容に於いてどっちを指すか考えないとならない・・・多分、Javaベースの言語なんで後者じゃないかな、とは思うんですけどね。

> コンテキスト

英語だと「文脈」って意味なんですけどね。多分これの事?

https://mgre.co.jp/blog/9776

ちなみに「抽象クラス」とは、スーパークラスに「なる」事だけを目的として作るクラスの事です。

https://www.sejuku.net/blog/22689

・アダプタ

これのことかな?

https://ja.wikipedia.org/wiki/Adapter_%E3%83%91% …

> Spannable型とAppendable型がわからない。

これ?

スパン:
https://developer.android.com/guide/topics/text/ …

Appendable:
https://developer.android.com/reference/java/lan …

Kotlinのリファレンスって日本語完訳されてないのか。
そりゃなかなか厄介だ。

ん〜、でもザーッと貴方が感じてる疑問点を見てみると、プログラミング言語の一般知識がどーの、ってぇんじゃなくって「Javaの知識がない」って言った方が正しい気がする・・・何だろ、Java「用語」がポッと出てきて、それに困惑してんじゃないか、と。
逆に言うと貴方が買って読んでる本が「要Java」になってんじゃないのかな。所与の知識として「Javaを知ってる事」ってのが前提になってる気がします。
あんまそれらの本の書き方が良くないね。
もしだったらネットで軽くJavaの知識補完してもいいかも。
    • good
    • 0
この回答へのお礼

ありがとうございます。
感謝してもしきれません。

お礼日時:2023/06/19 21:09

全然Kotlinは知らんのですが。


ただ、

> Android Studio 難しい

ってのは範囲が大雑把過ぎるんで、誰も答えられないんじゃないかな。
どこで躓いているのか、的確な場所を提示しないとレスは付きづらいと思います。
ただし、実の事を言うと、「プログラミング関係の本」は編集がいい加減なケースが圧倒的に多いんで、貴方に限らず「読んでもなるほど良く分からん」と言う事は結構あるんで、貴方のせいじゃない可能性も高いです。
IT関係の出版、って結構いい加減なんですよ。

> 私の推察では、基本的なコンピューターの仕組みの基礎知識が全くないと思います。

いや、全然。むしろそう考えるとドツボにハマる。
ハッキリ言っておきますが、「コンピュータの仕組み」を知らんでもプログラムは書けます。多くの人が勘違いしてますが。
と言うより、「コンピュータの仕組みを知らなくてもプログラムが書ける為に」高級言語、と言うモノがあるんです。
高級言語をどう使うか、と言うのと「コンピュータの仕組みを知る」ってのは全く関係がありません。高級言語はむしろ「コンピュータの仕組みを隠蔽する為に」存在してるんです。
Kotlinも高級言語です。だからその辺は忘れる事。
むしろ、KotlinはJava仮想マシン上で動く言語なんで、抽象化レベルはハードウェアを直接叩くレイヤーよりも遥かに高いトコにあります。
従って、「コンピュータの仕組みを知らねば!」ってのは間違った方向ですね。階段登らなアカンのに逆方向に階段を下りる事になっちまう。

> BASIC はN88BASIC VisualBASIC98
> C言語 は QuickC VisualC98
> をやった程度の初心者です。

十分でしょ。
むしろ「エキスパートです」って言われた方が困ったりして(笑)。
まぁ、ザーッと調べたカンジ、Kotlinはそれらの言語より遥かに高抽象度です。
だから「全くプログラミングの経験がない」つもりで取り組んだ方がいいかも。
Kotlinは調べた限り、関数型言語の影響が大きいのかな。
例えば。

val answerString: String = if (count == 42) {
 "I have the answer."
} else if (count > 35) {
 "The answer is close."
} else {
 "The answer eludes me."
}

こんな書き方が出来る。これはCで言うとそのまんま

char* answerString = if (count == 42) {
 return "I have the answer."
} else if (count > 35) {
 return "The answer is close."
} else {
 return "The answer eludes me."
}

って事なんだけど、当然そんなのはCでは許されないし、BASICでも許されないでしょう(※1)。
言い換えると「CやBASICより遥かに強力で記述に自由度がある」言語だ、と言う事です。
むしろCやBASICの知識は邪魔でさえある。
心機一転、「今から初めてプログラミングを学ぶ」くらいのつもりでいた方がいいんじゃないかな。
経験上、高抽象度のプログラミング言語を学ぶ際には、「CやBASICの知識は邪魔になります」。だからホント、エキスパートじゃなくてむしろ良かった(笑)。

他にも

・匿名関数
・高階関数

と言う「CにもBASICにも存在しなかった」機能があり、これがプログラミングをむしろ簡単にするんだけど、「CやBASICをなまじ知ってると」理解を妨げます。
だからまぁ、Javaベースではあるけど、ザーッと見た限り関数型言語(Lisp、Haskell、OCaml、そして驚くべき事にJavaScript)にむしろ近い言語でしょうね(※2)。
多分。

いずれにせよ「Androidアプリ開発の教科書 Kotlin対応」って本がムズいのなら・・・っつーか、「Kotlin入門」じゃなくって、何らかのプログラミング言語の経験がある前提で「Androidアプリ開発をいきなり行う」のがムズい、って事なのかもしんない。
と言う事は最初に「Kotlin入門」的な、Androidアプリ開発が全く関係ない「言語の入門書」を先にやった方がエエんちゃうかいな。

Amazonで適当に検索して、

https://www.amazon.co.jp/s?k=kotlin&i=stripbooks …

書評見て気になった本を買ってまずはやってみればいいかも。
あえて言うと、買うなら「洋書の翻訳本」の方がいいです。
上にも書いたけど、原則、IT関係の出版物って言わば「同人誌」なんですよ。「何でもいいから原稿が持ち込まれたら出版しちゃう」って恐ろしい事やってる率が高いんで・・・(翔泳社はその中ではかなりマシな出版社ですが)。
洋書の翻訳本を薦めるのは、「本国でダメだ、と評価されたクソ本」をわざわざ翻訳・出版しよう、ってヤツはいないから、です(笑)。つまり「翻訳」を決断した時点でオリジナル本の評価は既に高い、てのが理由です。
だからKotlinの入門をするにも、洋書の翻訳本を頼った方が良い結果になるだろう、ってのが唯一出来るアドバイスかな。

そんなトコです。

※1: Cで該当するのは

char* answerString = (count == 42 ? "I have the answer." : (count > 35 ? "The answer is close." : "The answer eludes me."))

と言う三項演算子の組み合わせになるだろう。

※2: ここに挙げた名前の言語をザーッとでいいんで「Web検索」で調べてみる事。
プログラミングの場合、「覚える」事よりも「検索する」事の方が重要。言っちゃえば、「考える能力」さえ要らない。とにかく「検索する能力」が一番重要だ。
それが教えて!gooのプログラミングカテゴリでのたくっていて得た結論だ。とにかく「プログラミングが出来ない」と言う人は、まずは「検索能力がない」。
「理解出来るまで検索しろ」たぁ言わないけど、圧倒的に検索が下手クソな人間は「プログラミングが出来ない」んだ。
よって「何か疑問に思ったら」とにかく検索する習慣を付ける事。「分かるまで調べろ」とは言わない。ある時点で「分からなかったら」とりあえずそんなモンか、で流す。何度も同じワードを検索してるウチに「嫌でもその概念を知る」ってのがキーで、結果それが「検索能力」を上げるんだ。
覚えなくていい、考えなくていい、でもプログラミングに必要なのは「検索」なんだ。
    • good
    • 0
この回答へのお礼

回答ながながと本当にありがとうございます。感謝します。
補足をアップします。

お礼日時:2023/06/19 10:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!