C# exercises (f) Summary
C# 演習前期のまとめ C#プログラムは「入れ子構造」をしている ボタンクリックでメッセージボックス に表示完成したコード using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace test1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // ボタンクリックでメッセージボックスに表示 private void button1_Click(object sender, EventArgs e) { MessageBox.Show(“Hello world”); } } } *注意:( ” “) […]
C# exercises (e) Open Data
オープンデータを利用したWebアプリ作成 オープンデータとは オープンデータ(Open Data)とは、特定のデータが、一切の著作権、特許などの制御メカニズムの制限なしで、全ての人が望むように利用・再掲載できるような形で入手できるべきであるというアイデアである。 オープンデータの利用 「LinkData.org」には、誰でも無償で利用でき、商用利用も可能なオープンデータが豊富にまとまっています。 都道府県別で探したり、人気ランキングやキーワードを指定しての検索もできるので、自分が興味のあるデータを探すのも簡単でしょう。 LinkDataのサイト内には、全国の「お城データ」や「道の駅データ」、「避難所データ」、「補助金まとめデータ」、「さくら名所データ」…など、意外とユニークで面白いデータがまとまっているので、うまく利用すれば楽しいWebアプリが作れそうです。 「ダウンロード」の項目下に、「その他の形式のAPIリストを表示」というリンクがあるのでクリックします。 すると、外部APIとしてデータが取得できるURLが一覧表示されます。 そこで「JSON」形式のURLをコピーして、実際にブラウザのアドレスバーに入力してみましょう! あとは、このデータをC#を使って、自分のWebアプリに組み込めば良い。 グループ課題 オープンデータを利用したWebアプリの作成 オープンデータの選択 郵便番号検索 天気予報検索 その他 オープンデータをブラウザで確認 C#を使って、オープンデータWebアプリの作成
C# exercises (d) REST & JSON
Visual Studio community 2015 アカウントについて (学内専用) WebBrowser (基本) Form(自動操作) HttpClient REST & JSON ←今週 RESTとは RESTとは、RESTはREpresentational State Transferの略。2000年にRoy Fielding氏が提唱した、分散システムにおいて複数のソフトウェアを連携させるのに適した設計原則の集合。また、狭義には、それをWebに適用したソフトウェアの設計様式のこと。一般には後者の意味で用いられることがほとんどである。RESTの世界では、ネットワーク上のコンテンツ(リソース)を一意なURLで表すのが基本。各リソース(URL)に対してGET,POST,PUT,DELETEでリクエストを送信しレスポンスをXMLやjsonなどで受け取る形式(レスポンスのフォーマット形式は指定されていない)。 REST APIをを作る前に先人はどのような設計をしていたのかを見てみましょう。今ではTwitterやfacebook,Github、Amazonなど大きいところではだいたいAPIを提供しているので、お手本は山ほどあります。URL設計やリクエスト・レスポンス、HTTPヘッダなどに着目して見比べてみましょう。 Twitter REST API レスポンスの情報量が多いので、どういった情報を返すべきか参考になります。 Github API 一番綺麗にまとまっているAPIだと思います。リクエスト・レスポンスがRESTらしく、とても綺麗。 JSONとは JSONとは、JavaScriptにおけるオブジェクトの表記法を応用したデータ形式。 JSONで表記されたデータは、JavaScript上ではコードとして実行するだけで読み込みが完了する。JSONでは、データ全体を配列またはJavaScriptにおけるオブジェクト(キーと値のペアを列挙した構造体)として記述する。 JSONというのは「データを表現するための記法(≒文法)」です。シンプルなデータであれば、文法など気にせずにただ書けば問題ありません。少々複雑でも、我々は「表」という記法をしっているため、ある程度の複雑さには対応できます。しかし、表で表すのが困難な程度の複雑な構造を持つデータを表現しなければならないことは多々あります。このように、表形式では表現が困難な構造のデータを、人間に対するある程度の可読性を残しつつ、コンピュータに対しても伝達できるような記法、その1つがJSONです。そしてJSON形式で記述したデータのことを、JSON-textといいます。 chenlabのメンバーをJSON-textで表現 { “name” : “chenlab”, “member3” : [ “14TE485”, “14TE406”, “14TE410”, “14TE449” , “14TE461″”, “14TE465″”, “14TE470”], “member4” : [ “13TE466”, “13TE477”, “13TE486”, “13TE520” , “12TE412″”, […]
C# exercises (c) Web3 HttpClient
Visual Studio community 2015 アカウントについて (学内専用) WebBrowser (基本) Form(自動操作) HttpClient ←今週 REST & JSON いままで、WebBrowser コントロールを利用して、 Webサイトを表示と操作プログラムを作りました。 今回は直接 http 通信に HttpClient クラスを使用 するプログラムを作ります。 HTTPとは httpとは、代表的な通信プロトコルの一つで、インターネット上でWebサーバー(サイトの公開側)と、クライアント(ブラウザ:サイトを閲覧する側)が、相互に通信するために使用される仕組みです。 もっと言うと、Webサーバーとクライアント間で、HTML(Webページを作成するための言語)で記載された情報をやりとりするための仕組みです。 この「http」がないと、インターネット上のサイトを見ることができなくなるので、今や無くてはならない仕組みとなります。 HTTPコマンド 主なHTTPコマンドには次のようなものがあります。 GET 指定したページの取得を要求します。 HEAD メッセージヘッダを要求します。 POST フォームに入力したデータを送る PUT サーバーへデータをアップロードする DELETE サーバー上のデータを削除する HTTPコマンド応答メッセージ 主な応答メッセージには、次のようなものがあります。 200 OK 正常に取得できた 301 恒久的に移転した 302 一時的に移転した 403 Forbidden アクセス拒否 404 Not Found ファイルが見つからない HttpClient 通信プログラム デザイン […]
C# exercises (b) Web2 Form
Visual Studio community 2015 アカウントについて (学内専用) WebBrowser (基本) Form(自動操作)←今週 HttpClient REST & JSON WebBrowser コントロールを利用した、ブラウザをコントロールアプリケーションの作成手順を紹介します。 Googleの検索ページを利用し、ページに表示されているテキストボックスに文字列が自動的に入力、フォームのサブミットボタンのクリックができ、ページを解析し、含まれるすべてのリンク文字列とそのURLを表示するなどもできる。 このようにプログラムからWebページを操作する場合、事前にそのHTMLのソースをチェックして、操作対象となるHTML要素を明確にしておく必要がある。Googleの検索ページのソースを見ると、フォームの定義部分で次のような記述を見つけることができる。 <form action=”/search” name=f > <input name=q size=55 value=”” …… > <input name=btnG type=submit value=”Google 検索” …… > …… Googleの検索ページ内のフォーム定義部分(抜粋) この記述から、フォーム(<form>要素)には「f」という名前(name属性)が付けられており、またテキストボックス(<input>要素)には「q」、[Google検索]ボタン(サブミット・ボタン。「type=submit」という属性が付いている<input>要素)には「btnG」という名前が付けられていることが分かる。 コントロールの配置 Visual Studioを起動し、新しいWindows Formプロジェクトを作成します。 フォーム上次のコントロールを配置してください ボタン: button1 button2 button3 button4 リストビュー: listView1 listView1.View = View.Details; columnHeader1=HERF columnHeader2=text ウェブブラウザ: webBrowser1 […]
C# exercises (a) Web1 WebBrowser
Visual Studio community 2015 アカウントについて (学内専用) 今週から、4回分けてWebについて学習する WebBrowser (基本) WebBrowser (自動操作) HttpClient REST & JSON WebBrowser コントロール WebBrowser コントロールを利用した、シンプルなアプリケーションの作成手順を紹介します。 Visual Studioを起動し、新しいWindows Formプロジェクトを作成します。 WebBrowserコントロールの配置 ツールボックスから”WebBrowser”コントロールをクリックして選択します。選択後フォームデザイナにドラッグ&ドロップしフォームにWebBrowserコントロールを配置します。 フォームにWebBrowserコントロールを配置した直後の状態です。フォームいっぱいにコントロールが配置されます. フォーム全体にコントロールが広がる原因は、”Dock”プロパティがデフォルトで”Fill”に設定されるためです。Dockプロパティを”None”に変更します。 Dockプロパティを”None”に変更するとコントロールのリサイズができるようになります。 コード 下記のコードを記述します。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WebBrowserControl { public partial class FormMain : Form { public […]
C# exercises (9) Puzzle Game3
Visual Studio community 2015 アカウントについて (学内専用) パズルゲームUIの改進 改進点: ピースを順番でセットするではなく、あらかじめランダムにセットして、マウス移動できるようにする ピースをあらかじめランダムにセット initialData の改造 // 変数関係の初期化処理 private void initialData() { flg = new bool[9]; data = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; answer = new int[] { -1, -1, -1, -1, -1, -1, -1, -1, -1 }; Random r = new […]
C# exercises (8) Puzzle Game2
先週できたパズルゲームUIの改進 参考 http://www18.big.or.jp/~neon2/bunkatu/tips9.shtml 改進点: ピースを順番でセットするではなく、あらかじめランダムにセットして、マウス移動できるようにする ピースをあらかじめランダムにセット initialData の改造 PlayBox_Paint の改造 マウス移動できる 勝負判定 経過時間の表示
C# exercises (7) Puzzle Game
今回作るのは、イメージを読み込んで利用するパズルゲームです。イメージファイルを読み込むとそれを 9 分割し、ランダムに混ぜます。 プレビューのイメージをフォーム上クリックして配置、すべて正しい場所に配置できればクリアです。 フォーム作成 サイズ:500 x 400 背景色:適当 PictureBox配置 (Name) : PlayBox Size : 300 x 300 BackColor : white プレビュー用PictureBox配置 (Name) : Preview Size : 100 x 100 BackColor : white メニュー作成 MenuStrip をフォームにドロップ、下記のようにメニュー追加 File Load Image… ダイアログ作成 openFileDialog をフォームにドロップ、フィルターを設定 Image Files (*.png, *.jpg) | *.png; *.jpg […]
C# exercises (6) Graphics and Paint
Graphicsオブジェクト ウインドウの内部を表示したり描き直したりする必要が生ずると、Formに「Paint」というイベントが発生し、Paintプロパティに設定されているメソッドが呼び出されるようになっています。 このPaintイベント用のメソッドは、これまでのクリック時のイベント用メソッドなどとは微妙に違いがあります。これは以下のように定義されます。 private void メソッド名 (object sender, PaintEventArgs e) { ……ここに描画処理を書く…… } 第1引数に、イベントが発生したオブジェクトが渡されるのは同じですが、第2引数に渡されるのはSystem.Windows.Formsパッケージの「PaintEventArgs」というクラスのインスタンスです。これは、描画のためのイベント情報を管理するもので、描画に必要なオブジェクトなどもこの中にまとめられているのです。 中でも重要なのが「Graphics」というオブジェクトです。これはSystem.Drawingパッケージに用意されているクラスで、これはGDI+(Graphics Device Interfaceというグラフィック描画のための機能の強化版)を利用して画面にさまざまな描画を行うための機能を提供します。 Paintイベント フォームのプロパティをイベントに切り替えて、Paintイベントを探し、メソッド名Form1Paintを入力 Paintイベントで渡されるPaintEventArgsインスタンスから以下のようにして取り出します。 Graphics 変数 = 《PaintEventArgs》.Graphics; Penと図形の描画 g.DrawLine(p,75,75,50,50); // 直線 g.DrawEllipse(p,75,75,50,50); // 円 private void Form1Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; Pen p = new Pen(Color.Red); // Penインスタンスの作成 g.DrawEllipse(p,75,75,50,50); } Penと多角形を描く private void […]