やる気があるときにめんどくさいことを整理しておく重要性

倉下忠憲さんの「すべてはノートからはじまる」にこんな一節がある。

特に意欲が高まっている序盤であればあるほど、実行に移したい気持ちが強まり、ノートなんて書いていられるかという気持ちが強まります。

まさに今アプリづくりでその問題に直面している。

Vue.jsという自分にとっては新しいフレームワークを使い、Atomic Designなる耳障りのよい設計技法を取り入れながら、最終構想を頭の中に置きながら徐々に具体化していったアプリケーションだけど、高々最終更新から3か月たって覗いてみたら、もう全くわからないではないか!また、あの頃は自信満々に書いていた書き方も、今見ると稚拙に見えてしまう...

それは、過去の自分に正しく突っ込みが入れられるという意味で、自分が成長したという風にも言えるのだけれども、成長しただけでコードが直るかといわれるとそんなわけはなく。結局、未熟なコード(当時の最適解は大抵今の最低限である)といくつかのわかりにくいコメント(過去の自分は得てして今の自分には理解できないものだ)しか残っておらず、再構築や修正は困難を極めるのであった。

つまり、今の自分のやる気では、自分の生み出したソフトウェアに対してノートを書きはじめることすらできないのである。

では、アプリを作り始めた時の自分にその設計思想をノートに記すだけの気持ちがあるかというと、それは冒頭の引用の通り全くないといっても過言ではない。

そんな怠惰な僕らはどうすればいいのか

それも倉下さんの本に何度も出てきているが、ノートである。ノートに記せないなら、 ノートを作るだけでもいいではないか。

倉下さんは本の中でノートというものの定義をかなり拡張し、全ての記述物≒ノート、と定義づけているが、「ノートを作るだけ」というのはアナログノートではかなりハードルが高い。そのハードルの高さを見込んでか、冒頭でノートに関して「不真面目に」使うことを提唱しているが、さすがにいくら不真面目にと言われても物理的なノートの最初のページだけ使ってあとは使わないという事象や、一つのノートに(本当の意味でのじゆうちょうのごとく)複数テーマを盛り込んで記述するのは精神的ハードルが高い。

その点、デジタルノートはその心理的ハードルが低い。白紙ページはなく、いくら増やしても物理的に場所は取らず、あとで修正や検索もしやすい。

そういう意味で、「ただノートを作るだけ」という行為がとてもしやすい。

始めた時点で終わりまで完走できる保証はない

ノートを作ったら、のちの整理がいるのではないか、と考えたけれども、そもそも始めたことを終わりまで実行し、完走しきる保証はない。自分の場合は始めたことの少なくとも50%は続かない(控えめかもしれない)。というより、頭に浮かんだ時点でスタートとするならばその90%以上は消え去る運命にあるだろう。

ただし、その消え去った出来事も数年後に花咲く可能性はあるわけだし、その時点で、表紙に「〇〇ノート」があるのとないのでは障壁が段違いである。過去自分が考えたことであり、少しでもその決定の断片が見えれば、今回の思考にも生かせるわけである。

そういう意味で、たとえ完走できる保証がなくともノートは作っておくべきだ、と思うわけだが、思いつくたびに白紙のノートを買っていたのでは金もスペースも書きこむ鉛筆ももたないだろう。そこで、デジタルノートでまず項目を作って書き出しておくことが重要なのだ。むしろ、完走できる予定がなければないほど、最初のノート書き込みは非常に大きい(主語がでかい)

短くても書くこと

ということで、デジタルノートが使える今、物理的なノートに対する成約はなくなり、明日終わるかもしれない人生をちゃくちゃくと記すこともできます。長さに制約はないですが、(本人が整理整頓を気にしなければ)(私の小学校時代は返事はいいけど整理整頓ができない、でした)、高々数10文字でおわるでしょう。

まとまりないですが、まず書く→そこから育てる、が重要なんですかね。

Twitterの300万だけで政治は動くのか? 其の一

こんばんはー

コロナ一色の世の中ですが、中国はもう一段落ついております。あまりここらへんは報道されていないみたいですね。

さて、本記事はコロナとは全く関係なく、最近Twitterで盛り上がってるタグについてです。

ただ、そのタグの中身というより、その周りをとりまく「Twitterでこんなに意見が上がっているのに世の中変わらないのはおかしい」という理屈が、どれくらい本当なのか検証しようと思いました。

要は、Twitterで盛り上がったら選挙の結果に影響がどれだけ出るのか、を推定したいと思います。

以下、仮定です。

  • データは、平成29年10月実施の衆議院選挙結果および同年都道府県別人口比率を参考。
  • Twitterのタグ数300万=300万人とする。
  • タグ付けしたTwitter民は、前回と同じ投票行動をとるとする。 (投票に行くor行かない、投票先の政党は同じ)
  • Twitter民はどこの県においても同じ投票行動をする。
  • Twitter民の主張は、Twitter民以外の選挙行動には全く影響しない。

