Archive

ArchLinux なラップトップで仕事しはじめて大体1年経った

この記事は Linux Advent Calendar 2017 - Qiita の3日目の記事です。

本日は Linux デスクトップを実際に業務で使っているという話です。

私は今年に入ってから業務でずっと ArchLinux 環境の DELL XPS13 9360/XPS13 2 in 1 を使ってきたのですが、 そろそろ1年位経つのでそのへんの利用状況とか「実際どんな感じなの?」ということをざっくばらんに書いてみようと思います。

アウトライン

  • 自分の仕事について
  • なんで Linux デスクトップを業務で使ってるの?
    • なんで ArchLinux ?
  • 実際に業務で使っている PC の環境をもろもろ紹介
    • 利用しているPC
    • ArchLinux のインストール状況
    • 利用しているLinux環境、ソフトフェア
    • 基本的なデスクトップまわり
    • Webブラウザ
    • エディタ・コーディング
    • 開発・検証環境
    • ターミナルエミュレーター
    • 音楽
    • 雑なお絵かきツール
    • Gifキャプチャーツール
    • パスワード管理ツール
    • プレゼンテーション
    • オフィス系ドキュメント
    • クラウドストレージ
    • Slack
  • Linux 環境で業務をしていてよかったこと
  • Linux 環境で業務をしていて困ったこと
  • まとめ的な所感

自分の仕事について

Web系のエンジニアです。インフラ寄りなことがメインなのでサーバにログインして作業するとか、そのへんの環境をいい感じにしていくとかそれ系のモノが中心。Ansible Playbook や Terraform file、シェルスクリプトや Python スクリプトを書いたりするし、最近では Django, TypeScript も書く機会がでてきた。

この後にも書くけれど、そういった職業柄、正直 Linux で業務してて困るというケースは殆ど感じていない。

なんで Linux デスクトップ を業務で使ってるの?

色々あるけれど個人的にだいたい以下理由で Linux デスクトップ を使っている。

  • 業務で mac を使う機会もそれなりにあったけど、最近の mac が個人的にはイマイチな感じがしてきていた
  • Windows は嫌いじゃないけど、Unix系環境の方が落ち着くと感じる
  • プライベートではここ3年くらい Linux デスクトップ環境で過ごしてきた (LinuxMint -> ArchLinux)
  • 今年の頭に転職をして、その際に好きなPCを好きなOSで使っても良いと言われた (その後もう一度転職しているのだけど、今の職場も同様)
  • Unix 系の環境で Webブラウザ, Neovim, Virtualbox, vagrant, Docker, ssh, python, git あたりを気持ちよく使いたい
  • みんなと一緒なのが面白くないと感じているところもあるっちゃある

なんで ArchLinux ?

私個人の感覚で行くと以下のような理由で ArchLinux を使っている。

  • Ubuntu -> LinuxMint -> ArchLinux と使ってきた結果、長期的にみても安定して使えていて ArchLinux 使ってると一番落ち着くと感じている
  • ローリングアップデートで常に最新でいられるのがよい
  • 公式のパッケージで導入できるツールのバージョンもおおよそ最新
  • Arch Wiki の充実

とはいえ、ディストリビューションを何にするかは人それぞれ好みによるところもあるので一概にこれがいいというものはないと思う。 Ubuntu を半年ごとにアップグレードしながら使うのも良さそうな感じもしている。

実際に業務で使っている PC の環境をもろもろ紹介

実際にどんな感じの環境でやっているかをつらつら書いてみる。

利用しているPCについて

今現在業務で使ってるのは DELL XPS13 2 in 1 。 スペックは最上級のものを使っているのでメモリも 16GB で Core-i7 搭載。 2 in 1 と言いつつまあ 360度 ディスプレイを開閉できるラップトップ。本体の重さも軽量で持ち運びが楽で良い。 ArchLinux のインストールも問題なくできる。

