Windowsよ、また半年後に会おう―Macのありがたみを噛みしめつつ、Windows 10を使ってみた

2016年の師走、MacBook(薄いやつ)を修理に出しています。そんな中、ちょっとWindows機を触ってみたくなってしまったWeb系開発者(=私)が、右往左往したポイントを**26の「〇〇がない」**として、書き留めておこうと思います。本当に解決策が「ない」ものもあるし、探して見つかったもの、代替策があるものいろいろですが、Windowsが気になりかけている人の参考になれば幸いです。

- **目標**: Macで使っていたように、Windowsを使う
- **方針**: 魔改造禁止

ちなみに**「半年後に会おう」は誉め言葉**ですよ。Windowsラブな方々誤解しないでね。以下の表は、参考まで、比較対象のMacとWindowsマシンです。ほかに、予備のMacBook Pro 15'もあるのですが、もう重くて持ち運べません...。

マシン | サイズ | 重さ | ディスプレイ | 備考
:-- | :-- | :-- | :-- | :--
[Apple MacBook](http://www.apple.com/macbook/specs/) | 12インチ | 920g | 2304x1440 | 修理中...
[Huawei MateBook](http://consumer.huawei.com/en/tablets/matebook/index.htm)  | 12インチ | 640g<br>(キーボード装着時: 1090g) | 2160x1440 | iPad ProでWindowsが動いているような感じ

## 目次

0. [bashがない](#tv-bash%E3%81%8C%E3%81%AA%E3%81%84)
0. [ターミナルがない](#tv-%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%8C%E3%81%AA%E3%81%84)
0. [ターミナルで文字列をペーストできない](#clipboard-%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E3%83%9A%E3%83%BC%E3%82%B9%E3%83%88%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)
0. [brewがない](#beer-brew%E3%81%8C%E3%81%AA%E3%81%84)
0. [エディタがない](#memo-%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%81%8C%E3%81%AA%E3%81%84)
0. [Atomがタッチイベントを聞いてくれない](#scroll-atom%E3%81%8C%E3%82%BF%E3%83%83%E3%83%81%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%92%E8%81%9E%E3%81%84%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%AA%E3%81%84)
0. [gitがない](#arrow_heading_up-git%E3%81%8C%E3%81%AA%E3%81%84)
0. [Gitクライアント(GUI)がない](#arrow_heading_up-git%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88gui%E3%81%8C%E3%81%AA%E3%81%84)
0. [CRLFにした覚えはない](#arrow_right_hook-crlf%E3%81%AB%E3%81%97%E3%81%9F%E8%A6%9A%E3%81%88%E3%81%AF%E3%81%AA%E3%81%84)
0. [モバイルのエミュレータがない](#iphone-%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%A8%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%8C%E3%81%AA%E3%81%84)
0. [Xcodeがない](#iphone-xcode%E3%81%8C%E3%81%AA%E3%81%84)
0. [既存テストが通らない](#alien-%E6%97%A2%E5%AD%98%E3%83%86%E3%82%B9%E3%83%88%E3%81%8C%E9%80%9A%E3%82%89%E3%81%AA%E3%81%84)
0. [Sketchがない](#gem-sketch%E3%81%8C%E3%81%AA%E3%81%84)
0. [1Passwordがない](#lock-1password%E3%81%8C%E3%81%AA%E3%81%84)
0. [Markdownエディタがない](#fax-markdown%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%81%8C%E3%81%AA%E3%81%84)
0. [Spotlightがない](#flashlight-spotlight%E3%81%8C%E3%81%AA%E3%81%84)
0. [英数キーがない](#a-%E8%8B%B1%E6%95%B0%E3%82%AD%E3%83%BC%E3%81%8C%E3%81%AA%E3%81%84)
0. [Command + Wがない](#sheep-command--w%E3%81%8C%E3%81%AA%E3%81%84)
0. [ファンクションキーをデフォルトにできない](#fast_forward-%E3%83%95%E3%82%A1%E3%83%B3%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%AD%E3%83%BC%E3%82%92%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AB%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)
0. [アプリケーションを閉じるボタンがない](#negative_squared_cross_mark-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E9%96%89%E3%81%98%E3%82%8B%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%8C%E3%81%AA%E3%81%84)
0. [Applicationsフォルダがない](#open_file_folder-applications%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%8C%E3%81%AA%E3%81%84)
0. [ホームディレクトリがない](#house-%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%8C%E3%81%AA%E3%81%84)
0. [バックスラッシュがない](#yen-%E3%83%90%E3%83%83%E3%82%AF%E3%82%B9%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%8C%E3%81%AA%E3%81%84)
0. [英語環境がない](#globe_with_meridians-%E8%8B%B1%E8%AA%9E%E7%92%B0%E5%A2%83%E3%81%8C%E3%81%AA%E3%81%84)
0. [ヒラギノがない](#abc-%E3%83%92%E3%83%A9%E3%82%AE%E3%83%8E%E3%81%8C%E3%81%AA%E3%81%84)
0. [Retinaじゃない](#eyes-retina%E3%81%98%E3%82%83%E3%81%AA%E3%81%84)

## 開発に必須ないろいろ

### :tv: bashがない

WindowsにはMS-DOSの流れを汲む**コマンドプロンプト**がありました。PowerShellとかもありますね。でも、そこに用はないんです。使いたいのはUnixなんだ! ―という声に答える形で今年、電撃発表されたのがBoW(Bash on Windows)です。WSL(Windows Subsystem for Linux)とか呼ばれています。

まだベータ版で、やっと最近のアップデートでWindowsの設定から入れられるようになった、という段階です。ちなみに、[GitHubにリポジトリ](https://github.com/Microsoft/BashOnWindows)があってIssueを集めています。(ソースはなし)

![image](https://qiita-image-store.s3.amazonaws.com/0/1858/c7ebf0d1-85d3-75be-e9da-837595070b50.png)

Windowsで、今まで似たようなことをしたければCygwin入れるか、仮想環境を入れるかでしたが、互換性かWin-Linux間の相互運用性のどちらかを犠牲にしている感あり。

- [Cygwin](https://www.cygwin.com/)
- [MinGW](http://www.mingw.org/)
- [Hyper-V](https://www.microsoft.com/en-us/cloud-platform/virtualization)


### :tv: ターミナルがない

素の状態ではないのですが、上記のBoWが入るとbashのターミナルも入ります。ダサい、スクロールバーが邪魔、その他いろいろ言いたいことがあります。Macのターミナルの美しさを再発見させてくれます。ほかのターミナルアプリケーションもありますが、うーん。

- 標準のbashターミナル
- [mintty](https://mintty.github.io/)
- [cmder](http://cmder.net/) 

ただ、近々、状況は改善されるかも。将来リリース予定らしいのが次の2つ。black-screenはバージョン1になったらWindows対応するよ、とのこと。Hyperは**Windows build is coming very soon!**らしいので、期待が集まります。

- [Hyper](https://hyper.is/)
- [black-screen](https://github.com/vshatskyi/black-screen)

**追記**: この記事を公開した数時間後に、**Hyperのv1.0.0がWindows版と合わせて公開されました!** しっかり動いてます。もちろん、bashでも動きます。

### :clipboard: ターミナルで文字列をペーストできない

**マウスの右クリックでペーストされます**。残念ながら冗談で言っているのではなく、そうなのです。使う気にはなれませんが...

コマンドプロンプトでは解決策があって、[ここ](http://www.howtogeek.com/197749/how-to-power-up-the-windows-10-command-prompt-with-ctrlc-and-ctrlv/)の指示通り、"Enable new Ctrl key shortcuts"をオンにすれば、Ctrl + Vでペーストできます。

ただ、Bash on Windowsの方は同じオプションはあるものの、Ctrl + Vはバインドされていないご様子。bash内のショートカットとバッティングして難しいんだろうな...と思うものの、極めて不便。(Macの場合、CtrlとCmndが別なのがありがたいところ)

### :beer: brewがない

Macだと、`brew`やそのプラグインである`cask`が手放せません。例えば、Windowsで`git`や`make`コマンドをインストールしようと思ったら...、なんと(というか、Ubuntuだから当たり前)、`apt-get`が使えます。Windowsでaptとか衝撃的です。

一方、GUIアプリやWindows用のコマンドラインツールには`chocolatey`があります。[インストール可能なパッケージ](https://chocolatey.org/packages)を眺めてみると、ChromeやSkypeから、gitやnodeほか4000以上あるんですって。知らない世界だ...

- [apt-get](https://help.ubuntu.com/12.04/serverguide/apt-get.html): BoWの中のコマンドのインストール
- [chocolatey](https://chocolatey.org/): Windows側のツールのインストール

![image](https://qiita-image-store.s3.amazonaws.com/0/1858/e7e06197-c5ec-9a92-049b-3cd5c6a16e5d.png)

### :memo: エディタがない

さすがに、そんなことはないですね。メジャーなツールはAtomほか、Mac/Windows両対応のものが多いです。

- [Atom](https://atom.io/)
- [Visual Studio Code](https://code.visualstudio.com/)
- [Brackets](http://brackets.io/)

![image](https://qiita-image-store.s3.amazonaws.com/0/1858/662c642f-99fe-49b1-610b-a3ccb1ed951d.png)

ただし、かつてお世話になった往年のエディタたち(EmEditorや秀丸エディタほか)は、時間が止まってしまったかのようです。少なくともMacからの乗り換え組は手を出すべきではないでしょう。

### :scroll: Atomがタッチイベントを聞いてくれない

Atom本体にはタッチパネル対応がありません。画面上でタッチしながらスクロールしようとしても無反応です。

ただ、[atom-touch-events](https://atom.io/packages/atom-touch-events)を入れればだいたい大丈夫。早いところ、本体に取り込まれると良いのですが...

### :arrow_heading_up: gitがない

まあ、Macも素の状態では入っていないですね。bashからの場合、次のコマンドで入ります。

```bash
$ sudo apt install git
```

ただ、これだとWindows側のアプリケーションからは使えないので、Visual Studio Codeなどのためにchocolatey(前述)からも入れておく必要があります。

```bash
C:\> choco install git
```

### :arrow_heading_up: Gitクライアント(GUI)がない

これも、そんなことはないですね。私が最近メインで使っているForkはMac版のみですが...

比較すると、Towerの出来が圧倒的にいいです。SourceTreeはUIがちょっと大味な印象。UIが「まったく同じ」という点では、Gitkrakenもあり。

- [Tower](https://www.git-tower.com/windows/)
- [SourceTree](https://www.sourcetreeapp.com/)
- [Gitkraken](https://www.gitkraken.com/)

![image](https://qiita-image-store.s3.amazonaws.com/0/1858/c9c6283b-eb77-2381-66f3-e90eeab3615c.png)

### :arrow_right_hook: CRLFにした覚えはない

そんな覚えはまったくないのに、lintで文句を言われるケースがありました。結論から言うと、Gitクライアントが余計なことをしています。

- bashから`git clone`している場合はOK: LFのみ
- GUIからクローンした場合はNG: 勝手にCRLFに...

これを解決するには、gitの設定で`autocrlf`を`false`にします。

### :iphone: モバイルのエミュレータがない

もちろん、iOS Simulatorはないです。Android系は普通に動きます。
Webであれば、Chromeなどのデバイスプレビュー機能を使えばある程度は。

### :iphone: Xcodeがない

ないです。

### :alien: 既存テストが通らない

筆者がメンテナンスしているNodeのライブラリを扱おうとしたところ、ほぼすべてでテストが通りませんでした... (BoWにて)。ライブラリ自体はWindows対応していても、テスト環境についてのWindows対応はこれからですね...

- karmaからelectronが起動できない
- ほか、未解明多数...

正直、**これが一番致命的でした**。どうにかするには、仮想環境を立ててLinuxを走らせるしかないでしょう、今の時点では。

## その他のアプリケーション

### :gem: Sketchがない
 
良い時代になりました。かわりに[Figma](https://www.figma.com/)を使いましょう。Sketchからのファイルインポートも可能です。

![image](https://qiita-image-store.s3.amazonaws.com/0/1858/d77d2a20-1f49-441c-9242-c56f254d0888.png)

### :lock: 1Passwordがない

いやいや、[あります](https://1password.com/downloads/)。が、不完全? 結構前から、このWindows版はあるのですが、UIの不完全さといい、本気感がいまいち。そして、いまだに既存のデータがひとつもインポートできていません...。死活問題です。

### :fax: Markdownエディタがない

Macほど乱立はしてないですが、ちらほらの「ちら」くらいはありますね。ちなみにこの記事はKobitoから書いています。Mac版よりも、プレビューペインの表示については安定していて使いやすいです。

ただ、UIがモダンなものというと、かなり限られていて、Storeで見て使おうかなと思えたのはEdifyくらいでした。Electronで動くオープンソースのものを探したほうが良さそうです。

- [Kobito](http://kobito.qiita.com/win)
- [Edify](https://www.microsoft.com/en-us/store/p/edify-text-editor/9nblggh4wjn8)


## システム全般

### :flashlight: Spotlightがない

Macだと<kbd><kbd>Control</kbd> + <kbd>Space</kbd></kbd>でSpotlightが開くので、筆者はそこにタイプしてアプリケーションを起動していました。Windowsの場合は、<kbd>Win</kbd>キーを押すと**Cortana**が入力を受け付けるので、同様のことができます。

- アプリケーション名、ファイル名など
- 「1+1」のような計算式ほか

### :a: 英数キーがない

Macの日本語キーボードに慣れているとまどろっこしいのが<kbd>半角/全角</kbd>キーです。さらに、<kbd>英数</kbd>の位置には<kbd>無変換</kbd>という**世のほとんどの人は一生使わない**キーが居座っています。

幸いIMEの設定で、次のように設定できます。

- 無変換 → IME Off
- 変換 → (アサインなし)
- ひらがな → IME On

もし、外部キーボードを繋げるのであれば、Appleのキーボードを使うのも手です。[AppleK](http://www.trinityworks.co.jp/software/AppleKPro1064/)という老舗のサードパーティドライバが存在します。

まあ、USキーボードなひとには関係ないですね。

### :sheep: Command + Wがない

画面を閉じる動作は、日常的に多いと思います。ほとんどのアプリケーションでは<kbd><kbd>Alt</kbd> + [<kbd>Fn</kbd>] + <kbd>F4</kbd></kbd>にアサインされています。ただ、最近のキーボードはメディアキーがデフォルトになっているケースが多く、いちいち<kbd>Fn</kbd>まで押さねばならず、みなさんどうしてるの?

ちなみに、この辺は<kbd><kbd>Ctrl</kbd> + <kbd>W</kbd></kbd>でOK。

- Chrome
- Atom
- Explorer (MacでいうところのFinder)

**追記**: コメントで<kbd><kbd>Alt</kbd> + <kbd>Space</kbd></kbd>に続けて、<kbd>C</kbd>を押す、というのを教えてもらいました。キーが近くて良いですね。

### :fast_forward: ファンクションキーをデフォルトにできない

ああ、もう! この設定、Windows側の環境設定にないんです。ファームウェアの設定から変更するか、独自のコントロールパネルを追加されているか、ハードウェアメーカー次第です。(OSレベルで統一して...)

[詳しくはこちら](http://www.howtogeek.com/235351/how-to-choose-whether-your-function-keys-are-f1-f12-keys-or-special-keys/)をどうぞ。

### :negative_squared_cross_mark: アプリケーションを閉じるボタンがない

何を冗談をと思うかもしれませんが、全画面モードにしていると、アプリケーションを閉じる方法が画面内にありません。

- <kbd><kbd>Fn</kbd> + <kbd>F11</kbd></kbd>を押していちいち全画面を解除してから閉じる
- <kbd><kbd>Win</kbd> + <kbd>Tab</kbd></kbd>を押して、閉じるボタンをタップ
- 素直に、<kbd><kbd>Alt</kbd> + <kbd>Fn</kbd> + <kbd>F4</kbd></kbd>で閉じる

タブレットモードにきちんと対応しているアプリケーションだと、画面上端からのドラッグで閉じるボタンが出てくるものもあります。まだレアケース。↓はFacebookアプリの場合で、上部のバーは普段出ない。

![2016-12-12 (8).png](https://qiita-image-store.s3.amazonaws.com/0/1858/f7237eaa-4733-2c78-e66a-1bb68bf6c6da.png)

### :open_file_folder: Applicationsフォルダがない

相当するものが、

- `C:\Program Files`
- `C:\Program Files (x86)`

などにあります。一か所にまとめてよ...。ちなみに、手動にこのフォルダにアプリケーションを入れても、Cortanaからの検索対象にならないようです。なんで?

**追記**: コメントで教えてもらいました。検索対象にするには、今もStart Menuディレクトリにショートカットを入れる必要があるんですね。

- `C:\Users\All Users\Microsoft\Windows\Start Menu\Programs`
- `C:\Users\[UserName]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs`

### :house: ホームディレクトリがない

最近のWindowsでは、ユーザのデータは

- `C:\Users\cogni`

にあります。`cogni`のところは自分のユーザ名で置き換えてください。ちなみに、そんな中途半端なディレクトリ名を指定した覚えはありません。勝手に短縮しないで...。

ちなみに、Bash on Windowsのホームディレクトリは別に存在していて、こちらです。

- `C:\Users\cogni\AppData\Local\lxss\home\cognitom`

### :yen: バックスラッシュがない

Windowsと言えばバックスラッシュですが、日本語フォントではほとんどのアプリケーションで「&yen;」が表示されます。Unicodeではバックスラッシュと円マークは別に扱えることを声を大にして言いたいですが、どうもWindowsの世界ではいまだに区別をつけないようです。(少なくともデフォルトの環境では)

## 美的な感覚に関する件

### :globe_with_meridians: 英語環境がない

これは誤解で、そうだったのはXPなどの旧いWindows時代の話です。現在(Windows 10)では、基本的には日本で買ったWindowsでも英語をメインにして利用できます。第二言語に日本語を設定しておけば、日本語の表示や入力についても英語環境で可能です。

なぜ、これが「美的な感覚に関する」のか。それはWindowsの日本語環境は2016年の今も:rainbow::rainbow::rainbow::rainbow:だから...。

### :abc: ヒラギノがない

5万ぐらい払えば買えます。[MORISAWA PASSPORT](http://www.morisawa.co.jp/products/fonts/passport/)にも入っていますね。

[メイリオ](https://www.microsoft.com/typography/fonts/family.aspx?FID=323)やUI系ゴシックでなければ、ヒラギノにはこだわらないのですが、Webサイトの指定には**ヒラギノ→メイリオ→San-serif**の順になっていることが多く、「ヒラギノ」がないと、別のゴシックをシステムフォントにしても強制的にメイリオになってしまいます。

(レジストリをいじって、他フォントをメイリオやSegoi UIだと認識させる方法はあるけれど、やりたくない...)

### :eyes: Retinaじゃない

これも機種次第。例えば私の環境だと、解像度についてMateBook(2160x1440)とMacBook(2304x1440)はほぼ同等です。WindowsのOSの設定で基本倍率を変えられるので、むやみにアイコンが小さくなることもないです。

今のところ、情報量優先で175%で使っています。定義が200%以上ということであれば確かに「Retina」ではないんだけど、少なくとも「ドットが見えて気になる」「ビットマップフォントが...」とかの心配はなさそうです。

![2016-12-12 (10).png](https://qiita-image-store.s3.amazonaws.com/0/1858/c8d228bf-7577-6c04-18ab-bb7954423a9b.png)

## 番外編「〇〇がある」

あまり「ない」ばかり言っているのも非建設的なので、逆パターンをいくつか。

### :back: 戻るボタンがある

これ、知ってました? Android OSとほぼ同じ思想(?)の「戻る」ボタンがWindows 10にはあります。Microsoft製のアプリですら未対応のものもあり、ときどきその動作に混乱しますが...。EdgeやFacebookクライアントなど、対応アプリケーションを使っている限り、非常に快適です。「タブレット」として使えます。

Chromeよ「戻る」ボタンに対応しておくれ! ([ここを見つつ](https://bugs.chromium.org/p/chromium/issues/detail?id=511517)コードを覗いてみようかな...)

### :fish_cake: 指紋認証がある

もちろん、機種によりますが、Windows機は結構ついてます。ビジネス用途のマシンであればほぼ間違いなく。[Windows Hello](https://support.microsoft.com/ja-jp/help/17215/windows-10-what-is-hello)として、OSに標準搭載されたのも大きいのでしょうか? Macでも新MacBook ProのTouchバーに搭載されましたね。

### :point_up: タッチパネルがある

Macにはない選択肢です。私自身、新MacBook ProのTouch Barには肯定的で、MacBookに搭載されるのを心待ちにしています。ただ、日常を振り返ると、携帯やらタブレットやらが家じゅうに転がっている中、タッチできないのはTVとMacだけ...、なんだか釈然としないです。

実際Windows 10を使ってみると、タッチパネルはやはり便利というか「当たり前」な感触です。以下の作業以外では、ほぼタッチパネルでの操作に慣れてしまって、Macに戻れるか不安...

- テキストの範囲指定
- カラムの幅変更
- 細かいオブジェクトの選択

## まとめ

ないないと言いつつも、案外なんとかなりそうな雰囲気は見えてきて、複雑な心境です。実際のところ、オールドスクールなアプリケーションを使わないようにすれば、デザイナー寄りの人間が使っても、Windows 10で発狂しそうな事態は避けられました。ただし、日本語はダメです。**UI系ゴシックを毎日見てたら発狂します**。結論めいたものとしては、

- 英語環境で使う
- gitで`autocrlf`をオフる
- Bash on Windowsの正式版を待つ (今はまだBeta版)

この3点を満たせば、「まあ、ありかな」?

こう言いましょう、**Windowsよ、半年後また会おう!** と。
あるいは、その気があれば今が各種ツールにプルリクエストを送りまくるチャンスですよ。

### 編集後記

Macはタッチパネルの可能性をバッサリ切ってしまったけれど、Windows 10は「タブレットモード」で一応の着地点を見つけたように思います。その点は、Windowsを応援したいところです。

Out of boxで使えるMacと違い、**Windowsで開発を始めるためには、まだ超えるべきハードルが大量にあります**。ただ、2016年になってこのハードルを超えるやつが出てきそうだな、という予感めいたものは感じるようになりました。

一方、次はMacでもWinでもなく、Chrome OSでいいんじゃないか、というささやきも聞こえます。実際、筆者は非常用に[クラウド上にも開発環境](https://codeanywhere.com)を確保しています。現状、テストツールの互換性問題が解決するまでは、Windows上でもその手で凌ごうかと...。早くMac帰ってきて! :cry: