MacでC++コードを書く5つの方法

MacでC++コードを書く5つの方法
Mac 上の C++

この記事は、Macで初めてC++を学ぶ学生を主な対象としています。解説されているアプリケーションでコードの記述とコンパイル方法をステップバイステップで解説するチュートリアルではありません。ステップバイステップで解説するには、各手法の仕組みを深く掘り下げて習得する必要があります。むしろ、MacでC++コーディングを行うための基本事項と簡単な例を示したクイックスタートガイドです。

2017 iMac
はい、MacでC++を書く方法はたくさんあります

条項の範囲

提供されているソリューションはすべて、初心者が書くような20行から50行程度のコードの作成に使用できます。C++の学習に役立ちます。stdinとstdoutが中心ですが、その他のソリューションではさらに多くの機能を使用できます。macOS向けのフル機能のGUIアプリの作成については説明していません。

この記事は、例えば企業のLinuxシステムなどで既にプロフェッショナルC++を使っているプロフェッショナルにも役立つかもしれません。しかし、Macへの移行において、どのように始めれば良いのか、どのツールを使えば良いのかが明確でないかもしれません。

この記事では、MacでC++を書くための5つの優れた方法を概説します。他にも方法があるかもしれません。紹介されている方法のほとんどは無料ですが、中には多少の費用がかかるものもあります。中にはフル機能のものもあれば、制限のあるものもあります。例えば、Appleの決定によりデバッグに適さないソリューションもあります。こうした理由から、様々なソリューションを何らかの基準でランク付けすることは困難です。それぞれのソリューションについて読んでみると、最初はどれか1つが最適な方法であることがわかるかもしれません。6ページのスプレッドシートをご覧ください。

まず、用語について少し説明します。ここでは統合開発環境(IDE)について説明します。Techtargetより:

統合開発環境(IDE)は、開発者がソフトウェアの開発とテストに必要な基本ツールを統合したソフトウェアスイートです。通常、IDEにはコードエディタ、コンパイラまたはインタープリタ、そしてデバッガが含まれており、開発者は単一のグラフィカルユーザーインターフェース(GUI)を介してこれらにアクセスできます。

以下は各アプローチの概要です。いつものように、それぞれのアプローチをインストールしてそのニュアンスを理解するのは受講生の責任です。ここでは、概要と全体的なガイダンスのみを提供します。

最後に、以下のスクリーンショットでは、分かりやすさを考慮して重要な部分のみを表示しています。ウィンドウ全体を表示すると、重要な部分が小さくなりすぎて読みにくくなることが多いためです。

1. AppleのXcode IDE

前述の通り、AppleのXcodeはネイティブアプリ向けの無料かつフル機能のIDEです。MacでC++コードを書くのにXcodeを使うのはそれほど難しくなく、GUIデバッガーも搭載されています。

Xcodeは、SwiftまたはObjective-CでmacOS、iOS、tvOS、watchOSアプリケーションを開発する開発者向けに特別に設計されていることに注意してください。そのため、C++開発システムとして産業界や教育機関で広く利用されているわけではありません。そのような状況では、LinuxやJavaベースのIDEが主流です。しかし、Xcodeは無料で高機能であり、Macを使う学生にとって非常に便利です。

必要なのは(無料の)Apple IDだけです。macOSのMac App Store( Appleメニュー > App Store)からダウンロードできます。この記事の執筆時点での最新バージョンは8.3.3で、macOS Sierraで動作するように設計されています。

Mac App StoreのXcode
Mac App StoreのXcode

1.1 Xcodeをインストールすると、/ApplicationsディレクトリにXcode.appというアプリが作成されます。起動すると、以下の画面が表示されます。

Xcode へようこそ。

1.2. 「新しいXcodeプロジェクトを作成」を選択し、「コマンドラインツール」をクリックします。

Xcode コマンドラインツール
「コマンドラインツール」を選択します。

1.3. 必要に応じて各フィールドに入力し、言語ポップアップから C++ を選択します。

Xcode 言語。

1.4. この時点で、エディタへのコード入力、ビルド(コンパイルとリンク)、標準入力/標準出力とデバッグウィンドウの表示、そしてアプリの実行方法を学ぶ必要があります。長方形の面積を計算するサンプルC++コードでは、以下のように表示されます。