さて、この仮定を置いて、Twitter民300万人の内、前回自民党に投票した人の人数が何人だったか、という計算をします。

計算した結果が下記になります。

f:id:Shoriencohol:20200512230638j:plain
雑なエクセル1

一応、順を追って説明します。まず、公開されている投票率と自民党得票率から、Twitter民が全国でどれくらい自民党に投票しているか計算します。

  • 全国のTwitter民中の自民党得票数 = Twitter民 x 投票率 x 自民党得票率

で、全国で75万人!と言われても、全くイメージが沸かないので、東京25区のうちにどれくらいいるかに換算してみました。(自分は都民ではないので、どのみちあまり実感はわきませんが)

  • 東京1区あたりのTwitter民中の自民党得票数 = 全国のTwitter民中の自民党得票数 x 東京の人口比率 ÷ 25

÷25というのがいかにも雑ですが、まあ、仮定自体が「全国民とTwitter民の選挙行動が全く同じ」という雑なものなので、大まかな傾向は表しているんじゃないかと。

そして、出た結果は、1区あたり「小選挙区:3,247人、比例区:2,273人」です。

この人たち、つまり選挙で自民党に投票していた人たちが、そっくり他党に投票するとなると (このタグつけるくらいだから、このタグの政策を打ち出す政党には投票しないと考えてまず間違いないでしょう)、どれくらいインパクトが有るのか!?もしくはないのか!?

平成29年度の東京比例区の惜敗率96% (つまり超僅差) の争いでの票差をみると、だいたい3,000票くらいです。

つまり、ものすごく単純計算ではありますが、Twitter民の300万票が選挙結果に与える影響は、極めて少ない、ということになります。

仮定の穴

ただ、この結果には色々と穴があります。

まず、影響を大きく見る方面でいうと、Twitter民300万としていますが、中にはフェイクアカウントや同一アカウントの複数投稿が含まれているかもしれませんが、それを考慮していません。実際につぶやいている実人数はもっとずっと少ないと考えられます。例でいうと、「炎上している」「バズっている」という投稿の多くは、私のTLには流れてきません。昨日か一昨日時点で300万とも言われるこのタグはさすがに流れてきましたが、有名人でつぶやいて炎上した、などというニュースの投稿は全く流れてきておらず、そんなことからも特定人が何度もRTや引用を繰り返していることが伺えるのではないかと思います。また、300万の中には選挙権がない人も含まれているかもしれません。そういう意味で、300万=300万人とするのは過剰に人数を見積もっている可能性があると言えます。

影響を少なく見る方面でいうと、300万のタグが実世界に与える影響を全く考慮していません。NHKのニュースでも取り上げられたようですが、どのような取り上げ方であれTwitter民以外の選挙行動に何らかの影響を与えると考えられますが、その点は無視。特に、著名人が賛同したことによって、賛成反対、もしくは投票に行くいかないの選挙行動が大きく変わる可能性がありますが、その点は考慮できていません。

もうちょっと影響を大きく考えてみよう

上記を考えて、そうは言っても今やテレビでもこのメディアの引用だけでニュースが成り立ってしまうようなTwitter中の一大ムーブメント、そんなに影響力少なくないだろ、ということで、仮定の一つ、Twitter民の投票行動を変えてみましょう。つまり、タグ付けした人は全員選挙に行く、ということにします。とすると、下記のような結果になります。

f:id:Shoriencohol:20200512233228j:plain
雑なエクセル2

出た結果は、1区あたり「小選挙区:6,048人、比例区:4,235人」です。

これであれば、惜敗率96%の議席はひっくり返せるので、それなりにインパクトはありそうです!

単発じゃ政治は変えられない

インパクトがあるからめでたしめでたし、という話にはならないと思います。では、この一回の選挙行動を覆し、数議席確保するために政治家は力を注ぐのか、という点に注目です。

私の現在の視点で、政治家は得票率を最大化するという勝利条件のもとでゲームをやっている、というものがあります。国民の生命に関わる政治というものをゲームと捉えるのはいささか不謹慎ではありますが、ただ、そう考えると説明がつく行動があまりにも多いのでこの考えに至っております。その観点で、この問題に対しても考察したい。

今回、給付金関連で30万円条件付き給付が10万円全員給付に変わりました。これは、私が見る限りは、金額の大小はあれど、今回のタグレベルで多くの人が主張していたものです。野党も対案として主張。この変更は、世論の勝利と言われましたが、結局最終的な決断は、政権与党である公明党が自民党に申し入れて決定されている形をとっています。つまり、国民の意見ではなく、あくまでも公明党の意向の尊重です。

