コンテンツ

  1. ホーム
  2. 提供サービス
  3. ホスティングサービス
  4. マニュアル・ガイドブック類
  5. サーバ構築運用ガイド

サーバ構築運用ガイド

1.Linux(UNIX)基礎

VMホスティングサービスではLinuxでのサーバ環境を提供しています.本節では,サーバ構築・運用に必要なLinuxに関する基礎について解説します.

Linuxコマンド

LinuxなどUNIX系OSを搭載したコンピュータでは,処理の実行命令にLinux(UNIX)コマンドを用います.このコマンドは,ユーザとOSの仲介役を果たすシェルと呼ばれるツールが,ユーザの意志を解釈しOSに命令通りコンピュータを制御させるために存在します.

今日のUNIX環境ではX Window SystemでGUI化されたインタフェースも実装されていますが,それでもコマンドによる操作がUNIX系OSを使用する上での基本となっています.

以下に基本的なLinux(UNIX)コマンドを紹介します.

コマンド名オプション説明
ls -a -d -l -rなど ディレクトリ内の情報を表示
cd 無し ディレクトリの現在位置を移動
pwd 無し ディレクトリの現在位置を表示
cp -a -b -p -rなど ファイルやディレクトリをコピー
mv -f -i -u -v ファイルやディレクトリの移動・名前変更
rm -f -i -r -v ファイルやディレクトリを消去する
ln -s -f -i -b -n -v リンクを貼る
vi/view -b -R +line -r エディタ(viewは読込み専用)を起動する
diff -i -r -w 2つのテキストファイルの差分を取る
gzip -d -f zip形式の圧縮・解凍
tar A c d r f v x z tar形式のアーカイブ化・展開
tail -c -f -n -qなど ログファイルなどを文末から表示
wget -c -h -b -rなど Web上からダウンロード
dig -f -p -h -xなど DNS情報を取得
yum install updateなど パッケージ管理ソフトyumを実行
which 無し コマンドの場所を探す
find -name -user ファイル・ディレクトリを探す
chmod -c -v -f -Rなど パーミッション設定
chown -f -h -R ファイル・ディレクトリ所有者設定
su -f -l -m -c -s -p ユーザ変更
exit 無し su等で変更したユーザから元に戻る
ssh -v -q -1 -bなど sshによるセキュリティ通信で接続
logout -f -h -p ログアウトする
  • 各コマンドのオプションの意味については下記参考図書などをご参考ください.

シェルスクリプト

シェルスクリプトはLinux(UNIX)コマンドを組み合わせてシェル内で連続して動作させる事ができる,簡易的なプログラムのようなものです.命令や処理の手順をC言語に似たような記述方式で作成します.

もちろんループや条件分け,変数・関数などといった高度な処理も利用でき,業務やメンテナンスなどで日常よく使う連続的な命令の組み合わせをまとめておくだけでなく,C言語などで作成を検討しているプログラムのプロトタイプとして動作を確認するといった用途にも使えます.

シェルスクリプトは後述するviエディタなどのエディタを使って記述します.ここではVMホスティングサービスで提供するLinux環境の標準的なシェルであるBashで動作するシェルスクリプトの記述例を以下に示します.

sh_sample.png

作成されたシェルはそのままでは実行できません.chmodでパーミッションを700に変更し実行可能な状態にします. chmod 700 スクリプトのファイル名を入力 シェルスクリプトの実行は./をつけて ./スクリプトのファイル名を入力 で実行されます.

viエディタ

viエディタはUNIX環境で利用できる標準的なエディタです.viの実行は次のように入力します. vi ファイル名 すでにファイルが存在している場合はそのファイルが開かれ,存在しない場合は新規ファイルとしての編集になります.なお,入力された内容は保存コマンド:wを実行するまで更新・作成されません.

また,読み込み専用状態でファイルを開きたい場合はviewコマンドを使用します. view ファイル名

viエディタはコマンド入力モードとテキスト編集モードの2つの状態で成り立っています.起動直後はコマンド入力モードになっていますので,そのままではテキスト編集を受け付けません.

このコマンド入力モードはviエディタの様々な機能を切り替えるモードです.Escキーを押せばいつでもこの状態になります.今の状態がわからなくなったときはEscキーを押してコマンド入力モードに一度戻してから続きの処理をする事を心がければ,ミスをすること無く作業を行う事ができます.

