2. 構成ライブラリ

この章では、構成ライブラリの概要を説明し、本ガイドラインで説明している機能と構成ライブラリの対応について示す。

2.1. 構成ライブラリ概要

Macchinetta Client (1.x)の構成ライブラリはオープンソースソフトウェアから選出したものである。 この章では、構成ライブラリの規定バージョン、機能概要、公式サイト、及び依存ライブラリを説明する。 構成ライブラリの名称とそれらの機能の分類を以下の表に示す。 は構成ライブラリが機能を提供していることを示し、 は提供していないことを示す。

機能分類
機能分類 説明
UIコンポーネント パネルやダイアログなどの画面に関する汎用部品の提供
テーブル 行の追加・削除、ソート、ページネーションなどテーブルについての機能を提供
操作性向上・制御 入力操作の補助・制限など操作性についての機能を提供
非同期処理 非同期処理を制御する機能を提供
構成ライブラリと機能分類
  UIコンポーネント テーブル 操作性向上・制御 非同期処理
jQuery
jQuery UI
Bootstrap (表示のみ)
SlickGrid
tablesorter
Mousetrap
slick
bootstrap-datepicker
Moment.js
Parsley

2.1.1. jQuery

ライブラリ名 jQuery
規定バージョン 3.3.1
公式サイト https://jquery.com/
概要
  • DOM要素の操作、イベント処理、アニメーション、Ajax通信等のAPIを提供するライブラリ。
  • JavaScriptを使用したウェブアプリケーション開発時のデファクトスタンダードとなっている。
依存ライブラリ なし

2.1.2. jQuery UI

ライブラリ名 jQuery UI
規定バージョン 1.12.1
公式サイト https://jqueryui.com/
概要
  • UIコンポーネントなどを提供するライブラリ。
  • ドラッグアンドドロップなどのマウスベースのイベント処理、ダイアログや日付入力用カレンダーなどのウィジェットを提供する。
  • 作成したHTMLに対して、JavaScriptで提供されている各種メソッドを実行することで動的な部品を利用する。
依存ライブラリ
  • jQuery

2.1.3. Bootstrap

ライブラリ名 Bootstrap
規定バージョン 3.3.7
公式サイト https://getbootstrap.com/
概要
  • UIコンポーネントなどを提供するライブラリ。
  • パネルやダイアログなどの汎用部品を数多く提供しており、レスポンシブウェブデザインやグリッドレイアウトにも対応している。
  • あらかじめ用意されたクラスやData APIと呼ばれる機能を用いることで、JavaScriptを書かずにHTMLをマークアップするだけで動的な部品が利用できる。
依存ライブラリ
  • jQuery

2.1.4. SlickGrid

ライブラリ名 SlickGrid
規定バージョン 2.3.19
公式サイト https://github.com/6pac/SlickGrid/
概要
  • 高機能なテーブルを提供するライブラリ。
  • 行の追加・削除、列のサイズ変更、列の並び替えや、ソート、ページネーションなどを提供する。
  • 表示すべきデータが画面外に及ぶ場合は、スクロール操作がなされたタイミングで表示内容を書き換えるという手法で遅延レンダリングを実現している。生成するDOM要素の数を削減したことで大量のデータを扱える。
依存ライブラリ

2.1.5. tablesorter

ライブラリ名 tablesorter
規定バージョン 2.30.7
公式サイト https://mottie.github.io/tablesorter/docs/
概要
  • 高機能なテーブルを提供するライブラリ。
  • 行の追加・削除、ソート、ページネーションなどを提供する。
依存ライブラリ
  • jQuery

Note

tablesorterは、SlickGridと比較して機能の数は少ないものの、各機能は特定のオプションを指定するだけで容易に利用できる。

一方、SlickGridは、単にオプションを指定するだけでは利用できない機能が多い。その代わり、詳細な振る舞いを独自に実装するためのインターフェースやイベント発生の仕組みが提供されており、拡張性が高い。

どちらを使用するか選択する際は、まずは実現したい機能がtablesorterで提供されているかどうかを確認し、もし機能が提供されておらず、かつ拡張も困難である場合にSlickGridを使用することを推奨する。