その公明党、同じく29年の選挙での比例得票数はどれくらいかというと、約650万票。Twitter民の倍以上の戦闘力があります。しかもこの650万票の強いのが、おそらく次回の投票行動も変わらない、ということです。Twitter民は次回の選挙行動は変えるかもしれないが、その次の選挙ではまたもとに戻るかもしれないし、逆に政治に絶望して投票に来ないかもしれない。それよりは、次回以降も票になる団体の意向に沿ったほうが良い、というのが得票率を最大化する、という勝利条件を満たすためには必須なんだろうと思います。単発より確変ですね。

じゃあどうすれば政治が変わるのか

答えは簡単で、Twitter民ではない人の投票行動も変えさせることです。答えは簡単ですが、実行は極めて難しいと思います。

ここで、これもTwitterでよく言われている文言に立ち返ってみようかと。

「みんな、選挙に行こう」

果たして、みんなが選挙に行くことがどれだけ有用なのか、次回考察したいと思います。

記憶の宮殿 ~ 中国語学習用に新しい部屋を作りました!

こんにちは。今日から深圳も出勤の企業が多くなってきました。

油断しないのは当然なのですが、そうはいっても、だんだんと新型ウイルスの侵食から日常を取り戻しつつあるな、と感じます。

さて、記憶の宮殿を使ってMemory LeagueのIMAGESを毎日やることにしました。

進歩が早いのか遅いのかは全くわかりませんが、三日目で16枚暗記できました! ( 開始時は12枚 )

f:id:Shoriencohol:20200218011756j:plain

自宅を元にした記憶の宮殿は、30ほどのポイントを設置しているので、なんとか早いところ30枚 ( 10レベル ) をクリアしたいと思っています。

。。。と、ここで問題が発生しました。

本来やりたかった目的である中国語学習に使える部屋がない!!!

いや、これ何が問題かというと、このまま行くと自宅ベースの記憶の宮殿を広げることと、Memory Leagueのトレーニングが楽しすぎて、本来の目的見失うんじゃないかな、と。

いきなり語学学習に使うのもどうかと思いますが、ものは試しということで、語学学習用の部屋を作ることにしました。

中国語学習に記憶の宮殿を使うことについて

ここから先は、完全にトライアル感覚です。やり方が正しいのかもわかりません。

ただ、パーッとググった限り、語学学習、特に中国語学習用に特化した記憶の宮殿の構築法や活用法に関する記事があまり見当たらないのと、中級レベルで3000と言われている中国語 (に限らず英語でもなんでも) をフルで保持しておく宮殿を構築するのは途方もなく時間がかかるため、私なりに工夫していろいろ試してみようかなと思っています。

教材の選定

今回、手元にあった中で、この教材を選定しました。

www.ask-books.com

なぜこの本にしようと思ったかというと、

  1. 中国語と日本語が対訳になっている。
  2. 単語だけではなく文になっている。
  3. 初級なので簡単。

という3点が揃っているからです。これらは、覚えたい対象をイメージ化するために、特に初心者の自分にとって非常にありがたい点です。

教材に合わせて宮殿を構築

この本なのですが、1ページあたり10例文ほど載っているため (表:日本語、裏:中国語)、イメージ設置点を10ポイントを設定した小さな部屋を構築しました。元は、日本の自室で4畳半程度の広さです。

要は、この部屋の中に1ページ分のイメージを設置し、ぐるぐるぐるぐるぐるぐる・・・と回り続ければ、1ページ分の単語もとい短文が覚えられそうだ!というわけです。

中国語のイメージ化

英語のイメージ化について、語呂合わせの方法や、知ってる単語に分解して組み合わせ、などの方法が紹介されています。ただ、中国語に関しては、この方法は単純に使えないと思っています。なぜなら、カタカナ中国語は全くと言っていいほど中国人ネイティブに通じないからです。それは、私の経験上は四声と呼ばれる発音のためと思われます。*1

また、御存知の通り中国語は漢字ですので、そちらもセットで覚えなければなりません。(ただ、漢字であることはイメージ化にはプラスになると思いますが)

そのため、イメージを作る際は下記を注意しました。

例えば、《吃一碗饭》という文を例にすると、

  • 意味がわかるようにする。 → 一杯のご飯を勢いよく食べている。
  • 漢字がわかるようにする。 → 器に"碗"の字が掘ってある。
  • 発音がわかるようにする。→ 食べてる人に音声をしゃべらせるのと、→ ↘ ⤴ ↘ という矢印をイメージして動きをつける。

一番下はよくわからないかもしれませんが、イメージが沈んだりはねたり飛んだりするように動きをつけてみました。もちろん、頭の中でですが。

部屋の使いまわしをしたい!

上記までができれば、おそらく10単語までは発音、漢字含めて覚えられそうです。ただ、今回の目的は数千単語を覚えること。そのために部屋を作っていたら大変なので、この部屋を使い回すことにしました。

こんな小さい部屋を使いまわして本当にいけるのか?というのが怪しいですが、ちょっと考えがあるので、試してみて良さそうだったらまたまとめたいと思います。

