メモメモメモ

ほんとうにめも

【Laravel】mail driverをsesからsendgridに変えたのに本番環境で変更が反映されなかった

解決方法

queueをリスタートした。

なんとなくリスタートしてみたけど、queueってリスタートしないと環境変数反映しないんだっけ?

セルフホスティングしたRedashにアクセスするとInternalServerErrorが出てた

Why

ディスク容量がいっぱいだったらしい。

思い出

EC2インスタンスを起動すると良いと聞いて、再起動してみた。 すると、Dockerが起動できてなくてHTTPアクセスできなかった。 SSHアクセスはできたので手動でDockerを起動してみたが、ディスク容量の問題で起動できなかった(ここで原因に気づいた)。

解決手順

  1. 容量の大きいlogファイルを洗い出した(sudo du -x -h / | sort -r -h | head -40 | grep log
  2. 不要で容量の大きいlogファイルを全て消した。
  3. EC2インスタンスを再起動した。

非営利組織の経営 by ドラッカー第3章を読んだ@プライベート輪読会第1回

なぜ読んだか?

コロナの影響でリモートチームが増え、可処分時間が増えた影響か、周りのビジネスマンが「利益に直結しないけどなんか色々得られそう」なコミュニティに出入りしてるのを多く観測するようになった。 オンラインサロン・ギルド組織や、その先駆けとなるFREEex(オンラインサロンが流行る10年くらい前から岡田斗司夫さんが提唱してた組織形態だと認識している)が流行ってるのは知ってるが、

  • なぜ、こんなにもワークするのか?
  • うまく行ってるチームはどうやってメンバーをマネジメント・モチベートしてるのか?
  • どうやったら再現性を持って非営利組織をワークし続けられるか? を言語化できない自分を認識したので、先輩経営者からおすすめされて買った。

「読んだ系」の記事をどううまく書けば良いか見えないので、いつも通り雑多に「とりあえず書く」。

読んだ箇所

第3章(いきなりだけど)。目次見て気になった箇所から読むスタイル。 非営利組織についての本で、マーケティング戦略って全然想像つかなくない?

線引いた行(意訳あり)とその感想・まとめ

  • 前提として、マーティンぐと販売は違う
  • マーケティングとは、「価値を加えて」「ニーズを満足させること」
  • 顧客・消費者からスタートすればマーケティング。製品やサービスからスタートするとそれは販売
  • マーケティングで重要なことは、働きかけた相手(ターゲット)からフィードバック(反応)を得ること。こちらから働きかけをしてこそ反応を得られる。
  • STP: Segmentation, Targeting, Positioning
  • Positioning: 差別化
  • セグメンテーション(個別最適化・ニッチ化・絞り込み)がロイヤリティを高めるカギ。
  • ニッチ化するとターゲットが狭くなるよね?: オーケストラ化(by コトラー)が大事。
  • オーケストラ化: 色々なグループに分類した上で、組織の一体化を図る
  • 当然、グループごとに活動内容は変える
  • ただし、全体のミッションは共有しておく(意訳: 逆説的に言うと、共通のミッションこそがチームをチームたらしめるということだと思う)
  • 非営利組織でもマーケティングが必要になったのは、(非営利組織同士の)競争が激しくなったから。
  • マーケティング成果の測定方法の原則は、知らない => 知っている => 好きのいかに右側にターゲットを持ってこれるか。
  • マーケティングとはある特定の職能ではなく1つの基本的な姿勢である。

【オーケストラ化: 色々なグループに分類した上で、組織の一体化を図る】について

納得感ある。チームが大きくなってくると働きアリの法則的な作用もあり、全員のモチベーションを高く維持するのが困難になる。 小さなチームの集合体として大きなチームを作るのは鉄板な気がする。

【非営利組織でもマーケティングが必要になったのは、(非営利組織同士の)競争が激しくなったから】について

ベンチャー業界でも「新しいことやってる感・イケてる感」があれば採用できる時代はとっくに終わってて、 だからこそ「vision, mission」を使ってある種のマーケティングを行って人を集めるように変化してきてるんだと思う。

【ReactNative】ReactNavigationでディープリンクの罠にハマった

前提

使ってるreact-navigationのバージョンはこんな感じ。

    "@react-navigation/bottom-tabs": "^5.1.1",
    "@react-navigation/material-top-tabs": "^5.1.1",
    "@react-navigation/native": "^5.0.9",
    "@react-navigation/stack": "^5.1.1",

DeepLink実装の際に参考にしたのは↓。

reactnavigation.org

何が起きたか?

新しいDeepLinkパス(config)を追加したら従来のリンクが機能しなくなった。

関連ソース周りコピペ

  const { getInitialState } = useLinking(navigationRef, {
    prefixes,
    config: {
      NewsIndex: 'news',
      NewsDetail: 'news/:hash',
      .....
    },

具体的に何をしたか?

元来

    config: {
      NewsDetail: 'news/:hash',
      .....
    },

これだけだったのを、

    config: {
      NewsIndex: 'news',
      NewsDetail: 'news/:hash',
    },

こうした。 すると、NewsDetailの方が機能しなくなった。

解決方法

    config: {
      NewsDetail: 'news/:hash',
      NewsIndex: 'news',
    },

というふうに、pathの順番を逆にしたら直った。

考えられる原因は?

react-navigationの仕様として、configを上から順番にチェックしていってマッチしたら終わりにしてるんだと思う。 で、今回は 'news/:hash'にヒットさせたいのに先に'news'がヒットしてしまったことが原因だと思う。 プログラミング長くやってたらライブラリのこういう不具合はあるある。気づけなかった自分が悪い。

PHPでのファイルアップロード時に `The "" file does not exist or is not readable` エラーに悩まされた

どんなときに起こったか?

Laravelで動画(重いファイル)をアップロードしようとしていた。

原因

ファイルが重くてリクエストデータを扱えなかった(handleできなかった)。

対応

2つの対応が必要。 php.inipost_max_sizeを上げる。 php.iniupload_max_filesizeを上げる。

今回はどちらも 200M にした。

※変更すべきphp.iniを探す方法 qiita.com

自分で過去に書いてた(忘れてた)

雑すぎる。。(直すとは言ってない) qiita.com

【Amazon RDS】新しくRDSインスタンスを立ち上げるときいつも詰まること

・パブリックアクセシビリティは「はい」にしろ ・セキュリティグループ(Inbound)の設定は忘れずに

【Laravel】Amazon SESを使って任意のメールアドレスからシステムメールを送信する方法

前提

support@hoge.co.jp(gsuiteなどで作成したメールアドレス)からシステムメールを送信したい

手順

  1. メールアドレスを作成する(今回はGsuite)
  2. Amazon SESで Verify a New Email Address する(メールアドレスの認証)
  3. Amazon SESでSMTP credentialsの設定をする
  4. Laravelの環境変数を設定する
  5. Amazon SES サンドボックスの外への移動」する

1. メールアドレスを作成する(今回はGsuite)

gsuiteにログインして、ダッシュボードから「ユーザ」を選択する。 「新しいユーザの追加」をクリックしてユーザを作成する。姓名は「姓: サービス名、名: サポート」とでもしておいて、メールアドレスを作成する。 これだけ。

2. Amazon SESで Verify a New Email Address する(メールアドレスの認証)

AWSにログインして、SESのダッシュボードに行く。 サイドバーのIdentify ManagementセクションにEmail Addressesがあるのでクリックする。 画面上部のVerify a New Email Addressクリックして、先ほど作成したメールアドレスを入力する。 確認メールが届くのでリンクをクリックする。するとSESのメールアドレス一覧にあるVerification Statusverifiedになってるはず。

3. Amazon SESでSMTP credentialsの設定をする

SESのダッシュボード画面のサイドバーにあるEmail SendingセクションにSMTP Settingsがあるのでクリックする。 Create My SMTP Credentialsボタンが目立つところにあるはずなので、クリックして次のページの右下にある「作成」ボタンをクリックする。 表示される(ダウンロードもできる)認証情報を控えておく。(SMTPユーザ名・SMTPパスワード)

4. Laravelの環境変数を設定する

MAIL_DRIVER=smtp
MAIL_HOST=${SMTP Setting画面に書いてる}
MAIL_PORT=${SMTP Setting画面に書いてる}
MAIL_USERNAME=${3の「SMTPユーザ名」}
MAIL_PASSWORD=${3の「SMTPパスワード」}
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=${1で作成したメールアドレス}
MAIL_FROM_NAME=${サービス名や会社名など任意}

5. 「Amazon SES サンドボックスの外への移動」する

このままだと、認証されたメールアドレスにしかメールを送れない。 「好きなとこから」「好きなメールアドレスに」メールを送信するには、SESアカウントをSESのサンドボックス環境の外に出す必要がある。 これはセキュリティ上の理由で、

全てのSESアカウントはデフォルトでSESサンドボックス内に配置される

ことが原因。 参考リンクが詳しいので詳細は割愛。 解決方法としては、AWSのSupportCenterでService limit increase (サービスの上限緩和)SES Sending Limits (SES サービスの制限を申請する。

メーリングリストをどのように構築または取得しますか? ・バウンスや苦情はどのように処理しますか? ・受取人はお客様からの E メールの受信をどのようにオプトアウトできますか? ・このリクエストで指定した送信レートまたは送信クォータは、どのように選択しましたか?

これらの質問に答えなきゃいけない(SupportCenterには答えろとは書いてないが、書かないと申請が通らない)ので面倒。

追記(descriptionの例)

申請理由の説明: メーリングリストは、営業活動によって取得したユーザのメールアドレスになります。
ユーザは、サービス内の「設定」画面からメールの受信をオプトアウトできます。
バウンスメールに関しては、自社システム内で管理して次から同じメールアドレスにメールを送信しないようにしています。
メールの種類: システム通知

参考

【Laravel】AWSのSESメールサーバでユーザー登録時に確認メールを送信するまでの流れ(queueで非同期送信) - s u p ? Amazon SES サンドボックスの外への移動 - Amazon Simple Email Service