MacOS Big SurでC言語とC++言語プログラミング 始め方

Mac C言語

 

「Macでゲームプログラミングしたい!」

「ゲームプログラミングの基礎、C言語を学習したい」

MacでC言語を学習するにはどうすればいい?

昨今のWebプログラミングブームやSwitch、PS5の据え置き型ゲーム機の人気から、ゲームプログラミングに興味を持つ人も増えてきました。

ですが、これまでゲーム開発はWindowsのみでしかできなかったこともあり、MacではC言語、C++言語を使ったゲーム開発はできません。

ただ、MacでC言語、C++言語の基礎を学習することはできるので、その方法を説明します。

ちなみに、私は元任天堂のエンジニアです。

ニンテンドーDSの開発者で、ニンテンドーDSがノートPCよりも大きかった最初の時から、世界で2番目?3番目?にDSでプログラミングしています。

任天堂 switch

元任天堂 YouTuber にスイッチ(Switch) パワハラ経験と対処法を語る

2021年8月18日




MacOS Big SurでC言語とC++言語

2021年5月時点、MacOSの最新はBig Surです。

僕のMac Book Pro(インテルCPU Late 2013)にもBig Surに更新しました。

このMac最新のOS環境でC言語、C++言語のプログラミング開発環境を構築します。

C言語、C++、C#の違い

C言語、C++、C#の違いについては、プログラミングスクールの侍エンジニア塾のこちらの動画が分かりやすいです。

いったい何が違うの?C言語、C ++、C♯のそれぞれの特徴や違いを紹介(SAMURAI ENGINEER [侍エンジニア]

C言語、C++ロボットプログラミングができます。

補足すると、C言語は家電や車のマイコンに組み込まれて使われることから、組み込み系と呼ばれています。

C++は高速に描画処理、演算処理が必要な任天堂やソニーのゲームプログラミングで主に使われています。

また、人気YouTuberひろゆきさんがC言語について語っているので、見ておくといいです。

【ひろゆき】C言語について語るひろゆきまとめ【ひろゆき プログラミング言語 ITエンジニア】(
ひろゆきキャリア)

ハードウェアに近い言語なので、ポインタが理解できなければC言語の学習を諦めるのでも別にいいと思います。

今の時代、それが理解できなくても困りませんし、現場ではポインタのポインタとかさらに複雑な手法が必要になるので、ついていくのが大変なので早々に諦めるのも良い判断です。

C/C++言語 OSによる違い

冒頭でも書いたように、MacではC言語、C++言語でゲーム開発できません。最新のC#言語からMacでも開発可能になっています。

Visual Studioのスペック比較ページにそう書かれています。

出典: Visual Studio for Mac と PC を比較する

ゲーム開発ではVisual Studioを使うのですが、Mac版のVisual Studio 2019 for MacではC++をサポートしていません

【もみのき】任天堂ゲームプログラミングの勉強。これを使って始めるな。無駄に悩むくらいなら最初からこれ買っとけ。

MacでC/C++言語を学習する方法

MacにはXCodeというプログラミング開発環境があります。

一応XCodeでC言語、C++言語をプログラミングできるのですが、その用途で使うのはよくないです。

C言語、C++言語は基本的にWindowsでプログラミングするものなので、Windowsと同じ開発環境に慣れておく必要があるからです。

なので、どちらのOSでも使えるVisual Studio Code(以下VSCode)を使って学習するのがベストです。

VSCodeでC/C++言語の環境構築

VS Codeはこちらの公式サイトからダウンロードできます。

VSCode Mac

ダウンロードの際、MacOSのStableを選択します。

VS Codeのインストールと初期設定については、以下の記事を参考に設定するといいです。

MacOSVisual Studio Codeをインストールする手順

簡単には、以下手順です。

手順

  1. VSCodeのサイトにアクセス
  2. ダウンロード
  3. ダウンロードしたファイルを解凍
  4. VSCodeをアプリケーションフォルダに移動
  5. VSCodeを起動
  6. 拡張機能をインストール
    • Japanese Language Pack
    • Visual Studio IntelliCode
    • Bracket Pair Colorizer
    • Path Intellisense
    • HTMLHint
    • EvilInspector
  7. VSCodeを再起動

拡張機能の一つ一つが何なのかは、ググって調べてください。

今回、C言語, C++言語を使いたいので、さらに以下の拡張機能をインストールします。

  • C/C++

次に、VSCodeを起動し、新規ファイルを作成し、お約束の”Hello World”の文字列を出力するコードを書いてみます。

VSCode Mac C言語
#include <stdio.h>

int main(void) {
printf("hello world!\n");
return 0;
}

ここで#include <stdio.h>に波線がかかっているのに気づきます。

とりあえず、気にせず保存し、実行してみてください。

右上の▷ボタンでコードをビルドし、実行できます。

VSCode Mac C言語

このボタンです。

このボタンを押すと次のエラーが出ます。

VSCode Mac C言語

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

これはMacOSをアップデートすると起きる問題だそうです。

ここで、ターミナルを起動し、以下コマンドを実行してXcodeをインストールします。

xcode-select --install

すると次のダイアログメッセージが出ます。

で、「インストール」をクリックすると使用許諾契約のダイアログが出ます。

「同意する」を選択してXcodeのselectコマンドをインストールします。

これでVSCodeのセットアップ完了です。

C言語 プロジェクト作成

VSCodeでC言語プログラミングするにはJSONというプロジェクト構成ファイル(?)が必要です。

ソースコードだけではビルド、実行できません。

それを作るために、まずプロジェクトのフォルダーを指定します。

ソースコードがあるフォルダーを開けばいいです。

次に、プログラミングをビルド・実行します。

VSCode Mac C言語

先程のこのボタンを押すか、

VSCode Mac C言語

メニューから「実行」→「デバッグなしで実行」を選ぶといいです。

すると、ビルド環境を聞かれます。

VSCode Mac C言語

C++(GDB/LLDB)を選びます。

次に、構成の選択を聞かれます。

gccを選びます。

すると、ここでJSONファイルが作成されます

こんなやつです。

その際、ターミナルに次のメッセージが表示されます。

何かキーを打てばターミナルウィンドウが閉じられますが、まぁ、どっちでもいいです。

ここでVSCodeプロジェクトのエクスプローラを見てみると、lauch.jsontasks.jsonが出来てるのが確認できます。

ネットの他のサイトの情報では、この後各々のJSONファイルをごちゃごちゃ改変しないといけない旨書かれてるのですが、何もしなくてOKです。

次に実行ボタンを押すと、

VSCode Mac C言語

正常にビルド、実行されます。

で、出力ウィンドウを見ると、

VSCode Mac C言語

無事”hello world!”が出力されています。

VSCodeデバッグ実行

次に、デバッグを試してみます。

まず適当にブレークポイントを置いてみます。

メニューから「実行」→「デバッグの開始」を選択します。

すると、デバッグが開始されます。

無事ブレークポイントで停止しました。

JSONファイル

参考までに、自動で生成されたJSONファイルをアップしておきます。

launch.json

{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc - アクティブ ファイルのビルドとデバッグ",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: gcc アクティブなファイルのビルド"
}
]
}