部屋の場所

あと、これは関係ないですが、勉強用に使う部屋ですが、宮殿はなんとなく全部つなげておきたいので、最初に構築した宮殿の部屋の真ん中からエレベーターでこの部屋に行くイメージにしました。なんとなくこもる感じが集中できそうなので。

できれば、精神と時の部屋みたいにこもると時間の進みが遅くなると最高なんですが笑

終わりに

ということで、今回は中国語学習用の下準備をしてみました。実際2ページほどやってみましたが、なかなかいい感じです。

このまま記憶の宮殿の育成と語学学習を並行して続けて、うまいこといきそうだったらまた書いてみたいと思います。まあ、できなかったらできなかったで書いてみたいと思います。

ではではー

*1:ここらへんの理屈は探せば詳しい記事がありそうなので、あまり言及しません。あしからず。

「記憶の宮殿のトリセツ」を読んで記憶の宮殿を使い始めました

こんにちは!相変わらず中国は自宅待機が続いていますが、深圳から動かなかったおかげでようやく明日から出勤できそうです。

自宅にこもっているので、思う存分読書を楽しんでいるのだけど、読んだ端から内容を忘れてしまうので、そんな流れから記憶術に手を出し始めました←雑

ということで、それに伴って購入した「記憶の宮殿のトリセツ」という本を読んだ感想と、著者のHiRoさんとメールのやり取りを今回は書きたいと思います。

※ちなみに、本記事は記憶の宮殿のテクニック ( 場所記憶法 ) そのものには触れていません。記憶の宮殿については、本書の著者であるHiRoさんのブログが非常に詳しいので、そちら、もしくは記憶術関連の書籍を参照していただくほうがいいと思います。

記憶の宮殿

f:id:Shoriencohol:20200216231908j:plain

記憶の宮殿という言葉は、だいぶ前に読んだ「ごく平凡な記憶力の私が1年で全米記憶力チャンピオンになれた理由」という本で知っていました。

ただ、この本は、記憶術というものが一般的で誰でもできる、ということは書いてあるけれど、記憶術のテクニックを伝授する本ではないため、その構築の仕方や特訓方法については詳しく言及されていませんでした。また、原著が日本語ではないこともあり、登場するテクニックにピンとこず、当時は「ふーん」で終わっていました。

で、いまさら思い出して、「記憶の宮殿」という言葉をググってみたわけです。

記憶の宮殿のトリセツ

そこで、下記のブログに行き当たりました。

memory-kioku.com

このブログには記憶の宮殿の作り方やコツ、トレーニング方法などが非常に詳しく書いてあり、「え?これ無料でいいの!?」って感じるレベルです。

・・・と思っていたら、本も書かれているとのことなので、早速購入してみました。

memory-palace.booth.pm

本の中では、ブログ内で紹介されている以上に細かく記憶の宮殿について記載されていました。特に、ここが特徴的だと感じたのが、下記の3点です。

  • 記憶の宮殿の作り方の例が自宅ではない
  • 記憶の宮殿の育て方が記載されている
  • 記憶の宮殿の応用ではなく作り方・育て方に特化

それぞれの特徴について説明していきたいと思います。

記憶の宮殿の作り方の例が自宅ではない

記憶の宮殿の話が書いてある本や記事を見ると、大抵「身近な自宅から」と初めに書いてあります*1。ただ、この本で最初に例として取り上げているのは、「外国人の人気スポットNo.1」という理由で、伏見神社です。

確かに、鳥居や狐の石像など記憶に残りそうなポイントが多くあり、イメージ記憶という記憶の宮殿の本質にピッタリの場所だな、と感じました。

それ以上に感じたのが、単に有名な場所だからここがいい、という説明ではなく、「自分で気になったポイント」として、石畳のちょっとした違いの部分や電話ボックスなどを例に上げているところです。要は、自分なりのポイントを発見することの楽しみが非常に強調されています。これを読むと、「記憶の宮殿を構築する」という行為自体が楽しく感じられます。実際に読後、「ああ、旅に行ってこんな感じで風景眺めて頭の中で「宮殿」として残しておけたら、すごく楽しそうだな!」と強く感じました。

結局、私は例によって例のごとく自宅から記憶の宮殿の構築をはじめましたが、その後、記憶の宮殿をどうやって広げようか、と考えるたびに、玄関の扉を開けるのが楽しみになりました←大げさだけど本当

記憶の宮殿という記憶術が、単なる技術ではなくそれ自体が楽しいものだと感じさせてくれる点で、本書のこの特徴は大きいです。

記憶の宮殿を育てる方法が記載

記憶の宮殿の作り方について言及している本や記事は何度かみましたが、「育てる」ということにここまで言及しているものはないかなと思います。

特に、

  • 記憶の宮殿をただ周回する
  • 記憶の宮殿にただイメージを置いてみる
  • それぞれのタイムを測る

