Googleスプレッドシートで「承認が必要」と出てきたときの対処について

大変頻繁に聞かれるので、いつでも見せられるように記事にしときます……

Googleスプレッドシート上で構築した勝手アプリを配布し、初めて使ってもらうときに、相手のPC上ではほぼ必ず以下のようなダイアログが出てくると思います。

承認が必要
このドキュメントに添付されたスクリプトを実行するには、あなたの許可が必要です

承認が必要 このドキュメントに添付されたスクリプトを実行するには、あなたの許可が必要です。
親の顔より見たアラート(‘A`)

このとき、承認処理をしてもらわないといつまでもアプリが使えない状態になってしまうので、以下の手順で承認を進めてもらいます。

以下手順です↓↓↓

上記ダイアログ内の「続行」を押すと、以下の画面に移動します。
スプレッドシートアプリ - アカウントの選択上記画面で自分のアカウントを選択します。

すると以下のように「このアプリはGoogleで確認されていません」と警告がされますが、構わず「詳細」→「~(安全ではないページ)に移動」とクリックしていきます。
危険なページかもしれない?と言われているが構わず進む。安全ではないページに移動「(アプリ名)がGoogleアカウントへのアクセスをリクエストしています」という画面に移動するので、一番下にある「許可」ボタンを押して完了です。(アプリ名)がGoogleアカウントへのアクセスをリクエストしています

慣れればすぐ終わるのですけども、初めてでは面食らう上に一度しかやらない処理なので、だいたいつまづいてしまうんですよね……こればっかりは仕方ないorz

[万年筆] TWSBI Vac700を分解する。

文房具を分解するのが結構好きで、たまに壊してしまうこともあるのですが、こういった、はじめから分解されるのを前提とした作りは心置きなく遊べていいですね。

びふぉー

あふたー

パーツ単位で分解できます。これなら、うっかり放置して中身がカピカピになってもしっかり洗えるから安心ですねっ!(経験者談)

プランジャー式なのに、極限まで分解できてなおかつ精度をしっかり保ってるのはほんとすごいですわな。
しかも、シリコングリスや専用の分解工具まで付いてます。どんどん分解してくれと言わんばかりのラインナップ……

ところで、もしかしたらあふたーの写真で気づいた方もいるかも知れませんが、ニブをぜんぜん違うものに換えてます。

Vac700を買ったときに何を血迷ったかスタブのニブを選んでしまい、案の定手になじまず放置しておりました。
でもこのペンの軸は好きなので、せっかくなら金ペンとして使いたいなーと思い、適当にそのへんの万年筆からニブを抜いては嵌めるを繰り返してたら、WAGNER 2009(セネタープレジデント)のBニブが意外とすっぽりハマってしまいました。
ちょい深めに刺してみたら、それなりに使えるのでそのままにしています。

WAGNER2009とVac700のニブを並べてみた。意外と似てる!?

おかげ様でプレジデントはただの棒になっております……仕方ないね(´・ω・`)

[PHP/Laravel] Eloquentモデルで初期値(デフォルト値)を設定したいときは$attributesを触ってなんとかする。

どうもこんにちは。

今回言いたいことは、すでにタイトルで9割ぐらい説明し終わってしまっているのですが、一応そこに思い至った経緯と詳細を書き連ねておこうと思います。

データモデルのデフォルト値を予め決めておきたい場合、Migrationのロジックの中でdefault()を使えば設定できますが、これはデータソースに対する操作なので、あまり適切ではないと考えました。(データソースが変わればそんなメソッドは簡単に使えなくなってしまうため。)

デフォルト値は業務ルールに関わる事が多いので、なるべくドメインモデルに当たる箇所に入れるべきだと思いました。
そこで、デフォルト値を入れたいEloquentモデルのコード内に、以下のように記述しました。

これで、新規にモデルを生成したときに、対象プロパティにデフォルト値が挿入されます。

この辺の説明、Laravelのリファレンスには無かったとです(´;ω;`)

以下の記事を参考にしました。
How to set a default attribute value for a Laravel / Eloquent model?

[Python3] 相対パスのimportで上位ディレクトリを指定できない問題とその対策いろいろ

Pythonで自作モジュールをインポートするときに、相対パスで指定する方法があります。
Pythonをそこそこ覚えてきたら、1枚ファイルにベタ書きなんてやってらんないので、当然いくつかのファイル(モジュール)に割りますよね。
そんなことをしていると、上位ディレクトリにあるモジュールを使いたくなることがめっっっっっっちゃ出てくるので、実行スクリプト内で、

のように書いたんですけど、どうもこの書き方、使えないみたいです……

Pythonでは、モジュールをimportする際にsys.pathに入っているパスのリストを見ているみたいなのですが、どうもこれらのパスから上位ディレクトリに遡るような動きができないみたいです。
じゃあなんでこんな書き方サポートしたんや(´・ω・`)