Warning

同一ページ内でのtablesoterとSlickGridの同時利用は、それぞれのライブラリが競合する恐れがあるため、禁止とする。

2.1.6. Mousetrap

ライブラリ名 Mousetrap
規定バージョン 1.6.2
公式サイト https://craig.is/killing/mice
概要
  • JavaScriptでキーボードショートカットを処理するためのライブラリ。
  • 特定のキー操作で任意の処理を実行したり、標準のショートカットキー操作の動作を無効化するコードの作成を支援する。
依存ライブラリ なし

2.1.7. slick

ライブラリ名 slick
規定バージョン 1.8.1
公式サイト http://kenwheeler.github.io/slick/
概要
  • カルーセルを実現するためのライブラリ。
  • レスポンシブ対応しておりブレイクポイントごとに細かな設定が可能、縦・横どちらのカルーセルにも対応、画像の遅延読み込みも可能。
依存ライブラリ jQuery

2.1.8. bootstrap-datepicker

ライブラリ名 bootstrap-datepicker
規定バージョン 1.8.0
公式サイト https://bootstrap-datepicker.readthedocs.io/en/latest/
概要
  • Bootstrap風のスタイルを持つ日付入力部品を提供するライブラリ。
  • jQuery UIと併用することなく、日付入力部品が使用できる。
依存ライブラリ
  • jQuery
  • Bootstrap

2.1.9. Moment.js

ライブラリ名 Moment.js
規定バージョン 2.22.2
公式サイト https://momentjs.com/
概要
  • 日付操作機能を提供するライブラリ。
  • 解析、検証、操作および表示などの機能を提供する。
依存ライブラリ なし

2.1.10. Parsley

ライブラリ名 Parsley
規定バージョン 2.8.1
公式サイト http://parsleyjs.org/
概要
  • 入力値チェックを容易に実現するためのライブラリ。
依存ライブラリ jQuery

2.2. 機能と構成ライブラリの対応

ここでは、ウェブアプリケーションの開発において頻繁に求められる機能の実現方法を、動作するサンプルと共に説明する。

なおサンプルは機能を実現する上で最低限必要な構成になっている。またサンプルの動作環境については 動作確認環境を参照。

機能を実現するために使用するライブラリを以下の表に示す。

機能を実現するために使用するライブラリ
記載箇所 機能 使用するライブラリ
UIコンポーネント ボタン
  • jQuery UI
  • Bootstrap
  モーダルダイアログ
  • jQuery UI
  • Bootstrap
  モードレスダイアログ jQuery UI
  パンくずリスト表示 Bootstrap
  ドロップダウンリスト Bootstrap
  アコーディオン Bootstrap
  タブ
  • jQuery UI
  • Bootstrap
  スライダー jQuery UI
  カルーセル
  • slick
  • Bootstrap
  日付入力時のカレンダー表示
  • jQuery UI
  • bootstrap-datepicker
  オートコンプリート jQuery UI
  プログレスバーによる進捗度表示
  • jQuery UI
  • Bootstrap
  ドラッグアンドドロップ jQuery UI
  レスポンシブウェブデザイン Bootstrap
テーブル 行追加・削除・編集
  • SlickGrid
  • tablesorter
  行の並び替え SlickGrid
  ヘッダを固定したデータ行のスクロール
  • SlickGrid
  • tablesorter
  ページネーション
  • SlickGrid
  • tablesorter
  ソート
  • SlickGrid
  • tablesorter
  カラムの並び替え SlickGrid
  コピーアンドペースト編集 SlickGrid
  テーブルのスクロールによる非同期データ取得 SlickGrid
操作性向上・制御 ショートカットキー制御 Mousetrap
  範囲選択防止 jQuery
  ボタンの活性状態の変更 jQuery
  二度押し無効化(二重送信防止) jQuery
  右クリック無効 jQuery
  画面要素間の連動 jQuery
  フォーマット変換・文字種変換 Moment.js
  入力値チェック Parsley
非同期処理 Deferredによる非同期処理制御 jQuery