ただ正直言うと 2 in 1 は CPU が Core i7-7Y75 と i7 だけども省電力プロセッサということもあり、Web開発の用途でもパワー不足を感じるケースがちょいちょいある。これは PC が納品されてから気づいてしまったのが痛手だった。前の職場では XPS13 9360 を使っていたのだけど、開発用途だとこちらをリソースコミコミで使った方が幸せになれると思う。

ArchLinux のインストール状況

Windows 領域は削除せずに 120GB くらい残してデュアルブートにしている。

主に理由は以下の2つ

  • ファームウェア周りのアップデートがちょくちょく降ってくるのだけど、それを当てる手段が Windows 経由でしか無い
  • 何らかのハードウェア故障が発生した場合、診断ツールを Windows 上で走らせないとそもそも修理をしてもらえないことがある

この辺りの事情はもしかしたらメーカーによって違うのかもしれない。 とはいえ、ハードウェアを取り巻くあれこれに対処できるようにするためにも、 Windows 領域は残しておいたほうがいいだろうなーというのが今の所の個人的な見解。SSD の領域がもったいない感じもするけど。

基本的なデスクトップまわり

ログインプログラム:GDM
デスクトップ環境:Gnome
日本語入力:fcitx + mozc
AURヘルパー:yaourt
日本語フォント:IPAexフォント
等幅フォント:Cica
  • Linux デスクトップを使っている人からすると、かなり無難な選択に収まっていると思う
  • ログインプログラムはもっと軽量なものもあるのだろうけど、GDM はインストールして自動起動を有効にするだけでいい感じに動いてくれるのが楽で使っている
  • Gnome はなんやかんやで Linux デスクトップではユーザーが多い環境だし情報も多く、拡張も豊富なので安心感が強い
  • 日本語入力の fcitx + mozc も現状これが一番無難で安定な気がしている。SKK が使えるならまだ選択肢ありそうだけど
  • フォントはどこかでキレイで見やすいと評判だった IPAex を UI に使ってる。実際かなりキレイでみやすい。
  • コーディングやターミナル上のフォントは最近だと Cica を使ってる。AUR にあるバージョンが 2.x にならないので、とりあえず PKGBUILD.sh を↓ に差し替えて無理やり新しいものを突っ込んでる
  • AUR [1] ヘルパーは定番の yaourt を使っている。ただ最近は他にもいい感じのやつがあるっぽいので試してもいいかも。

Webブラウザ

Vivaldi をメインに使ってたのだけど、Quantum が来てから firefox に移った。

Vivaldi は Google Docs 使っているとたまに変な挙動をしたり、それ以外にも Chrome 依存の Google 系 API が Vivaldi だと潰されている(?) のか上手く動かないケースも多かった。更に言えば最近ちょっと重い感じが結構あった。

他にも Chromium/Chrome は利用できるので、ブラウザに関して困ることは殆どないと思う。 最悪 IE/Edge が必要になった場合は Virtualbox 用のテストイメージを以下から入手してつかえばよい。

エディタ・コーディング

私の場合は Neovim でだいたい事足りている。 Ansible Playbook, Terraform file、簡単な bash, Python スクリプト あたりは Neovim で十分。

ただ Django, TypeScript のコードをいじる際には最近は VS Code を使ってる。 簡単な設定で強力なデバックとかタグジャンプとかが使えるのが良い。パワー不足な XPS13 2 in 1 でもサクサク動く。

小さめな編集とかは tmux の中で Neovim を使って、大きめな Web アプリケーションのコードを触る際には VS Code を使っている感じ。

他にも Emacs, Atom はもちろん JetBrains 製の IDE だって pacman コマンドですぐに導入できる。選択肢は他のOSとそれほど差はないんじゃないかなと思っている。

開発・検証環境

私の場合はコードを書くのは Python/bash がほとんどなので、とりあえず Python の実行環境が整えばよい感じ。 この辺は pacman 経由で python3.6, python2.7、あと理由あって AUR から python3.4 を入れている。 実際にコードを書くときには、それらをベースに直接 PC 上に venv/virtualenv で実行環境を作って使っている。