というトレーニング方法は斬新でした。なんといっても、このトレーニングでは記憶術であるにも関わらず全く記憶しないからです!

実際、Memory Leagueで画像記憶などをやってみると、記憶の宮殿を周る速さとイメージを置く速さは重要になってくることが身にしみてわかりました。

また、育てた記憶の宮殿を、一軍、二軍、三軍、ルーキーなどと分類しているのも興味深いです。一軍レベルの宮殿があってこその記憶の宮殿であって、三軍レベルではできることは限られている、というニュアンスでバッサリ「記憶の宮殿は用途が限られる」という主張を切り捨てています。

自宅をベースに記憶の宮殿を構築してわかりましたが、自宅の中でもポイント間をスムーズに移動できるところや引っかかるところ、またイメージを置くときに手間取るところなどがあります。そこを、「まあこんなもんだろ」と放置するのではなく、ここを「あーここはまだ鍛えどころだからな!」と思わせてくれたのがこの宮殿のクラス分けですね。

つまり、記憶するにも基礎体力(脳力というべきか)が必要であり、記憶以外のイメージ力をきちんと育てなければならない、ということが、その鍛え方を含めてきちんと述べられています。

この記述に触れたことで、この記憶術を使った競技が「メモリースポーツ」と呼ばれるのも腑に落ちました。

記憶の宮殿の応用ではなく作り方・育て方に特化

記憶術、というとなんとなく怪しく感じるのは、某少年誌によく掲載されていた広告のせいではないでしょうか?笑

実際、私自身も小学校時代に「お前はあの記憶術をやって頭にチップが埋め込まれている」といわれのない揶揄をされた苦い記憶があります。。。

・・・で、広告は抜きにしても、こういうテクニック本というのは、得てして「お金持ちになりました!」「異性にモテモテ!」「会社で出世しました!」など怪しい謳い文句がギトギトと書いてあるものが多いです。ただし、本書に関しては、さわりで少し記載はありますが、基本的には記憶の宮殿の作り方や育て方に特化しています。

そもそも記憶術を学ぼう、と思い立って本書に行き着いた人は、記憶術を使って○○したい、という欲求が明確だと思うんですよね。私自身も語学学習や読書の充実に役立てたい、という目標がありました。その分、そこらへんの記述がないというのは、逆に本書の良さである(と私が考える)「記憶の宮殿を作ること自体の楽しさ」を強調していると思います。

以上、3つの点で他の記憶術の本と異なっていて、非常に興味深く読ませていただきました。

著者に質問してみた

で、本の最後にメールアドレスの記載があったので、本書や(おそらく)ブログでも触れられていなかった点を、厚かましくも質問してみました笑

な、なんと!メールしたその日に返信あり!

その内容について、HiRoさんに掲載許可をいただきましたので、以下に掲載したいと思います。

※個人名以外は原文ママ


Q1. 記憶の宮殿は使い回しが効きますか?例えばTODOリストのように、短期的に覚えておきたいものは何度も使い回すと思うのですが、そのたびに記憶の混乱が起こったりしないものでしょうか?

TODOリストみたいに短期的なものは、復習をしなければ時間がたったら自然と消えていきますが、 使いまわすときは使う間隔をしばらく開けておいた方がいいですね。 間隔が短いとおっしゃるように前のイメージが残って混乱を招きやすいですからね。

できることなら記憶の宮殿を複数作っておいて、一度使ったら数日休ませるようにして、 その間は他の宮殿を使うようにしてローテーションを回せるようにするのが理想的ですね。


Q2. 1つの宮殿に設置するポイントはどれくらいがいいというのはありますか?個人差がありますでしょうか?

何に利用するかにもよると思いますが、個人的には50くらいが理想的だと思います。 50くらいあれば買い物リストなどの記憶にも十分足りる分量だと思いますし、 トランプも1パック、数字も100桁、単語も50語とメモリーリーグの全ての種目にも対応できる分量です。

あまり多すぎても馴染ませるのに時間がかかりますし、修正や改良するときに融通も利きにくくなりますしね。

1つの場所に2つ3つと複数のイメージを置くテクニックが使える場合は1/2,1/3に減らしてもいいと思います。


Q3. Memory LeagueのImage記憶で、初心者が目指す一旦の目標レベルはありますか? 記憶の宮殿を今日から使い始めて、いったん12枚まではほぼ記憶できることがわかりました。

う~ん、レベル8~10くらいですかね? IMAGESは他の種目よりも比較的難易度が低めなので、初心者の方でもレベル8くらいは狙いたいところですね。 ただshorieさんの場合は、今日からやりはじめてすでに12枚までいけるとのことなので、レベル10は十分に狙えると思います。 初日から12枚もいけるのでポテンシャルも高いものをお持ちだと思いますし、 記憶の宮殿が馴染んでくればもっとスピードや精度も上がってくると思います。 ぜひとも30枚パーフェクトを目指してほしいですね!

