プログラミング

Macは便利だけど「エンジニアを目指すならMacを買え」という意見には反対だという話

『たまにインターネットで「エンジニアになりたきゃMacを買え、Macはエンジニアとしての必要不可欠な自己投資だ!」みたいな意見を目にするけど、Macを使わないとエンジニアになれないの?』

ソフトウェアエンジニアになることに興味があるあなた、そんなことを考えたことはありませんか。私にはありました。

私は前職でMacとLinuxをそれぞれ1年半づつ使って働いていました。現職ではWindows、家でコードを書くときはLinuxを使っています。

一応これら3つのOSを使った経験を基に「Macは便利だけど、(初めからiOS開発者になりたい人以外)必須ではない。コードを書けるようになるのが先」といった主旨の話をします。

そもそもエンジニアがMacを使うメリットって?

メリット1:iOS(iPhone)アプリの開発に便利

モバイルアプリには大きく分けてネイティブハイブリッドの二つがあります。これらの違いをざっくり言うと以下の通り。

ネイティブアプリ

特定のOS(iOS/Android)向けに作られたアプリのこと。ネイティブアプリはパフォーマンスの速さに優れ、マシンの様々な機能(カメラやアドレス帳など)を利用できる。その一方、ネイティブアプリは特定のOSのみで動くので、複数のOS向けに開発したい場合は全てのOS向けにアプリを複製する必要がある。

ハイブリッドアプリ

ウェブの技術(HTML5、CSS、JavaScript)を利用して造られたアプリのこと。ハイブリッドアプリはマシンの内部で稼働し、ブラウザのエンジンを利用してHTMLを読み取る。ネイティブアプリとウェブアプリの両方の技術で動いているからハイブリッドと呼ばれている。

iOSのネイティブアプリはXcodeと呼ばれるソフトウェアを使い、「Objective-C」や「Swift」といったプログラミング言語で開発されるのですが、XcodeはMacでのみ利用可能なのです。(でもMacでAndroidのネイティブアプリを開発することは可能なんですよ。不公平でしょ。)

ハイブリッドアプリならMacでなくても開発できます。が、ハイブリッドアプリは速さでネイティブアプリに劣ると言われており(参考文献)、React Nativeのようなハイブリッドアプリの開発ツールだと一部のコンポーネント(画面上に表示される要素のこと)がMacでないと利用できないといった制限があります。

(私は前の職場で一度だけReact Nativeでアプリを作ったことがあります。Linuxで開発してました。バーコードを読んで結果をサーバに転送するだけの小さいアプリだったのですが、コンポーネントの制限のせいで結構面倒な思いをしました。)

別にモバイル開発なんて興味ないんだけど、それでもMacを使う意味はあるの?

と思っている方、ご心配なく。モバイル開発以外にもMacを使うメリットは存在します。

メリット2:UNIXベースのコマンドラインとフォルダ構造を覚えられる

MacはMac OSと呼ばれるOS上で動いており、Mac OSはUNIXと呼ばれるOSから造られたものです。Macを使うことでUNIXのコマンドラインとフォルダ構造に慣れることができます。

「コマンドラインって何?」と疑問な方のために大雑把に説明しますと、コマンドラインとは文字だけ使ってコンピューターのデータを操作するための技術です。

コマンドラインはどこにあるの?と疑問な方へ(ウィンドウズの場合)

あなたはこのブログをウィンドウズのコンピューターで見ていますか?では、画面左下のウィンドウズのロゴのとなりにあるアイコン(Cortana)をクリックし、cmdと入力してください。

すると、コマンドプロンプトというソフトウェアが見つかります。それをクリックしてみましょう。すると黒い画面が現れます。それがウィンドウズでいうところのコマンドラインです。あなたは現在Cドライブをコマンドラインを通じて見ている状態です。

じゃあ、UNIXのコマンドラインとフォルダ構造に慣れるとどんな良いことがあるでしょうか?例えば…

  • UNIXベースのサーバでアプリをデプロイするのに使える(デプロイ=ウェブサイトをサーバーに設置し、ネットワーク上で利用可能な状態にすること)
  • UNIXベースのサーバの管理/操作に役立つ

UNIXベースのサーバはWindowsよりも安価であり、世界中の70%以上のサイトがUNIXベースのサーバでホストされていると言われています。(参考文献)なので、あなたがウェブ開発に興味があるなら、UNIXベースのマシンのフォルダ構造とコマンドラインを覚えておくと、後々ウェブサイト・アプリをデプロイする時にその知識が役立ちます

LinuxだってUNIXベースじゃん。PCを買ってLinuxをインストールすればUNIXのコマンドラインを覚えられるでしょ?

と思っている方、その通りです。別にPCでもUNIXのコマンドラインやフォルダー構造を覚えることは可能です。

では、MacがLinuxと較べて優れている点とは何でしょう?