Xcode での C++
入力と出力を備えた Xcode の C++ (右下)。

最後に、Xcode でブレークポイントを作成し、変数を表示するには次のようにします。

ブレークポイントを使用した Xcode デバッグ。
ブレークポイントと変数が表示された Xcode デバッグ。

Macに慣れているC++初心者にとって、これは素晴らしい方法です。しかし、他にも選択肢があるので、早速見ていきましょう。

方法2 – macOSにLinuxを仮想マシンとしてインストールする

プロフェッショナルなC++開発のほとんどは、LinuxとそのGNUコンパイラとデバッガ、そしてJavaベースのIDEで行われています。もしC++の学習を業界標準のツールに集中させたいのであれば、これは少し複雑ですが、非常に満足のいく、優れたソリューションです。

このアプローチでは、macOS用の高性能な仮想マシンシステムを入手する必要があります。仮想マシンにはParallels Desktopの使用をお勧めします。Parallels Desktopは長年の実績があり、高度なデバッグと高い性能を備えているからです。さらに、Parallels Desktop Studentエディションは39.99ドルで入手可能です。

ゲスト OS としての Fedora、macOS の仮想マシン。
macOSの仮想マシン、ゲストOSとしてのFedora。画像提供:Parallels。

VMシステムが起動したら、お好みのLinuxディストリビューションのISOイメージをダウンロードし、ゲストOSとしてインストールします。FedoraまたはCentOSをお勧めします。これらは無料で、必要なGNUコンパイラ(g++)とデバッガ(gdb)が付属しています。Ubuntuには付属していません。さらに、Fedoraには非常に高機能なEclipse IDE(詳細は後述)がインストールされています。インストール時には、開発者向けオプションをすべて指定してください。

例えば、MacにLinux FedoraをゲストVMとしてインストールすれば、C++の可能性は無限大です。しかし、VMの設定、Linuxのインストールとメンテナンス、好みのIDEのインストールと使い方を学ぶには、かなりの労力が必要です。コードをデバッグできるようになり、必要に応じて複雑なコードを書くことも可能です。

このソリューションは、多くの C++ 初心者の学生にとっては難しいかもしれませんが、高度な技術を持つ学生や、Linux での開発にすでに慣れていて Mac に移行しているプログラマーにとっては非常に有効です。

さて、C++の初心者向けのシンプルな学習方法として、手軽で簡単な方法があります。それはMacのコマンドラインです。次はこれです。

3. macOSのコマンドライン、短くて簡単

C++をコストや複雑さを一切かけずに学び始める良い方法の一つは、標準的なUnixエディタ(例えば「vi」(実際にはvimを指しています))でC++コードを記述し、コマンドラインでコンパイルすることです。ただし、macOSのデフォルトディストリビューションにはGNUコンパイラが付属していないため、いずれにしてもXcodeをインストールする必要があります。

次に、「vi」を独学する必要があります。Unixエディタ「vi」の習得は簡単で、学生にとっては通過儀礼のようなものと言えるでしょう。例えば、上記の長方形のコードをg++でコンパイルしました。

コマンドライン上の C++。
コマンドライン上の C++。

この方法は、上記のような短いコードスニペット、つまりC++初心者が書くようなコードスニペットには有効です。欠点は、g++は使えるものの、Xcodeにはgdbが含まれなくなったことです(Appleはlldbを使用しています)。代替案としては、コマンドラインでllvmスイートを使用する方法があります。

また、C++コードが複数のファイルに拡張され始めると、予想以上に複雑になる可能性があります。コンパイラ用にXcodeをインストールする必要があったので、Xcodeに戻すことを検討してください。

4. EclipseまたはNetBeans IDE

Eclipseのような業界標準のIDEをMacで直接使用したい場合は、それも可能です。EclipseはXcodeと非常に似ていますが、Linuxシステムで利用され、プロが使用している可能性が高いため、より高度なC++開発に向けた準備に適しています。