テキスト編集モードに移行するにはi,a,oなどのコマンドを入力します.この中のいずれのコマンドを入力しても,Escキーを押すまでテキスト編集が可能となりますが,コマンドによって作業開始の挙動に違いがあります.そのほかにもviには検索をかける/コマンドや?コマンド,文章を1行削除するddコマンドなど,様々な種類が用意されています.

以下に代表的なviコマンドを紹介します

コマンド名説明
テキスト挿入
i カーソルの左側に挿入
a カーソルの右側に挿入
o 1行開けて挿入
テキスト削除
x 1文字削除
dd 1行削除
カーソル操作
h
j
k
l
gg 先頭へ移動
Shift+g 最終行へ移動
g+行数 行数分下へ移動
置き換え
r カーソル上の1文字置き換え
s カーソル上の1文字を置き換えてテキスト入力続行
貼り付け
p ddやxで削除された行や文字を貼り付け
元に戻す
u 1作業前に戻す

編集したドキュメントを保存する場合は:wコマンドを使用します.そして編集を終了する場合は:qコマンドを使用します.

ここで,viでの編集を終了する際,編集内容を保存せずに終了しようとすると警告文が出て終了できません.編集内容を破棄して強制的に終了を実行する場合はコマンドの最後に!をつけます.:q!と入力すれば強制的に終了します.同じ要領で,読み込み専用で開いたドキュメントを強制的に保存する場合は:w!と入力します.

Red Hat Enterprise Linux

Red Hat Enterprise Linux(以下RHEL)はRed Hat社が提供する商用Linuxのディストリビューションです.ホスティング・ホームページサービスで提供する各サービスでは,VMのサーバ用OSとしてRHEL6を使用しています.同じUNIX系のOSであってもそれぞれの仕様は異なり,その中のLinux系のOSだけでも大きく分けて3系統の種類に分かれています.

OSの種類

RHELの位置づけとしては,UNIX系>Linux系OS>RedHat系ディストリビューション>RHEL6となります.VMホスティングサービスを利用してサーバを構築・運用するに当たって書籍やWebページを参考にされる場合は,使用OSがRedHat系ディストリビューションを前提としたものを活用される事をおすすめします.

Linuxのディレクトリ構造

コンピュータ上にファイルを保存する場所を分別するための区切りをディレクトリと呼びます.ファイルを保存する時にファイルの用途や種別によって保存先を分け,各ディレクトリには何のファイルが格納されているのかがわかるように,ディレクトリ名という名前をつけておきます.

ディレクトリは木構造であり,1つの親ディレクトリに対して1つ以上の子ディレクトリが親子関係として関連づけられています.全てのディレクトリの頂点には/(ルート)ディレクトリと呼ばれる特別なディレクトリが存在しており,これは木構造でいうと根の部分に相当する親ディレクトリとなります.以下にUNIX環境下での基本的なディレクトリ構造を示します.

Linuxディレクトリ構造

ディレクトリの位置を表現する方法は,絶対パスと相対パスの2種類あります.絶対パスはルートディレクトリを基準点とした経路によって指定したいディレクトリの位置を表します.また相対パスは,カレントディレクトリ(現在位置にあるディレクトリ)を基準とした経路によって指定したいディレクトリの位置を表します.

なお,相対パスではカレントディレクトリを「./」,カレントディレクトリの親ディレクトリを「../」で表現します.例えば,http.confというファイルがあるconfディレクトリの位置を2種類の表現方法で表してみます(現在のカレントディレクトリはetcにあるとします).

  • 絶対パス:/etc/httpd/conf
  • 相対パス:./httpd/conf

次はユーザuser1のホームディレクトリを表してみましょう.(現在のカレントディレクトリはconfにあるとします)

  • 絶対パス:/home/user1
  • 相対パス:../../../home/user1

このように絶対パスでは/からの全経路で表現し,相対パスでは現在位置からの経路で表現します.

ですからUNIXコマンドなどでディレクトリやファイルを指定したい場合は,この絶対パスや相対パスを用います.例えばディレクトリ間を移動するのであればcdコマンドに絶対パスや相対パスで目的地のディレクトリを指定します.

2.サーバ構築

本節ではサーバの役割と接続方法について解説し,サーバが各サービスを提供するサーバとして機能する為に必要なサーバアプリケーションの追加を行う方法を紹介します.なお,実務的なサーバ構築の方法に関しましては,後述する参考図書などをご覧ください.