MySQL や Redis といった必要なミドルウェアは pacman でパッケージインストールするのではなく、Docker コンテナを起動することで対処している。

今更感があるのかもしれないけれど、開発環境用ミドルウェア代わりに Docker コンテナ使う運用は本当に手軽に環境整えられて便利。 mac/windows だと Docker 使ってると色々トラブルが発生するケースもあるようだけど、Linux で使ってる分にはその手のことは感じたことがない。 Kernel アップデートが降ってきたときに再起動を忘れてると、コンテナの動きがおかしくなることはあるっちゃあるけど大きな問題だとは思ってない。

あとは、 Amazon Linux などをコンテナとしてではなくVMとしてガチャガチャいじって挙動を確認したいケースもあって、 そういうときは Virtualbox + vagrant を使ってる。

ターミナルエミュレーター

Terminater という一応 Linux デスクトップでは定番っぽいものをしばらく使っていたのだけど、 使わない機能が多すぎたので最近は Termite というエミュレーターを使っている。 設定は ini 形式で記載しておけるので dotfiles にも突っ込める。これは他にも軽量で使いやすものがあれば知りたいかなというところ。

ちなみに urxvt も試してみたのだけど、 絵文字の表示がイマイチだったり 4K ディスプレイ上でフルスクリーンにするとエミュレータ全体が落っこちるということがあり、使うのは諦めた。

音楽

私は常に音楽聴きながら作業をしているわけではないけれど、聞く場合は Google Play Music を利用している。 それもブラウザ越しではなく Linux でも利用可能な以下の Electoron 製のプレイヤーがあるので使っている。

AUR 経由でインストールする場合は、パッケージ名が 「gpmdp」になっている。

雑なお絵かきツール

Github の PR や Issue、あとは Slack なんかで雑に指示書きやモザイクを入れたスクショを共有したい場合があるのだけど、 そういう用途に Pinta というアプリケーションを使ってる。

mac でいう evernote skitch みたいなものだけど、起動した感じは Windows のペイントに近いかも。

ちなみに以前は shutter というツールを使っていたりもしたけれど、どこかのタイミングで Perl のバージョンが上がってから全く起動しなくなってしまった。インストールも時間がかかっていたことから使うのをやめた。

Gifキャプチャーツール

Peek というツールを使っている。

今の所そんなに頻繁には使わないけれど、ものすごくシンプルで使いやすいかなーとは思っている。

パスワード管理ツール

この手のツールの定番は 1Password なんだろうけど、私は Enpass を使っている。

クロスプラットフォームでかつ、OSが変わってもUIが一緒で使用感にほとんど差が無く使えるのがよい。 PCだけで使う分には無料でOKだし、モバイルも含めて使うならプラットフォームごとに $9.99 払えばフルで使える。[2]

以前は Keepass も使っていたけれど、Enpass のブラウザ連携のやりやすさに感動して1年ほど前に Enpass に乗り換えている。 そのへんの話は以前以下のブログに書いた。

続・ラフなラボ – パスワード管理ツールを Keepass から Enpass へ移行した

プレゼンテーション

当然 Keynote、PowerPoint は使えないけれど、案外選択肢はあると思う。

今年は色々なツール・サービスを使う機会があったけれど、普通にプレゼンテーションするのであれば Google Slides を使うのいいんじゃないかなと個人的には思っている。公開されているテーマも結構あるし、基本的なレイアウトが扱いやすいのでいいと思う。画像も扱いやすい。

他の選択肢だと以下も普通につかえる。Markdown スライド系が多い。

また実際にプロジェクタに繋いでプレゼンする際には、解像度の Scale 設定を 100% より大きくしている場合、 プロジェクタ側の解像度調整がどうにも上手くいかなくなることがある。 ラップトップのディスプレイが QHD や 4K 対応の場合デフォで200%とかになってる可能性もあるので設定を確認したほうがよい。

オフィス系ドキュメント

