スッキリわかるJava入門 読書メモ - 知識編

 概要

プログラミングの基礎を学ぶ為にこの書籍を活用した。この記事では、私が覚えておきたい用語についてまとめている。技術的な事に関しても、今後記事書いていく予定である。この記事を読んだ人にとってもプラスになるとよい。

 

 

Javaとは

Javaとはプログラムを作るために利用するプログラミング言語の1つ。様々なコンピュータで動作する多様なプログラムを作成することができる。

変数

  • データを格納するためにコンピュータ内部に準備する箱こと 

配列

  • 同一種類の複数データを並び順で格納するデータ構造
  • 配列の要素は0から始まる

Getter・Setter

Getter

  • 単純にフィールド値を取り出すだけのメソッド

Setter

  • 単純にフィールドに値を代入するだけのメソッド

メリット

  • Read Only、Write Onlyのフィールドを実現できる
  • フィールドの名前など、クラスの内部を自由に変更できる
  • フィールドへのアクセスを検査できる

インスタンス

  •  金型ではなく、その型から生みだされた仮想世界で活動する実態の事。例えば、人間という金型があって、人間①、人間②といった人間を生成していく事。

クラス

メソッド

  • 複数の文をまとめ、それを1つの処理として名前をつけたもので、部品の最小単位である。

メソッドを作るメリット 

  • プログラムの見通しが良くなり、全体を把握しやすくなる
  • 機能単位を記述するため、修正範囲を限定できる
  • 同じ処理を1つのメソッドにまとめることで、作業効率が上がる 

コンストラク

  • インスタンス生成時に自動実行される処理を持っているメソッドをコンストラクタと呼ぶ

オブジェクト指向

  • ソフトウェアを開発するときに用いる部品化の考え方

オブジェクト指向のメリット

  • プログラムを容易に変更しやすくなる(柔軟性・保守性の向上)
  • プログラムの一部を簡単に転用できる
  • ラクして、楽しく、良いものが作れる

カプセル化

  • フィールドへの読み書きやメソッドの呼び出しを制限する機能。大切な情報(フィールド)や操作(メソッド)にアクセス制御をかけることにより、悪意や間違いによるメンバの利用を防止し、想定しない利用が発生したならば、その原因箇所を特定しやすくするための仕組み

継承

  • 類似したクラスを作る事を可能にする機能。元となるクラスを「親クラス」、「スーパークラス」、「基底クラス」と呼ぶ。また新たに派生されるクラスを「サブクラス」、「派生クラス」、「子クラス」と呼ぶ

「WEBを支える技術」読書メモ 第5部-③リソースの設計

概要

この記事は、今後の自分のために技術書を読んでアウトプットすることに重きをおいて書いている。筆者自身が重要だと思ったことを記事に書いていくので、この記事を見た人にとっても有益となれるとよい。

 

 目次

 

リソース設計とは

クライアントとサーバ間のインターフェース設計、つまりWebサービスやWebAPIの外部設計のこと。どのようにリソースを分割し、URIで名前をつけ、相互にリンクを持たせるかが設計の勘所になる。

 

 「Webサービスの特定」「データをリソースに分ける」詳しい設計方法

関係モデルからの導出

  • 対象とするER図を図に示す
  • 中心となるテーブルからのリソースの導入
  • リソースが持つデータの特定
  • 検索結果リソースの導出
  • 階層の検討
  • トップレベルリソース
  • リンクによる結合

 関係モデルからリソースを導入する場合は、データが持つ構造を考えることと、トップレベルリソースの存在を忘れないことが重要である。また、正規化を崩して全ての情報を含めるようにすることも意識すると良い。

オブジェクト指向モデルからの導出

  • 対象となるデータのクラス図を示す
  • 主要データクラスからのリソースの導出
  • オブジェクトの操作結果のリソース
  • 階層の検討
  • トップレベルリソース
  • リンクによる結合

 クラスの持つメソッドを操作結果リソースへと返還することが重要である。これにより、クラスの持つ豊富なメソッドをHTTPの限定されたメソッドに置き換えられる。

 情報アーキテクチャからの導出

日本郵便のWebサイトを例にした情報アーキテクチャ

  • トップページ
  • 全国地図からの検索
  • 住所での検索
  • 郵便番号での検索
  • パンくずリスト

 