すでに30ほどポイントを作っているとのことなので、タイムを2分とか3分とか長めに設定して、30枚全部記憶する練習をするのもいいと思います。


て、ていねいだ。。。。素直にちょっと感動しました。

超初心者の稚拙な質問・疑問点に丁寧に答えていただき、非常にありがたかったです。

特に、Q2の「ポイントを多くしすぎても育てるのに時間がかかるし修正が大変」というのは、まさに本書の「記憶の宮殿を育てる」というテーマと合致しており、大変参考になりました。

終わりに

ということで、自分の中の記憶の宮殿、育てていこうと思います。

ちなみに、Memory Leagueの現時点でのスコアは、

  • IMAGES: 14枚/min
  • NUMBERS: 18桁/min

です。どこまでのばせるかなー。

ではではー

*1:本の中で自宅から記憶の宮殿を作ることを否定しているわけではなく、むしろ「まずは自分の部屋がおすすめです」と書いてあります。先に紹介したブログ内でもそうおすすめしてありました。

中国国内でKindle paperwhiteを購入し日本書籍ダウンロード→端末転送できました

こんにちは。

世間は新型コロナウイルスで大騒ぎですが、前回の記事でも書いたように深圳はある意味平和です。ただ、春節は2/9まで延長になり、外出も基本は控えるように言われており、厳戒態勢は続いています。

そんなわけで、時間は山ほどあるのと、今年に入ってやたら読書欲が高まっているので、Kindle端末が欲しくなってしまいました。

スマホ、タブレットともに所有の身としては、「それでいいじゃん」という気もしますが、Kindle端末とそれらの決定的な違いは、

本しか読めない!

これにつきます。これに、読書に集中できるとかそんなハック的な利点を述べるつもりはなく、ただこの一点、

子どもに取られない!!!

これが大きいです。スマホ、タブレット、果てはPCなど、画像・動画・ゲームの機能がついているこれらは、子どもに強奪されるリスクが高く、また頻繁に使い方などのアドバイスを求められます。落ち着いて本など読んでる場合じゃありません。

で、(マンガを入れない限りは、という注釈付きですが)文字しか読めない端末を手に入れることが急務となりました。

立ちはだかる壁

実は、Kindleほしい欲求は中国来てからずっとあったのですが、立ちはだかる壁が下記の二点。

  1. Kindleの日本語対応端末が手に入りにくい。

  2. Amazonの日本サイトはVPNなしではつながらない。

でした。1を何らかの方法でクリアしても、中国国内のネット環境でAmazonの日本アカウントにログインできるのか、これが決定的に不安でした。

とりあえず買ってみて、そして使えた!

ま、不安がありましたが、とりあえず実行することにしました (なぜ)

そして、結論としては、できました!

以下、その顛末を書こうと思います。

※最低限、VPNの契約は必要です。

まずは購入

まず、実店舗での購入は無理なので、ネットで探索。当然こういうときにみにいくのは淘宝ですね。昔は淘宝といえば偽物だらけで有名だったようですが、今は"天猫"という別ブランドもあり、割と落ち着いてるイメージがあります。とはいっても、似たようなサイトの京东と比べると「え?こんなの買えるの?」というものも数多くラインアップされていて、今回のミッションにはぴったりですね。

で、Kindleで検索して、特に迷うことなく下記を発見。赤字の部分に「日版」「正品」と書いてあるので、日本版の正規品、ということだと思われます(知り合いの中国人にも一応確認した)。Kindleで検索すると山ほどこういう店舗があって、いいか悪いかは別としてさすが淘宝ですね。

f:id:Shoriencohol:20200204113359j:plain
淘宝検索結果の一例

山ほどある=悩む、なんですが、とりあえず良さげですぐ手元に来そうなやつをポチりました。

届いた!

コロナウイルスの影響あるかな?と思ったら、店舗が深圳で、次の日には届きました。さすがネット通販大国中国。

f:id:Shoriencohol:20200204114614j:plainf:id:Shoriencohol:20200204115031j:plainf:id:Shoriencohol:20200204115108j:plain
梱包状態はかなりいい感じでした。箱にも日本語が書いてあり、日本版っぽい。あと、やたらおまけがついてきます (使えるかどうかは別として)。

そして、緊張の電源オン!…ちゃんと日本語が選択肢にある!

f:id:Shoriencohol:20200204115737j:plain
中国語もあるから設定すれば中国語も使えるのかな?

ということで、無事に第一の壁「Kindleの日本語対応端末が手に入りにくい」はクリアしました。

まあ、こんなことしなくても、日本に帰省したときに買う、香港で買う、などの選択肢はありますが、コロナウイルスのことを差し引いても元来の出不精であり、中国国内で完結できるか、という実験も含めてこういうやり方をとってみました。

セッティング