tasks.json

{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc アクティブなファイルのビルド",
"command": "/usr/bin/gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "デバッガーによって生成されたタスク。"
}
],
"version": "2.0.0"
}

C言語 プログラミングの基礎学習

これでMac最新OSでC言語を学習する環境は出来たので、C言語の基礎を学習してみるといいです。

教材は、ドットインストールC言語入門をおすすめします。

ドットインストール C言語

【ドットインストール】ゲームプログラマーがC言語入門をやってみた感想

2021年3月10日

無料で学習できます。

なお、ドットインストールの解説では、コマンドプロンプトでgccのコマンドを入力してC言語を開発していますが、初心者には難しいので、このVSCodeを使うといいです。

各レッスンごとにフォルダー分けし、フォルダーを開き、ソースコードをビルド・実行すればいいです。

こんな感じです。

ドットインストールのC言語入門の全てのサンプルがVSCodeで動作することを確認しました。

ただ、ドットインストールのC言語入門のみの学習では全然足らないので、完全に対応しているかは確認してません。

詳しくは、さっきのドットインストール C言語入門の記事の「C言語入門 含まれていない項目」を見てください。

ドットインストール C言語

【ドットインストール】ゲームプログラマーがC言語入門をやってみた感想

2021年3月10日

C言語 プログラミングの学習進め方

まずは、さきほどのドットインストールのC言語入門をやるといいです。

今の時代、まずは動画で学習するのが最適な方法です。

次に、C言語入門では足りてない基礎構文を、以下のようなサイトで学習するといいです。

プログラミングの独学には世界最大級のオンライン学習サイトUdemy のオンライン教材を使った方が効率よく学習できます。

UdemyのC言語の教材はこちらです。

Udemy

その中でも、ベストセラーの一週間で身につくC/C++言語ゲーム感覚で楽しんで覚えるC言語で学習することをおすすめします。

ただ、C言語は学習のモチベーションを維持するのが大変なので、継続力・集中力のない人はスクールに入ることをおすすめします。

C/C++言語のゲーム開発おすすめのスクールは、侍エンジニア塾です。

多種多様な言語から、利用者の目的・目標に応じて自由に言語を選択できます。

侍エンジニア塾

スマホアプリ開発、ゲーム開発を効率よく学習できます。

無料体験・相談も受けられるので、まずは自分が学びたいプログラミングについて相談してみることをおすすめします。

C++言語でプログラミング

ついでに説明しておきますが、C++言語でプログラミングする場合もC言語と同じです。

すでにVSCodeの開発環境はC言語、C++言語どちらでも動くようになってるので、C++言語でプログラミングしても動作します。

その確認のため、C++で”hello world”を出力してみるといいです。

VSCode Mac C++言語

C/C++言語プログラミング プロの現場ではMacは駄目な理由

さわりの構文をビルド、実行しただけなので断言できないですが、MacでもVSCodeを使えばC言語、C++言語を学習することは可能のようです。

全ての構文、例えば、ポインタや動的メモリを使っても正常に動作するとしましょう。

それでもプロの現場ではC/C++言語プログラミング開発はMacでは無理です。

Visual Studio for Macが「C++を使用したモバイルおよびゲーム開発」に対応していないからです。

ゲーム プログラミング スクール 比較

ゲームプログラミング 始め方とスクールを比較・検討

2021年5月19日

プロの現場ではあるプロジェクトごとにライブラリ(lib)、動的リンクライブラリ(dll)を作り、それらを他のプロジェクトでも使って効率よく開発します。

さらに、実行プログラムを高速化させるために最適化ビルドします。

3DプログラミングにはDirectX、OpenGLのライブラリが必要で、プロジェクトにそれらをリンクして開発します。

そのためにはVisual Studioが必要です。

なので、MacユーザーもC/C++言語の学習を進めるには、基本的な構文まで学習したらWindows PCを購入しましょう。

もしくは、MacでもWindowsを使えるParallelsを導入しましょう。

僕も一時はParallelsを入れてプログラミングやデータベース(SQLServer)構築とかしてました。問題なく動きます。

最新のParallelsならM1チップ搭載のMacでもWindows 10とWindowsアプリを動かせるので、PC1台にしたい人におすすめです。