サーバとは

サーバは様々なサービスを提供するコンピュータシステムの事です.特にネットワークに接続され,ネットワークを経由してサービスを提供するサーバをネットワークサーバと呼びます.逆にネットワークなどを経由して,サーバに対して様々なサービスを依頼し処理結果の提供を受ける側には,クライアントと呼ばれるコンピュータがあります.

このようにネットワーク接続により,サービス提供側であるサーバとサービス要求側であるクライアントに分かれて運用が成り立つ実行環境をクライアントサーバ方式と呼びます.

クライアントサーバ方式

サーバが提供できるサービスには様々な種類があります.サーバがこれらの様々なサービスを提供するためには,サーバ内でプログラムなどを動作させ,目的の機能を実現する必要があります.ですからサーバには必要なアプリケーションをインストールし動作させる環境を整備する必要があります.

このようにサーバに機能を追加し,サービス提供可能な状態にしていく事をサーバ構築と呼びます.

サーバアプリケーションによるサービスの提供

サーバアプリケーションの例

以下にサービスの種類ごとの代表的なサーバアプリケーションを紹介します.なお,各サーバの具体的な導入・設定方法については,それぞれ専門の書籍などをご覧ください.

サーバの種類代表的なサーバアプリケーション名
Webサーバ apache
Mailサーバ sendmail・postfix
SSHサーバ OpenSSH
Proxyサーバ squid
DNSサーバ bind
データベースサーバ MySQL・PostgreSQL
LDAPサーバ OpenLDAP
FTPサーバ vsftpd
Sambaサーバ samba
ストリーミングサーバ Helix Server
スーパサーバ xinetd

サーバへのログイン

VM上でサーバを構築したり運用する場合,サーバへログインして操作する必要があります.本サービスでのサーバへの接続方法はセキュリティの観点からSSH(Secure SHell)による接続のみとなっています.

SSHで接続するにはUNIX系OSの端末画面もしくは,PuTTYやSSHに対応版のTera Termといったクライアントソフトを使用します.ここでは,端末画面からのログインとPuTTYによるログインについて説明します.

端末画面による接続は,端末画面で次のコマンドを入力します. ssh -l ユーザ名 接続先のアドレス パスワードを聞かれますので,入力してEnterキーを押せばログイン完了です.

PuTTYによる接続は,PuTTYを起動して設定画面にアドレスを入力し「開く」ボタンをクリックします.

PuTTYによる接続1

下の画面が出ましたら,ユーザ名を入力しEnterキーを押します.

PuTTYによる接続2

次にパスワードを聞かれますので,入力してEnterキーを押せばログイン完了です.

サーバからログアウトするときはlogoutとコマンドを入力します.

yumを利用した公開パッケージによるインストール

本サービスで提供するサーバのOSであるRHELではyumと呼ばれるパッケージ管理ソフトによって,比較的簡単にサーバアプリケーションを追加・更新・削除する事ができます.

以下にyumコマンドの使い方を説明します.

パッケージのインストール yum install パッケージ名 インストール済みのパッケージを一覧表示 yum list installed インストール済みのパッケージでアップデート可能なものを調べる yum check-update インストール済みのパッケージのアップデートを実行 yum update 指定したパッケージをアップデート yum update パッケージ名 パッケージの削除 yum remove パッケージ名 パッケージの検索 yum search パッケージ名 パッケージ情報の表示 yum info パッケージ名

yumによるアプリケーションの追加は,目的のソフトウェアがyum用のパッケージとしてWeb上に公開されている必要があります.公開されていない場合などは,後述するソースコードからコンパイルする方法でインストールを行ってください.

Debian系や一部のRedHat系ディストリビュージョンで導入されているパッケージ管理ソフトaptは使用できません.

ソースコードからコンパイルしてのインストール

利用したいソフトウェアのyumに対応したパッケージが公開されていない場合であっても,公開されているソースコードからコンパイルすることでプログラムを実装しインストールすることが可能です.ソースコードから利用する場合には次のようなメリットとデメリットがあります.

メリット

  • パッケージが公開されていなくても利用できる
  • パッケージ版よりも新しいバージョンのものを利用できる場合がある