Eclipseの問題の一つは、Java SEで書かれていることです。Javaは、レガシーセキュリティの問題により、macOSには含まれなくなりました。EclipseのインストールにはJavaのインストールが必要ですが、Javaを使い慣れている方もそうでない方もいるでしょう。しかし、Eclipseを使い慣れていて、セキュリティにも精通しているなら、バージョン1.8のJava SEを使うのも良いかもしれません。

Eclipse iDEは上記のコマンドラインと同様にg++を使用しますが、デバッガgdbの存在を前提としていますが、実際には存在しません。そのため、stackoverflowに記載されている初心者向けの手順を踏まない限り、C++コードをデバッグすることはできません。この解決策はこの記事の範囲を超えていますが、参考までに提示します。

macOS(64ビット)用のEclipse for C++をダウンロードするには、こちらをクリックしてください。繰り返しになりますが、コンパイラを入手するには、まずAppleのXcodeもダウンロードする必要があります。

Eclipse をインストールした後、使い始めるのは少し難しいです。そこで、いくつかヒントをご紹介します。

4.1 ようこそ画面では、開始方法があまり分かりにくいです。右上のワークベンチアイコンをクリックしてください。

Eclipse のようこそ画面。
Eclipse のようこそ画面。

4.2 次に、「ファイル」>「新規」>「C++プロジェクト」を選択します。Xcodeと同様に、プロジェクトプロファイルを定義するウィンドウが表示されます。ハイライト表示されているオプションに注意してください。(「空のプロジェクト」は選択しないでください。)プロジェクトに名前を付けます。完了したら、スケルトンの「Hello World」コードを削除し、独自のコードを入力します。

Eclipse でプロジェクトを定義します。
Eclipse で新しいプロジェクトを定義します。

繰り返しになりますが、Eclipseの使い方を詳しく学ぶ必要があります。Eclipse.orgのウェブサイトにチュートリアルがあります。最後に、Eclipseでコンパイルして実行した長方形のコードと、標準出力の表示を下部に示します。

Eclipse の出力。
コンパイルされた Eclipse コードの入力と出力が下部にあります。

EclipseはXcodeに匹敵する優れたIDEですが、グラフィカルデバッガーが必要な場合は、上記リンク先のハックを検討する必要があります。そうでない場合、言語を迅速かつ簡単に習得したいのであれば、Xcodeまたはコマンドラインが最適な選択肢となるでしょう。

最後に、NetBeans も非常に優れた Java ベースの IDE です。Eclipse よりも NetBeans をご希望の場合は、NetBeans.org の Web サイトからダウンロードできます。

5. Mac用Microsoft Visual Studio

Microsoftはつい最近、Mac版Visual Studioをリリースしました。このソリューションについては、C++コードの学習と記述に使用できるという以外、あまり知られていません。学生や非商用開発者向けには、Visual Studioの無料版も提供されています。

MS ビジュアルスタジオ
MS Visual Studio。画像提供: Microsoft。

学生としてC++を学ぶことが目標なら、このソリューションはXcodeと同様に確実に機能します。しかも無料です。スキルが上達したら、macOS、iOS、Android向けのフル機能アプリを開発することも可能です。さらに、独自のデバッガーも搭載されています。Microsoftより:

Xamarin の高度なデバッグ、プロファイリング ツール、単体テスト、UI テスト生成機能を使用すると、Android、iOS、macOS 向けのネイティブ モバイル アプリの構築、接続、調整がこれまで以上に高速かつ簡単になります。

このツールを作成した Microsoft に敬意を表します。

結びの言葉

本来ならもっと簡単に説明できるはずのことを、長々と複雑な記事で説明してしまいました。しかし、ご想像のとおり、膨大な技術的詳細が省略されています。これはスペースの都合か、あるいは概説記事の範囲を超えているためです。空欄を埋める作業は山積みでしょう。しかし、これで、それが実現可能であることがお分かりいただけたと思います。

すでにご想像のとおり、ある環境でコードを書くための準備をするのは、言語そのものを学ぶのと同じくらい大変です。その努力には相当な準備と忍耐が必要です。しかし、一度それをやり遂げれば、コードを書く喜びと報酬は計り知れないものになります。

この記事が、皆さんがどの方法を選ぶかを決めるのに役立つことを願っています。さあ、楽しんでください。

各オプションの特徴。

Knowledge Network