piot-jp-Team / ghf_webapp

農園センサーのグラフWebアプリ
MIT License
3 stars 2 forks source link

リファクタリングに付いて #12

Open denbnddb opened 5 years ago

denbnddb commented 5 years ago

初めまして、denbnddb こと yoshioka と申します。 すでにお話は聞いておられるかと思いますが、本アプリを他のサーバー上に展開するにあたり、本アプリの開発環境構築系のドキュメント作成や擬似データのセットなどを行わせていただきたく、連絡させていただきました。 まずは、本リポジトリにブランチを切らせていただいて作業をさせていただき、後ほど pull request を行うつもりです。よろしくお願いします。

yoshikichi commented 5 years ago

ご覧いただきありがとうございます。 よろしくお願いいたします。とりあえすv20190504のブランチ切ったので、Forkしてこちらにプルリお願いします(これがベストな方法かわかりませんが)。 あとgitWikiページはcodeのリポジトリとは別に動くのかもしれないのかもしれません。Cloneできるようですので試していただけますでしょうか。まだよくわかってなくて、すみません。

denbnddb commented 5 years ago

v20190504 ブランチの作成、承知しました。 状況報告です。現在 ghf_webapp を fork させていただき、v20190504 ブランチにいくつかドキュメントファイル(md形式) の追加を行なっています。 gitWiKi の方も拝見いたしましたが、本プロジェクト全体のドキュメントのように感じ、現在私が書き込んでいる ghf_webapp の開発環境構築とは主旨が違うのでは考えましたので、まずはドキュメントファイルを ghf_webapp 側に追加とさせていただきました。pull request 時に内容ご判断いただき、gitWiKi の方が良いよ、ということでしたら、後ほど対応させていただきます。denbnddb

denbnddb commented 5 years ago

すみません、少しご相談です。センサーデータを擬似入力しての ghf_webapp の動作確認をできるようにしたいと考え、今整理中です。そこで以下のような悩みどころが出てきました。

悩みどころの質問:外部キーの型が int になっていますが、それを unsigned int に直すべきかどうか

データベースの構造を把握したく、ghf_webapp のデータベースの内容を確認していました。私は SchemaSpy も使い、またお教えいただいた ER 図も見ながら確認をしていたのですが、例えば prpjectsatusers テーブルの user_id は usersテーブルの id への外部キーのはずですが型が int になっています。そこで mysql にこれは外部キーだと教えても型が違うと怒られてしまいます。確かに正しいのは unsigned int かと思われます。 そこで migration ファイルを書いて直し、ついでに外部キーの設定もしてしまおうかと考えましたが、これから新しく立ち上げるサーバの方は良いにしても、現在お使いの方は、データベースそのものの移行や最低でもバックアップが必要となります。 型を直し外部キーの設定をしておくと、SchemaSpy などを使って ER図などが現状の AS IS で示せるのがメリットです。

いかがでしょうか。ちょっと今はやめておいてほしいということであれば型変更は行いません。 よろしくお願いします。

yoshikichi commented 5 years ago

すみませんでした。unsigned int に直すべきです。SchemaSpy よさそうですね。私も今度使ってみまっす。 migrationは書き直してしまってかまいません。rollback部分もぜんぜん書いてないので、出来ましたら laravelリファレンス通りにしていただけると助かります。それぞれcreateだけで、ひとつずつにしてしまったほうがよいかも知れません。

ちなみに今使っているのは下記の19テーブルです。(laravel-admin用9テーブル含む) (migrationsの中にstocks,tweetsなんていうテーブルはサンプルプログラムのもので使ってませんので消してしまってよいです。)

mysql> describe admin_menu;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| parent_id  | int(11)          | NO   |     | 0       |                |
| order      | int(11)          | NO   |     | 0       |                |
| title      | varchar(50)      | NO   |     | NULL    |                |
| icon       | varchar(50)      | NO   |     | NULL    |                |
| uri        | varchar(50)      | YES  |     | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

