訪問介護の紙の連絡ノートをデジタル化してウェブアプリとして構築する話の続きです。
前回 はデジタル化の動機について述べました。
一人暮らしの高齢者のところに紙の連絡ノートがあってヘルパーさんに日々記録してもらっても、家族が読むのはいつになるやら…ということですね。
この記事では、どんな知識が必要なのか、どんな準備が必要なのか、何をしなくてはならないのか、デジタル化にどれだけ手間がかかるのか、全体像を見ておきます。
目次
ウェブアプリってどういう構成になっているの?
クライアントとサーバー、リクエストとレスポンス
報告してもらうとか、報告を見るとか、メッセージを送るとか、送られたメッセージを見るという事ができるサービスを提供するためには、インターネットに接続されていてそのようなサービスを提供する事ができるコンピュータが必要です。プログラミングをして開発するウェブアプリはそのようなコンピュータに入れて稼働させます。
このように、サービスを提供する役目を果たすコンピュータはサーバーと呼ばれます。
サーバーにはユーザーから送られてくる情報が格納保存されます。
ユーザーは自分のスマホやパソコンでインターネットを使ってサーバーへアクセスし、情報を格納したり情報を取得します。つまり、サーバーが提供するサービスを利用するわけです。サービスを利用する側(つまりユーザー)が使うスマホやパソコンはクライアントと呼ばれます。
サーバーは常にユーザーからのリクエストを待ち構えています。
ユーザーが「この情報を格納して」とリクエストすると、サーバーは「はいわかりました」と言って直ちに格納し、正しく格納しましたという返事をユーザーへ返します。
ユーザーが「この情報を見せて」とリクエストすると、サーバーは「はいどうぞ」と言って情報をユーザーへ返します。
情報を格納する場合も、情報を見る場合も、まずユーザーがサーバーへリクエストを送ります。そしてサーバーから返事が来るわけです。サーバーからの返事はレスポンスと呼ばれます。
つまり、クライアントがまずサーバーへリクエストをし、リクエストを受け取ったサーバーは何かしらの処理をしてからユーザーへレスポンスを返すわけですね。
サーバーでウェブアプリは仕事をする
ウェブアプリは、次のような仕事をします。
- ユーザーからの情報を受け取る。
- 受け取った情報を格納する。
- ユーザーからの指示に従って適切なデータを取り出す。
- 取り出した情報をユーザーへ返す。
で、とにかく、ウェブアプリが稼働しているのはサーバー上、情報が格納されているのもサーバー上、ユーザーは手元のスマホやパソコンで情報を見に行ってるだけということですね。
で、やらなくてはならないことは?
考えなくてはならないこと、準備しなくてはならないこと、行うべき作業を一通りピックアップしてみることにしましょう。
どのプログラミング言語を使い、どのフレームワークを使うか考える
フロントエンドとバックエンドとデータベース
ユーザーがサーバーで稼働しているウェブアプリにアクセス(つまりリクエスト)するとサーバーは何らかの「操作画面」をユーザーに返して(つまりレスポンスして)きます。
操作画面も一種類じゃなくて、例えば、報告を送信するための画面とか、報告一覧を見るための画面とか、報告ひとつひとつを詳細に見る画面とか、色々ありますよね。
まあ、でも、とにかく、ユーザーが操作する画面をプログラミングして作らないといけないわけです。
このような、ユーザー側で使う操作画面をプログラムをすることを、よく、フロントエンドの開発とか言います。
一方、サーバー側では、ユーザーが画面を操作して送ってくるリクエストに対し適切な情報処理を行い、適切な情報をユーザーへ返すということを行いますが、サーバー側で行う処理をプログラミングすることを、よく、バックエンドの開発とか言っています。
バックエンドではユーザーから送られてきた情報受け取ったりユーザーへ情報を返すだけではなく、情報をデータベースへ格納したり取り出したりする処理も行います。
つまり、ウェブアプリを作るには、フロントエンドの開発とバックエンドの開発両方を行う必要があるわけです。
プログラミング言語、フレームワーク、データベースの選択肢
フロントエンドでは、HTML、CSS、JavaScript の三つの言語を使う必要があります。
この三つのうち、HTMLと CSS は 正確にはプログラミング言語ではありません。
HTML は組版をして画面をつくるための言語で、CSS は画面のレイアウトやデザインのために使われる言語です。
一方、クリックすると何かが起きるとかなど、画面に動きを与えるために使われるのが JavaScript で、これはプログラミング言語です。
フロントエンドで使う言語はこの三つに決まっていると考えて良いです。
バックエンドで使う言語の選択肢は結構たくさんあります。
少し前だったら(今でも?)、PHPと呼ばれるプログラミング言語や Java と呼ばれるプログラミング言語が一番使われていたと思います。
最近だと、node.js と呼ばれるプログラミング言語や python と呼ばれるプログラミング言語が使われることが多くなってきたようです。(日本では Ruby も多く使われているようです。Ruby というプログラミング言語を作ったのは日本人で、簡素な表現でプログラムを書くことができるオブジェクト指向言語と言われています。)
node.js は フロントエンドで使われる JavaScript をバックエンドで使えるようにしたもので、JavaScript を主に使っている人にとっては新しく文法を覚える必要が無いなどのメリットがあります。
データベースにもいくつかの選択肢があります。
MySQL と呼ばれるものや PostgreSQL と呼ばれるものがよく使われています。この二つはサーバー上で稼働させるソフトウェアで、利用するにはサーバー上でいくつかの設定を行う必要があります。
最もお手軽に使えるデータベースとして、SQLite と呼ばれるものがあります。これは、サーバー上で稼働するソフトウェアと言うよりは、アプリ自体に組み込んで使うもので、データは一つのファイルに格納されます。小規模なアプリのデータベースとして使う場合やアクセスが高頻度であるような事がなければ十分使えるものです。サーバーで面倒な設定をする必要もありません。
さて、ここで、フレームワークというものについても説明しておく必要があります。
フレームワークは、アプリやシステムを開発する際に、よくある機能やよくある典型的な画面などを、効率的に、一貫した方法で、簡単な書き方でプログラミングができるようにしているものです。
フロントエンド開発では JavaScript のフレームワークとして Vue.js や React と呼ばれるものが有名です。
バックエンド開発では、node.js のフレームワークとして Express 、Python のフレームワークとして Django や flask、 PHPのフレームワークとして Laravel などが有名です。
ではここで、ごく簡単なバックエンドでの処理を、素の Python だけで書いたコードと、 Flask という Python のフレームワークを使って書いたコードの比較をしてみることにしましょう。
次は、ユーザーがアクセスしてきたときに、サーバーからユーザーへ “Hello , World !” というメッセージを返すだけのシンプルなプログラムの例で、上が素の Python だけで書いたもの、下が Flask を使って書いたものです。
from http.server import BaseHTTPRequestHandler, HTTPServer
class SimpleHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == '/hello':
self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
self.wfile.write(b'Hello, World!')
else:
self.send_response(404)
self.end_headers()
def run(server_class=HTTPServer, handler_class=SimpleHandler):
server_address = ('', 5000)
httpd = server_class(server_address, handler_class)
print('Serving on port 5000…')
httpd.serve_forever()
if __name__ == '__main__':
run()
from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def hello():
return 'Hello, World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
素の Python では 21行だったものが、フレームワーク Flask を使うと 10 行で済んでいます。フレームワークの中では、(上のコードで行っているような)お決まりの処理を(下のコードにあらわれているように)app = Flask(name) とか、@app.route(‘/hello’)とか書くだけで済むようにしてあるからです。
一般に、同等の機能を実装する場合フレームワークを使うとコード行数が約30 % – 50 % 程度削減できると考えられるそうです。、コードも読みやすくなり、保守もしやすくなります。規模が大きくなるほどこのような差は大きくなるでしょう。
さて、プログラミング言語、データベース、フレームワークにはそれぞれいくつかの選択肢があるわけですが、今回は、作成するアプリは少人数で使う小規模なものであることを踏まえ、プログラミング言語は Python としそのフレームワークは Flask、データベースは SQLite を使うことにしました。
また、Flask はテンプレートを使ってサーバー側で操作画面(つまりフロントエンド)を作成し、ユーザーへ返すプログラムを書くことができます。ですから、今回はフロントエンド用のフレームワークは使わないことにします。
ウェブアプリの設計をする
今回の訪問介護デジタル連絡ノートでは、ヘルパーさんから介護内容の報告を送ってもらいます。また、その報告に対して家族からメッセージを送ります。
これまで使われてきている紙の連絡ノートにヘルパーさんが日々書いている内容を参考に、次のような入力フォームを作ることにします。(縦にとても長いのでスクロールして見てください。)
つまり、
- 日付
- 開始時刻
- 終了時刻
- 担当者
- 食事介助内容
- 作り置き・食べ残し(の有無)
- 点眼(介助の有無)
- 散歩・買い物
- ゴミ捨て(の有無)
- 飲み薬の補充
- その他
- レシート画像
- WAON残額
- 家族への連絡
という情報を扱うことにしました。
これらの情報をデータベースへ、どのような構造で格納するのかを考えます。この作業はデータモデルの設計と呼ばれていて、例えば、リレーショナルデータベースの知識が多少必要になります。
リレーショナルデータベースのデータモデル設計というのは、Excel とか Googleスプレッドシートのような表計算ソフトで例えると、
- 一枚のシートに一つの表を作る
- それぞれの表の一行目に管理したい情報の項目が見出しとしてそれぞれの列に設定されていて、情報自体は二行目以降に一行のデータとして格納される
という約束を守って、どんな表をいくつ作るかということを考えることに相当します。
今回作るアプリであれば、例えば次のような、5枚のシートになるでしょう。ユーザーを管理するシート、ヘルパーを管理するシート、レポートを管理するシート、レシート画像を管理するシート、メッセージ(家族への連絡)を管理するシートの5枚です。各シートの一行目に管理したい情報の項目が並べられています。(以下の画像は必要に応じて横スクロールして見てください。)