参考→6. モジュール (module) — Python 3.6.5 ドキュメント
https://docs.python.jp/3/tutorial/modules.html#the-module-search-path

Python実行時に、ファイルが有るディレクトリのパスを自動的にsys.pathに挿入してくれるので、同階層のモジュールは触れるみたいです。
でも上層にあるモジュールを使いたみMAXなので、どうにかして使えるようにしてみた解決策をメモしておきます。

解決策1:sys.pathに直接パスを入れる。

sys.pathの実態はリストなので、スクリプト内でいくらでも触りたい放題です。
そこで、import前にモジュールのあるパスを直接ぶっこみます。

__file__の親ディレクトリをappendしています。parentを2回続けているのは、1回だとファイル名を取り除くだけになってしまい、ファイルのあるディレクトリになってしまうからです。

でも、スクリプト内で直接sys.pathをいじるのはどうなんでしょう?

解決策2:一番上の階層に実行ファイルを持ってくる。

上に遡れないならば、すべてを見渡せる位置に持ってくれば問題ありません。
シンプルな解決策でいい感じですが、これだと一つの階層にたくさんのファイルがあふれることにもなりかねません。それでも良いぐらい小さなプロジェクトなら問題ないですが、それならそもそもモジュール分けする必要もないかも……

解決策3:実行時、PYTHONPATHにパスを挿入する。

多分このやり方が一番いい感じなのではないでしょうか??

リファレンスにも書いてありましたが、実行時にはPYTHONPATHの値もsys.pathに含めてくれるみたいです。
そこで、pythonコマンドを実行する前にPYTHONPATHの値を書き換えれば、スクリプトを汚さずにsys.pathをコントロールできます。

この手の実行環境構成の変更は、VSCodeだと簡単にできますね。
プロジェクト内の.vscode/launch.jsonで、使用中のビルド構成に環境変数を書き加えます。

まとめ

Pythonよくわからん
VSCodeまじ神
https://code.visualstudio.com/

クラフトラボ 001に色々なリフィルを突っ込んでみた

クラフトラボ001

少し前に、彼女さんから誕生日プレゼントでサクラのクラフトラボ001(SAKURA craft_lab 001)を買ってもらっちゃいました。
前々から、文房具屋に行くたびに展示のガラスケースに張り付いてたので、見かねて買ってくれたってことですかね。ありがたし(´∀`*)

のろけ的な話はここまでで早速本題ですが……このペン、軸は当然ながらとってもイイ!のですけど、中のリフィルの書き味が、個人的にイマイチなんですよねぇ。

重さに任せて万年筆っぽい筆記角度、かつ軽い筆圧で書くと、どうにもかすれてしまってよろしくありません。「ボールペンなんだから当たり前だ!」って声も出てきそうですが、そこはせっかくのお高いボールペン、ちょっとはこだわりたいのです!

てなわけで、それらしいリフィルをいろいろ買ってみました。

クラフトラボ 互換性がありそうなリフィル

上から、

  • ぺんてる LRN5(エナージェル用)
  • 三菱鉛筆 UMR-85N(ユニボールシグノRT1用)
  • 三菱鉛筆 UMR-83(ユニボールシグノRT1用)
  • サクラクレパス R-BGP05(ボールサインノック用)
  • ダイソー(メーカーはプラチナ) A-PEN GEL用替芯

です。

ネットを検索して同じことをしている先達の成功例から、それっぽいリフィルをゲルインク中心に選んで買ってきました。

これらを片っ端からクラフトラボにあーでもないこーでもないと突っ込んでみた結果がこちら。↓

ぺんてる LRN5 → ×全然入りません。
三菱鉛筆 UMR-85N → ×入りません。
三菱鉛筆 UMR-83 → ◯入った!(なぜこいつだけ……)
サクラクレパス R-BGP05 → ◯入った
ダイソー A-PEN GEL用替芯 → △入ったけどペン先の出が控えめ。

なぜか、三菱のUMR-85Nは入らないのに、UMR-83は入ってしまいました。同じペン軸に入るんだから、太さも同じでいてよっ!!(´;ω;`)
あとさすがボールサインのリフィル、同じメーカーだけあってしっかり入れてきますね。
そして意外なところでダイソー。コレが入るとは思いませんでした。2本で100円なので、コスパは最高ですね。書き味もそんなに悪くないです。

でもこれだけ調べといて、実際に入れて使っているのはジェットストリームの替芯(SXR-10)なんですよね……アレー??
個人的にはペン先は太ければ太いほど良いので……。ゲルインクでは0.5mmが限界だったし、ジェットストリームの書き味は抜群ですからねぇ。しかたなし。

とりあえず、互換性のあるリフィルを実際に確かめられたので良しとします。

参考サイト

クラフトラボ リフィル交換 ( その他趣味 ) – Apple & Biro & others World – Yahoo!ブログ

サクラクラフトラボ購入レビュー!リフィル互換も確認!【SAKURA craft_lab 001】

リフィルの互換性 – ボールペンManiax