mysql> describe admin_operation_log;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| user_id    | int(11)          | NO   | MUL | NULL    |                |
| path       | varchar(255)     | NO   |     | NULL    |                |
| method     | varchar(10)      | NO   |     | NULL    |                |
| ip         | varchar(15)      | NO   |     | NULL    |                |
| input      | text             | NO   |     | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

mysql> describe admin_permissions;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name        | varchar(50)      | NO   | UNI | NULL    |                |
| slug        | varchar(50)      | NO   |     | NULL    |                |
| http_method | varchar(255)     | YES  |     | NULL    |                |
| http_path   | text             | YES  |     | NULL    |                |
| created_at  | timestamp        | YES  |     | NULL    |                |
| updated_at  | timestamp        | YES  |     | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

mysql> describe admin_role_menu;
+------------+-----------+------+-----+---------+-------+
| Field      | Type      | Null | Key | Default | Extra |
+------------+-----------+------+-----+---------+-------+
| role_id    | int(11)   | NO   | MUL | NULL    |       |
| menu_id    | int(11)   | NO   |     | NULL    |       |
| created_at | timestamp | YES  |     | NULL    |       |
| updated_at | timestamp | YES  |     | NULL    |       |
+------------+-----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> describe admin_role_permissions;
+---------------+-----------+------+-----+---------+-------+
| Field         | Type      | Null | Key | Default | Extra |
+---------------+-----------+------+-----+---------+-------+
| role_id       | int(11)   | NO   | MUL | NULL    |       |
| permission_id | int(11)   | NO   |     | NULL    |       |
| created_at    | timestamp | YES  |     | NULL    |       |
| updated_at    | timestamp | YES  |     | NULL    |       |
+---------------+-----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> describe admin_role_users;
+------------+-----------+------+-----+---------+-------+
| Field      | Type      | Null | Key | Default | Extra |
+------------+-----------+------+-----+---------+-------+
| role_id    | int(11)   | NO   | MUL | NULL    |       |
| user_id    | int(11)   | NO   |     | NULL    |       |
| created_at | timestamp | YES  |     | NULL    |       |
| updated_at | timestamp | YES  |     | NULL    |       |
+------------+-----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> describe admin_roles;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(50)      | NO   | UNI | NULL    |                |
| slug       | varchar(50)      | NO   |     | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> describe admin_user_permissions;
+---------------+-----------+------+-----+---------+-------+
| Field         | Type      | Null | Key | Default | Extra |
+---------------+-----------+------+-----+---------+-------+
| user_id       | int(11)   | NO   | MUL | NULL    |       |
| permission_id | int(11)   | NO   |     | NULL    |       |
| created_at    | timestamp | YES  |     | NULL    |       |
| updated_at    | timestamp | YES  |     | NULL    |       |
+---------------+-----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> describe admin_users;
+----------------+------------------+------+-----+---------+----------------+
| Field          | Type             | Null | Key | Default | Extra          |
+----------------+------------------+------+-----+---------+----------------+
| id             | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| username       | varchar(190)     | NO   | UNI | NULL    |                |
| password       | varchar(60)      | NO   |     | NULL    |                |
| name           | varchar(255)     | NO   |     | NULL    |                |
| avatar         | varchar(255)     | YES  |     | NULL    |                |
| remember_token | varchar(100)     | YES  |     | NULL    |                |
| created_at     | timestamp        | YES  |     | NULL    |                |
| updated_at     | timestamp        | YES  |     | NULL    |                |
+----------------+------------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

mysql> describe alertques;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| sensdata_id | int(11)          | NO   |     | NULL    |                |
| sensor_id   | int(11)          | NO   |     | NULL    |                |
| sddvalue    | double(9,2)      | NO   |     | NULL    |                |
| limitupper  | double(9,2)      | NO   |     | NULL    |                |
| limitunder  | double(9,2)      | NO   |     | NULL    |                |
| sendflg     | int(11)          | NO   |     | NULL    |                |
| project_id  | int(11)          | NO   | MUL | 0       |                |
| sendingtime | datetime         | NO   |     | NULL    |                |
| created_at  | timestamp        | YES  |     | NULL    |                |
| updated_at  | timestamp        | YES  |     | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+
11 rows in set (0.01 sec)