リソース設計で最も重要なこと

 WebサービスとWeb APIを分けて考えない事が重要である。両者の違いは少なく、Web API用として作ったリソースがWebサービスで使える事が多々ある。

 

 

 

「WEBを支える技術」読書メモ 第5部-② 書き込み可能なWebサービスの設計

概要

 この記事は、今後の自分のために技術書を読んでアウトプットすることに重きをおいて書いている。筆者自身が重要だと思ったことを記事に書いていくので、この記事を見た人にとっても有益となれるとよい。

 

 目次

 

リソース設計とは

クライアントとサーバ間のインターフェース設計、つまりWebサービスやWebAPIの外部設計のこと。どのようにリソースを分割し、URIで名前をつけ、相互にリンクを持たせるかが設計の勘所になる。

 

書き込み可能なWebサービスの難点

 読み取り専用のWebサービスに比べ考えて設計しなければ行けない事がたくさんある。

  • 複数のユーザが同時に書き込みを行ったらどうなるのか
  • 同時に風数のリソースを更新するためにはどうしたらよいか
  • 複数の処理手順を必ず実行するにはどうしたらよいか

 

書き込み可能なWebサービスの設計

 前回記事の読み取り専用のものに書き込み機能を追加する

 

補足

設計はバランスを取る作業。各種のパラメーターを加味して、自分が最もバランスが取れていると感じるところに落ち着かせるのが設計作業。

  • なるべくシンプルに保つ
  • 困ったらリソースに戻って考える
  • 本当に必要ならPOSTで何でもできる

 

次の記事はこちら👇👇👇

papaiya25x.hatenablog.com

「WEBを支える技術」読書メモ 第5部-① 読み取り専用のWebサービスの設計

概要

この記事は、今後の自分のために技術書を読んでアウトプットすることに重きをおいて書いている。筆者自身が重要だと思ったことを記事に書いていくので、この記事を見た人にとっても有益となれるとよい。

 

 目次

 

リソース設計とは

クライアントとサーバ間のインターフェース設計、つまりWebサービスやWebAPIの外部設計のこと。どのようにリソースを分割し、URIで名前をつけ、相互にリンクを持たせるかが設計の勘所になる。

 

リソース指向のアーキテクチャのアプローチ

  1. Webサービスで提供するデータを特定する
  2. データをリソースに分ける
  3. リソースにURIで名前をつける
  4. クライアントに提供するリソース表現を設計する
  5. リンクとフォームを利用してリソース同士を結びつける

 

例 郵便番号サービスの設計

  1. Webサービスで提供するデータを特定する
  2. データをリソースに分ける
  3. リソースにURIで名前をつける
  4. クライアントに提供する
  5. リソース表現を設計する
  6. リンクとフォームを利用してリソース同士を結びつける
  7. イベントの標準的なコースを検討する
  8. エラーについて検討する

 

次の記事はこちら👇👇👇

papaiya25x.hatenablog.com

 

「WEBを支える技術」読書メモ 第4部-⑤ JSON

概要

この記事は、今後の自分のために技術書を読んでアウトプットすることに重きをおいて書いている。筆者自身が重要だと思ったことを記事に書いていくので、この記事を見た人にとっても有益となれるとよい。

 

 目次

 

JSONとは

JSONJavaScript Object Notationの略で、その名が示すとおりJavaScriptで記述できる点が最大の特徴である。Webサービスでは、ブラウザがJavaScriptを実行できるので相性が良い。

 

JSONの構造

メディアタイプ

application/json

拡張子

.json

データ型

日時について

 JSONには組み込み型としての日時型がなく、開発者側で何らかの規定をしなければならない。

  • 最も単純な方法 : UNIX時間

 UNIX時間の場合、そのままではタイムゾーンを扱えないので、タイムゾーンを扱う必要がある場合は、JavaScriptのDateクラスのtoString()関数で出力した文字列が利用できる。

 

JSONPによるクロスドメイン通信

クロスドメイン通信とは

不特定多数のドメインに属するサーバにアクセスすること

なぜJSONPが必要になるのか

Ajaxで用いるXMLHttpRequestというJavaScriptのモジュールは、セキュリティ上の制限から、JavaScriptファイルを取得したのと同じサーバしか通信できない。しかし、複数のドメインのサーバと通信できず、単一のドメインのみと通信をしなければならないのは大きな制限。それを解消する方法が下記の2つの方法である。

  • <script要素による解決>
  • コールバック関数を活用するJSONP 

 

