ブラウザからtinkerにアクセス
tinker好きの私としては、嬉しいニュースです。今までコンソールからでしか使用できなかったtinkerがブラウザでアクセスできるようになりました。と言っても、Laravelのパッケージの一部ではなく、Laravelのtinkerにフロントエンドを追加したphpのパッケージ、Web Tinkerのことです。
tinker好きの私としては、嬉しいニュースです。今までコンソールからでしか使用できなかったtinkerがブラウザでアクセスできるようになりました。と言っても、Laravelのパッケージの一部ではなく、Laravelのtinkerにフロントエンドを追加したphpのパッケージ、Web Tinkerのことです。
今回は「マスアサインメントの保護を外す」という大胆なタイトルです。マスアサインメントの保護は、Eloquentにおけるモデルの定義においての$fillableや$guardedを通しての設定のことです。その保護を外す、とは、これを指定しない、ということではなく(もちろん外すのは危険)、あるケースにおいて外す必要が出てきたときに、どう外すかということです。
tinkerを使用して開発中の関数をいろいろ試験します。Eloquent関連の関数で複数のDBテーブルに渡り値を更新する関数ゆえに、tinkerがとても役に立つのです。しかし、試験中に不思議なことが起こりました。ちょっと格闘して、なるほどそこではこうすればいいのだな、という話を共有です。
Google Apps Scriptで作成したコネクタやGoogleデータポータルで作成したデータソースとレポートは、すべてGoogleの共有設定によりアクセス権限を細かく設定できます。とりあえず、現在はオーナーの私だけが権限となっているので他からのアクセスされることに心配はありません。一方、Googleデータポータル:コミュニティコネクタ(1)コントローラの作成において作成したコントローラは、この状態では誰でもアクセスできるコントローラとなっています。良くないですね。どうかしてみましょう!
コネクタを作成したところで、Googleデータポータルでデータソースとレポートを作成します。やっとビジュアルな部分です。
前回において、データ供給元となるコントローラを作成しました。今度は、それを使用してデータポータルのデータソースを作成するために、カスタムのコミュニティコネクタの作成する必要があります。コネクトの作成は、Google Apps Scriptでの開発となり、ウェブではここで詳しく説明されています。Google Apps Scriptの開発は私には初めてであり、とても興味があるところです。しかし、開発の言語はjavascript(google script)、ファイルの編集はすべてウェブでと、普段のプロジェクトとは違い、また先のGoogleでの説明で扱う例は、参考になるものの、私のやりたいこととは違うゆえに、試行錯誤たくさんありました。
前回のMySQLのデータベースコネクタを使用してのレポート作成は便利な一方、たとえIP制限しても直接Googleからデータベースにアクセスさせるのはセキュリティ上恐ろしいです。そのデータベースのusersのテーブルにはハッシュであれパスワードのデータもあります。もちろん、そのためにViewを作成したりMySQLレベルでいろいろ細かく制御することも可能ですが管理が大変です。せっかくLaravelのプロジェクトを使うのだからEloquentで簡単に設定したいところです。ということで、今回はそれを実現すべく、コミュニティコネクタを作成して、GoogleデータポータルからLaravelのコントローラを通してデータにアクセスの仕方を説明します。
前回は、Googleデータポータルを使用してプロジェクトのデータベースに直接アクセスしてレポート(グラフ)を作成しました。今回は、作成したレポートを表示のためにLaravelのプロジェクトのダッシュボードに埋め込みます。
以前からお客さんのプロジェクトの管理画面のダッシュボードに日別や月別の売り上げ合計や会員の獲得数などをグラフで表示したいと思っていました。もちろん、グラフを作成するjavascriptのライブラリはいくつかありますが、習得にも開発にも時間がたくさんかかりそうです。そこで私の目に留まったのが、Googleデータポータル。データソースを指定してビジュアルなツールでちょいちょいとグラフ化できそうです。今回は、それを使用してMySQLのデータベースから月別に登録した会員数の棒グラフの作成の仕方を説明します。
もちろんのことなのですが、私のお客さんのプロジェクトは皆パブリックでアクセスできる開発サイトがあります。そこで開発をするわけでなく、あくまでも本サイトにインストールする前に変更をお客さんに見てもらい使ってもらい、フィードバックをもらうためのサイトです。その意味では、ステージングサイトと言った方が正しいですね(お客さんとの間では開発サイトと呼んでいます)。