さて、次の壁は無事にログインできるか、というところですが、これについては事前調査である程度できそうな予感はしていました。それは、タブレットのアプリでVPNなしで接続した場合、本のダウンロードはできないけどサムネイル画像の更新まではできたので、amazon.co.jpのサイトに読みには行ってアクセスはするけど、そのあと読み込みほかでブロックされる、というような感じかなと。中国の金盾の仕組みはよくわからないのですが、他のアプリなどの状況を見ると、どうやらアプリなどのAPIまではブロックしている感じではないです。その証拠に、なにかのサービスで「Twitterに投稿」みたいなのを予め設定しておけば、連携でTwitterに自動投稿されることが確認できていました (様々なサイト・サービスを試したわけではないので不確定ですが。)

ということで、Kindle端末からamazon.co.jpへのログインは、きっとこの抜け穴的な点に該当すると考えたわけです! (不確実!!)

ログイン

実際にwifi接続してログインしました。信じられないくらいあっさり行けました。なのであっさり書きます。

f:id:Shoriencohol:20200204121303j:plainf:id:Shoriencohol:20200204121443j:plain
「こんにちは○○さん」と言われたのでログイン成功。

ちなみに、先程言及したように、サムネイルまではサーバーにアクセスしてゲットしていたようです。自分の本棚さらすのはちょっとあれなので載せませんが(といいつつブクログやってたりするので矛盾)。もちろん、下の写真のようにダウンロードはできません。

f:id:Shoriencohol:20200204122259j:plain
待てど暮せど待機中

端末に書籍を移動

実際ログインするまでが山場だったので、あとは下記手順でできますね (雑)

  • VPN接続したPCでamazonのサイトに移動
  • コンテンツと端末の管理画面から、移動したい本に対して「ダウンロードしてUSB経由で転送」というコマンドを実施
  • Kindle端末をケーブルで接続し、Kindle内の"document"フォルダにダウンロードしたファイルを移動

ただ、「ダウンロードしてUSB経由で転送」というコマンドがKindleアプリに対しては実行できないようで (利用できる端末がない、的なエラー画面が出る)、試したのは端末が手に入ってからでしたが。あと、転送って言ってる割に転送は手動です笑

f:id:Shoriencohol:20200204124030j:plain
左がダウンロードしたファイル。右がKindle。右の、documentフォルダに移すと端末で本が読める。

その他

  • この方法で端末に移動した本については、ハイライトの同期などは実施されません。というか、されるかどうかVPN経由の接続ができないため試せません。香港or日本で試してみようかと思います。
  • Kindle unlimitedの本をこの方法で端末に移動すると、10冊の制限を難なくクリアできます。(下記の記事参照) 単に推定ですが、Amazon様は端末買ってくれた人にはこっそりこの機能を提供しているのではないか?と思ってます。

【追加料金なし】キンドルアンリミテッドで10冊以上の本を無限ダウンロード&永久保存する方法を解説します | 脱完璧主義日記

ということで、しばらくはこの端末で読書ライフを楽しみたいと思います。ではではー

深圳にいますがいたって快適です

日本のものも、中国のものも、テレビは全く見られず、中国の情報も政府の公式発表を頑張って読むくらいです。そこで得られる情報は

  • 接触感染と飛沫感染で、空気感染はない
  • 日々感染は拡大してるが、武漢関係者以外の広がり方は限定的
  • 致死率はどんどん下がっている

といったところですかね。

そして、深圳で活動して感じることは

  • マスクはどこも売り切れ。近くの薬局は聞かれまくるからか「口罩,酒精 无货 (マスクとアルコール消毒液は売ってません)」と巨大な字で書いてある。
  • 野菜などの物資は本日1/31くらいからほぼ正常運用。
  • みんな(マスクはしてるけど)普通にバドミントンとかやってる。

まあ、当たり前なんだけど、みんなウイルスがあろうがなんだろうがご飯を食べて、遊んで、仕事して、生活しなければならない。

ウイルスが広がろうがなんだろうが、対策は、

  • マスク着用
  • 不要不急の外出は避ける
  • うがい・手洗いの徹底

の基本対策しかないわけだし、それ以上でもそれ以下でもない。

空気感染はしない(と今のところは思われる)ので、必要以上に怖がる必要はない。

ちなみに今の深圳は、人も車もものすごく少なくて、空気はきれいでとても快適に過ごせます笑

【Kotlin】自作Adapterを使用してListViewに自作クラスの情報を表示

こんにちは。

新年あけましておめでとうございます、ですが、深圳は連日昼は20℃を超えるし、長期連休でもないので全く年末年始感がないまま2020年を迎えております。

日本にいるときは1/1は何もしない、と決めているのですが、上述の通り年末年始感がまったくないので、ブログでも更新しようかと思い立ったわけです。

ListViewに独自の項目を独自レイアウトで表示させたい