mysql> describe migrations;
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| migration | varchar(255)     | NO   |     | NULL    |                |
| batch     | int(11)          | NO   |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> describe password_resets;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| email      | varchar(255) | NO   | MUL | NULL    |       |
| token      | varchar(255) | NO   |     | NULL    |       |
| created_at | timestamp    | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> describe projectatusers;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)     | NO   |     | NULL    |                |
| user_id    | int(11)          | NO   |     | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> describe sensdatas;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| sensoer_id | int(11)          | NO   |     | NULL    |                |
| sddate     | date             | NO   |     | NULL    |                |
| sdtime     | time             | NO   |     | NULL    |                |
| sddatetime | datetime         | NO   |     | NULL    |                |
| sddvalue   | double(9,2)      | NO   |     | NULL    |                |
| sdivalue   | int(11)          | NO   |     | NULL    |                |
| ctgain     | double(6,2)      | NO   |     | 1.00    |                |
| ctoffset   | double(6,2)      | NO   |     | 0.00    |                |
| sdflug     | varchar(3)       | NO   |     | NULL    |                |
| project_id | int(11)          | NO   | MUL | 0       |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
13 rows in set (0.00 sec)

mysql> describe sensors;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name        | varchar(255)     | NO   |     | NULL    |                |
| address     | int(11)          | NO   |     | NULL    |                |
| sensunit_id | int(11)          | NO   |     | NULL    |                |
| project_id  | int(11)          | NO   |     | NULL    |                |
| ctgain      | double(6,2)      | NO   |     | 1.00    |                |
| yscalemax   | int(11)          | NO   |     | 0       |                |
| yscalemin   | int(11)          | NO   |     | 0       |                |
| ctoffset    | double(6,2)      | NO   |     | 0.00    |                |
| limitupper  | double(9,2)      | NO   |     | 0.00    |                |
| limitunder  | double(9,2)      | NO   |     | 0.00    |                |
| alertmode   | int(11)          | NO   |     | 0       |                |
| created_at  | timestamp        | YES  |     | NULL    |                |
| updated_at  | timestamp        | YES  |     | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+
14 rows in set (0.01 sec)

mysql> describe sensunits;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)     | NO   |     | NULL    |                |
| channel    | int(11)          | NO   |     | NULL    |                |
| shield_id  | int(11)          | NO   |     | NULL    |                |
| project_id | int(11)          | NO   |     | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

mysql> describe settings;
+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| id            | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| settingGroup  | varchar(255)     | NO   |     | NULL    |                |
| settingName   | varchar(255)     | NO   |     | NULL    |                |
| settingString | varchar(255)     | NO   |     | NULL    |                |
| settingValue  | int(11)          | NO   |     | NULL    |                |
| project_id    | int(11)          | NO   | MUL | 0       |                |
| created_at    | timestamp        | YES  |     | NULL    |                |
| updated_at    | timestamp        | YES  |     | NULL    |                |
+---------------+------------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

mysql> describe shieldmodules;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)     | NO   |     | NULL    |                |
| module_id  | varchar(255)     | NO   |     | NULL    |                |
| project_id | int(11)          | NO   |     | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

mysql> describe users;
+--------------------+------------------+------+-----+---------+----------------+
| Field              | Type             | Null | Key | Default | Extra          |
+--------------------+------------------+------+-----+---------+----------------+
| id                 | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name               | varchar(255)     | NO   |     | NULL    |                |
| email              | varchar(255)     | NO   | UNI | NULL    |                |
| password           | varchar(255)     | NO   |     | NULL    |                |
| remember_token     | varchar(100)     | YES  |     | NULL    |                |
| created_at         | timestamp        | YES  |     | NULL    |                |
| updated_at         | timestamp        | YES  |     | NULL    |                |
| verified           | tinyint(1)       | NO   |     | 0       |                |
| verification_token | varchar(255)     | YES  |     | NULL    |                |
+--------------------+------------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)
denbnddb commented 5 years ago