メリット3:ソフトウェアのインストールがしやすい

これまでMacを使っていて、欲しいソフトウェアやソフトウェアの拡張がインストールできなかったり、取得方法が見つからなくて困ったという経験はほとんどありませんでした。

その一方、Linuxだと欲しいソフトウェアや拡張があっても、特定のディストリビューションでないと取得できなかったり、ディストリビューションによっては欲しいソフトウェアのインストール方法がネット上で見つかりにくかったりします

ディストリビューションを直訳すると”配布”や”分布”です…が、個人的には”種類”と訳した方が適切な気がします。有名なディストリビューションの中には以下のようなものがあり、どれもネット上で無料でダウンロードしてWindowsにインストールできます。

  • Ubuntu
  • Linux Mint
  • Fedora
  • CentOS

例えば、私は現在CentOS 7というディストリビューションを使っているのですが、Python 3(プログラミング言語、Pythonの一番新しいバージョン)をCentOS 7で使うには仮想環境を作らなければならないことを知りませんでした。さらに、先日Python 3の仮想環境で作業している間にどうやらインストールしてはいけないものをインストールしてしまったらしく、OSが壊れてしまいました

CentOS 7、故障して永遠にリスタート(コンピューターの電源を入れると自動的にリスタートが始まり、その後もひたすらリスタートし続け、Linux上で何もできなくなってしまいました。なかなか珍しい経験だったので記念に写真に納めておきました)

 

MacがLinuxより優れている点は他にもあります。ソフトウェアの種類が豊富だったり、第三者パーティのドライバがLinuxだと使えない場合があったりと。が、これからソフトウェア開発を覚える人の目線からだと、これらが主なメリットとして考えられるかなと。

それでも「エンジニアにとってMacは必須論」に同意しない理由が以下の通り。

Macが必須ではない理由

Mac必須論に反対な理由を一言で言えばMacを買うよりコードを書けるようになるのが先だからです。もうちょっと詳しく言うと…

理由1:Windowsで開発している会社/ポジションは存在する

当たり前すぎてわざわざ書くのは若干気が引けるのですが、Windowsでソフトを開発している会社はちゃんと存在します。

例えば、私の前の職場では、フロントエンド開発者の方はWindowsで開発をしていました。デプロイ等には無縁なポジションでしたので、多分彼がMacやLinuxを使っていても彼の仕事にプラスにもマイナスにもならなかったと思います。そして彼がその職を得ることができたのはコードを書けたからであり、Macを使えたからではありません

同様に、私も現在の職場ではWindowsを使ってフロントエンドの開発をしています。このポジションを貰えたのはReact.js(フロントエンドの技術)を使えたからであり、Mac/Linuxを使って働いていたことは面接では訊かれませんでした。

理由2:Macの使い方(とUNIXのコマンドラインやフォルダ構造)は、働きながらでも覚えられる

私は前の職場で働き出す直前、「君、Mac使ってね」と当時のボスから言われた時点からMacの使い方を覚え始めました。

「早くMacに慣れなきゃなぁ」と思っていたのですが、Macのインターフェイスはとても直感的にできており、慣れるのに大して時間はかかりませんでした。

直感的にできている?具体的にどういうことだよ?』と思ってる方に、例を挙げましょう。

Windowsでソフトウェアをアンインストールしたい時って、(1)コントロールパネルとやらを開いて、(2)そのウィンドウからアンインストール(?)をクリックし、(3)それでやっと目的のソフトウェアをアンインストールできるじゃないですか。Macだと、要らなくなった奴をゴミ箱へ向かってドラッグ&ドロップすりゃいいだけなんですよ。

(しかもWindowsだとアンインストールに何分もかかることがありますよね。私がMacを使ってた頃、そんな経験はしませんでした。)

コマンドラインやフォルダ構造の習得は、ネット上に無料の(あるいは格安な)教材がたくさんあるので、そこで手頃な教材を見つけて勉強しました。しばらくMacで開発していると「これはよく使うコマンドだ」と感じるものがいくつか見つかり、それらを紙に書いてディスプレイの横にテープで貼り付け、それらを見ながら仕事をしている内にたくさんのコマンドを使えるようになりました。

と、そんな感じでUNIXの知識ゼロでもMacを使って開発できるようになったので、UNIXベースのマシンの使い方は、コードの書き方を覚えてからでも遅くないんじゃないかなという気がしています。

まとめ

「確かにMacは便利だし、慣れておくと得することがあるけど、Macを買うよりもコードを書けるようになるのが先なのでは。UNIXベースのマシンのコマンドラインやフォルダ構造なんて後でも覚えられるし、どうしても初めからそれらを覚えたかったらPCを買ってLinuxをインストールすりゃいいじゃないか。初めからiOSアプリの開発者になりたい人なら話は別だけど、そうじゃなきゃMacは必須ではない」

つまり、そういうことです。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください