🗂

スマホで書く最初の記事

4 min read

この記事はVim on Ubuntu on Androidで書かれています。IMEはmozcです。

なぜそんなまどろっこしいことをしているか疑問に思われるかと思います。私は今、Ubuntu on Androidの限界に挑戦しようといった趣旨のことをしています。その第一弾としてIMEを設定しスマホで記事を書いているわけです。

zennで記事を書くために用意したのは以下の4つです。

  • git
  • vim
  • zenn cli
  • uim-mozc

まずはじめに、Ubuntuのインストール。

Ubuntuで記事を書くにあたって、Ubuntuをインストールする必要があります。これはひと昔前は一部のガジェットオタクがルート化というセキュリティリスクを取って手動でやっていました。

仕組みとしてはchrootしてその上に新しい環境を作り上げるjailのような仕組みです。昔のガジェットオタクはそれらを手動でやっていました。

現在ではワンクリックで各種ディストリビューションをインストールしてくれる自動化ツールが幾つもあり、必須だったroot化もchrootがprootに置き換わったことで必須ではなくなりました。自分はそのようなツールの中でUserLAndを使っています。

アプリをインストールしたら、Ubuntuをタップしてユーザー名とパスワードを入力し、SSHを選択してインストールします。

uname -a
Linux localhost 4.14.141 #2 SMP PREEMPT Sat Jun 5 11:46:32 CST 2021 aarch64 aarch64 aarch64 GNU/Linux
cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

なぜUbuntuを選定しているかについてまだ説明していませんでしたが、これには後々紹介するMongoDB等の事情が関わっています。プロプライエタリなソフトウエアはUbuntu対応を謳うものが多いですが、肌感覚として、有名OSSでもUbuntuを想定した対応が最も充実していると思います。

gitをインストール

最近の開発はgitを中心に回っていると言っても過言ではないと思います。gitのリモートリポジトリを登録し、そこへのpushにフックしてテストやデプロイが回ることも多いです。このようにして高速に検証やリリースのイテレーションを回す開発スタイルの生産性の高さについては昨今認知が高まっていることかと思います。

zennもGitHubをリモートリポジトリに指定することで上記のようなスタイルのデプロイが可能となるサービスなので、gitをインストールします。

sudo apt install git
git --version
git version 2.17.1

vimをインストール

スマートフォンの小さい画面で快適にテキストを編集するにはシンプルなスクリーンエディタが必要です。またコードを書くなら補完はある程度効いて欲しいです。まずはインストールします。

sudo apt install vim
vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Oct 13 2020 15:49:09)
適用済パッチ: 1-1453
Modified by pkg-vim-maintainers@lists.alioth.debian.org
Compiled by pkg-vim-maintainers@lists.alioth.debian.org

少々古いバージョンにパッチを当てたビルドが入るようです。一旦は8系が入っているので十分です。

ひとまず現在の.vimrcです。LSPで補完が効かせgoやvueを書くことを念頭に置いてプラグインを入れています。

set fenc=utf-8
set nobackup
set noswapfile
set autoread
set hidden
set showcmd

set number
set cursorline
set cursorcolumn
set virtualedit=onemore
set smartindent
set visualbell
set showmatch
set laststatus=2
set wildmode=list:longest
nnoremap j gj
nnoremap k gk
syntax enable

set list listchars=tab:\>\-
set tabstop=2
set shiftwidth=2

set ignorecase
set smartcase
set incsearch
set wrapscan
set hlsearch
nmap <Esc><Esc> :nohlsearch<CR><Esc>

call plug#begin('~/.vim/plugged')
Plug 'prabirshrestha/async.vim'
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'prabirshrestha/asyncomplete-lsp.vim'
Plug 'prabirshrestha/vim-lsp'
Plug 'mattn/vim-lsp-settings'
Plug 'mattn/vim-goimports'
Plug 'posva/vim-vue'
call plug#end()

zenn cliをインストール

nodeが必要です。Ubuntuのリポジトリのものはバージョンが古すぎるので、n経由でインストールします。

sudo apt install nodejs npm
npm i -g n
n i 14.17.3
node -v
v14.17.3
npm -v
6.14.13

あとは通常の手順通りインストールします。

mkdir zenn
cd zenn
npm init --yes
npm i zenn-cli

日本語環境のインストール

ここまでインストールして、記事を書く場合には日本語環境が必須だということに気が付きました。

sudo apt install language-pack-ja-base language-pack-ja
sudo update-locale LANG=ja_JP.UTF-8
echo "export LANG=ja_JP.UTF-8" >> ~/.bashrc

uim-fepというコンソールとuimのブリッジパッケージを使って、uim経由でmozcを使います。

sudo apt install uim-fep uim-mozc
echo "uim-fep" >> ~/.bashrc
(define default-im-name 'mozc)
(define-key generic-on-key? '("<Shift> " "<Control> " "<Control>g"))
(define-key generic-off-key? '("<Shift> " "<Control> " "<Control>g"))

シェルを立ち上げ直すと、下部にmozcが表示され日本語入力が使えるようになります。

mozc[Mz- RM]

ctrl g

mozc[MzあRM]

へんかん

:変換 :返還 :変換プラグ [-/3]

なんでこんなことしてるのか

自分はスマホを単なるおもちゃだとは思っていません。オフィススイートは大昔からありますし、Archやdebian、Ubuntu等も随分前から動きます。

様々なOSSプロジェクトが以前からARM対応に動いていて、パブリッククラウドにARMインスタンスが登場し、M1 macが発表される等のビッグイベントを経てその動きは加速してきました。その恩恵はUbuntu on Androidのような環境でも享受できます。

最後にサンダー・ピチャイの言葉を引用して締めくくりたいと思います。

Smartphones today are the cheapest, easiest way to bring the Web to people who up until now could only dream of it.

https://www.google.com/amp/s/amp.usatoday.com/amp/24276551

これは2015年の言葉です。スマートフォンは今日、今までWebを夢見るだけだった人に最も安価で最も簡単にWebを提供する方法です。という意味です。

今日では、スマートフォンからGitHubやパブリッククラウドへアクセスすることの容易になっています。スマートフォンの可能性はどんどん広がっています。