Help us understand the problem. What is going on with this article?

Jupyter Notebookで、なぜかC#でHelloWorldをコンパイルして実行してみる(外部コマンド実行)

More than 1 year has passed since last update.

概要

このエントリでは、Jupyter Notebookの上で、なぜかC#でHelloWorld.cs的なプログラムをコンパイルし、実行してみることを行います。

要は、外部コマンドとしてコンパイラを実行をしているだけです。

前提

  • 想定読者は、物好きな方です。
  • 実用性は目的としていません。
  • OSは、Windows 10を利用しました。(コンパイラもOS導入後(Vista以降)に入っているcsc.exeでよく、本エントリの範囲ではVisual Studioを入れる必要はありません。)

準備

Jupyter Notebook


まずはJupyter Notebookを動かせるようにしましょう。

```python

2018年11月時点では、本家サイト「http://jupyter.org/install」において、AnacondaでのPython関連のインストールが推奨されています。
Pythonのパッケージマネージャにはお好みの流派があるとは思いますが、本エントリでは、Jupyter Notebookおすすめの方式に従います。

Anacondaのサイト(https://www.anaconda.com/download/#download)より、Windowsの64bit版のインストーラをダウンロードし、導入します。
(本エントリ執筆時点では、Anaconda3-5.3.1-Windows-x86_64.exe)
```

ソースを書く

動かしたいのは、よくあるHelloWorldです。

using System;
namespace HelloWorld
{
    class Hello 
    {
        static void Main() 
        {
            Console.WriteLine("Hello World!");
        }
    }
}

これをペタッとNotebookのCellに貼ります。

jn-cs-helloworld.png

Cellの先頭に「%%writefile HelloWorld.cs」というJupyter Notebookにおいて「指定したファイル名でCellの内容をファイルに書き出す」命令を書いて、Runします。

ここまでで、Jupyter Notebookのデフォルトのファイル保存先(Anacondaで不通に入れてスタートメニューから動かしているときは、ホームディレクトリ)に、HelloWorld.csが出力されています。エクスプローラなどから確認できます。

コンパイル

ソース一つをコンパイルするだけなので、ビルドファイルも作らず、csc.exeを使います。

!!c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /w:4 HelloWorld.cs

このCellをRunすると、前述と同じ場所に「HelloWorld.exe」が出力されています。

実行

これも、外部コマンド実行を使います。

!!HelloWorld.exe

CellでRunすると、HelloWorld.exeが実行され、結果をCellで確認できます。

jn-exec.png

出力を使う

実行しっぱなしもつまらないので、出力結果をほかのCellで使ってみます。

Cellで、変数aに「%%system」で実行した結果を格納し、次のCellで表示させてみます。

a=%%system HelloWorld.exe

jn-capture-output.png

できましたね。

まとめ

このエントリでは、Jupyter Notebookの外部コマンド実行機能を用いて、C#のコンパイラを動かしてみました。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away