読者です 読者をやめる 読者になる 読者になる

PocketC.H.I.P.を買った

出会い

KOF 2016にて。見た目が良いデバイスが置いてあって、かわいいねー君なんて言うのーなどとナンパしていたら、mikutterが入っているという恐ろしい体験をしました。

CHIPとは

kapper1224.sblo.jp

気になる…

名前だけ覚えていて、12月になるかどうかでポチってしまった。

getchip.com

二週間くらいで届くという話だったけど、年末ということもあってか三週間かかった。

開ける

写真撮ってなかった…。 まずすげえと思ったのは、取り出してMicro USBで給電してやれば即使えたこと。初めてMacBookPro買った時も速攻で使い始められてめっちゃ感動したので、俺はこういうのに弱いのかもしれない。 CHIPと殻をPPAPするとかもなくて、本当にすぐ使える状態で入っていた。 これ買う人がそれ求めてるのかわからんけど、いいですね。

画面は感圧式のタッチパネルで解像度は420x272。小さすぎと思っていたが意外と大丈夫なことが多い。

キーボードはめっちゃ使いづらいと聞いていたけれど、そこまで酷くはない。見た目CTRLがめっちゃ右下にあっておかしいやろと思ったりしたけれど、標準のキーアサインとかいろいろ考えると、両手で持って片手ずつで同時押しが可能な配置になっているので思ったより良い。 キーは爪の先で押す感じかな。そういう押し心地。

期待するとガッカリ、舐めてかかると意外と良いという感じか。俺はPocketCHIPの見た目が気に入って買ったのでこれで使ってみよう。

適当に触る

ゲームする

f:id:toshi_a:20161223135134p:plain

幾つかファミコン風の謎のゲームが入っていて、死ぬほど難易度が高い。ESCキー押したらゲームのコードとか編集できるし、マップもわりとリッチなマップエディタで修正できてしまう。 俺は小学校の時に生まれて初めてテトリスを与えられた時「全然クリアできないから糞ゲーだなー改造したいなー」と思ってからプログラミングという行為でゲームを作るということを知るのに6年かかったので(家にパソコンがあったのは幸運だったが、まさかこれがゲームを作るための機械だったとは…!)、このESCキーは俺の人生の6年分の価値があるということになる。ほんとかよ。

しかしこれ改造しないと最初のマップから脱出無理な気がするんだけど。ゲームは一周クリアするまでは攻略見ない派なんだけど、ハックするのが正規ルートなんじゃねえかこれとか思った。つか調べてないけど攻略とかあんのかこれ。買ってもない宝くじが当たって仕事辞めて暇になったらこのブログで謎ゲープレイ日記再開してこのゲームdisってやるからな

ターミナル

f:id:toshi_a:20161223135315p:plain

いきなりランチャーに「Terminal」とかいうのがあるのでタップしたら案の定端末が開く。

f:id:toshi_a:20161223135214p:plain

uname -aとかやったら普通にそれっぽい文字列が出てくる。Xのアプリケーションを起動したら全部全画面表示になるんだけど、よく調べたらWMがAwesomeだった。俺が今使ってるこれじゃん。Awesomeは色々カスタマイズ効くのでこういうふうにも使えるか〜などと思ったりした。

様々なカスタマイズが入ってるけど、装飾キーがAltに変更されていたり(Superがないので)、C-qがウィンドウ閉じるのに割り当てられたりしてるっぽい。Awesomeならカスタマイズわりと慣れているのでキーマップ変えたりいろいろできて良さそう。luaでちょっとしたものも書けるのでいいぞ。

設定

画面の明るさ、音量(イヤホンさしたら音が出る)、Wifiの設定ができる。ステルスSSIDを設定できなくて残念だった(ターミナルを開いてくいっとやったらできるけど、ここまで手軽だったのでWifiくらい手軽にやりたいとか思ってしまう)。

設定画面はそれだけ。シンプル。

Debian

Debianカーネルとかいくつかのパッケージに独自のパッチを当てたディストリが入っているらしい。Debianはサーバでしか使ってないけど一番長いこと使っている。いいぞ。

