近況スニペット

次は深層学習の復習をさらっとやる。

 

面白そうなのは、ローカルPCのIntelijから、昔買ったGPGPUマシン上でPythonプログラムを書くのと、サーバーサイドをKotlinで書くのと、ディープラーニングのモデルはgRPCにするかとか、クラウドネイティブな環境どうするとか(そもそもいるか?とか)、その辺を探るところ。

「はじめてのAndroidプログラミング 第4版」読了

 下記の本を読みました。

メモがてら感想を記載します。

はじめてのAndroidプログラミング 第4版

はじめてのAndroidプログラミング 第4版

 

 

購入した目的について

  • KotlinでAndroidアプリを作りたい。
  • なるべく最新のAndroid情報が載っている本から、手っ取り早くAndroidアプリを学びたい。

という2つの目的で購入しています。

 

私の事前知識

  • はじめてのAndroidプログラミングの第1版か第2版(まだAndroid Studioがない時代)を既に読んでいた。
  • Androidアプリは4年前にEclipseでゴリゴリ書いたことはある。(少なくともRelativeLayoutをXML定義ではなく、コードでゴリゴリ書いていたくらいのレベル)
  • Javaの知識・開発経験は少なからずある。
  • Kotlinの知識は、下記の本の内容をベースにあらかた全体像は知っているが、実戦経験はない。
    Kotlinプログラミング

    Kotlinプログラミング

     

 内容の感想

箇条書きで。

  1. Kotlinの文法などの説明はあるが、表面的な内容にすぎない。
    → Kotlinについて詳しく知りたければ、別で学習した方が良い。
  2. 全てのAndroidアプリのサンプルコードがKotlinで書かれているので、とても参考になる。
  3. Androidアプリを開発した人にとっても有益な情報が少なからずある。
    → ConstraintLayoutが主流になっている、ListViewはレガシーになってるなど
  4. レイアウト(ほぼConstraintlayoutだが)の設定の説明も分かりやすい。レイアウト用のXMLを直接編集する場面は1つも無かった。(本にもXMLを直接編集するような機会は少なくなるとあるので納得できる)
  5. サンプルコードを、実際に動かす上で問題になった箇所は1つだけアリ。
    → Chapter12のRealmの設定をgradleに記載する際に、gradleのバージョンが3.1だったために動かないところがある。3.2にしたら動いた。
    ※また、サンプルコードを動かすためにエミュレーターは使っていない。全部自機で試している。理由はエミュレーターが遅い(と思っている)から。
  6. KotlinのSAM変換が所々で使わており、これが実装をシンプルにする反面、裏でなぜこう書けるのか理解しておかないと、実践で書く際につまづきそうである。(本当はSAM変換でかけるはずが書かないなど)
  7.  前項とほぼ重複だが、Kotlinでシンプルに書ける分、なぜそうなるのか、考えさせる部分が多い。そう考えた時、Javaの方が機械的にシンプルに書けそうだなとも思った。しかし、これからKotlin Firstの時代にもなるし、モダンな言語だと、こう書くべきなのかと、ある意味、開発者の自己啓発的な面での刺激になるので、自分にとっては苦では無かった。
  8. Kotlinのコルーチンを使って、ネットワークからデータを取得する方法もあるが、それについての言及がないので、残念。
  9. 全体を通して、浅い説明になっている部分については、詳しくは本家Googleの公式ドキュメントを読んでね。みたいな手引きがあってもいいと思った。

以上。

 

追記

JavaもKotlinも書いたことがない初心者には、理解が難しい部分が多く感じる。たぶんサンプルコードに沿って書けば、動くことには動くけど、なぜ動くか理解するまでに結構な時間がかかるか、挫折する可能性があるかなとは思いました。ので注意です。

 

近況

平成最後の月、2019年4月。

 

俺は何をしているのか。

何を目指しているのか、得たいモノ、モノを得るうえで邪魔な障壁など色々書いてみる。

てか、twitterには実はぼちぼち書いてます。

 

得たいモノ

金である(笑)

巨万の富が欲しい()

 

俺の価値観ですが、仕事をする理由は、あくまでも金が欲しいからであって、己の成長には、必ずしも仕事は必要ないと思っています。

大学時代に、一人で仕事をすることの素晴らしさ、何にも邪魔されずに自分の考えに没頭することの重要性、そこから得られる満足感、自分の可能性の限界と、限界を超えるために必要な要素に対する思慮、そもそも人間とは?みたいなところを考えるプロセス≒経験を得られたわけですが、会社に入った途端、そんなものは考えられなくなり、大学時代に得たコアの部分だけが残り、それ以外は退化し、「知識」から消え去り、馬鹿になりましたw

