見出し画像

「Google Colaboratory」で C言語のプログラムを実行できる?

2021年 9月に行われた「Google Workspace for Education」の仕様変更によって、利用できなくなっていた 「Google Colaboratory」が 11月下旬に行われた仕様変更によって、また使えるようになりました。
とは言え、しかるべき権限を有した管理者が、以下のヘルプ記事で説明されているように「Google Colaboratory」を有効にしなければなりません。

この投稿では、そんな「Google Colaboratory」で C 言語のプログラムを実行する方法を紹介します。

  • この記事は、「はてなブログ」に 2021/12/06 に投稿したものを移転させたものです。note に移転する際に、細かな部分で変更してある部分もあります。

はじめに

「Google Colaboratory」では、ノートブックのコードセルに Python のプログラムを記述して、そのまま実行できることはよく知られていますが、C言語のプログラミングを行うこともできるようです。

Google ドライブ内に、簡単にノートブックを作成できる

ただし、Python のようにそれぞれのコードセルで「編集」と「実行」が行えるのではなく、以下のように「編集」と「実行」を別のコードセルで行わなければなりません。

  1. 「編集」 ソースプログラムの作成

  2. 「実行」 コンパイルと実行

作成した C言語のプログラムは、接続ごとに作成されるインスタンス(仮想サーバー)のストレージに作成されるので、

  • Googleドライブに保存されるわけではないこと

  • 再接続ごとに再作成しなければならないこと

に注意しましょう。

「編集」 ソースプログラムの作成

ノートブック内に C 言語のソースプログラムを作成するときには、コードセルの先頭に %%file hello.c といった記述が必要になります。その一行を記述する以外は、普通にプログラムを記述します。

ただし、ソースプログラムを記述したら、コードセルの左上にある「セルを実行」ボタンを押して、インスタンスのストレージ内にソースプログラムを保存(書き出し)しておくことを忘れないようにしてください。

保存されれば、コードセル下部の実行結果に「Writing hello.c」や「Overwriting hello.c」のように保存されたことが表示されます。

コードセルに C 言語のプログラムを記述
%%file hello.c 
#include  <stdio.h>
int main(void) {
   printf("Hello, World! C Language.\n");
   return 0;
}

「実行」 コンパイルと実行

以下のコードセルのようにコマンドの実行を示す ! に続けて、コンパイルのための gcc コマンドを実行し、その後、コンパイルの結果に作成された実行ファイルを実行しています。

コンパイルと実行
!gcc hello.c -o hello && ./hello
  • 「gcc hello.c -o hello」でコンパイル、「./hello」でプログラムを実行、という 2つの処理を、&& で連続して実行しています。

  • コードセル下部には実行結果が表示されます。コンパイルエラーが発生した場合には、その旨が表示されます。

  • 作成するソースプログラム(.c)のファイル名を変更した場合には、該当する部分を適宜変更してください。

標準入力は利用できる?

上記のサンプルプログラムは、C言語のプログラムで最初に出てくるものですが、printf 関数を用いて標準出力にメッセージを表示しています。printf の標準出力の出力は、コードセルに表示されましたが、入力に使用される scanf 関数はどのように動作するのでしょうか? キーボードからの入力を受け付けてくれるのでしょうか?

結論は、Python と同じようにコードセル下部の出力部分で入力が行えなえます。

!echo 123 | ./hello

といった感じで、| という記号でパイプ処理を行い、echo コマンドで表示(出力)した内容を、プログラムへの入力として使用すれば、あらかじめ作成した値を標準入力として与えることも可能です。

複数のデータを与えたいのであれば、入力内容をソースプログラムと同様にコードセルで保存するようにして、cat コマンド(cat は、ファイルの内容を表示するコマンド)でプログラムに与えるようにしてやれば実現可能です。

!cat hogehoge | ./hello

終わりに

上記のように説明すると、「何だか面倒だな」と思うかもしれません。これまでにいろいろな環境でプログラミングしてきましたが、一番よく使っていたのが C 言語だと思っている わたし でも面倒だと思います。(笑)

最近では当たり前になった IDE と呼ばれる統合開発環境ではなく、コマンドラインでのコンパイルや実行を意識しなければなりません。すなわち、gcc コマンドでのコンパイルや、Linux 環境のコマンドについても、ある程度は理解していなければならないのです。

  • C 言語でプログラミングしたい!

  • 単一ファイルによる C 言語のプログラムを実行したい

といったケースであれば、「Google Colaboratory」のノートブック上で C 言語のプログラムを作成するのもいいと思いますが、

  • 別の C 言語の開発環境を用意する

  • Python を含めて、別のプログラミング言語での利用する

というのも検討してもいいんじゃないか、と思います。

わたし個人の感想としては、「Google Colaboratory」で C 言語が実行できるというのは、「できる」であって「適している」ではない、という感じです。ネタ的感覚と言えるかもしれません。

ちなみに、

!cat /etc/issue

と実行すると、以下のように表示されたので、インスタンスとして生成されている実行環境は、「Ubuntu 18.04.5」であることがわかりました。

cat /etc/issue の実行結果

今回の投稿は、以下の内容を参考に、2021/12/06 時点で動作を確認して、わたし個人の感想を交えて作成しました。


この記事が気に入ったらサポートをしてみませんか?