15.Summary
Webアプリケーション作成(コーディング・テスト、デバッグ、仕上げ)、全員発表する 発表課題: オープンデータの取得と利用 使用言語:processing もしくは Java 発表時間:5分程度 課題: オープンデータの取得と利用 オープンデータの材料選び オープンデータの取得 (URL) オープンデータの利用 (processing もしくは Java) オープンデータ応用のWEB公開 (Google sitesに埋め込み) ヒント: これまで演習したプログラムの組み合わせが必要です。 nextbus, […]
14.REST and JSON
REST RESTは「REpresentational State Transfer」の略で、大まかに言えば、アドレス(URL)とHTTPのメソッド(GETなど)を組み合わせて、サーバー上のデータを操作する仕組みです。 RESTは、Roy Fieldingという方が、2000年に発表した博士論文で提唱されたアーキテクチャスタイルです。Roy FieldingさんはHTTP仕様の策定者の一人であったことから、HTTPはRESTの基準をよく満たしています。 RESTの例として、WordPress JSON REST API (WP API, http://wp-api.org/) あります。それを利用して、Javaなどから最新の記事の取得、記事の投稿、写真の添付などが可能です。 JSON JSON(ジェイソン、JavaScript Object Notation)は、JavaScriptにおけるオブジェクトの表記法をベースとした軽量なデータ記述言語である。 JSONの紹介 […]
13.Web Application
Webアプリケーション作成に必要な概念を理解する Web Service Webサービスとは、大まかにいえば、Webの通信の仕組みを利用して、コンピュータ同士でさまざまなデータをやり取りし、分散処理を行うシステムです。 通信手順の取り決めのことを、「プロトコル」(Protocol)と呼びます。Webの世界では、「HTTP」(HyperText Transfer Protocol)というプロトコルで、通信が行われています。 HTTPは、WebブラウザなどのクライアントがWebサーバーにデータを要求し、それにWebサーバーが答える、という形のプロトコルです。 API アプリケーションプログラミングインタフェース (API、英: Application Programming Interface) とは、ソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。APIには、サブルーチン、データ構造、オブジェクトクラス、変数などの仕様が含まれる。 Webサービス大まかに言えば、以下のような流れで処理を進めます。 (1)クライアントからサーバーに対して、HTTPで接続して処理を要求します。 (2)サーバーは処理結果をクライアントに送信します。 (3)クライアントは(2)の結果を受信し、必要に応じて各種の処理を行います。 「HTTPで通信する」上位層に位置するプロトコル […]
12.Map
Map構造 コレクションクラス Map構造は、キーと値をセットにしたものを1つの要素として管理するデータ構造です。 「HashMap」「TreeMap」の2種類があります。 要素がキーと値で管理されているので、キーを指定して値の取得や更新、削除を行います。 Map構造は、キーによって値を管理するためキーの重複は不可です。 (同じキーがセット(put)された場合は上書きされます。) マップ(HashMap) HashMap は、名前(キー)と値の組み合わせを要素として持つ配列です。 HashMapは格納順は管理されません。キーと値にnullを使用することが可能です。 HashMap hm = new HashMap(); hm.put(“Brian Kernighan”,”A REGULAR EXPRESSION […]
11.List
List構造 コレクションクラス List構造は、要素を順番付けして管理するデータ構造です。 「ArrayList」「LinkedList」の2種類があります。 要素がインデックス(番号)順に並んでいるので、番号を指定して要素の取得、挿入、更新、削除ができます。また、Iteratorや拡張for構文を使って先頭から順番に要素を取得することも出来ます。 ArrayListは要素の取得が早いが挿入や削除が遅い、LinkedListは要素の挿入や削除は早いが取得が遅いという特徴があります。 List構造は、要素の重複は可能です。 リスト(ArrayList) ArrayList は配列を扱う一般的なクラスです。 下記などのメソッドが用意されています。 list.add(o) – オブジェクト o を配列の末尾に追加する list.add(n, o) – オブジェクトを […]
10.String Searching
文字列を検索する – indexOf/lastIndexOfメソッド 文字列に含まれる部分文字列を検索するには、indexOfメソッドを利用します。indexOfメソッドは、指定された部分文字列が最初に登場した位置を、文字列の先頭を0としたインデックス番号で返します。文字列が見つからなかった場合、戻り値は-1となります。第2引数で、検索開始位置を指定することもできます。 1 2 3 String str = “にわにはにわにわとりがいる”; System.out.println(str.indexOf(“にわ”)); // 結果:0 System.out.println(str.indexOf(“にわ”, 1)); // 結果:4 部分文字列を文字列の末尾から検索するならば、lastIndexOfメソッドを利用してください。 1 […]
9.Set
Set構造は、要素を順番付けしないで管理するデータ構造です。「HashSet」「TreeSet」の2種類があります。 Listのような順番付けや、Mapのようなキー管理もないため、要素の取得にはIteratorや拡張for構文で取得します。このようなことからHashSetは要素の取得順は保証されませんが、TreeSetは自動ソートされて管理されるのでソートされた順番で要素が取得されます。また、HashSetは要素にnullを使用する事が可能ですが、TreeSetはnullを使用する事ができません。Set構造は、要素の重複は不可です。(同じキーがセット(add)された場合は上書きされます。) セット(HashSet) HashSet も配列を扱いますが、要素の重複が許されない、順序の保障が無い点が ArrayList や LinkedList と異なります。要素を参照する際には Iterator を用います。 §HashSetTest.java import java.util.*; class HashSetTest { public static void […]
8.Sort
ソートとは ソートとは,複数のデータを特定の順序に従うよう並べ替える作業のことです。順番の決め方には次の2つがあります。 昇順:小さいものから大きなものへ 降順:大きなものから小さなものへ 並べ替えは、主にデータベースなどの大量のデータを処理する必要のあるプログラムで有用です。試験の点数の高い順番に並べ替えて、上位1000人を合格にするなどの場合は、点数による並べ替えが行われます。また、住所録のデータを住所毎にまとめて参照したい場合は、住所(文字列)による並べ替えが行われます。 ソートアルゴリズム ソートの処理は、さまざまなプログラムの中で頻繁に使われ、そのゆえ、古くからいろいろなアルゴリズムが考案されてきました。 ソートを行うアルゴリズムの例として次のものが挙げられます。 基本形 基本交換法:バブルソート 基本選択法:直接選択法 基本挿入法 応用形 改良交換法:クイックソート 改良選択法:ヒープソート 改良挿入法:シェルソート バブルソート バブルソート (bubble […]
7.Recursive
再帰とは 再帰(Recursion)とは,再帰的な構造を持つアルゴリズムのことです。再帰的な構造とは,自分自身の定義の中に,自分自身を含む構造です。再帰の代表的な例として階乗やユークリッドの互除法の再帰的定義がよく用いられます。それぞれについて学習していきます。 階乗 整数nの階乗は記号!を用いてn!と書きます。実際の計算は次のように行われます。 n! = n × (n-1) × (n-2) × … × 2 × 1 この式を再帰的定義に書き換えると,次のようになります。 n! = […]
6.Stack and Queue
キューとスタックは、古典的なデータ構造として広く知られているものですが、 実装上はリストの一種と考えることができます。 キュー キュー (Queue) は「先入れ先出し (First-In First-Out, FIFO)」を表すデータ構造です。 データを取り出す際、先に格納したものから順に取り出します。 銀行や病院やたい焼き屋の待ち行列 (先に並んだ人からサービスを受ける) コンピューターでプリンタへの出力処理や、ウィンドウシステムのメッセージハンドラ、プロセスの管理など、データを入力された順番通りに処理する必要がある処理に用いられる。 データを追加する操作をエンキュー(enqueue)。データを取り出す操作をデキュー(dequeue)という。 スタック スタック(Stack)は、 「あと入れ先出し (Last-In First-Out, LIFO)」あるいは「先入れあと出し(First-In […]