業務でLinuxデスクトップ環境を利用するためのポイント

本記事は[エイチームフィナジー アドベントカレンダー2019](https://qiita.com/advent-calendar/2019/ateam-finergy)の4日目です。[1日目にはTypeScriptについて書いている](https://qiita.com/suzuki_sh/items/85dd85d107f453645ac9)ので、こちらもよろしければご覧ください。4日目の本稿は、弊社業務での取り組みについてご紹介します。

## 背景
弊社では2019年現在「PC選択制度」が用意されています[^1]。これは、業務用として会社から支給されるPCを一定のラインナップから選択できるという制度です。実際、一般的なWindowsPCに加えてMacbook ProなどWebクリエイターに人気の高いラインナップも含まれております。開発者は自分が最も高いパフォーマンスを発揮できる好みの環境を、自由に選択できます。

[^1]: [エイチーム【採用担当者の本音】企画に携わりながらサービス開発。求められるのは主体性とビジネス目線](https://career.levtech.jp/guide/pickup/column/107/)

ですがラインナップはWindowsとMacで構成されています。**開発者ならばLinuxデスクトップ環境も使いたい**と思いました。ちょうど来年に迫るWindows7のサポート終了も受けて、今後はLinuxデスクトップPCの業務利用ができないかを弊社情報システム部門と協力して検証することにしました。

もし「業務でLinuxを使ってみたい」という会社の方がいましたら、本稿が参考になれば幸いです。

----
※本稿の内容は、あくまでLinuxデスクトップ環境を弊社業務において利用する場合の検証をしている段階のものであり、2019年12月時点の弊社においてLinuxデスクトップ環境を従業員が一般的に活用しているわけではありません。先述の「PC選択制度」にも2019年12月時点でLinuxは含まれていません。

## なぜLinuxデスクトップ環境を業務利用するのか
### サーバ用アプリケーションとの互換性
まず、弊社のWebアプリケーションはほとんどがLinuxサーバ上で動作しています。通常業務の開発環境においても本番同様の環境を使えるのは、開発におけるスイッチングコスト削減による生産性向上が期待できます。

### CUI環境の使いやすさ
Linuxは、Windows・Macよりも自然にCUIと統合されており、多くのPC操作を再現性のあるシェルコマンドで実行できます。人によるかもしれませんが、開発者にとってはLinuxのほうが使いやすいという人が多いと思います。

Windowsは最近Windows Subsystem for Linux(WSL)の登場によって使いやすくなってきているのは事実ですが、ファイルパスの扱いなどまだ癖のある点も残っています。やはりLinuxに慣れた開発者にとって、本物のLinuxが最も使いやすいという状況はまだ変わりません。

### ライセンス料
本稿を読んでいる方にとっては言うまでもないかもしれませんが、Linuxはオープンソースソフトウェアであり基本的に無料で利用することができます。Windowsに比べてライセンス料の節約になるのはもちろん、仮想化等で複数の環境を用意して利用したりする際のハードルも、Linuxにおいては低くなっています。

### 高速なDockerの動作
弊社ではアプリケーション実行環境としてDockerも利用していますが、特にDocker for Macを使って開発している場合、他の環境に比べてパフォーマンスが出ない事が問題になる時があります[^2]。本件については様々な議論がされており改善に向かっていますが、そもそもLinuxであればそのような心配は無く快適に使うことができます。

[^2]: [File system sharing \(osxfs\) \| Docker Documentation](https://docs.docker.com/docker-for-mac/osxfs/#performance-issues-solutions-and-roadmap)

## 実際にどうLinuxを業務に導入したか
今回は、通常のWindowsノートPCにデュアルブートとしてCentOSをインストールしました。実際のインストール手順等は世の中に多く情報があるため割愛します。今回業務利用において実行した環境とは異なりますが[拙稿のLinuxインストール記事](https://qiita.com/suzuki_sh/items/ac444f9de6e9817dc23d)もあるので、必要であれば参考にしてください。

本稿では、会社に業務用として導入する上で必要だったポイントを記載します。

### 会社で利用できるインストールメディアを用意する
多くの会社はUSBメディア等の利用が禁止・制限されているのではないかと思います。まずLinuxのインストールメディアをどうやって用意するのかを予め確認しておきましょう。

弊社においてはUSBメディアの利用は原則禁止でしたが、会社で管理している貸出用USBメモリを用意してもらうことができました。このUSBメモリを社内のルールに則ってインストールメディアとして利用しました。

会社によって様々な制限があると思います。もし何らかの理由でそもそもUSBメディアを用意できないという場合でも、作成済インストールディスクを入手することでLinuxをインストールできるかもしれません。例えば[日経Linux編「今スグ始められる！ Linuxスタートブック」](https://info.nikkeibp.co.jp/media/LIN/atcl/books/062700018/)の付録には、Ubuntu18.04.2のインストールDVD-ROMが付いています。

どういった方法ならばLinuxをインストールできるか、会社の規定等をよく確認しておきましょう。

### 会社指定のソフトウェアをインストールする
弊社には会社指定のセキュリティソフトや資産管理ソフトがあり、WindowsやMacの業務利用PCにはそれらのインストールが必須となっていました。Linuxデスクトップ環境であっても業務利用する場合は、それら指定のソフトウェアをインストールする必要がありました。

ソフトウェアにもよりますが、今回指定された物は対応しているLinuxディストリビューションに制限がありました。それら**会社指定のソフトウェアが対応しているLinuxディストリビューションを選択する必要**がありました。そのため、今回はCentOSを選びました。

また、業務上すべてのPCにインストールする事が必須ではないソフトウェアについては諦めることも必要でした。例えば弊社会議室で利用しているディスプレイのワイヤレス画面共有クライアントは対応していなかったため、有線接続での画面共有や別途貸し出し用PCを利用して代用することになりました。

## Linuxを業務利用していて困ったこと
### Microsoft Officeが使えない
多くの会社でLinuxを業務利用するとき最も困るのが、Microsoft Officeではないかと思います。開発者は直接Officeを編集する機会はあまり無いかもしれませんが、一方で会社業務においてOfficeを切り離せないという人も多いと思います。

結論から言うと、頻繁にOfficeファイルを操作するのがメインの業務内容である場合、Linuxの業務利用は難しいと思います。

ですが、少し編集・閲覧する程度ならば代替案はいくつか用意されています。普段Officeを触ることは無いが、会社として共有される各種ファイルを少し編集・操作する程度ならば、Linuxを利用していても対応可能です。私は基本的にG Suiteを使うことで通常業務はほぼ問題なくできています。

- **GoogleのG Suite**からOfficeファイルを利用する
    - もともとGoogleの各種アプリでOfficeファイルのインポートは可能でしたが、最近のアップデートによりGoogle DriveにアップロードしたWord,Excel,PowerPointファイルがそれぞれGoogle Docs,Sheets,Slidesから直接編集可能になりました
        - [G Suite Updates Blog: Office editing makes it easier to work with Office files in Docs, Sheets, and Slides](https://gsuiteupdates.googleblog.com/2019/04/office-editing.html)
    - デザインの崩れなどはありますが、閲覧やかんたんな編集はとりあえずGoogle Driveにアップロードすることで十分利用可能です。
    - 現状ではサイズの大きいファイルは開けないようなので、画像を多く使ったプレゼンテーションファイル等には注意が必要です。
- **Microsoft Office 365のWeb版Office**を利用する
    - G Suiteの各アプリとほぼ同様に、Excel,Word,PowerPointの各ファイルをWebブラウザで編集できます。
        - Office 365かG Suite、会社で主に契約している方を使うことになると思います。
        - 個人的には、OfficeのWeb版は互換性が高くPowerPointの編集に向きますが、G Suiteの各アプリのほうが動作は軽快で、特にデザイン等を気にしなくて良いExcelファイルにはG Suiteが向いている、という印象です
    - G Suiteでは開けないサイズの大きいファイルも、こちらでは開くことができました。
- Windowsが動作しているPCを**リモートデスクトップ**で操作する
    - LinuxPCから完全な互換性でオフィスソフトを確実に動かす事ができます。マクロの含まれているファイルなどでも利用できます。
    - 別途Windows環境を用意できるという場合は、この方法が良いかもしれません。
    - 似たような問題として、Web開発の検証で**Internet Explorerが必要な場合**等でも、この方法であればLinuxから利用できます。
- Libre Office等の**オフィス互換ソフト**を利用する
    - クライアントアプリケーションとして、特にオフライン環境でオフィスの各ソフトを利用したい場合には、この方法になります。

### 一部のドライバがLinuxには対応していない
キーボード・マウスはじめ大抵の機器はLinuxでも使うことができるため心配は要りません。ですが、Linuxでは使えないデバイスも存在します。例えば私が使っているPCではWindowsでは指紋認証ができたのですが、Linux用のドライバは存在せずパスワード認証のみになってしまいました。

もし業務内容が特定のデバイスに依存しているような場合は注意が必要ですので、事前に対応状況を確認しておきましょう。

### フォントがWindows/Mac標準とは異なる
WindowsやMacには高品質な日本語フォントが最初からインストールされていますが、LinuxにはWindows・Macと同じフォントはインストールされていません。そのため、画面の見た目が異なってきます。

Windows10|Linux(GNOME)
:--:|:--:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50391/d530633e-80af-8012-1423-7197de6035ac.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50391/c8ae1b1b-ad89-7663-9cf4-d24b2ba6e075.png)
※Linuxの方はNoto Sans CJK JP等のインストールを済ませた状態

Web開発者にとって見た目は大した問題でなかったとしても、**ユーザーのUI表示を再現できない**のは業務内容によっては問題になる時があります。もしWindowsやMacに標準で付属しているフォントをLinuxで利用したい場合、それぞれライセンスを購入してインストールする必要があります。

- [Meiryo Font Family \| Fonts\.com](https://www.fonts.com/ja/font/microsoft-corporation/meiryo)
- [字游工房｜JIYUKOBO \| 游ゴシック体ファミリー](http://www.jiyu-kobo.co.jp/library/ygf/)
- [ヒラギノフォント｜SCREEN](https://www.screen-hiragino.jp/)

なおLinuxは環境によっては日本語フォントがインストールされておらず、いわゆる「豆腐」が表示されてしまいます。ですが見た目にこだわらず「ただ日本語を表示したい」という場合、困ることはありません。Linuxで使えるフリーの日本語フォント自体は多く存在します。特にIPAゴシック等の一部のフォントは`yum install`等ですぐに入手できます。

また、弊社ではVisual Identity Guidelineによって、会社として公表する制作物には[Noto Sans CJK JP](https://www.google.com/get/noto/help/cjk/)を利用する事が指定されています。これも`yum install`で入手でき、問題はありませんでした。

### Windowsとのファイルパスのやりとり
これはMacでも同様に発生する問題です。弊社ではWindowsユーザーが最も多く、また業務においては社内ファイルサーバのパスをやり取りすることが多くあります。そうなると困るのがファイルパスの扱いです。Windowsではファイルバスに`\`(逆スラッシュまたは円マーク)を用いますが、MacまたはLinuxでは`/`であり、変換して利用する必要があります。

Windows Subsystem for Linuxにおいては`wslpath`というコマンドがあり、CUIでWindowsとLinuxのパスを相互変換できるようになっています[^3]。これが通常のLinuxでも使えたら良いのですが...

[^3]: [Windows Subsystem for Linux のリリース ノート \| Microsoft Docs](https://docs.microsoft.com/ja-jp/windows/wsl/release-notes#build-17046)

## まとめ
多少の制約はあるものの、弊社におけるLinuxデスクトップPCの業務利用は可能ではないか、と思っています。会社によって業務利用のPCには様々な制限があると思いますが、本稿に挙げたようなデメリットを許容できるような場合はLinuxデスクトップPCを導入できるのではないかと思います。

### 結局Linuxデスクトップ環境を使ったほうが良いのか
私は仕事でも趣味でもWindows・Mac・Linuxすべて使った事がありますが、特に最近のバージョンのOSはどれも良くできています。またGoogle ChromeやVisual Studio Codeを始めとしたクロスプラットフォームアプリケーションが広く普及している状況も、OSの選択の自由度を後押ししています。OSSを中心に利用するようなWeb開発業務においてはどのOSを選んでも一長一短で、どれを選んでも快適に使うことはできると思います。

ですが、だからこそ「好みの環境を使えるようにする」という選択肢を用意する意義は大きいと思っています。好みの環境を使えるということは開発者の業務満足度に大きく寄与します。Linuxデスクトップという選択肢を加えることは、開発者にとってメリットが大きいのではないかと思います。

弊社での検証がうまく行ったら、弊社でもLinuxデスクトップ環境の業務利用が本格的に導入可能になるかもしれません。本稿が他にも導入したいとしている会社の助けになれば幸いです。

## 参考
- [業務で使っているPCをLinuxデスクトップにしてから半年が経った \- ぶていのログでぶログ](https://tech.buty4649.net/entry/2018/12/19/224128)
- [仕事用のPCをMacからThinkpadに変えてUbuntuを入れた \- PartyIX](https://h3poteto.hatenablog.com/entry/2019/07/11/174439)