やりたいこと
学生用PCはChromebookがよいのではないかと考えたので、試してみることにした。
入手したのは、ASUS Chromebook Detachable CM3という機種だ。 キーボードが取り外しできて、普段は10インチタブレットとして使える。
画面はWUXGAというアスペクト比が16:10なので、わりと仕事にも良い。16:9だと動画を見るには良いけれど、縦が狭くて仕事にはつらい。
とりあえずGmailを起動してぽちぽちと入力してみたところ、キーボードは使える。 ぺかぺかした打鍵感はSurface Pro3のキーボードと似ている。 僕はSurface Pro3のキーボード、特にストレスなかった。CM3のキーボードもしばらく打ってみたが、気にならない。
AZIKが入らないことは問題。やはり体がAZIKに慣れていて、できれば使いたいなと思う。 Chromebookの日本語入力は、好みのものに入れ替えられるので、誰かが作ってくれれば使える日が来るのかもしれない。 じゃあ、自分でやる?と言われると、少々悩む。。。
音はよくわからないが、けっこうなボリュームが出て、最小状態ですらちょっとうるさいかも?と思うくらいのボリュームだ。家族が寝ている 深夜、動画見るとかはちょっと迷惑かなあというレベル。
なんにせよ、起動が早くて、タブレット的にも使えるので、いいものを手に入れたなと感じる。 iPadとPCを持ち歩かなくて済む日が来たのかもしれない。
結局タブレットはなにがいいのか
Chromebookは日常の使用に耐えそうな感じがする。そうすると、タブレットとノートPCの両方を置き換えてくれる。 これはとてもうれしい。
Chromebookは極めてPC寄りだが、モデルによってはタブレット的にも使える。
が、iPadはもちろん、Androidタブレットでも似たようなことができる。
Android+tmuxとか、iPad+iSHなら、開発環境も似たような感じにできる。
決めては何なのか?というと、各人にとってのキラーアプリが使いやすいかだろう。
僕にとってのキラーアプリは。。。Emacsかなあ。
外付けキーボードやディスプレイを使って、仕事に使うという条件で考えてみると、やはりChromebookが一番よさそうに思える。
試行錯誤その1(2021年4月)
アプリ全般
業務関係はWebアプリが多く、これで動かないものは見当たらない。
デスクトップ環境(外付けディスプレイ、キーボード、マウス)
自宅にはノートパソコン用に、外付けディスプレイとBluetoothキーボード、マウスがある。 試しにこちらに接続したところ、使用できた。 キーボードだけプロファイルがなぜか韓国語のものになっているようで、よくわからない動作をする。 が、文字を打って変換する分には問題ないので、あまり気にせず使っている。
この3点セットを使ってデスクトップ環境を構築し、ブラウザで作業をしていると、Chromebookであることを忘れる。 普段のPCを使っているのかと錯覚してしまうぐらいだ。
パフォーマンスも僕の使い方では申し分ない。
scoop版emacsのセットアップ
Windos10、scoop版emacsのセットアップ
scoopでWindowsを入れられるようになったので、セットアップしてみた。
tr-imeを使用することで、scoopでインストールする普通のemacsでも日本語入力がストレスなくできる。
なお、この項は随時アップデートする予定だ。 現在、wsl版を使いつつ、Windows版に移行しているので、ついwsl版を使ってしまう。 それをちょっとずつ移行しているので、記載事項、今後も増える予定だ。
環境によって設定を変える
共通の設定ファイルで、基本的には大丈夫なのだけれど、パスとかウインドウ設定などが異なるので、OS固有の設定を自動で切り替えている。
(cond ; OSによって設定を切り替える
((eq system-type 'gnu/linux) ; X on WSL
(load "~/.emacs.d/conf/setting-wsl.el"))
((eq system-type 'windows-nt) ; Windows
(load "~/.emacs.d/conf/setting-win.el"))
((or (eq window-system 'mac) (eq window-system 'ns))
(load "~/.emacs.d/conf/setting-mac.el")
)
)
use-packageを使っているので、起動時に足りないパッケージは自動で取得してくれる。 なので、基本的にはemacsをインストールして、設定ファイル軍を配置して、emacsを起動してしばらく待てばいつもの環境が得られる。
ただ、それだけではうまくいかないこともやはりある。 そのへんの問題を解決するメモを中心に書いておく。
magitを使う
emacsといえばmagit
magit使いたいためにemacsをWindowsにもセットアップしたと言っても過言ではない。
magit自体はinstall-package githubでインストールできるし、特に設定も必要ない。 (なんでかな?気になるけど、自由研究課題としてとりあえず放置)
magitというか、github
まずはgithubの自分のリポジトリを使えるようにする。
以前はデフォルトの状態で、ユーザ名とパスワードを入力すれば使用できた。今はこの方法は推奨されておらず、廃止予定のようだ。
2021年4月時点の仕事環境
目的
気付けば、パソコンの設定ばっかりしている。仕事に使うよりも、設定している時間の方が長いんでは?と思うぐらいだ。
いろんな設定を試すから、新しいpcを買ったときに、同じ設定を再現することができなくなる。 普段から自宅、職場、モバイルと基本的に3つのPCを使っているから、これらの設定を同期するのも大変で、つい、適当な設定をしてしまう。
もうここらでちゃんと自分なりの使いかたをメモする場所を作らないと、なにがなんやらわからなくなる。
おまけに、「PCのおすすめの使いかたってある?」とか聞かれることも多いけど、説明しにくい。 僕はかなりPCをカスタマイズして使っているけれど、たぶん、聞くほうはその詳細を聞きたいのではない。 なにかストレスに感じていることがあって、それを解決する方法を探しているのだろう。 でも、質問に対して、こちらから聞きかえすのもどうか。
考えた末に、「話せば長くなりすぎるので、まあ、適当でええんちゃう?」と答えになってないようなことを口走り、自己嫌悪に陥る。
ほんとは僕の使いかたはそんなに複雑ではない。用途が多岐に渡るから、目的ごとにそれぞれカスタマイズしているだけだ。
ちなみに、PCの設定って、ハードもソフトもどんどん変わっていくから、最新の情報が大切だ。新しくて、実際に使っている人の情報といってもいい。 ネットには、どこかからコピペしてきているだけのアフィリエイト目的とか、会員獲得を目的としたサイトも多いので、きちんとした情報を見極める力も求められる。
今回ここで記すのは、僕がたくさん痛い目に遭いながら、実運用している方法だ。 過去に試したことよりも、今の方が便利なのは確実なので、「今」をきちんと説明しておこう。 そして、事情が変わればアップデートしていく。
とりあえず、2021年4月現在、現役の活用方法だ。
僕が新しいツールや設定を試して痛い目をみている様子は、このブログの他の記事やツイッターなどで発信している。 そういうのが好きな人にはおすすめだ。
自分でもかなり人柱成分が入ってるなあと思う。
僕の仕事スタイル
概要
パソコンを使うということは、ずいぶんと変化してきた気がする。 僕がパソコンを使いはじめたころは、半角カナをようやく表示できるレベルだった。そのころ僕にとってのパソコンは、ゲームのプログラムを入力して遊ぶツールだった。
それからしばらくそんな使いかたが続き、大学の4年になって、PCを情報整理に使いはじめた。 といっても、ワープロソフトを使ってひたすら文書を入れる感じだ。
大学院に入ると、計量経済学を学びはじめたこともあり、またプログラミングに使いはじめた。レポートもPCで書くようになった。
そして、大学院の2年時には、テキストデータベースを開発して研究資料の整理に使うようになった。それからは、パソコンはデータを収集・整理することと執筆、そしてプログラミングのツールになった。
もちろん、これらに加えて情報収集とか遊びとしてWebサーフィンもする。
僕はこれらの業務のうち、データの閲覧に関することはタブレットに移行しようとしてきた。また、データの収集のうち、手書きのものについても手書きノートからタブレットに移行しようと努力している。
僕は研究にRとPythonを使っている。研究結果の執筆や講義資料の作成、さまざまなレポートの作成に文書を執筆することが多い。
つまり僕は、PCを使って、プログラミング(と数値計算)、執筆、プレゼンテーションの作成を主に行なっている。
コミュニケーションはGmailとSlackだ。
ゲームはPCではしない。
以下もこれらの要素に分けて書いていく。
ハードウェア
PCは、Dellの13インチノートPCをメインに使っている。 画面のアスペクト比が4:3のものを選んでいる。PC作業をするなら、縦幅が重要だと思う。
最近のワイドディスプレイは、横が長すぎて、肩が凝る。 縦幅の狭い穴から覗きこんでいるような、そんな感覚。下から上を覗く感じ? ワイドディスプレイは、ビデオを見る人のもので、書類作業をするためのものではない。 ノートPCもタブレットも売れない、Apple製品の一人勝ち、的な話があるけれど、Apple製品は基本的に4:3だ。だから選ばれているのだと思う。 仕事をしたいなと、PCやタブレットを選びに来ている人にビデオ用(エンタメ)の製品を薦めたら、それは買わないだろうって思う。
自宅や研究室では、Dellのノートに外付けキーボードとディスプレイをつけている。 ただ、それぞれの場所にデスクトップはあって、重い作業をするときはデスクトップをできるだけ使うようにしている。
デュアルディスプレイがいいなと思うけれど、まだ踏んぎれていない。。
キーボードにはこだわりたい。Happy Hacking Keyboardを使っていたりしたこともあったけれど、職場と自宅に揃えるまでには至らなくて、自宅ではLogicoolの1万円弱のキーボードを使っている。 職場では、Macのワイヤレスキーボードを使ったり、デスクトップにおまけでついてきたキーボードをつかっている。
HugoにMarmaidを組み込む
意外と忘れてググるはめになるので、自分のところにメモしておく。
感謝の意味もある。
以下のサイトに分かりやすくのっていたので、そのまま。
(出所:「Hugoにmermaidを組み込んでみた - Qiita」、https://qiita.com/takeuchi/items/35c52fd85884a83c154d )
僕の使っているテーマにはMarmaid、組みこまれていたので、パーシャルとショートコードを作ればよかった。
携帯電話事情2021年1月
携帯料金が下がってきた
docomoのahamoにはじまって、softbank、auも新しい料金プランを発表したことで、3000円弱でスマホが利用できる環境が整ってきた。
一方で、楽天は2980円で5Gも含めて通信し放題というプランを出している。日本通信は、日本通信SIMとして、ほぼ同条件で1980円というプランを販売している。
楽天や日本通信はあきらかに、大手3社よりベターなプランだ。
僕は4年ほど前にBiglobeに乗り換えた。ついでに、昨年10月から楽天もSIMを使って試している。僕の端末はSIMが二枚差さるので、両方を入れて、基本的に楽天で運用している。 楽天はじょじょにカバーエリアが広がってきていて、契約した10月当時ローミングで接続していた場所もどんどん楽天でつながるようになってきている。
エリア内なら使い放題なので、車を運転しているときに、Netflixを流しっぱなしにしたりしている。ちなみにローミングエリアでは、低速にすればデータ無制限で使用できる。 車でNetflixを観るような使いかただと、低速のままでも特にストレスなく閲覧できる。
ちなみに、Biglobeを使っているときは月に30ギガ程度のプランだったけど、上限にぶつかるのが怖くてストリーミングはほとんど使わなかった。 ちなみに試しにストリーミングしたことはある。そのときにも使い勝手にも特に問題なかった。
正直、ネットなどでスピードテストをしている人がいるけれど、実際の使用でスピードダウンが問題になることがあるのだろうか。 ネタがないから測ってるだけなんでは? 自作PCでもベンチマークの弊害が言われているけれど、ハイエンドな人を対象にしたテストは一般人の参考にはならない。
にも関わらず、多くの人は「○○で格安はスピードが遅いって書いてたよ」的なことを言って大手に留まる。
新料金を人は使用するのか
相方に大手をやめてMVNOに移行しようよと伝えると、携帯メールを使っているから無理!という返事が返ってきていた。 未だにキャリアメールを使うことがあるということにちょっと驚くのだが、大手じゃないとだめな理由としてはじゅうぶんに納得ができる。
では、他の人はどうなのか?というと、キャリアメール使っている若い人というのはあまり見ない。 でも大手を使ってる。 じゃあ、なんで大手を使うのか? 明確な理由はないみたい。
卒業研究のテーマに、日本ではなぜiPhoneを使うのかというテーマを選ぶ学生が毎年一人はいる。 これ、全然明確な答えがない。たぶん、ネットワーク外部性で説明できると思うんだけど、じゃあなぜそうなった?というとちょっと分からない。
結局、みんななんとなくiPhoneを選ぶし、キャリアも大手を選んでいる。 それ以上の理由はないのかもしれない。
人がなんとなく流れている状況で、それを変えようとすることは実は難しい。 人は現状に不満をもっていないから、新しい環境に移行することには必要以上にコスト感を持つ。
「本人が納得してるんやから、それでええやん」
ということか。
なんとなく、そんなに豊かでもない人たちが、すごく給料の高い大手キャリアにもうけさせているというのが嫌なんだけど、多くの人はそれには文句ないみたい。
もしかしたら大手との差は、大手を使う安心料ということで納得しているのかもしれない。 あるいは、「格安を使うのははずかしい」とでも思っているのかも。 通話品質がよく、通信速度も早かったPHSが廃れてしまったのも、PHSが当初、簡易携帯と呼ばれたことと関係があったように思う。
その点ユニクロなんかはうまいこと、安いもの=恥ずかしいというイメージをうまく払拭している。 この戦略にならうと、MVNO業者にも光が見えてくる気がする。
値段の差を1000円だとすると、この差を例えば900円にして、値上げした分をなにかに使うというのはどうだろう。 例えば、国際貢献でもいいし、スポーツチームを応援するでもよい。
楽天なんかだと、e-sportsのチームの運営費にしてもいい気がする。 楽天○○SIM(○○はチーム名)とか、いい気がする。
「僕は○○を応援したいから、このSIMを使っている」と人に言える。 あるいは、サポーターSIM的なものを作って、100円分をメニューから配分できるとかはどうだろうか。 国際貢献を20%、スポーツの支援を50%、地域貢献を30%とか、配分する。
大手と価格競争をすることはよいけれど、「安い」のは選ぶ人の羞恥心を誘いかねない。 あえてそこは、安いのはおまけで、応援がメインとするような表現にする。
なんとなく、昨今の携帯料金事情について、だらだら書いているうちに、おもしろそうな企画ができた気がするなあ。
2021年ブログ再開と環境設定情報
2021年現在のブログ執筆環境
しばらく止まっていたブログの執筆をまたもや再開する。 再起動宣言はこれで何回目なのだろうか。
とりあえず、今後のために、今の環境をどう構築するかのメモを書いておく。
そして可能なら、正月のうちに、これらの環境を短時間で再構築できるようにしておきたい。
ブログ執筆環境
ブログはorg-modeで作成して、hugoでビルドしている。
執筆はemacs上のeasy-hugoを使っている。
記事を書いたら、githubにpushすると、Netlifyがデータを取得して、hugoでビルドして公開してくれる。
記事などのデータは第一にはgithub上に作ったリポジトリで管理している。
将来の自分のため用環境メモ
これだけの環境を構築するのは簡単なんだけど、どこかが動かなくなっているとチェックと修正がめんどうだ。 現に最近更新が止まっていたのは、公開がうまくいかなくて、チェックする手間をとれなかったからだ。
今回は、beautifulhugoテーマをリポジトリに含めていなくて、公開できなかった。 なにかのタイミングでテーマはリポジトリに含めないようにしようと思ったみたい。 テーマを変更するときは、リポジトリに含めることを忘れないこと。
とはいえ、hugoのテーマはGitのサブモジュールの形になっているので、別の管理の仕方がありそうな気もする。 暇になったら検討しよう。
だいたい、とりあえず動くようにしようという対応が積み重なると、だんだん環境が標準のものからずれていく。 熱心に環境構築しているときはそれでいいのだが、いったん環境が安定して、環境への関心が薄れるとなにをしたのか、忘れてしまう。 問題がでるのはたいていそういうときだ。
なにをしたのかきちんと文書に残すことは、将来の自分にやさしくなるためだ。そして、今の自分が「忘れる存在」であることを受けいれることだ。
なんか哲学的な感傷にひたってしまったけれど、毎回、過去の作業手順を忘れ、思いだすためにぼうだいな時間をとられる。 そして、しばし、自己嫌悪に陥る。
「あのときの自分が自分の記憶力に自信ありすぎたからだ!」と。
Windows環境メモ
日本語入力環境
skk+azikで指が慣れている。これはかなり快適で、ストレスなく入力できる。
Windows上では、CorvusSKKにAZIK拡張を入れている。Emacs上では、ddskkを使っている。 辞書は共有していない。
CouvusSKKの環境設定では、日本語入力のオンオフをキーボードの「かな」または「変換」でおこなえないようなので、keyhackにスクリプトを書いて使用している。 (もうしわけないけど、出所が不明だ。)
# 変換キーを半角/全角キーに def zenhan_unless_zen(): if ( keymap.wnd.getImeStatus() ): # pass-through keymap.InputKeyCommand( "(28)" )() else: # zen-han keymap.InputKeyCommand( "(243)" )() def zenhan_when_zen(): if ( keymap.wnd.getImeStatus() ): # zen-han keymap.InputKeyCommand( "(243)" )() else: # pass-through keymap.InputKeyCommand( "(29)" )() keymap_global = keymap.defineWindowKeymap() keymap_global[ "(28)" ] = zenhan_unless_zen keymap_global[ "(29)" ] = zenhan_when_zen keymap_global[ "(242)" ] = zenhan_unless_zen keymap_global[ "(240)" ] = zenhan_when_zen
ddskkの方は、下記の設定を.skkに追加している。
Kindle Kids+(Amazon Freetime Unlimited)レビュー
kindle Kidsモデル購入
今年のブラックフライデーセールで、息子にKindleを購入した。
息子はわりと本をよく読むので、一つあってもいいかなと思った次第。 電子ペーパーの方が目にやさしいかなと、タブレット端末ではなくKindleを選んだ。
電子書籍端末もいくつか選択肢がある。そのなかで、KindleはWhisperSyncという機能があって、よくわからない言葉を平易な言葉で説明する機能がある。 こういうの、本好きな小学生にはよさそうだ。
AmazonのサービスのKids+というのが気になっていたので、ちょうどよい機会だと思って購入してみた。
Kids+の無料ライブラリ
Kids+には1000冊の本が含まれる。 でも、具体的にどれとどれが入っているかを知ることはできない。 事前にラインアップを知れたらいいと思うんだけど、なんでできないのかね。
ざっと見てみたが、近所のツタヤの児童書コーナーに並んでいそうな本が含まれている。 しばらくは楽しめそうだ。
こんな風にライブラリにある本を自由に渉猟して好きな本を探すのも楽しい。 本屋に行くのもいいけれど、コロナのこともありあまり自由に出歩くのもままならない。
マンガもまあ、あるけれど、その辺は気にしないことにする。 学習マンガとかは、この端末だと解像度的に厳しそうな気がする。 その辺は残念だけど、電子ペーパー端末を与えたかったので、仕方ない。
Kids+でこどもと本をシェア
Kids+では、親のアカウントの下にこどものアカウントを作る。 そして、親のライブラリから、こどもに読ませたい本をこどものKids+にシェアすることができる。
こどもが「これ読みたーい」と言ってくるマンガとかでたまに自分が電子書籍で持っている本がある。 kindleをそのまま渡して読ませたいなと思うんだけど、他のライブラリまでは見せたくない。
(お父さんがマンガばっかり読んでるのがばれるからね)
従来のkindleでも、機能制限というのがあって、ライブラリへのアクセスを禁止するモードはある。 それを使えばkindleごと本を「貸す」ことはできる。 ただ、いかんせん自分の端末をそのたびに設定して貸すのはめんどうだ。 そこで、一つこどもに端末を持たせようと思っていた。
(ちなみに、この機能はkindle端末限定の機能で、iOSなどのkindleではできない。)
普通のkindleでもよいのだが、そのばあい、あくまでも端末は僕のだから、トッ プページのレコメンド的なものは僕へのレコメンドになる。 なにか、もっと、彼のパーソナルな画面がトップになるといい。
そこへ、キッズモデルだ。 これならたぶん、彼個人のトップページになるはずだ。
設定
kindleはまっさらな状態で到着したので、アカウントの設定からはじめる。 が、僕のアカウントは最初からはいっているものと勘違いしてこども用のアカウントを「新規作成」してしまった。
このばあい、こどものアカウントの下にKids+を設定するためのこどものアカウントができてしまう。 しかも、僕のアカウントとはひもづいていないので、本を貸すこともできない。
これでは、当初の目的を半分(こどもに本を読んでほしい)しか満たせない。
意味ないやん、と方法を探るもよくわからないので、サポートに連絡した。 サポートはチャット経由でお願いした。 なんだか、今回はとてもスムースに話しが進み、簡単に問題が解決した。
ReplacementMlogitData
mlogit.dataがDeprecated(廃止))されてしまった
Rでチョイスモデルを動かすときに、データをワイドからロングに変換する。通常は、mlogit.dataを使えば一瞬でこの変換ができる。 が、mlogitのバージョンが上がり、1.1になって、mlogit.dataはサポートされなくなった。 正確には、dfidxという別のパッケージに切りだされた。 mlogit.data自体も1.1ではバックエンドがdfidxになっていて、以前のスクリプトがちゃんと動かない。
とても困る。 とはいえ、これ自体、そう複雑なパッケージではないはずなので、なんとかならないか、調べてみることにした。
分析モデル
とりあえず、価格と長さ、品質の組みあわせを調べることにしよう。 釣りざおとか?
id | choice | Price_1 | Length_1 | Price_2 | Length_2 | Q_1 | Q_2 |
---|---|---|---|---|---|---|---|
1 | 1 | 100 | 1.5 | 120 | 1.3 | 1 | 1 |
1 | |||||||
2 | |||||||
2 | |||||||
3 | |||||||
4 | |||||||
4 | |||||||
5 | |||||||
5 |
e6 %>% pivot_longer(cols=starts_with("Price_"), names_to="np", names_prefix="Price_", values_to="price") %>% pivot_longer(cols=starts_with("Brand_"), names_to="nb", names_prefix="Brand_", values_to="brand") %>% pivot_longer(cols=starts_with("Poverty_"), names_to="no", names_prefix="Poverty_", values_to="poverty") %>% pivot_longer(cols=starts_with("ASC_"), names_to="nasc", names_prefix="ASC_", values_to="ASC") %>% filter(np == nb & np == no & np == nasc) %>% mutate(choice=gsub(choice,pattern="choice",replacement = "", ignore.case = TRUE)) %>% mutate(ctf=(choice == np)) %>% select(-nb, -no, -nasc)
以下、書きかけだが、上記のスクリプトの変数を適宜変更すれば動くはず。
Tidyverseのインストールでエラーが出るときの対応
Tidyverseがインストールできない!
ちょっと事情があって、Rのバージョンをあげたら、ライブラリをインストールしなおしになった。 3.4から3.6だからしょうがないのかもしれない。
Ubuntu(wsl)のせいか、r-coreのインストールにも苦労したけれど、それ以上にTidyverseのインストールに苦労した。
パッケージが動かないだけなら、別の分析手法を使うとかなんとかできたのだけれど、Tidyverseが動かなくなると、もはやお手上げだ。
Warning in install.packages : installation of package ‘xml2’ had non-zero exit status Warning in install.packages : installation of package ‘rvest’ had non-zero exit status Warning in install.packages : installation of package ‘tidyverse’ had non-zero exit status
インストールがこんなエラーで止まってしまう。
ググってみると、libcurl4-openssl-dev libssl-dev libxml2-devをインストールすればよい、的な回答ばかりだった。 実際にやってみると、これらはインストール済みで、最新版が入っていた。
なんだろうと思い、rstudio-serverの出力をみると、どうもロックファイルの移動に失敗しているらしい。
正直、なんのためにロックファイルを作成してそれを最終的に移動しているのか分からないのだが、とりあえず該当しそうなディレクトリをまとめて書き込み可能にしてみた。
Solving Tidyverse install error
Install error
When you install tidyverse, you might meet the following error.
Warning in install.packages : installation of package ‘xml2’ had non-zero exit status Warning in install.packages : installation of package ‘rvest’ had non-zero exit status Warning in install.packages : installation of package ‘tidyverse’ had non-zero exit status
I did. I found some answers in the internet. Those are to install the following 3 packages, libcurl4-openssl-dev libssl-dev libxml2-dev. But it did not work for me.