次の記事はこちら👇👇👇

papaiya25x.hatenablog.com

「WEBを支える技術」読書メモ 第4部-④ Atom Publishing Protocol

概要

この記事は、今後の自分のために技術書を読んでアウトプットすることに重きをおいて書いている。筆者自身が重要だと思ったことを記事に書いていくので、この記事を見た人にとっても有益となれるとよい。

 

 目次

 

Atom Publishing Protocol とは

 AtomPubとはAtomが規定したフィードやエントリで表現するリソースの編集、いわゆるCRUD操作を実現するためのプロトコル

  • Atom…データフォーマットの規定

 

AtomPubとREST

 AtomPubの設計はRESTスタイルに基づいたプロトコル仕様。RESTは実際のリソース設計やリンク機構の提供はシステム設計者の手に委ねられている。これには設計者の自由度が確保されている反面、RESTを理解していなと正しく理解できないという欠点がある。それを解決したのがAtomPubである。

  • 基本的なリソースモデルとリンク機構を提供してくれるので、独自に設計する必要のある部分が大幅に提供してくれる
  • AtomPub対応のフレームワークをやライブラリを利用すれば、実装工数を削減できる
  • 標準化されたプロトコルを用いることで相互運用性も高まる。

 

 メンバリソースの操作

エントリ単位での操作 

  • GET - エントリの取得
  • PUT - エントリの更新
  • DELETE - エントリの削除
  • POST - エントリの作成

 

サービス文書の構造

サービス文書は、コレクションリソースのリストを集めたホームページのようなものである。

  • メディアタイプ
  • <service>要素
  • <workspace>要素
  • <collection>要素
  • <accept>要素
  • カテゴリ

 

AtomPubに向いているWebAPI

向いているWebAPI

  • ブログサービスのAPI
  • 検索機能を持つデータベースのAPI
  • マルチメディアファイルのリポジトリAPI
  • タグを使ったソーシャルサービスのAPI

向いていないWebAPI

  • Cometを利用するような、リアルタイム性が重要なAPI
  • 映像のストリーム配信など、HTTP以外のプロトコルを必要とするAPI
  • データの階層構造が重要なAPI
  • 「タイトル」「作者」「更新日時」など、Atomフォーマットが用意するメタデータが不要なAPI 

 

次の記事はこちら👇👇👇

papaiya25x.hatenablog.com

 

 

 

「WEBを支える技術」読書メモ 第4部-③ Atom

概要

この記事は、今後の自分のために技術書を読んでアウトプットすることに重きをおいて書いている。筆者自身が重要だと思ったことを記事に書いていくので、この記事を見た人にとっても有益となれるとよい。

 

 目次

 

ATOMとは

ブログなどの更新情報を配信するためのフィード。また、幅広い分野での応用が可能な汎用XMLフォーマット

ATOMのリソースモデル

  • メンバリソース…ATOMにおける最小のリリース単位
  • コレクションリソース

メディアタイプ

Atomのメディアタイプは「application/atom+xml

  • typeパラメーターなし

Content-Type: application/atom+xml

  • エントリ

Content-Type: application/atom+xml; type=entry

  • フィード

Content-Type: application/atom+xml; type=feed

  • typeパラメーターとcharsetパラメーターを指定

Content-Type: application/atom+xml; type=feed

拡張子

.atom

名前空間

http://www.w3.org/2005/Atom

 

エントリ

エントリのルート要素は<entry>要素で、この中にエントリのメタデータと内容がフラットに並ぶ。

メタデータ

  • ID
  • タイトルと我用
  • 著者と貢献者
  • 公開日時と更新日時
  • カテゴリ
  • リンク

内容

  • XML
  • テキスト
  • テキスト以外の内容

 

フィード(エントリの集合)

メンバリソースを複数持つコレクションリソースの表現がフィード。

メタデータ

フィード独自のメタデータ

  • サブタイトル
  • 生成プログラム
  • アイコン
  • ロゴ

 

拡張

  • Atom Threading Extensions - スレッドを表現する
  • Atom License Extention - ライセンス情報を表現する
  • Feed Pading and Archiving - フィードを分割する
  • OpenSearch - 検索結果を表現する

 

次の記事はこちら👇👇👇

 

papaiya25x.hatenablog.com