お返事ありがとうございます。承知しました。マイグレーションファイルも整理をするようにします。

ですが、マイグレーションファイルの整理は動作内容にも色々影響を与えチェックにも時間を要しますし、また開発環境を作るためのドキュメントはほぼ終わった状況ですので、まずはドキュメントに合わせて ghf_webapp を xserver で動作させる作業を行なってしまうつもりです。

本日この作業を行いましたが、センサーの読み取りでエラーが出ています。ローカルでOK, ロリポップでOK, xserver でNG という状況。まずはこちらを片付けて、OK になればプルリクエスト、その後、マイグレーションファイルの整理にかかり、2度目のプルリクエストという流れで行こうと考えています。

yoshikichi commented 5 years ago

ありがとうございます。  マイグレーションファイルの整理はしなくてもいいです。折りを見てこちらでまとめます。mikissa-sさんから yoshiokaさんへ、どんな依頼されているか把握していないので余計なことを言ってしまいましたw。  現在運用中Webサービスのデータを元にデモデータを作成して(alertqueテーブルの関連部分は入れていますが)Seederに追加しようかと思っていたのですが、もう実際センサーとつないでいるのですね。ということはSeederに追加はやらなくてもよいのですね。助かります。  本題とは脱線しますが、ロリポップでも動かしたんですね。websocketはだめだったような気がしたんですが、sakura.io連携はwebhookですか。(どこのサーバーで動いたかのissueを立てたほうが良いでしょうか)

denbnddb commented 5 years ago

いえいえ、訂正です。誤解を与えてしまったようですみません。 依頼内容は、ghf_webapp を別サーバで動作させる、というものです。その一環としてリファクタリングをかけているところです。 また、現在 sakura.io wss との接続は行なっていません。ローカルでも、ロリポップでも、Xserver ででもです。別の issue でも書かれていますがkeepalive しか返ってきていない状況で、こちらの問題解決は mikissa-s 様にお願いしている状況。ですのでロリポップで動いているというのはあくまでも Laravel アプリとして動作しているという状況で、websocket クライアントを cron で動作させる部分は試せていません。 マイグレーションの整理は、ではこの先の流れによって、私ができるようであればまたご提案させていただきます。今回の Xserver でのトラブルもおそらく読み切ったと思ったデータベースの構造理解が足りていないのだと思いますので。よろしくお願いします。

yoshikichi commented 5 years ago

そういうことだったのですね。laravelを使っているので、基本PHPのバージョンが合えば、どのレンタルサーバーでも動くはずです。このまえ別案件ですがsshがなくてcomposerコマンドが使えないロリポップライトでもlaravel動きました。 問題になりそうなのが、mikissa-sさんにお願いしている、iotモジュールの通信プラットフォームとの連係ですね。プラットフォームにiotモジュール登録して、このghf_webappの連携は下記リポジトリでsakura推奨のwssを使って連携するのですが https://github.com/piot-jp-Team/ghf_sakuraIO_wss_client phpでwssやっているのはあまり例がないです。常駐プロセスを起動させるのは結局VPS借りてやらないとだめだったりするので、webhookでうまく動けば、裾野が広がるので良いですね。 それと課題は各プラットフォームの管理APIを利用して、sakura.io、sigfox、lorawanにダイレクトにモジュール登録する部分ですね。今後少しずつ追加していきます。よろしくお願いします。

denbnddb commented 5 years ago

ドキュメントの追加とテスト用シーダファイルの追加、XServer でも問題がなくなりましたので、先ほど Pull Request しておきました。よろしくお願いします。