PHPで作ったシステムをデスクトップアプリ風にする

卒業制作で備品管理システムを作ったのですが、何故かローカル(学校内)で使用するシステムなのにPHPで作ってしまった(当時使いこなせる言語がjsとphpくらいしか無かった)ので、それをどうにかしよう、という経緯。

※今回のシステムはサーバーではなくクライアント側のPCに入っているものとします

「別にそのままでもいいのでは?」

別にブラウザを開いてhttp://localhost/タァーンとキーボードで叩いてもらってもいいのですが…それ以前な問題がたくさんあります。

  • システムをPCに導入するのが面倒
    • 今回サーバーはXAMPPではなくiisを使用していた
    • iisに合わせてPHP 7.xをインストールが必要 & php.iniを色々修正
    • MySQLもインストールが必要

この時点でやる気が削がれます(開発を始める際も相当苦労しました)

  • クライアント側での操作次第で挙動が変わる
    • cssでposition:stickyを使っていたり、chromeでしかテストしていないので、chromeで使ってほしい
    • chromeのデベロッパーツールで好き放題postで送るデータを改ざんできる
    • ブラウザの設定次第で挙動も変わってくる
    • http://localhost/のショートカットをPC上においてもデフォルトの設定次第で起動するブラウザが変わってくる

これはマズいと思い、色々改善策を探ってみた(前置きなっがい

要はphp7が動くサーバーとurlとかメニューバーがないBlinkレンダリングエンジンが一体になっている、かつクライアントのPCへの導入が楽になるものが欲しい!

ボツになったもの

  • winbinder
    • サイトがクローズしているのでボツGithubに移行していたっぽいが、php7未テストということでボツ
  • HC-Standalone-S+ for PHP
    • winbinderを使っているのでボツ
  • PHP-GTK
    • PHP 5.xしかないのでボツ

PHP Desktop

名前の通りphpが使えてレンダリングエンジンがBlinkのchromiumを使用しているこれを使うことにしました。
phpdesktopのGithub

今回は最新版のPHP Desktop Chrome 57.0を使っていきます。

zipファイルを解凍するだけで使えます、楽ですね!
何やら色々ファイルが入っていますが、wwwディレクトリにphpで作ったものを置いてphpdesktop-chrome.exeを実行すればあたかもデスクトップアプリケーションのような振る舞いをしてくれます(多分最初の画面はwww/index.phpにしないといけないと思います)。

設定

settings.jsonを設定することによってブラウザの設定やウィンドウの設定などできます。
詳しくはwikiに書いてます。
参考程度に自分はどの項目を修正したかだけ載せてみます。

"debugging": {
    "show_console": false
},
"main_window": {
    "title": "備品管理システム",
    "icon": "hoge.png",
    "default_size": [1366, 768],
    "disable_maximize_button": true,
    "center_on_screen": true,
    "start_maximized": true,
    "start_fullscreen": true,
    "always_on_top": true
},
"chrome": {
    "external_drag": false,
    "reload_page_F5": false,
    "devtools_F12": false,
    "command_line_switches": {
        "lang": "ja"
    },
    "enable_downloads": true,
    "context_menu": {
        "enable_menu": false,
        "navigation": false,
        "view_source": false,
        "open_in_external_browser": false,
        "devtools": false
    },
}

何やら色々書きましたが、簡単に何の設定変えたかというと

  • コンソール(cmd)が開かないように
  • ウィンドウ左上のアイコンと名前を変更
  • 画面サイズを固定化&常時トップに表
  • デベロッパーツールを無効化
  • 言語を日本語に
  • リロード(F5)を無効化

コンテキストメニューもほとんど無効化しました
phpdesktopを使用する際には言語は絶対に日本語にしたほうが良いかと思います。下記症状が確認できました

  • 漢字が中華フォントになる
  • プルダウンメニューが開かない
  • input type="date"のdatepickerが開かない
  • デベロッパーツールの設定が反映されない

これで無事phpなのにそれっぽいデスクトップアプリが完成しました。
01.png

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.