デメリット

  • インストール行程がyumを使うよりも複雑
  • アップデートなどインストール後の管理作業を手作業でする必要がある

以下にソースからインストールを行う場合のフローを示します.

ソースコードからのインストール手順

3.サーバ運用

ドメイン管理

ドメインとはインターネットに接続されたサーバのネットワーク上の位置を示す住所のようなもので,DNSサーバによってドメインとIPアドレスは対応しています.

ドメインは階層構造になっており,各階層ごとにDNSサーバが各階層のレベルにおけるドメインを管理し,上下のDNSサーバと連携する事で接続先検索用の膨大なデータベースを構成しています.ですから,DNSサーバの情報を順にたどれば,FQDN(完全修飾ドメイン名:ホスト名やドメイン名を省略しない書き方)とIPアドレスのどちらからでも名前解決で目的のサーバを探し出す事が可能となります.

ドメインの階層は国や組織・部署といった条件で分けられており,構造は以下のようになっています.

DNSによる名前解決

サーバをインターネットに接続しWebページなどを公開しても,クライアントからアクセスできるようにするためには,ドメインを設定して接続先としてクライアントから指定できるようにする必要があります.ドメインをインターネット上で有効にするには,構築したサーバのIPアドレスと設定したいドメイン名を1つ上位レベルのドメインを管理しているDNSサーバに登録する事で可能です.

そのため,新たなドメインを登録するには1つ上位レベルのDNSサーバを管理している管理者に依頼などして,ドメインとIPアドレスを対応させたレコードを追加してもらいます.

ここで趣旨の異なるWebサイトを1台のサーバで複数提供する場合があります.また,WebサーバとMailサーバとDBサーバといった異なるサービスを1台のサーバの中で同時に提供している場合も考えられます.このような場合,同じドメイン名を接続先としてWebサイトを公開したり全てのサービスを提供する事は,利用するクライアントにとって不便であり不親切です.

そこで,仮想ホスト機能や仮想ドメイン機能を使ってサービスやWebサイトごとにドメイン名を分ける方法があります.仮想ホストはWebサイトに応じて別々のドメインのアドレスを設ける事ができます.また仮想ドメインは提供サービスに応じてドメイン名を分ける事ができます.

仮想ホスト・仮想ドメインの活用

VMホスティングサービスでは複数の仮想ホスト・仮想ドメインの運用が可能となっています.

ログ解析

コンピュータシステムは起動時やユーザのアクセス時・エラー発生時など,動作に関する様々な履歴を残します.この履歴情報をログと呼びます.

ログは/var/logディレクトリの中や,後から追加アプリケーションのファイルが保存してあるディレクトリ内のlogディレクトリなどにログファイルとして作成されます.サーバ内で記録されるあらゆるログファイルはSyslogデーモン(常駐プログラム)によって集約と分類が行われます.ですから,ログファイルはアプリケーションやデーモンごとに分かれて保存されます.

ログファイルの分類方法や保存先はSyslogの設定ファイルである/etc/syslog.confで設定できます.

ログファイルの蓄積

動作させるアプリケーションにトラブルが起こったときの原因究明など,動作の履歴を確認したい場合にログファイルを開きログを解析します.ログの閲覧は各ログファイルをエディタなどで直接開くほか,tailコマンドによる表示方法もあります.tailコマンドでは-fオプションをつける事により,記録されるログをリアルタイムで表示し続ける事が可能です.-fコマンドを使用している場合,ログの表示を終了するにはctrl+cを同時に押します.

ログファイルにログを蓄積し続けると,最近のものから過去のものまで全てを記録したとても長い行数のデータになります.これではログを参照し解析する上で不便です.

そこでログファイルの蓄積データを現在のログと過去のログを分別するため,定期的に別ファイルに移して時系列で番号順に整理する,ログローテーションと呼ばれる作業が実施されます.ログローテーションの実施に関する設定は/etc/logrotate.confファイルや/etc/logrotate.dディレクトリ以下のファイルで行います.

ログローテーションの実施

バックアップ・リストア

稼働中のサーバは,ハードの故障もしくはデータ・設定ファイルの誤った上書き,悪意のある第三者によるシステムの侵入・破壊や災害の発生などによってシステムが壊れる場合があります.サーバを管理する場合はこのような事態を想定し,あらかじめシステムで扱うデータや設定ファイルなどをバックアップとして別の場所にコピーし保管しておく必要があります.バックアップ作業を行っていた場合,システムが壊れた場合でもリストアする事によりバックアップ実施時点にさかのぼって復旧させる事が可能です.