今回はこのような構造を持つデータを(Excel や Googleスプレッドシートのような表計算ソフトではなく)データーベースで取り扱えるように、Python というプログラミング言語でプログラミングしていけば良いわけですね。
ユーザーからのリクエストはデータベースに対する情報の
- 書き込み
- 読み出し
- 更新
- 削除
ということになりますから、これらをサーバー側で実現する機能も Python でプログラミングします。
さらに、サーバーは、「ユーザーが何らかのリクエストをサーバーへ送るときに使う操作画面」や、「ユーザーからのリクエストに対してサーバーが送り返す情報を表示する画面」もユーザーへ送り返す必要があります。これらを実現するために、「画面表示に使われる HTML、CSS 及び JavaScript で書かれたデータ」をサーバーから送るようにする機能も Python でプログラミングします。
このような機能は素の Python だけで書くと結構長いコードになりますが、Flask という Python用のフレームワークを一緒に使うとかなり短いコードで済むようになります。まあ、Python の文法だけではなく、Flask というフレームワークの使い方も新たに学ぶ必要が出てきてしまうわけですが…
プログラミングができる環境をパソコンに導入する
以前、プログラミング言語のインストールとは という記事で、実行環境のことを書きました。
今回は Python というプログラミング言語を使うことにしましたが、もし、プログラミングに使おうとしているパソコンに Python というプログラミング言語が入っていなければ、その記事で説明したようにしてインストールする必要があるわけですね。
また、プログラミングを行うためにはテキストエディタと呼ばれるソフトウェア(アプリ)が必要です。
これはコードを書くために使うものです。
例えば Windowsパソコンには「メモ帳」と呼ばれるテキストエディタが最初から入っています。これをプログラミングに使うことも絶対にできないわけではありませんが、機能が不足していてかなり無理があります。
今、多くの人に支持され多くの人がプログラミングに使っているテキストエディタの一つに Visual Studio Code と呼ばれるソフトウェアがあります。Visual Studio Code をのような、プログラミングに適したテキストエディタはどのパソコンにも最初から入っているというわけではないので、自分でインストールする必要があります。Visual Studio code は Visual Studio Codeの公式サイトからダウンロードしてインストールする事ができます。そして、使い方も理解する必要があります。
データベース管理システムのインストール
これからアプリ作成に使おうとしている手元のパソコンには、おそらく、データベースを管理するためのソフトウェア(データベース管理システム)は入っていません。ですから、自分でインストールしておく必要があります。
先にも述べたように、データベース管理システムと一言で言ってもたくさんあります。MySQL や PostgreDB のインストールとその設定は結構面倒ですが、今回使うことにしたのは SQLite です。SQLIte はインストールが簡単で、設定も基本的には不要です。
Windows の人は SQLite公式サイトから zipファイルをダウンロードして解凍してください。(PATH も通しておくと便利です。)
MacOS の場合は最初から入っているかもしれません。入っていなければ、SQLite の公式サイトから Mac用の zipファイルをダウンロードすることもできますし、Homebrew を使用してコマンドでインストールすることもできます。
必要なフレームワークやライブラリのインストール
今回は Python のフレームワークである Flask を使ってウェブアプリを作ることにしました。
Flask は Python に追加する形でインストールする必要があります。
ここでややこしい話をしなくてはなりません。
実は、最初にパソコンのシステムにインストールしたプログラミング言語にはフレームワークとかライブラリのようなものは気楽に追加しないほうが良いという事情があるのです。
言い換え得ると、もともとの、システムにインストールした、基本となるプログラミング言語自体をむやみに改造しないほうが良いということです。
そこで、よく行われるのが、仮想環境を作るということです。
仮想環境というのは、厳密な言い方ではありませんが、開発しようとしているアプリ専用に、システムにインストールしたプログラミング言語の複製を別に作り、それを使ってプログラミングができるようにするものです。
そして、システムにインストールしたプログラミング言語ではなく、仮想環境(つまり複製の方)に、そのアプリの開発のために必要なフレームワークやライブラリをインストールして追加していきます。
そうすることにより、もともとのシステムのプログラミング言語はきれいに保たれたままにすることができます。
どのようにして仮想環境を作るのかということ、また仮想環境にどのようにしてフレームワークやライブラリを追加インストールするのかということも学んでおく必要があります。
プログラミングする
プログラミングする環境が整ったら、ウェブアプリの設計に従って、機能を一つ一つ、コードを書いて実現していきます。
その際、必要になる知識が色々とあります。
クライアントとサーバーの間で通信を行うものを作るのですから、ある程度通信についての知識が必要になります。
ウェブアプリの通信は HTTP と呼ばれる通信の規約(通信を行う方法の取り決めのようなもの)に従って行われることや、HTTP では GET、POST、PUT、DELETE という4つの通信の方法が用意されているということを知っておく必要があります。主に使われるのは GET と POST です。今回作成するアプリでもこの二つの方法だけを使います。
ログイン機構を作り、許可されたユーザーだけがアプリを使えるようにするので、ログインしてからログアウトするまでユーザーを適切に認識し管理し続ける仕組みも必要です。これはセッション管理などと呼ばれます。ログインするユーザーに対してサーバーは固有の ID を割り当て、クッキー(Cookie)と呼ばれる小さなデータをユーザーに送り、クッキー(Cookie)をログイン中のユーザーとやり取りしながら正規のユーザーであることを確認し続けます。ここでのクッキー(Cookie)は、正規の入場者であることを確認するための「再入場券」のようなものと思っておけば良いでしょう。
また、データベースへのデータの格納やデータベースからのデータの読み出しを行うので、データベースの操作についてある程度の知識が必要になります。データベース操作を行うための言語である SQL について基本的なことを知っておくと良いでしょう。
セキュリティの確保も重要ですね。
インターネットは全世界につながっている通信網です。インターネットにつながっているシステムの入口まではだれでもアクセスすることができます。ですから、悪意を持った人もシステムの入口までは来ることができるので、攻撃をしかけてくる事がないとは言えません。また一般には、ログインが許可されているユーザーの中に悪意をもっている人がいないとも言い切れません。悪意をもった不正な操作が行われても思い通りにさせないようにしておく必要があります。
例えば、クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ(CSRF)と呼ばれている攻撃方法が知られています。これらの攻撃に耐えられるようなプログラムを書く必要があります。プログラミング言語自体やフレームワークで既に対策が打たれている部分も多いのですが、完全に任せっきりというわけにも行かないのも事実です。
手元のパソコンやスマホでテストする
設計したとおりに動くかどうか、テストします。
プログラミングしているパソコンで、動作確認をします。
ウェブアプリを作成するために使うフレームワークでは、大抵の場合、プログラミングと同時並行で作成中のアプリをChrome などのウェブブラウザで起動して動作の確認ができる機能を持っています。
一つ一つ機能を実装していくたびに、エラーが出ないかどうか確認します。
エラーは、ウェブブラウザの開発者ツールや、ターミナル、コマンドプロンプト、Power Shell などで確認することになります。
また、プログラミングに使っているテキストエディタに備わっているデバッガなどを使うこともできます。
このように、プログラミング→テスト→プログラミング→…と繰り返しながらアプリを完成させていきます。
また、スマホでも正しく動作するかどうか確認する場合は、「開発中のアプリが起動しているパソコン」にスマホから接続する事ができるようにしておく必要があり、その方法も知っておく必要があります。
レンタルサーバーを借りる
ウェブアプリを稼働させ、サービスとして提供するためのコンピュータ(サーバー)をインターネット上に準備する必要があります。
このような目的で使うコンピュータを利用できるサービスを提供している事業者が多数あり、サービスの提供形態にも様々なものがあります。
主なものとして
- 共有レンタルサーバー
- VPS(仮想専用サーバー)または IaaS (Infrastructure as a Service)
- PaaS(Platform as a Service)
を挙げることができます。
どのサービスでも、仮想的に作られたコンピュータが使われます。
※ 「仮想的に」ということが気になる人が多いかもしれません。ここで簡単に説明しておきます。実は、コンピュータの中に、「ソフトウェアとして」コンピュータを作ることができる技術があります。(仮想化技術と呼ばれます。)この技術を使うと、一台の物理的に存在しているコンピュータのなかに複数台のコンピュータを仮想的に作ることができます。仮想的にと言っても、本物のコンピュータと同じように使うことができるのです。
では、上に挙げたサービスについてごく簡単に、どんな違いがあるのか説明しておくことにしましょう。
共有レンタルサーバー
共有という言葉がついていることからもわかるように、これは仮想的に作られた一台のコンピュータを複数の人で共有して使うもので、それぞれの利用者にはそのコンピュータの中にその利用者用のフォルダが割り当てられ、そこに様々なファイルを格納することができます。
共有レンタルサーバーではいくつかの種類のプログラミング言語があらかじめインストールされていて、それらの言語で書いたプログラムを走らせる事ができます。ただし、PHP 以外は古いバージョンのものが用意されていることが多く、新しいバージョンを使いたいときは自分でインストールする必要があります。そして共有で使うサーバーであるため、利用者が自由にインストールできない場合もあります。また、システム開発のために使いたいフレームワークやライブラリのインストールが難しい場合もあります。そのような場合は、何らかの回避策をとることになり、手間が増えることになります。
新しいバージョンのプログラミング言語や各プログラミングで利用するフレームワークやライブラリのインストールが可能な場合では、手元のパソコンからサーバーへ SSH という手段で接続し、インストール作業をする必要があります。共有レンタルサーバーでは SSH接続の機能を提供していないものもあるので利用申し込みの前にしっかり確認しましょう。
共有レンタルサーバーでも大抵の場合、データベース管理システムの利用ができます。多くの場合、MySQL や MariaDB と呼ばれるものが使われています。しかし、今回作るウェブアプリでは SQLite を使うので、サーバーで用意されているデータベース管理システムは不要です。
VPS(バーチャルプライベートサーバー)または IaaS (Infrastructure as a Service)
VPS というのは、仮想的に作られた一台のコンピュータを利用者専用のものとして利用するものです。
VPS は何も入っていない素のコンピュータで、これを使うには、まず OS を入れるところから始めなくてはなりません。
おそらく多くの人に最も馴染みのある OS は Windows だと思いますが、VPS では Linux を使うことが多いことでしょう。
OS のインストールを利用者自身で行い、その上で、ウェブアプリを稼働させるために必要となるソフトウェアも利用者自身がインストールし、様々な設定をして環境を構築していくことになります。
多くの共有レンタルサーバー事業者が VPS もサービスとして提供しています。
IaaS も仮想的に作られた一台のコンピュータを利用者専用のものとして利用するものですが、さらにストレジやネットワーク含めてインフラとして仮想化され利用が可能になっています。
VPS と同様に、提供されるコンピュータは何も入っていない素のコンピュータで、これを使うには、やはりまず OS を入れるところから始めます。
VPS や IaaS は共有レンタルサーバーとは違い、一台のコンピュータを独り占めして使えるものです。ですから、プログラミング言語やフレームワークのインストールも自由に行えます。
VPS はどちらかと言うと小規模なシステム構築、個人・中小企業向けです。
IaaS はどちらかと言うと大規模システム、アクセス数や機能追加などによって変動する負荷や様々な方面へ展開していく必要がある企業向けです。
PaaS(Platform as a Service)
OS、サーバー、データベースは予め事業者によって導入済みで、プログラミングして書いたコード一式をアップロードすると、システムが動かせるようになっているサービスのことです。
使うことのできるプログラミング言語が一つに限定されていたり、いくつかの中から選べるようになっています。
さて、以上見てきたように、様々な選択肢があるので悩むかもしれませんが、今回はコストを考慮すると共有レンタルサーバー一択です。
一月あたりの利用料が数百円〜千円程度で済み、場合によっては無料で使えるものもあるからです。
実は PaaS にも無料枠を提供しているサービスがあるのですが、例えば 15分間リクエストがないと作成したアプリがスリープ状態になるなどの制約があります。今回の場合、ヘルパーさんと家族で一日に数回のリクエストが行われるだけなので、確実にスリープ状態が発生します。まあ、起動するまでの数十秒とか数分とか?待っていればよいのですが、事情を知らないと「なにこれ、動いてないじゃん」と思われてしまいます。アプリ作成には PaaS のほうがレンタルサーバーより使い勝手が良いのですが、時間に追われながら仕事をしてくれているヘルパーさんの負担を少しでも軽くするために共有レンタルサーバーで頑張ることにしました。
SSHでサーバーへ接続し、プログラムを走らせる環境を作る
どんなサービスを使うのかということによって、プログラムを走らせる環境を作るための作業内容が変わります。
ここでは SSH で接続できる共有レンタルサーバーの場合について簡単に説明します。
ところで、あなたはパソコンをコマンドで操作したことはありますか?
例えば、Windows を使っている人だったら、コマンドプロンプトとか PowerShell というものがあるのですが、使ったことありますか?
Mac だったらターミナルという名前のものがありますよね。
こういうのを起動すると、コマンドを入力してパソコンを操作する画面(ウィンドウ)が開きます。
黒や暗い紺色の画面になっていることが多いですが、設定によって白っぽい画面に変えることもできるようです。
SSH でサーバーへ接続するときにはまずこういうのを起動します。
そして、例えば、次のようなコマンドを入力します。
ssh -i ~/.ssh/id_rsa user@192.168.1.10
~/.ssh/id_rsa の部分は接続するために使う秘密鍵を指定している部分で、user@192.168.1.10 の部分はサーバーをレンタルしている人のアカウントとサーバーのアドレス(URL)を指定している部分です。もちろんこれらの部分は人によって違いますし、サーバーによっても違います。また、秘密鍵は、サーバーに接続する際のユーザー認証に使用されるものです。サーバーをレンタルした人は、予め、サーバーの管理ページ(マイページみたいなもの)へログインして秘密鍵を作成しておく必要があります。
さて、SSH でサーバーへの接続が済むと、サーバー利用者に許可されている範囲で、サーバーの中で作業をすることができます。
例えば、ファイルを手元のコンピュータからサーバーへ格納するとか、サーバーの中に格納してあるファイルを使うとか、許されている範囲で何かしらのソフトウェアをインストールするなどということができます。
ただし、これらの作業は手元のパソコンで、すべてコマンドを使っておこないます。
今回は Python というプログラミング言語で書いたプログラムをサーバーで動かすわけですが、大抵の場合、もともと共有レンタルサーバーで用意されているのはかなり古いバージョンの Python です。そこで、何かしらの方法で新しいバージョンの Python をインストールするべきです。また、必要となるフレームワークやライブラリのインストールもしなくてはなりません。もちろん、そのようなことを実行するためには知識が必要です。
実は SSH による接続ができる GUI(グラフィカルなインターフェイス)のソフトウェア、つまり、普通のアプリのように窓を使って操作するソフトウェアもいくつかあります。このようなソフトウェアははじめからパソコンに入っているわけではないので、どこかからインストールすることになります。PuTTY と呼ばれるものがよく使われているようです。 SSH を主にファイルの転送のために使う人の場合は GUIソフトウェアを使うことが多く。一方、SSH を主にシステムの管理のために使う人はコマンドによる操作を好むことが多いようです。
作ったウェブアプリをサーバーへアップロードする
手元のパソコンで作成し、完成したプログラムをサーバーへ格納します。
サーバーに SSH で接続してプログラムを格納しても良いですが、FTP と呼ばれている接続手段で格納することもできます。
詳しいことを知る必要はありませんが、FTP は SSHとは違う種類の通信の仕方で接続します。
SSHと同様に、コマンドを使って FTP で接続することももちろんできますが、普通のソフトウェアのように GUI(グラフィカルインターフェイス)を使って操作するソフトウェア、つまり窓を通してマウスやキーボードで操作できるソフトウェアを使うこともできます。ただし、このようなソフトウェアははじめからパソコンに入っているわけではないので、どこかからインストールすることになります。FileZilla と呼ばれるものがよく使われているようです。
サーバーで稼働できるように設定する
利用するサーバーによって様々な違いがあるのですが、ユーザーからのリクエストに適切に応答してウェブアプリがレスポンスを返すようにするために、サーバーとの連携の仕方について何らかの設定をする必要がある場合があります。
例えば、多くの場合、共有レンタルサーバーでは、ユーザーからのリクエストを処理するためのプログラムであるウェブサーバー として 、Apache と呼ばれるものや NginX と呼ばれるものが使われています。作成したウェブアプリはこのようなソフトウェアと正しく連携して動かないとならないのですが、実はおそらく大抵の場合、Flask で作成し手元のパソコンで正しく動いたものをそのままサーバーへアップロードしても動かないでしょう。手元のパソコンと、レンタルサーバーでは、ユーザーからのリクエストの処理やレスポンスを返すために使われているソフトウェアが違うからです。
共有レンタルサーバーでは ウェブサーバーとプログラムの連携をするために CGI や FCGI と呼ばれる仕組みを使うことが多いです。ですから、共有レンタルサーバーで Python で書かれたウェブアプリを稼働させるためには、ウェブサーバーと適切に連携して動くように、 CGI または FCGI のちょっとしたスクリプト(プログラム)を書いてサーバーへアップロードしておく必要が出てきます。
テストする
さて、ウェブアプリのプログラムをサーバーへアップロードし、ウェブサーバーとの連携が適切に取れるようになったら改めてテストしてみましょう。
正しく動かなければ原因を突き止めて修正します。
原因を突き止めるためにはサーバーに保存されるアクセスログやエラーログを見るのが有効です。
ですから、ログの見方もある程度知っている必要がありますね。
きっと、一度ではなく、何回もテストと修正を繰り返すことになるでしょう。
ユーザーアカウントを必要なだけ発行する
問題なく動くようになったら、このアプリを使う人の分だけユーザーアカウントを作ります。そしてアプリを使う人それぞれに教えます。
今回のアプリでは、無用なリスクを避けるため、ユーザーが自分でアカウントを登録できるような機能は付けないことにしました。アプリ管理者が SSH でサーバーへ接続し、ユーザーアカウントを作成するようにします。
使い方を説明したマニュアルを作る
今回作成する訪問介護デジタル連絡ノートはシンプルなものですから、本格的なマニュアルを作るほどではありませんが、使える機能を理解してもらえるようにアプリのスクリーンショットを撮影するなどして簡易マニュアルを作っておくのが良いでしょう。
では、次回の記事では、プログラムの概要について書こうと思います。



