海月玲二

以前つけた,ノートに画像を入れられる簡単な機能で,なんと端末をリブートすると画像が見れなくなることに気付いて,とりあえず修正.

ついでに,Content Provider経由のURIではなく,普通にファイルパスを書いても表示されるようにしてみた.こっちのほうが便利なのだが,そうすると共通UIで画像ファイルを選択することができない.というか,共通UIで画像を選択すると,必ずContent Providerを通したURIが返ってくる,というべきか.まあファイルパスがわかってる場合は手で書けばいいのだ.

そもそもContent Provider経由のデータって,読み出しとかの許可はリブートしたら消えるというのも知らなかった.すなおにストレージにアクセスできないので,「インストールしたアプリは基本的に信用できない」という前提のシステムというのは実にめんどくさいね.わけのわからんアプリなぞ入れるほうが悪い,というわけにはいかんのだろうなあ.

カメラからそのまま転送したようなサイズの大きい画像を見ているとき,なんかページ切り替えに妙な間があるように思えたので修正した.

たいしたことじゃないだろうとタカをくくっていたら,意外と調べるのに手間取った.というか,ViewPagerの作りかたが適当なせいでちゃんと先読みできてないんだろうと思ってたけど,別にそういうことではなかったのだ.どうやら,画像の表示に使っているSubsampling Scale Image Viewというやつの特性に関係があったらしい.でかい画像をタイリングするときにタイルの最大サイズが指定されてない状態だと,実際に画面に表示されるまで画像読み込みタスクが起動しないようである.

あと画像表示中に出てるファイル名がずれてるのも直した.これも間抜けな話で,そもそもViewPagerは普通に作っても隣のページのgetItem()が動くことを知らなかったのである.

2019-03-16(土)

無題

気分転換にPCを新調してみた.Ryzen APUで組める超小型ベアボーンということで最近ちょっと話題の,ASRockの DeskMini A300である.

構成は

  • CPU 2400G
  • メモリ 8G+8G (DDR4-2666)
  • ストレージ インテルのNVMe 128GB
みたいな感じ.あとデータ用というか/home用に,前から使ってる1TBのSSDをSATAでつけておしまい.本当に昔と比べるとかんたんになったものだ.

CPUファンはついてきたやつをそのまま使ってるけど,なんかちょっと高音がうるさい気がするので,温度が高くないときは回転数を下げてみた.cTDPで45Wまで下げてるせいか,今のところ問題はなさそうだ.

前のPCを買ってから4年半経っているけど,そんなにすげえ速くなったという気はしない.そもそも重くて困ってたわけじゃないからな.でも,Androidアプリのコンパイルとかエミュレータの起動とかgimpとかは心持ち速くなった気がする.

というかメモリが倍に増えたのが一番楽になった点かもな.前はAndroid Studioとエミュレータとブラウザを同時に起動してると足りなかったからな./tmp用のramディスクも使い放題だ.

ところで,Ryzenなので,linuxカーネルは新しくする必要がある.ちょうどDebianがメジャーバージョンアップでカーネルが新しくなる直前だったのも,移行を決めた要因のひとつだ.正式リリースはもうちょっと先だが,もうほとんど日常的な使用には問題ない.普通にインストールして普通に動いている.ちょっとだけ迷ったのは,AMD APU向けのファームウェア的なやつをnon-freeから入れないとXが起動しなかった点ぐらいだ.

ていうか最近はXではなくWaylandとかいうのにすべきなのかとも一瞬思ったけど,どうもいろいろ調べてみると,今すぐ移行してもまだそんなにメリットなさそうだな.

2019-03-15(金)

無題

国名表記から「ヴ」を消すという話とか,中国の地名を片仮名で表記してるという話とか,そういうので一番問題なのは,「カタカナで外国語の音を近似できる」という思い込みだ.実際にはカタカナ表記された発音は実際の音とはかなり違うので,別にどう書こうがたいした問題ではないし,どう書こうがあまり現地語の発音の助けにはならない.中国語とかカタカナで発音しても絶対通じないぞ.変な期待なぞ持たずに,カタカナなんか好きに書いたらいいのだ.

特に,音の長短(「ー」と「っ」)はたいていの言語で関係ないので,どこに入れようが一番どうでもいい.メジャー言語だとせいぜいイタリア語のとき注意するぐらいか.「ー」はアクセントを表すんだという意見もあるかもしれないが,英語とかのアクセントは長短ではないので,長く発音したところで強くなければ通じないし,強く発音すれば短くても通じる.日本語の文字には強弱を表す記号は無いのだ.

そもそも「ベネズエラ」だの「カーボヴェルデ」だのいうのは,別に現地語ではなくてあくまで日本語の単語なのだ.どの言葉でも,いろんな国の名前をどう発音するかなんてそれぞれ勝手にやってて,どっちみち覚えるしかないだろ?