バックアップには様々な手法がありますが,ここではtar形式でアーカイブ化し,SCP(セキュアコピー)で他のコンピュータにバックアップデータを転送する方法を紹介します.まず初めにtarコマンドでバックアップファイルを作成します.tarコマンドの命令は次のように入力します. tar オプション 保存ファイル名 バックアップするディレクトリ(絶対パス) ここからは例として/etcディレクトリ以下をetc.tar.gzというファイルに保存します. tar cvzf etc.tar.gz /etc 次にscpコマンドでデータをクライアント側にコピーします.コピー先のクライアントにログインしてUNIX端末画面を開き, scp サーバ側のアカウント@サーバのアドレス:ファイルの位置 保存する場所 と入力するかSCP対応ファイル転送ソフトでクライアント側にダウンロードします.

バックアップデータをリストアする場合は,SCPでサーバ側にバックアップデータを移し,アーカイブ化されているtarファイルを展開します. tar zxvf etc.tar.gz 展開されたディレクトリを元々あった場所に上書きします. mv etc /etc 以上でリストアが完了しました.

WEBホスティングサービスではシステムを維持するために定期的なバックアップを実行しておりますが,これは提供しているサービスにおける消失データの復元や設定環境の復旧を保証するものではありません.必要に応じてバックアップを取るなど,起こりえる損害への対策は利用者の責任で実施してください.

ソフトウェアのアップデート

サーバで使用しているアプリケーションなどのプログラムには,バグやセキュリティホールといった脆弱性が発見される事があります.これらの脆弱性が発見された場合,対応するためにセキュリティパッチや最新版のプログラムの作成が行われ,完成すれば公開されます.ですから新しいアップデートが公開されれば,すぐにアップデート作業を行って脆弱性を無くさなければなりません.

yumによるパッケージ管理が実施されているアプリケーションはyumがアップデート作業を行いますが,ソースコードからインストールした場合,新しいアップデートが無いか確認する事から実際のアップデート作業まで,全てをサーバ管理者自らが行わなくてはなりません.脆弱性を抱えたままサーバを稼働させる事は大変危険ですので,管理を徹底する必要があります.

スケジューリング

サーバを運用していると,定期的に同じ処理を繰り返して実行する事があります.これらの処理はサーバ管理者がその都度実行命令を送っていたのでは不便です.

そこで,Linuxを初めとするUNIX環境のサーバではCronを利用する事により,あらかじめ定めておいた処理(ジョブやスクリプト)を定期的に実行するようにできます.例えばバックアップやログローテーションなど一定の周期で定期実行される必要があるジョブを自動的に実行させたい場合にCronは役立ちます.Cronでジョブを定期実行させるには,実行させたいコマンドやシェルスクリプトを実行周期に応じて/etcディレクトリ内のcron.dailyやcron.monthlyなどのディレクトリに格納します.

Cronによるスケジューリング

crontabの編集はコマンドcrontab -eで行います.viエディタが起動しますので,シェルスクリプトごとに自動実行する時間を設定してください.設定の書式は次のようになっています. 分 時 日 月 曜日 シェルの実行コマンド

例えば /home/user1/にあるシェルスクリプトsample1を毎月1日の午前10時に実行させる場合は次のように入力します. 0 10 1 * * /home/user1/sample1.sh また,毎週土曜日だけ実行させる場合は次のように入力します. 0 * * * sat /home/user1/sample1.sh

Cronの設定は/etc/crontabファイルを直接編集する事もできますが,RedHat系のLinuxではこの方法は推奨されていません.

4.セキュリティ強化

本節ではサーバを構築・運用するにあたり,セキュリティ対策として注意しなければならない点について説明します.なお,セキュリティ対策の具体的な方法に関しては,日々新しい攻撃手法が考え出され対処方法もそれに併せて次々と変化していくため,本コンテンツでは対応しきれません.

セキュリティ強化についての具体策は専門の書籍(なるべく最新のもの)を参考にして行ってください.

また,IPAのサイトでは情報セキュリティに関して最新の情報を公開していますので,こちらのサイトも定期的にチェックするようにしてください.

ネットワークサーバに対する脅威