とりあえず apt update からの apt upgrade で軽く優勝してからsshdとtmuxを入れてメインマシンから入っていろいろやった。雑に日本語化してfcitx入れたら日本語入力もできた。

f:id:toshi_a:20161223135346p:plain

ただ、fcitxに限らないけど、設定のダイアログがこんな小さいウィンドウを想定して無い。Awesomeは標準ではダイアログウィンドウはフロート表示する。また、ダイアログはサイズを変更できないことも多くて、はみ出して難易度が高かった。ALT押しながらドラッグして頑張ったらいける。

mikutter mobile

形から

おかのさんにもらったmikutterロゴシールを貼った。色もPocketCHIPのピンクとほとんど同じで、このためのデバイスだったのかと思うほど。

パッケージがあるからめっちゃ楽

ゆうて中身がDebianなので…。つまり…。

# apt install mikutter

これでmikutter 3.0が入ります。拍子抜けやわぁ。 日本語入力も適当なIM入れておけばいけるので、これでどこでもmikutterですね。バッテリの持ちはしらん(通常は5時間持つらしいが、mikutterを入れたら…)。

肝心の動作は全く不満がないレベル。重いんじゃねえのとか思っていた時期もあったけど、これは普通に使える。ツイートもサクサクできるし。近所の喫茶店で1時間くらい遊んでたけど全く問題ない。若干周囲の視線が気になる程度。

3.5.0-alpha2を使いたい

mikutter開発者たるものHEAD使いたいよね。 gitを入れてpullしていつもどおりに bundle --path=vendor/bundle/ --without=test です。

Installing nokogiri 1.6.8.1 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /usr/bin/ruby2.1 extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in /home/chip/mikutter/vendor/bundle/ruby/2.1.0/gems/unf_ext-0.0.7.2 for inspection.
Results logged to /home/chip/mikutter/vendor/bundle/ruby/2.1.0/extensions/arm-linux/2.1.0/unf_ext-0.0.7.2/gem_make.out

An error occurred while installing unf_ext (0.0.7.2), and Bundler cannot continue.
Make sure that `gem install unf_ext -v '0.0.7.2'` succeeds before bundling.

アウ

mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h とか言われるときは sudo apt install ruby-dev build-essential ですね。

そしてまたbundleなんだけど、異様に時間がかかる。Raspberry Pi Zeroくらいの性能らしいので、いろいろとビルドして時間がかかるのは仕方ないね。

その他設定

ストレージが4GBしかなくてすぐに限界がくるので、物理的に小さくて容量がでかいUSBメモリとかを常に脳天に突き刺しておくのが良いかも。 そうでない場合、mikutterの画像キャッシュなどは一切切っといたほうがいいかもしれない。俺は何もやってないけど。

実はmikutterのキャッシュに使っているmonetaというライブラリは、ファイルシステム以外にもいろんなKVSに対応していて、バックエンドをMemcachedやRedisとかに変更することができる。やらないけど。

あと、キーバインドはメインマシンとはかなり違うのにした。キー配置が違うから当然だね。コンテキストメニューどうやって出すかわからんので、野々村とかヨドバシもキーに割り当てる感じになると思う。コンテキストメニューを表示するmikutterコマンドの実装をしような。 ディスプレイのタッチはあんまり積極的に利用したくないんだけど、一通りの操作はキーボードで済む。こういう時あらゆるキーバインドを変更できるmikutterは強い。

mikutterはクソ

f:id:toshi_a:20161223061220p:plain

一部のダイアログボックスがサイズ決め打ちなのでディスプレイに収まっていない。特にキーボードショートカットの設定とか。これはなんとかしたいね。 あと、アイコンサイズ変更できないのはどうでもいいと思っていたけれどこれを手に入れてから考えが変わった。48px四方とかでかすぎませんか!横幅420pxの人も居るんですよ!

