本記事はWebのプログラミングや開発を行うために、「本当にMacはおすすめなのか」という疑問について Windows / Mac / Linux を業務で利用した結果「WebエンジニアにはMacをおすすめしない理由」について解説しています。
巷では、「プログラミングをするならMac一択だ」や「エンジニア初心者にはMacがおすすめ」という情報をよく見ますし自分の周りもMacをおすすめしている人が多い印象ですが、実際に業務でMacを使ってみた使用感を踏まえて理由をご紹介できればと思います。
皆さんのWebシステム開発の作業効率向上のお役に立てれば幸いです。
目次
1. 筆者のMac利用状況
まず自分自身とMacの接点についてご紹介です。
1年前までほとんどMacを業務利用したことがなかったのですが、ここ1年MacをメインのPCとしてWebシステム開発業務を行ってきました。
(厳密には8年前に半年ほど使ってショートカットも一通り覚えた上で、やっぱりWindowsだなとなっていてしばらく空白の期間があります)
現在の主な利用状況は以下のとおりです。
- VSCodeを使ったWebシステム開発(Wordpress/CakePHPなど)
- Vagrant/Dockerを使った開発環境構築
- Node.jsを使ったWebシステム開発
- Googleドキュメントやスプレッドシートを使った資料作成
- Office 365を使ったWordやExcel、パワポを使った資料作成
- Slack/Google Hangoutでのテキスト・音声・動画コミュニケーション
これらの業務利用についてはMacの利点をあまり教授できなかったという感触です。
2. Macの良いところ
まず個人的に「Macのここが良いな」と思っているところについて解説します。
見た目が美しい
筐体がアルミ製できれいな形をしていて、特にMacbook ProのUS配列モデルを選んでいる場合は本体を開いたときもとても見た目がすっきりしていて美しいですね。
昔Macbook Airが登場したときに、他メーカーも追従してデザインを真似たのもうなずけます。
トラックパッドが秀逸
Macbookシリーズに搭載されているトラックパッドが他のどのPCよりも優れていると思っています。
PCを持ち運びで利用する時にこのトラックパッドがあることでマウス類が無くても安心して作業が出来ます。
移行がラク
MacOSに搭載されている移行アシスタントが強力です。
最近たびたびMacを移行する機会に見舞われたのですが、2台立ち上げてちょっと設定すれば置いておくだけでほとんど設定ごとPC移行ができたのでとてもラクでした。
他のOSではこうはいかないと思います。
iOSアプリの開発ができる
これは良いところというより必須条件なので微妙ですが、iPhoneアプリやiPadアプリを開発するにはMacが必要ですね。
日本国内ではiOS利用者が多いので、作るアプリをいろんな人に使ってもらいやすいのはメリットかなと思います。
ショートカットキーに使えるキーが多い
MacにはCommand(Cmd)キー、Control(Ctrl)キー、Option(Opt)キー、Shiftキーがあるので、Karabinerアプリを使ったカスタマイズで自由にショートカットを設定できる幅が広がります。
他のOSに比べてMacならではの部分は好きなところも多いのですが。。。
3. Macをおすすめしない理由
本題です。
今までMacを使ってみてWindowsやLinux(Ubuntu系)と比べて不満が多い部分があるのですが、ここでは「慣れ」では解決しづらい部分について解説できればと思います。
Office製品から逃れることが難しい
どうしてもクライアントがExcelやWordで資料を作ることもあるため、現状業務ではOffice製品から逃れるのが難しい時代だと思います。
(最近の実務ではGoogleドキュメントやスプレッドシートを使う機会が多いため、だいぶ少なくなってきましたが)
Mac版のOfficeはアプリの立ち上がりも遅く、Windowsの操作感に似せてはいるもののどうしてもショートカットが独自カスタマイズされていたり、マクロ再現し切れていなかったり、で互換性が100%ではないためどうしても非効率になります。
場合によっては、VMにWindowsを入れるなどの工夫が必要になると思います。
ショートカットが安定していない
「安定していない」という表現が適切かどうかわかりませんが、例えばテキストエディターで行頭にカーソルを移動したいとき、
- Windows/Linux → Homeキー
- Mac → Cmd+左 または Ctrl+a または Homeキー
ですが、Macの場合このいずれもアプリによって仕様が変わることがあります。
「Cmd+左」ではインデントを考慮した先頭と本当の行の先頭を行ったり来たりできたり、「Ctrl+a」は本当の行の先頭しか行けないなど。
また、データベース操作を行うMySQL Workbenchというアプリを使っているのですが、SQLエディター上では「Ctrl+a」が期待する動きをしなかったりします。
さらに、ブラウザでGoogleの検索キーワードを入力する画面にカーソルがあるときは、「Cmd+左」で入力欄の中の一番左にカーソルが移動しますが、それ以外の場合は1つ前のページに戻ります。(なぜ同じキーに別の役割を持たせたのか。。。)
なので、「どのアプリでどういう状態の時にどのショートカットがどう動くか」を必要以上に覚えていかないといけないので、こちらも非効率ですね。
覚えることは最小限にして開発に集中したいのです。
Webシステムは本番環境がLinux系であることが多い
Macが選択肢に入るということは、Microsoft系のWebシステム開発ではないという前提で進めます。
その上で、よく「MacはUnixコマンドが使える」というのが、Macの利点として挙げられますがLinuxとはオプション指定が異なるものやコマンドの役割が違うものがあったります。
なので「Macで普段使っているオプションを本番環境で実行したら違う動作をする」なんてことも有りうるので利点というよりむしろリスクになりますし、両方覚えないといけないので非効率ですね。
最終的に本番環境がLinuxなのであれば、Unixコマンドを使える環境としては最初からOSをLinuxにしてしまうか本番環境と同じVM環境を構築して、普段からその中の環境を触る方が安全かと思います。
Dockerが重い
MacではDockerが動くよ!とメリットが紹介されることもあると思いますが、Mac上で動かすDockerはストレージの読み込みなどで特殊な処理が挟まるからなのか、めちゃくちゃ重いです。
Vagrant上でDockerを立ち上げた状態の方が圧倒的に処理が早いです。
なので、結局Mac上でDockerが使えることがメリットにならず開発効率は上がらないなという印象でした。
設定しないと出来ないことが多い
例えば、デフォルト設定ではOS上に表示される確認のダイアログで「OK」、「キャンセル」を選択するときにキーボードでボタンのフォーカスを移動することができません。
こちらはキーボード設定で、キーボードで「すべてのコントロール」を操作できるようにわざわざ設定しないといけません。
また、権限周りでブロックされることが多く、いちいち設定のセキュリティ項目を立ち上げてパスワード認証(指紋でも可)を行って「このアプリからこの項目へのアクセスを許可する」というのをやらないといけないのですが、正直過剰だと思っています。
特に多いのはOSのバージョンアップを行った後に、音声通話などを始めていていざ画面共有やビデオ通話をしようとした時にブロックされて、許可設定後に一旦アプリを立ち上げ直す必要がある、というのが本当に生産性を落とします。
事前に設定できるだけでお互いの時間を奪わずに済むので、インストール時に許可させてくれたら設定し忘れなども無いと思うのですが。。。
文字コード問題
どこに原因があるかまで追求できていないのですが、Macでカタカナの濁点/半濁点を使った時に、他OSで文字が分離することがあります。
プリント→フ゜リント
Mac上で見ている分には問題ありませんが、Webシステム開発という観点で考えれば世間はまだ半数以上がWindowsユーザーなので、この問題が起きているのを見つけたときは直した方が良いでしょう。
また、それぞれでアプリを導入すれば解決しますが、MacとWindowsでファイルのやりとりを行う際にお手軽なZIP圧縮を利用するときに、OSに標準で入っているZIP展開用のアプリだと中のファイル名に日本語が混じっているときに文字化けします。
クライアントにITリテラシーが無い場合などはフォローも必要になりますので、作業効率が下がりますね。
日本語モデルのキー配列
日本語モデルのMacは一般的な日本語配列のキーボードの「半角/全角」キーのある箇所に「1」が大きく置かれていたり、「かな」「英数」キーがスペースキーの両サイドにあってCmdキーが押しづらい配置になっています。
そのため、外付けキーボードを買って作業効率を高めようとしたときに、Macのキー配列に準拠したものを選ぼうとするとかなり選択肢が狭まってしまいます。
US配列であれば、他のキーボードとほぼ互換性のある配列になっているためいろんな選択肢の中からキーボードを選ぶことができますので、この問題は起きづらいですが、慣れではどうにもならない問題の1つです。
特にWebエンジニアの初心者の方は、他の環境に触れるときにつまずくことが多くなるので日本語配列のMacは全くおすすめできません。
などなど、他OSででできることがMacではできなかったり、他OSとの互換性問題や初心者ほどつまずくポイントがあるので少し踏み込んでみると「Mac一択だ」とはならない印象を持っていただけたのではないでしょうか。
4. ではおすすめは?
個人的なおすすめとして、Webシステム開発をメインとするのであれば、WindowsでWSL2を使うことをおすすめします。
WSL2でLinux環境を使うことで、本番環境にできるだけ近い環境で開発ができるため「ローカルの環境では起きない問題」をできるだけ排除できると思います。
Windowsであれば、Officeも問題なく快適に動作するのでクライアントとのやり取りもとてもスムーズですし、文字化けの問題もほぼほぼ起きなくなります。
最初は安価なWindowsPCでいろいろ練習し、少し技術が身につけばOSをそもそもLinuxにしてしまうなどもありですね。
安いPCであれば遠慮なくできると思います。(Macは高級品ですから。。。)
以上、「Webエンジニア初心者ほどMacをおすすめしない理由」でした。
Macに親を殺されたのかというくらいのdisり具合になってしまいましたが、こういう観点もあるんだなと参考にしてもらえたら嬉しいです。
Webシステム開発の作業効率向上に少しでも貢献できれば幸いです。