ネットワークサーバは様々なサーバアプリケーションを追加する事で,便利なサービスをネットワークに接続された無数のクライアントに提供する事が可能となります.しかし,ネットワークを経由してサーバにアクセスする全ての人が善良であるとは限りません.中には構築したサーバのシステムの破壊や改ざん・乗っ取りといった事を企む悪意を持った人もいます.

このような人はネットワークに接続された無数のサーバの中から,動作しているシステム内の欠陥があるものを探し,その欠陥を利用して攻撃を仕掛けてきます.ですからサーバをネットワークに接続するという事は,常にこれらの脅威にさらされる事になります.

ネットワークサーバに対する脅威は主に次の3つです.

  • 情報の信頼性が阻害される脅威
  • 公開情報の改ざんや削除,偽情報による混乱や詐欺の誘発

  • 情報の保護が阻害される脅威
  • サーバ内の公開していない情報を盗み取られる

  • サービスそのものが阻害される脅威
  • サーバの動作を停止や鈍化させたり,機能を乗っ取る

これらの脅威の引き金となるシステム内の欠陥を脆弱性やセキュリティホールと呼びます.これらは,特定の条件を与えたときに開発段階で予期できなかった動作をするものや,仕様上機能的にやむを得ないもの,使用方法の間違いによって引き起こされるものなどがあります.

構築サーバのセキュリティ対策の必要性

そこでネットワークに接続されるサーバを構築し運用するためには,脅威の可能性に対し危機対策が必要になります.ただし,どれだけ脅威の可能性を駆逐しても世の中では次々と新しい攻撃手法や脆弱性が発見されるので,残念ながら脅威に対するリスクを完全に取り去る事はできません.

ですから,脅威の可能性を無くす努力だけでなく,仮に危機的な状況が起こったとしても被害が最小限で済むように,安全にシステムが倒れるフェイルセーフの概念も意識してセキュリティ強化に取り組むべきです.

フェイルセーフを意識したサーバ構築

仮に悪い形でサーバの機能を乗っ取られてしまうと,様々な被害を受けるだけでなく,運用するサーバが脅威の新たな手先となって他のサーバへ危害を加える可能性もあります.また,システム的にどれだけ対策を行っても,管理者自身のパスワードやサーバに関する情報の管理が甘いと,普段の生活の中から悪意のある第三者に情報が漏れ,攻撃の機会を与えてしまうといった事も起こりえます.

以下に注意すべき基本的な事項を紹介します.

  • パッチやバージョンアップによってプログラムを常に最新の状態を保つ
  • サーバアプリケーションを動作させるOS上のオーナに必要以上に権限を与えない
  • 必要の無いサーバアプリケーションは動作(インストール)させない
  • 使わないポートは閉じる
  • パスワードは定期的に変更し,辞書などに登録されている単語は用いない
  • なるべくセキュアな通信を用いる
  • 第三者に情報を教えない(見えるところに置かない)

作成したプログラムのセキュリティ対策の必要性

攻撃者がネットワークサーバを攻撃するときは,動作するプログラムの脆弱性という隙を突いてきます.サーバ内で動作させるプログラムを自分で作成し実行する場合,そのプログラムに脆弱性を作ってしまうと,そこから攻撃する機会を与えてしまう事になります.

また,PHPなどの言語で動作するWebアプリケーションのプログラムでも同じ事がいえます.サーバで動作させるプログラムの作成は,プログラミングの専門書などでセキュリティ対策についての知識を身につけた上で実施し,脆弱性を作ってしまうリスクを極力減らす必要があります.

5.参考図書紹介

  • 28日で即戦力!サーバ技術者養成講座
    著者:笠野英松 発行:技術評論社
  • 入門UNIXシェルプログラミング
    著者:Bruce Blinn 訳:山下哲典 発行:ソフトバンクパブリッシング株式会社
  • 入門vi
    著者:Linda Lamb,Arnold Robbins 訳:福崎俊博 発行:オライリージャパン
  • マスタリング Red Hat Enterprise Linux 5
    著者:小森孝光 発行:ソフトバンククリエイティブ
  • 仕事で使えるRed Hat Enterprise Linux 徹底入門
    著者:古賀政純 入谷光浩 可知豊 上鍵忠志 発行:シンクイット
 

Copyright © Institute for Information Management and Communication, Kyoto University, all rights reserved.