今の職場は基本的に Google Apps を使うのでドキュメントもだいたい Google Docs。 たまに MS Office のドキュメントが共有されるケースもあるけれど、閲覧だけなので Google Drive でみても LibreOffice でみても全く問題ない。

なので、ブラウザとLibreOfficeさえあればほぼ困ることはないという状況。

クラウドストレージ

会社で Google Apps を使っている関係で Google Drive が使える。 残念ながら公式のクライアントは Linux には用意されていないけれど、今 OverGrive というものをトライアル中。いい感じに同期できているっぽいので License 購入してよさそうな感じ。

一応 Gnome にも Google アカウントの機能に Google Drive 領域をマウントする機能があるのだけど、 ものすごく反応が遅くてまともに使えない感じ。

ちなみに業務用の XPS13 2 in 1 には入れていないけど、 プライベートで使っている XPS15 (こちらも ArchLinux) には Dropbox と OneDrive のクライアントを入れている。 Dropbox は公式の Linux クライアントが使えるし、OneDrive も非公式ではあるけどまあ使えているという感じ。

OneDrive のクライアントについては以前ブログを書いた。

続・ラフなラボ – Linux の MS Onedrive のクライアントで新しいものが出ていたので変更してみた

Slack

Slack は公式の Linux 版が提供されており、ArchLinux 向けのものも pacman 経由で簡単に入れられる。 他にも scudcloud というサードパーティのクライアントもある。

基本的には公式を使っておけばいいと思う。ただ、以前 mac で入力すると豆腐が混入するバグが直るまでの間、 公式クライアントでは豆腐まみれで見れなかった文字が scudcloud では何の問題もなく表示されることもあったので 念の為両方入れている。

Linux 環境で業務をしていてよかったこと

実は極端に「これができる。Linuxデスクトップサイコー!」と感じることはそんなにない。

Docker がネイティブで使えるという点はうれしいし、開発やインフラ運用に必要なツールは大体すぐに導入できるし、デスクトップ環境の細かいところも自分色に染められる感じは結構気に入っているかなという気はする。

ただ一番大きいのは、ArchLinux だからではあるけど、 常に最新のOSを安定して使っていられるということが私にとってはうれしいことだなと感じている。

Linux 環境で業務をしていて困ったこと

これまでの流れだと、そんなに困ってなさそうな雰囲気を醸し出したかもしれないけれど 1個だけものすごく困ったというかツラいことがあった。それが IPsec な VPN への接続。

ツラさを挙げると以下のような感じ。

  • AUR 含めて GUI の Client ツールを探してもほとんど出てこないし、出てきたものもまともに動かない
  • 「Linux IPsec」で検索しても VPN サーバ構築の話ばかりで、Client として接続するだけの話がほとんど出てこない
  • 辛うじて見つけた情報をもとに Client 設定をするにしても、ミドルウェアを幾つか導入して設定する必要がある
  • 結局 libreswan か strongswan + lx2tpd の導入が必要となり大掛かりでものすごく面倒。下手なサーバ構築よりキツイ。

手段がないわけじゃないけど、Windows/mac だとすんなりできることなのになんでこんなことを... というレベルでツラかった。

ちなみに OpenVPN の場合は NetworkManager のプラグインがしっかり動くので、あっさり繋がる。 他の VPN は試してないけど、もしかしたら導入が面倒な場合もあるかもしれない。

まとめ的な所感

実際に Linux デスクトップをこんな感じで仕事で使っているという紹介をしました。

1年位 Linux デスクトップを実際に使ってみていますが、思ったよりも困ることは全然少ないなと感じています。 もちろん、仕事内容や職場環境によるところはあると思いますが Linux デスクトップ生活、悪くないです。

私個人としては、これからも特段理由がなければ Linux デスクトップを使い続けようと思ってます。

[1]AUR はユーザーコミュニティによる ArchLinux 用のリポジトリ
[2]Android, iOS にそれぞれ課金という形になる。なので Android 複数台なら1回だけの課金でいいし、Android も iOS もというのであればそれぞれに対して課金する必要が有るという感じ。