さて、前回はTextViewをDrag & Dropで動かしてみましたが、最終的に作りたいのがList形式のTodoリストであり、自由なレイアウトでListViewに表示 + Drag & Dropで並び替え、ということを考えると、一工夫が必要なことがわかりました。なぜなら、そもそもListViewにはonDrag的なメソッドが標準でないため、実行するためにはListViewを継承した独自クラスの作成をしなければならないことがわかったのです。

そこまで飛ぶにはちょっと気合がいるので、まずはListViewに好きな項目を表示できるようにしよう、と思い立ったわけです。

BaseAdapterクラスを継承

やりたいことは、

  • 独自クラスを作ってリストに登録
  • 上記クラス用のAdapterを作成
  • ListViewに表示

の3点。BaseAdapterクラスを継承すれば、やりたいことができることがわかりました。

大ハマリ

で、実際に書いたBaseAdapterを継承した独自Adapterのコードが下記。

class MyAdapter(context: Context, private val tl : ArrayList<TodoTasks>) : BaseAdapter() {

    private val inflater : LayoutInflater = LayoutInflater.from(context)

    override fun getItem(p0: Int): Any {
        return tl[p0]
    }

    override fun getItemId(p0: Int): Long {
        return p0.toLong()
    }

    override fun getCount(): Int {
        return tl.size
    }

    override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View {
        var view = p1
        var holder: ViewHolder

        if(view == null){
            view = inflater.inflate(row,null)
            holder = ViewHolder(
                view.taskName,
                view.taskType,
                view.taskLimit
            )
            view.tag = holder
        } else {
            holder = view.tag as ViewHolder
        }

        holder.taskName.text = tl[p0].task_name
        holder.taskType.text = tl[p0].task_type
        holder.taskLimit.text = tl[p0].task_limit

        return view!!
    }

    data class ViewHolder(val taskName : TextView, val taskType: TextView, val taskLimit : TextView)

}

※BaseAdapter継承したところ以外は外でも山ほど解説があるので省略します。

これは最終形なのですが、過程で大ハマリしました。エラーが何も出ないのに、画面に何も表示されない。。。

f:id:Shoriencohol:20200101192750j:plain
真っ白なリストですね。。。

大ハマリしすぎて、初めて質問サイトに投稿してみました。

teratail.com

これへの回答で、一言ありがたい言葉をいただきました。

アダプタの各メソッドが何を返すべきなのかをもう一度ご確認されては如何でしょうか.

むむむ。。。こんな一言で解決するはずが。。。した!!!

問題点1 getView()以外のメソッドを甘く見すぎた

問題は、初期に書いたコードでgetCount()の戻り値を超適当に0にしていたことでした。色んなサイト見て、getView()が難関すぎ、他の関数は適当にoverrideしておけば問題ない、と書いてあったので、超適当にやりすぎた!

BaseAdapterの挙動に関係すると思われるのですが、おそらくgetCount()でListのサイズを取得、0より大きければgetView()を使って処理、という流れと思われます。実際Logをとってみると、複数回getCount()が実行されたあとにgetView()が実行されていますね。まさに、ちゃんとメソッドの戻り値を見直しましょう、ということです。

f:id:Shoriencohol:20200101192350j:plain
getCount()をなんでこんなに何回も実行するのかは不明…

※ちなみにその他のgetItem(), getItemID()あたりは超適当に実装しても何も問題なく。特に、Kotlinはgetterを使わなくても大抵動くので、Java解説だとgetItem()使って取得しているリストも直接ゲットできました。

問題点2 ViewHolderの挙動

もう一つはまったのが、ViewHolderの実装。これも色々なサイトで、「getView()は何度も実施されるため、ViewHolderを実装したほうがいいよ!」と書いてあり、あまり深く考えずに(理解せずに)実装したら全然動かない。意味不明。最終的に、下記のブログを読んで解決。

www.usaco-pg.com

要するに、ViewHolderはView本体じゃなくて、Viewが持ってるtag情報を保持させて、それを書き換えることでリストの内容を更新する、ということですな。

多分、例えばAというtag情報の中には、Aの値が格納されているメモリの位置と、それについている名前が入っていて、名前=○○、とすることでメモリ情報を書き換え、View本体が見に行ったときに中身が変わっている、ということなんでしょうね。(すごく初心者感。。。)

自分のプログラムで言うと、holder.taskLimit.text = tl[p0].task_limitあたりが該当。

最初、なんでholderの値書き換えてるのにviewをリターンするんだ!?と大混乱でしたが、上記の理解(間違ってるかもですが)をしたことで解決しました。

とりあえず、やりたいことはできた

で、実際の表示画面はこんな感じ。

f:id:Shoriencohol:20200101193935j:plain
リスト登録するのが面倒だったので、Hogehoge大量生産。

いやー動いた動いた。よかったよかった。

次にやりたいこと

次にやりたいのは、入力したタスクを追加、みたいなことかな。まあ、簡単そうですね。←フラグ

ではではー