「ベネズエラ」について言えば,スペイン語はvとbの音は区別してないので,そもそも「ヴェ」だろうが「ベ」だろうが一緒なのである.どっちでもいい.さらに言えば,Zの字はthかsの音になるので,カタカナで書くならたぶん「ベネスエラ」が一番近い.まあ,スペイン語はもともと「子音+母音」の組が多い日本語みたいな発音なので,「ベネスエラ」の「エ」を強く発音しさえすれば,この場合はカタカナ読みでもけっこう通じるかもしれん.

2019-03-04(月)

無題

文科省の大学教育に関する態度で一番問題なのは,「現代日本の大学では,教育活動と研究活動はほぼ全く関係ない」という事実を無視していることである.本当に気付いてないのか目をつぶっているのか知らないが.

まず,大学で授業をしたり学生の相手をしたり文章を直してやったりするのに必要な能力は,研究活動に必要な能力とはそもそも全然別なのだ.もっと問題なのは,授業としてやんなきゃいけない内容として,研究者からすれば「基礎知識」であって研究としては「終わった」ネタがかなり含まれることだ.文系だと多少違うかもしんないけど,たとえば物理学科とかで学部生が習うのは,基本的にすでに確立した知識である.研究者にとって,授業をするのは大抵単なる負担であって,研究のタシになったりはしない.

あと,俺のような者に授業を頼むぐらい人手が足りてないのだから,そもそも「授業と多少関連のある専門の人を割当てる」ぐらいのことも無理なんだろうな.

まあでもアレだ,教育と研究が関連していますというフリは大学のほうでもしているから,その点では大学業界も共犯ではある.意味不明な書類を要求されて困るのも自業自得と言えなくもない.

前から悩んでいた「候補表示が出るたびにぴょこぴょこ画面が上下する問題」であるが,「候補表示をいちいち消さない」という方向で解決してみた.どうだろうこれ.最下行をIMEがずっと確保しつづけるとかDOS時代かよ,という気もしないでもない.

AndroidのIMEフレームワークでは,CandidatesViewを自由な場所に表示することは不可能のようなので,一般PCのIMEみたいな動作にするには,PopupWindowで自作するぐらいしか方法がないようだ.でも,現在カーソルがある場所を画面上の座標で得る方法が思いつかないので(これも無理かもしれない),これだと結局入力中の場所にかぶってしまう可能性があるんだよなあ.

あと,Honeycomb以下を切り捨てたので,ついでにエラーログだとか個人辞書エクスポートだとか,その程度のことで「ストレージ」権限を要求するのを止めた.4.4以降なら,プライベートディレクトリの読み書きは権限が要らないし.

……ICSとJellyBeanはどうなるんだ,と思った君は正しい.たぶんこの二つの機能は動かないはず(個人辞書のインポートや,外部辞書の読みこみは可能だと思う).もしICSやJellyBeanでSKKを使ってて,個人辞書のエクスポートとかできなくて困る,という人がいたら連絡してください.権限を復活させます(Marshmallow以降なら,オンにしなきゃすむ話だし).

おまけとして,音声入力で候補が複数ある場合はちゃんと選択できるようにした.じっさい使ってみてわかったけど,長文入力のときは音声入力ってすごい便利だな.あとは個人の発音の癖を学習してくれると最高なんだけど,残念ながらAPI的にそんなのがない.というか,学習するには,その場で訂正してフィードバックする仕組みが必要だろうけど,どういうインターフェースだったら使いやすいだろうか.いちいちEditTextのダイアログが出たらやっぱ面倒かなあ.

【このトピックへのコメント】
  • まはるおお!なんと困っていたインスタ関連の問題が解消されました!ありがとうございます!これからも頑張ってください!(2019-03-01 14:32:22)

旅行に行けなくてツマランのでプログラムを書いたりしている.

まあこのアプリは,昔作った簡単ランチャーNoTouchLauncherを現代の環境で作り直したものなのだが,わりと別物のコードになってしまったので,もう別のアプリにした.しいて違うところを言うと,

  • マテリアルデザインっぽい見た目
  • キーボードショートカットを設定できるようになった
  • 長押しが「アプリ詳細画面を開く」固定になった(今は詳細画面からGoogle Playに飛べるので)
  • アプリの追加削除を自動で認識しない(手動でリロードする必要がある)

最後の制限はアレだ,なんか知らんけどOreoから「暗黙的Broadcastに対するReceiverを勝手に作っては駄目」という制限が増えたからどうしようもない.そもそも「重くなるから,よくあるBroadcastに対していちいち処理をするな」という話なので,アプリの追加削除ごとに自動で何かする,ということ自体がご禁制ということなんだろうしなあ.

あと,Kotlinで最近使えるようになったcoroutineというのは便利で驚いた.単に非同期にViewを更新したいとかなら,もう全部これでいいな.むかしAsyncTaskとかいう面倒なやつでboilerplateをいちいち書くはめになったのとは随分変わった.