画像ビューアも、mikutter 3.5だとダイアログウィンドウ且つデフォルトサイズが640x480になっているため、画像の全容が表示されない。mikutter 3.0では通常ウィンドウなのでフルスクリーン表示になる。こういう違いはWMの実装によって変わってくるので、一概に通常ウィンドウに戻せば全ての環境でベターな振る舞いをするとも限らないし、そもそもベターというのも人によるところがある。 かつてこの仕様については、画像ビューアのウィンドウはダイアログウィンドウにするか通常ウィンドウにするか設定できるようにするという案もあったんだけど、エンドユーザが通常ウィンドウとダイアログウィンドウがどういう扱いの違いを受けるのかなんて知るわけがないし、いやLinuxデスクトップ使ってるなら知ってるかも知れないしおれもAwesomeに於いてはなんとなく知ってるけど、かと言ってそれをエンドユーザの立場から選ばされるのは違う気がするし、そんな設定生やしまくってたら設定多すぎてキリがないので困ったなと言って放置されてた。

ただmikutterいいところもあって、開発者が自分なので、自分が不便だと思い始めたら近いうちに修正されます。ううん、しかしそれぞれ、どう解決したものか。

ポータブルなmikutter端末としてアリか

多分3GやLTE使えないとやってられないという人が多いんだろうけど、俺はテザリングしてiPod touch使うとか日常的にやっているので回線的には問題ない。 文字サイズ8pxにしたら、ツイートは1画面に表示できて3ツイートくらい。2ペインだと倍表示できるけど、そうしたら長文だと1ペインに1ツイートを表示しきらないこともある。閲覧は辛いかも。

ツイートの投稿の方は特に問題ない。俺はメインのLinux環境で使ってるfcitx-mozcで全く同じような環境を構築した。辞書も移行できるはずなのでへんな顔文字使いたくなったらやってみようかな。そういえば長音が入れられなくて、ハイフンを押したら本当にハイフンが入って変換に支障をきたすので、ローマ字のマップ変えたほうがいいかも。でもそれやるなら俺はAZIKユーザなのでAZIKにしちゃおうか。一回のキータイプのコストが大きいのでタイプ数が減る工夫は大きく効いてきそう。

ともかくCHIP、手軽に楽しめて良い。

mikutter 3.5とmikutter mobile

CHIPのランチャには以下の機能がある。

  • (電源を切る等)
  • ターミナル
  • ゲーム
  • 音楽作成ソフト
  • ヘルプ
  • テキストエディタ
  • ファイルブラウザ
  • (設定)

このうち必要そうなのは、電源と設定とターミナルということになる。 mikutterはターミナルを表示するプラグインがあるので、このランチャをそのままmikutterに置き換えてしまうのはアリっぽい。 また、ファイルブラウザはfilerプラグインという、mikutter 3.5で動作するプラグインを既に公開していて、これを使えばとりあえずファイラとしてmikutterを使用できないこともない。 mikutter 3.5には関連付け機能もあるので、ファイラプラグインでテキストファイルに対して「開く」コマンドを実行したらよしなに開いてくれるテキストエディタプラグインというのも作れそうではある。画像ビューアは先に上げたような問題があるけどバンドルされているものがそのまま使えている。関連付けはファイルではなくModelリソース全てに対して行えるので、URLを外部のブラウザではなく内部ブラウザプラグインで開く、つまり本当の意味でmikutterと連携するWebブラウザも作ることが可能なはず。mikutterのWebブラウザは何人か作っている人見たので誰かIntentに対応してくれ…!

id:ahiruZ が作ってるslackプラグインを使ってCHIPでSlackするというのも良さそう。Slackの公式クライアントをCHIPで動かすのいろいろとキツイはずなので(試してないけど、画面サイズが厳しいと思う)サードパーティクライアントに期待がかかる。図らずもmikutterがTwitterにおいてそうなっているように、SlackプラグインがCHIPのSlack環境としてデファクトスタンダードを勝ち取る未来があるかもしれない(なんだそれ)。

世の中ではCHIPでいろいろ凄そうなことしている人が多いけど、俺はとりあえずmikutterがこういうデバイスのシェルになりそうなの面白いなあと思ってる。