ポリテクセンター埼玉 セミナー資料
組込み技術者のためのC#
Monoを用いたマルチプラットフォーム
アプリケーション開発技術
第1.2版
2018年8月
Microbrains Inc. 渋谷
目次
はじめに
4
概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6第
1
章
C#
言語
7
C#言語の歴史 7 基本構文 8 C言語との違い 9 Java言語との違い 10 .Netフレームワーク 10 開発資料 10第
2
章
Mono
11
Monoの歴史 11 互換性 12第
3
章
Mono
開発環境をインストールする
13
Ubuntu-Linuxの場合 13 CentOSの場合 13 Mac OSXの場合 14 ソースコードからのビルド 14 インストールの確認 15第
4
章
Mono
による
C#
言語プログラミング
17
サンプルソースコード 17 Hello Worldプログラム 17 ライブラリの利用 20 ライブラリの作成 22 マルチプラットフォーム 23第
5
章
C#
言語の基本文法
24
クラス定義・関数定義・変数定義 24 スコープ 24 基本型 24 制御構文 25 配列 25 文字列 25 例外 25第
6
章 オブジェクト指向プログラミング
27
オブジェクト指向プログラミングとは 27 クラス定義 33 コンストラクタとデストラクタ 33 継承 34 インタフェース 35 デストラクタとディスポーザ 35第
7
章
C#
の特徴的な構文
37
名前空間 37 関数オーバーローディング 38 引数の省略値と可変長引数 39 プロパティ 40 using構文 41 変数の参照渡し 46 ジェネリックプログラミング 47 拡張メソッド 47第
8
章 プログラミング
実習 48第
9
章
Raspberry Pi
に実行環境をインストールする
49
Raspberry Piについて 49 Raspberry Piのセットアップ 49 Pioneer600のセットアップ 51 Monoのインストール 52自作アプリの起動 53
第
10
章 組み込みに役立つプログラミングテクニック
55
デバッグ 55 例外の捕捉とスタックトレース 57 リフレクション 59 マルチスレッドプログラミング 60 起動シェルスクリプト 65第
11
章 組込み機器制御技法
69
sysfsとprocfs 69 外部コマンドの実行 69 Cライブラリの利用 73第
12
章
C#
による
WEB
サーバ開発
78
WEBサーバの必要性 78 最も簡単なWEBサーバ 78 HTTPについて 81 スタティックページを返す 84 マルチワーカー化 86 HTMLテンプレート 91 WEBクライアントからのデータを受け取る 95 ログイン管理 101 セッション管理 108第
13
章 最終実習
112
課題1 112 課題2 114 課題3 115第
14
章
Mono
で使える便利なライブラリ
116
おわりに
117
はじめに
本書は、2018年11月にポリテクセンター埼玉で実施される能力開発セミナー「組込み技術者 のためのオブジェクト指向言語(C#編)」および、同2018年12月実施の「オブジェクト指向 言語を用いた組込みアプリケーション開発(C#編)」のためのテキストです。 本セミナーは、2017年11月に実施された「オブジェクト指向言語を用いた組込みアプリケーシ ョンソフトウェア開発(C#編)」とほぼ同じ内容のものとなりますが、C#言語の解説の部分を 大きく強化した上で2つのセミナーに分けました。 このため、C#言語の習得だけを目的とする方は前半の「組込み技術者のためのオブジェクト指 向言語(C#編)」だけの受講でも役に立ち、それを組込み機器に生かす実戦的な技法を学びた い方は後半の「オブジェクト指向言語を用いた組込みアプリケーション開発(C#編)」の受講 をお勧めするという構成になっています。概要
オ
ブジェクト指向言語を組込みシステムの開発に生かす技法を学ぶため、C#言語のアプリケ ーション開発/実行環境であるMonoを用いたアプリケーション開発の事例を紹介します。 セミナー前半(「組込み技術者のためのオブジェクト指向言語(C#編)」)では、Monoに よるC#アプリケーション開発環境をLinuxマシン上に構築し、それを用いてC#言語の基礎を学び ます。オブジェクト指向プログラミングの経験がない方のために、その考え方のエッセンスを解 説し、C#での具体的なコードを見ながら学びます。 セミナー後半(「オブジェクト指向言語を用いた組込みアプリケーション開発(C#編)」) では、組み込み向け小型Linuxボードでの動作環境を構築し、実際に簡単なWEB UIアプリを作成 します。簡単なプログラムとはいえ、セッション管理などのWEBアプリケーションに求められ る基本的な機能を備えたものを作成するため、今後の開発にすぐに応用できるものとなっていま す。背景
C#言語はMicrosoft社が開発し、Windowsにおけるアプリケーション開発の主力言語として用い られています。従来、C#言語による開発作業には Microsoft社のVisual Studioを購入しなければ ならず、また作成されたアプリケーションはWindowsでしか動作しませんでした。 メキシコの技術者が開発したMonoというシステムは、C#言語のコンパイルと実行ができる環境 を、WindowsのみならずLinuxやMacOSXにも提供し、しかも無料で使用することができます。 近年の組込み機器に用いられるコンピュータは Linuxがフルセットで問題なく動作する程度の 能力を持つものも増え、上記のMonoも稼働できる場合が多くなってきました。 C#言語はガベージコレクト機能を持つ本格的なオブジェクト指向言語で、マルチスレッドプログラミングやネットワークプログラミングなどの近代的なアプリケーション開発に必要な言語 機能・ライブラリを完備しています。 なお、Monoを商用ベースで発展させたXamarinと呼ばれるシステムは、現在iOS (iPhone/iPad) やAndroidでのアプリケーション開発の主力になりつつあります。
対象
●組込み技術者のためのオブジェクト指向言語(C#編)
- C、C++、Javaなどの言語によるプログラミング経験者。(C#言語の経験は不要) - Linux上のテキストエディタ (vi, emacs, nano または gedit)が使用できること。 - Linuxの操作経験があることが望まれるが必須ではない。●オブジェクト指向言語を用いた組込みアプリケーション開発(C#編)
- C#言語によるプログラミング経験者。
- Linux上のテキストエディタ (vi, emacs, nano または gedit)が使用できること。 - Linuxの操作経験があることが望まれるが必須ではない。 - HTTPプロトコルやHTMLの知識、およびWEBアプリの開発経験があることが望まれるが必須 ではない。
スケジュール
●組込み技術者のためのオブジェクト指向言語(C#編)
2日(12時間程度)を予定しています。内容はおよそ次の通りです。
1. C#言語とMonoの紹介 2時間 2. Monoによるアプリ開発環境構築 2時間 3. C#プログラミング基本文法解説 2時間 4. 組込み開発に役立つC#プログラミング技法 2時間 5. プログラミング実習 4時間●オブジェクト指向言語を用いた組込みアプリケーション開発(C#編)
3日(18時間程度)を予定しています。内容はおよそ次の通りです。
1. C#言語基礎復習 3時間 2. 小型LinuxボードへのMono実行環境構築 1時間 3. Cライブラリとの結合 2時間4. 組込み機器制御のための技法 3時間 5. WEB UI開発のための基礎技術 3時間 6. WEB UI開発実習 4時間 7. まとめ・活用事例紹介 2時間
目標点
本セミナーが目標とする到達点は、以下の点を想定しています。
• C#言語で基本的なプログラミングができるようになる。 • オブジェクト指向プログラミングの考え方を理解する。 • WindowsとVisual Studioを用いなくてもC#言語でアプリケーション開発、実行ができること を知る。 • 組み込み用小型LinuxボードでC#アプリケーションを動作させる方法を知る。 • C#言語でWEB UIシステムを構築する技法を知る。 • C#言語によるアプリケーション開発の利点と問題点を理解する。 一方、本セミナーは以下の事柄を目標としません。 • .Netライブラリ(フレームワーク)の詳細な解説。 • MonoとIDEについての詳細な操作説明。 • Monoと関連技術に関する業界の最新動向の説明。 • iOSやAndroidをターゲットとするC#言語によるアプリ開発(UnityやXamarinなど)。 • 個別のアプリケーション開発技術の解説。 • Monoやそのランタイムライブラリのライセンスに関する詳細な解説。使用機材
プログラム開発実習は、Ubuntu-Linuxを用いて行ないます。プログラムコードを書くためにテキ ストエディタ(vi, emacs, nano, geditのいずれか)を用います。作成したアプリケーションを動かすターゲット機として、組み込み用小型Linuxボード (Raspberry Pi)を用い、Ethernet経由で開発実習機と接続します。_