自分は人に配慮するが、さして責任を持って行動する性格でもないため、
人に気を使うものの、結局アウトプット(≒行動)を出さないために、他人から見れば、何をやっているか、何を考えているか分からないような格好になる。いや、少なくとも自分はそうみなしていて、では、どうすればいいのかなどを、残業やスケジュール、人間関係など鑑みながら改善していくってプロセスは面白いですが、そもそもそんな問題すら、もし会社にいる必要がなければ、仕事が無ければ、考えなくて良いはずです。

10年近く会社で働いたし、いつまで会社にすがるのかという疑問すらあります。

でも仕事をしないとお金がもらえません。お金が無いと生活ができないため、金がほしいのです。

Kotlin

さっさと基礎勉強を終わらせたい。今は2つ面倒なプロジェクトを会社の仕事で抱えているため、そちらをプライベートでも優先してしまった結果、Kotlinの勉強は後回しになってしまった。1日30分でいいからKotlinの勉強は続ける必要があると思っている。

Kotlinではないにせよ、自分の目的のために得られる"勉強"時間ってのは1日30分以上とらなあかん。直感的にそう感じている。仕事がいくら忙しくても30分で、過去の知識が現在に紐づく、そして新たな知識と紐づけて応用させる。このプロセスを設ける時間がとても大事なのではないかとしみじみ感じています。

 

機械学習

深層学習は再度復習したい。世の中、ディープラーニングとかいうバズワードで溢れた今、もはや、深層学習を学んだIT技術者はかなりいるだろう。そいつらはなんで深層学習を学んだのか、この文章を書きながら考察すれば、大学の講義であった、仕事で必要になったという動機がメインに存在していて、まずそれが第一であることを願いたい(笑)

大多数は「学ばなければいけない」という状況から学んだと仮定して、その少数派として、面白そうだから学んだという人もいるだろう。自分の危惧としては、その少数派と、大多数の中で「こいつぁー使える、自分の趣味のプログラミングとしても活かせる」って思った人達である。そいつらとアイデアを競い合う必要がある(何を競うかは別途記載する)んですが、それでも勝てると思ってるワシがいる。

なぜかアイデアに自信を持てる自分、面白いですね。根拠が無いのに自信があるってのは、経験から生まれたものなのか、遺伝的なものなのか、って話が脱線ですね。

Androidアプリを作る

作りまーす!でもKotlinと機械学習がまず前提にあります。こいつらが手段で、目標はここなんです。人生なんてゴミみたいにあっという間に終わるでさっさとやりたい。このブログ書いてる暇あるんかってくらい生き急ぎたい。

 

仕事では。。?

結局仕事をしながら上記を行うわけですが、仕事をしている以上、その仕事の時間「全て」が、上記遂行に対して障害になります。

であれば、仕事は効率的に終わらせなければなりません。でも仕事ってのは問題ばっかりあり、次々に発生していきます。仕事は人が創るので結局人災が連続して。。(略)

それらの問題を解決し、しょうもない妥協とか政治、会社というムラ社会でどう何を考えるべきかってところの答えは見つけておきたいところです。

 

特に問題を打破するために以下を強化したい。

  • 何か未知の問題に対し「決定」を下す際に必要な力
  • 自らの承認欲求に従い、それを通す力(所詮、他人の考えなどどうでも良い。自らの承認が間違っていれば自ら正す。他人に従うことで、やるべきことが見えなくなる)
  • 後々、悔やまない選択をする力
  • 仕事という戦争で生き抜く力(PDCAも大事だが、OODAが気になってる)
  • マインドフルネス(フルストレス下で目の前の仕事に集中する「業」を身につける。瞑想って聞くと馬鹿らしいが、「脳という臓器」の観点で、なぜ脳はつかれるのか、集中できないのかとか考えた上で俺は必要と判断)
  • 失敗したら〜思考からの脱却。大多数の人間は問題に対して失敗したらというリスクを考える。考えるだけならいいが、"悩む"必要はない。むしろ成功したらどうしようくらいでベクトルを切り替えるべきである。リスクは"考える"だけ。悩まない。これが狩猟民族たる人間には、できそうで出来ないことなので、乗り越えたいっすねw

 

他には。。?

一杯あります。もうほんっと生きるって大変だけど、金さえあれば、たぶん気楽っすw