こんにちは。うっかりじゅうべえ(@u-10bei)と申します。
Qiitaには、様々なコードがアップされています。
「これ、ちょっと試してみたい」と思っても、専門外の言語だと環境構築するのが面倒だとつい思ってしまいます。
そこで、Google Colaboratoryで実行できる言語とその方法についてまとめてみました。
前提条件
TIOBE Index2023年3月版でランキング上位10位に入っている言語を対象に、試してみることにします。
第1位 Python
これについては、そもそもリンク先で使い方が詳しく掲載しているので説明不要かと思います。
ただし、2023年3月時点では、Python3系しか実行できないようです。
無理やりPython2系を実行したいとき
まず、Colabの裏で何のOSが動いているか確認します。
!lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
今回(2023年3月15日実行)は、Ubuntu20.04が動いているようです。
ならば、普通にaptでインストールできるはず。
!apt -y install python2
でインストールする事ができました。
ちなみにバージョン確認してみると、
!python2 --version
Python 2.7.18
と実行できるようになってます。
コードの書き方
%%python2
print 1+2*3-4/5
7
のように、セル内でマジックコマンド%%python2
を最初に宣言してあげると実行できます。
参考:マジックコマンドの使い方
第2位 C 、第4位 C++
ツールの導入
!gcc --version
!g++ --version
で確認すると、
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
と実行できるようになってます。そこで、
!apt install build-essential
でツールを導入します。
ファイルの作成とコンパイル
ファイルの作成は、マジックコマンド%%writefile
を使います。
%%writefile hello.c
#include<stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
%%writefile hello.cpp
#include <iostream>
int main()
{
std::cout << "Hello World!!!" << std::endl;
return 0;
}
C言語はコンパイラ言語なので、コンパイルします。
!gcc hello.c -o hello
!g++ hello.cpp -o hello2
実行
!./hello
!./hello2
とすると、
Hello World!
Hello World!!!
と返ってきます。
第3位 JAVA
実行環境の確認
!java -version
で確認すると、
openjdk version "11.0.18" 2023-01-17
OpenJDK Runtime Environment (build 11.0.18+10-post-Ubuntu-0ubuntu120.04.1)
OpenJDK 64-Bit Server VM (build 11.0.18+10-post-Ubuntu-0ubuntu120.04.1, mixed mode, sharing)
とすでに実行環境はあるようです。
ファイルの作成とコンパイル
Cの時と同様、マジックコマンド%%writefile
でファイルを作成します。
%%writefile Hello.java
public class Hello{
public static void main(String[] args){
System.out.println("Hello World!!");
}
}
JAVAもコンパイラ言語なので、コンパイルします。
!javac Hello.java
実行
!java Hello
とすると、
Hello World!!
と返ってきます。
第5位 C#、第6位 VB
Microsoftの公式ページ3を参考にインストールしてみました。
.NET環境
Microsoftパッケージリポジトリの追加
!wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
!dpkg -i packages-microsoft-prod.deb
!rm packages-microsoft-prod.deb
SDKのインストール
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-7.0
念のため、バージョン確認してみます。
!dotnet --version
7.0.202
C#
ここからは、Microsoftのチュートリアル4を参考に試してみました。
テンプレートを利用してアプリを作成
%mkdir HelloWorld
%cd HelloWorld
!dotnet new console --framework net7.0
ファイルを作成
%%writefile Program.cs
Console.WriteLine("Hello, World.");
実行
!dotnet run
Hello, World.
どうやら、ubuntuで.netも使えるようです。
VB
テンプレートを利用してアプリを作成
%mkdir HelloWorld
%cd HelloWorld
!dotnet new console --language vb --framework net7.0
ここで、--language
を使って言語を指定すればVB用になります。
ファイルを作成
%%writefile Program.vb
Imports System
Module Program
Sub Main(args As String())
Console.WriteLine("Hello VBWorld!")
End Sub
End Module
実行
!dotnet run
Hello VBWorld!
第7位 javascript
donguriさんのnote 6を参考に試してみました。
こちらは、すでに環境が構築されているので、マジックコマンド%%javascript
だけで実行できます。ただし、実行結果ウィンドウへの出力に一工夫必要です。
%%javascript
document.querySelector("#output-area").appendChild(
document.createTextNode("Hello World.."));
で確認すると、
Hello World..
が返ってきます。
第8位 SQL
今回は、JupySQLとDuckDBを導入することにします。エクステンションを読み込むことで、マジックコマンド%sql
が有効になります。
!pip install jupysql duckdb-engine
# エクステンションを読み込む
%load_ext sql
次に、DuckDBに接続します。
# DuckDBのインメモリのDBに接続する
%sql duckdb://
DuckDBは、csvに対してSQLを発行できるようなので、colabのサンプルデータで試してみます。
%cd ./sample_data
%%sql
SELECT
*
FROM
mnist_train_small.csv
LIMIT 3;
* duckdb://
Done.
column000 column001 column002 ... column784
6 0 0 ... 0
5 0 0 ... 0
7 0 0 ... 0
第9位 PHP
!apt install -y php
でPHPをインストールします。
ちなみにバージョン確認してみると、
!php -version
PHP 7.4.3-4ubuntu2.18 (cli) (built: Feb 23 2023 12:43:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3-4ubuntu2.18, Copyright (c), by Zend Technologies
と実行できるようになってます。
構文の確認程度なら、コマンドラインで大丈夫なので試してみます。
!php -r 'echo "hello world!?\n";'
hello world!?
と、確認できました。
第10位 GO
!apt install -y golang
でGOをインストールします。
ちなみにバージョン確認してみると、
!go version
go version go1.13.8 linux/amd64
と少々古いバージョンですが、実行できるようになってます。
GOに関しては全くの素人なので、ここからは公式のチュートリアル8に従って作業してみます。
Goソースコード用にhelloディレクトリを作成
%mkdir hello
%cd hello
コードの依存関係の追跡を有効にする
!go mod init example/hello
go: creating new go.mod: module example/hello
ファイル作成
%%writefile hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!!?")
}
実行
!go run hello.go
Hello, World!!?
で無事実行が確認できました。
おわりに
基本的に、ubuntuに導入できる言語であれば、実行可能だと理解しました。