これからのモバイル時代、パソコン(以下PC)だけでなく、スマホやタブレットPCなどのモバイル機器についても十分に使いこなすことが求められています。それにせっかく高い金払ってモバイル機器を購入したのだから、とことん使い込んで機能を十分に引き出せなければもったいなさ過ぎる・・・。
というわけで、今回はモバイル機器(スマホ・タブレット)についてのテーマにします。
以前、PCの方にサーバソフトXamppを導入して、ローカルPCをWebサーバにしたり、Wordpressを導入することを達成できました。今回はスマホ(タブレット)スキルの向上を目的として、Androidスマホ(タブレット)をWebサーバにできないかチャレンジしました。
Webサーバアプリ「SimpleHttpServer」を、Androidスマートフォン(タブレット)に導入する。
Androidスマホに導入するアプリ(ソフトウェア)は、GooglePlayから入手する必要があります。GooglePlayの中からWebサーバに使えそうなアプリを探したところ、「SimpleHttpServer」というアプリを発見しました。
「SimpleHttpServer」 は、アプリ内の表記が日本語になっていることも使いやすそう。
というわけで、まずSimpleHttpServerを使ってみることにしました。使ってみた結果、使い勝手が悪ければ他のアプリを探すことにします。
SimpleHttpServerを導入する前に、使用するモバイル端末が外部ネットワークからアクセスされにくい状態(グローバルIPアドレス、もしくはグローバルIPアドレスとNAPT対応されたプライベートIPアドレスが使用する端末に割り振られていない)になっているかなど、セキュリティ面の確認をしておきます。セキュリティ上の問題が無いことを確認したら、GooglePlayよりSimpleHttpServerを導入します。
SimpleHttpServerの設定。
SimpleHttpServerを初めて起動すると、デバイス内の写真、メディア、ファイルのへのアクセス許可を求められます。Webサイトに画像ファイルを表示するために「許可」にした状態で「続行」を押して次に進みます。
使用しているAndroidのバージョンによっては、バージョンについての警告表示が出ます。「OK」を押して次に進みます。
SimpleHttpServerのメイン画面になります。
サイドバーの「SETTING」を押すと、次のような各種設定画面になります。
「公開するフォルダ」を押して、Webサイトのデータを入れるフォルダを設定します。「IPアドレス:ポート番号」が、ここで指定した「公開するフォルダ」に対応します。
「index.htmlの探索を有効にする」を有効にします。これでブラウザのURL欄でフォルダを指定(IPアドレス:ポート番号/当該フォルダまでのパス/)した場合、そのフォルダ内にあるindex.htmlのページが表示されるようになります。
それ以外の項目はそのままでOKです。
「セキュリティ」の所にある「ダイジェスト認証を使う」が有効になっていると、サイトにアクセスした段階でユーザー名とパスワードによる認証を求められ、認証を通過した場合にサイトが表示されるようになります。内部ネットワークを他人と共同で使用している場合は「有効」に、そうでなければ「無効」でよろしいと思います。
設定が終わったらメイン画面に戻ります。
テスト用のWebデータをスマホ(タブレット)に置き、PCからアクセス。
テスト用のWebページのデータを作成してから、これをSimpleHttpServerで設定した公開フォルダに配置します。
SimpleHttpServerのメイン画面にある「OFF」「RELOAD」ボタンの下に表示されているURL(http://IPアドレス:ポート番号)が、このWebサーバのURLになります。他の機器からこのURLをブラウザに入力すると、スマホ(タブレット)の公開フォルダに入れたWebサイト(Webアプリ)にアクセスできます。なお、SimpleHttpServerにおいては、ポート番号は12345番が固定となっており、変更はできないです。
「OFF」ボタンを押すと、Webサーバが起動して「ON」状態になります。この状態で、同じネットワークに接続している他の機器から、ブラウザに「メイン画面に表示されているIPアドレス:12345」と入力します。
SimpleHttpServerやネットワークの状態が正常であれば、スマホ(タブレット)の公開フォルダ内にあるindex.htmlページが表示されます。
これがスマホ(タブレット)で動くWebサーバにパソコンからアクセスして表示させたテスト用Webサイトです。 未だにECOを引きずっているので、テスト用サイトはさらたんなどのECOネタになってます。
Webサーバにアクセスがあると、SimpleHttpServerのメイン画面の黒いエリアにアクセスログが表示されます。「192.168.0.6」は、テスト用WebサイトにアクセスしているPCに割り振られているIPアドレスになります。
これにより、まだまだ課題があるものの、何とかスマホ(タブレット)をWebサーバにできることを確認できました。機種変更などで使わなくなった古いスマホ(タブレット)の使い道として、テスト用などの内部Webサーバーとして活用するのはどうだろうか?
公開用Webサーバとして使う場合は、セキュリティや可用性の管理が求められる。
外部ネットワークからアクセスできない状態の内部ネットワーク限定サーバ(テスト用サーバなど)としての使用であれば、Webサイトが正常に表示されれば十分といえます。
しかしながら、外部ネットワークからの接続を許可して、不特定多数からのアクセスを受け付ける公開用Webサーバとして使用する場合は、Webサイトが正常に表示されるだけでは不十分で、セキュリティ対策をガッチリ講じることが避けられなくなります。
Webサーバのセキュリティ対策としては、次のようなことが挙げられます。
・Webサーバとして使うスマホ(タブレット)の中に、不要なアプリやデータを入れない。
・Webサーバアプリは、脆弱性を減らすために、常に最新のバージョンを使用する。
・ウィルス対策アプリは常に最新の状態にアップデートし、定期的にウィルススキャンを行う。
・ルータやファイアウォールは、Webサイトを公開する上で必要最小限となる通信だけを許可するように設定する。
・Webサーバに入れるファイルのアクセス権管理(パーミッション設定など)を適切に行う。
・サーバ証明書(TLS証明書)を取得し、サーバーの正当性の証明と暗号化通信を可能にする。
・Webサイト(Webアプリ)への直接攻撃を防ぐために、WAFを導入。
・WebサーバへのDDos攻撃を防ぐために、IPSを導入。
それから、公開サーバとなると、セキュリティ対策を講じることに加えて、ユーザーのアクセスを常に受け付けられるように、24時間365日サーバを正常に動かすことが求められます。サーバを長期間連続して正常に動かすためには、次のような対応が必要になります。
・サーバを動作させているスマホ(タブレット)に常に電源が供給されるようにする。
・スマホ(タブレット)と無線LANのアクセスポイント間の電波状態を良好に保ち、通信障害を起こさない。
・大量のアクセスを受け付けることにより、microSDへの読み書きが頻繁に行われることが予想されるので、高耐久のmicroSDカードを使用する。
これらの対策を個人ユーザーで行うとなれば、負担が大き過ぎます。個人ユーザーがWebサイト(アプリ)を不特定多数に公開する場合は、無理して自前のサーバを用意して管理するよりも、月に数百円~の費用でレンタルサーバーを借りた方が断然コストパフォーマンスが良くなる。
自前で用意したサーバーは、外部ネットワークからのアクセスが遮断された状態で、本番用サーバにアップする前に正常に動くか確認するためのテスト用サーバとしての使用に限定するのが良さそうです。