oishisouプログラマ、ララ・ベル子さん改めArm4さんのゆるふわ奮闘記。この広告は、90日以上更新していないブログに表示しています。メール送信2年前に、私はこんなことを言っていた。次回は、PHPをキックしてメールをパースしてDBに格納するよっ♥お楽しみにね★その次回が、令和という元号が発表された節目の日になろうとは、私も読者も思っていなかっただろう。びっくり!この作業について、これからも聞かれると思うのでまとめておきます。おさらいとあるメールアドレス(chakudan@example.com)にメールを送信するとLaravelでつくったstore_emailというコマンドが叩かれて、メールの内容をDBに格納してくれるという、メール内容データDB取り込みの機構を構築する。メールサーバを構築し、着弾用ユーザをつくり、そのユーザにメールが届いた際に別のアドレスに転送できるようにサーバを設定するというところまでが前回の作業だった。arm4.hatenablog.com今回は、その次のPHPをキックしてDBに格納するところまでをまとめる。ログを吐き出すだけのコマンドを作成する。StoreEmail*古いバージョンのLaravelをお使いの方はmake:commandではなくmake:consoleになる。Log::info('メールを受信しました。command:store_email"chakudai@example.comにメールを送信したら、ログに「メールを受信しました。メール送信&PHPキックが成功している。インストールするにはmailparseモジュールをphpに追加する必要がある。us-asciiphp-mime-mail-parserをinstallphp-mime-mail-parserというライブラリをinstallする。Log::info('メールを受信しました。"◯◯システムWebサイトからお問い合わせがありました。"商品について質問があります。"よろしくお願いします。}詳しくはphp-mime-mail-parserのgithubページに使い方が書いてあるので、そちらを参照してみてください。github.comあとがきどうでしたでしょうか、二年越しの私のメールパース編。Telescopeを使ったほうがいいのでは、と思います。Laravel今までパワポの既存テンプレートを使っていたのですがおしゃれなスライドテンプレートサイトを同僚から教えてもらいました。https://www.slidescarnival.com/ja/おしゃれなテンプレートばかり!!!なにこれ、ど熱い!!!しかもGoogleスライドのテンプレートとしても使えるそうな。Googleスライドならそのまま公開できるし、なんだ、別にパワポなんて要らないんだ。何でパワポ使っていたんだろう、私。アホなのかなwこれが無料とか、すごいよGoogle様!というわけで、今週の土曜日に開催されるLT会用にスライドを早速作ってみました!いい感じ☆タイトルは、「Laravelのバッチ処理終了をSlackでお知らせする」です。これで私は、裏で動いてるバッチいつ終わるかなーと気にしてたことも忘れて別の実装に没頭してしまうことも無くなるわけです。Slackのスココココ!を待てばいいだけです。マシンを放置して家に帰っても、帰りの電車でスココココ!「やったーバッチ終わってるー」とかプチ安堵を得られるわけです。時には「あ、誰かからメッセージきたかなー♪うわ、バッチがコケてる。」という謎のどっきりにも遭遇できたりね!Slackって神ですね!しかもこのサービスクラスをコピペすればどんな通知も好き放題カスタマイズできそうです。byに入れなさいよ!言わせんな恥ずかしい!!」という、ヒステリックなことを言ってきた。あ、これ、どれ選べばいいのか分からないから勝手にマージして表示してやんぜ、というmysqlの優しさが失われているやつや。そんな設定した覚えないのに、なんで。trueこの環境で、ONLY_FULL_GROUP_BYがsqlのmodeとして追加されてしまうみたい。これはLaravel側で設定してしまうようで、私のMariaDBではmodeとして追加はされてはいなかった。ONLY_FULL_GROUP_BYは設定されてないYODA以下にissueが上がっていた。falseにすれば、確かにヒステリックなことは言わなくなりMariaさんは優しさを取り戻してくれる。マージされてしまっていて特に使わないカラムを取得する意味もないし、ヒステリックなMariaさんも、私は何気に嫌いでもない。true時に適用されてしまう項目は以下のようなので、ONLY_FULL_GROUP_BYSTRICT_TRANS_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERONO_AUTO_CREATE_USERNO_ENGINE_SUBSTITUTION現状の差分的には以下が追加で設定されてしまうということだ。ONLY_FULL_GROUP_BYNO_ZERO_IN_DATENO_ZERO_DATEうーん。falseでもいいような気がするが、アプリ側でそんなん絶許!!してくれるというのは、考えようによってはいいのかもしれない。mysqlの設定にmodesを追加して、適用したいmodeのみを記載すればいい。ONLY_FULL_GROUP_BYだけをオフりたい場合は、↓以下。分かりやすくコメントアウトにしてあげました。以下の記事を参考にそれぞれのカラムでどの値を持ってくるか指定してやればいいようだ。mashup.hatenablog.comえ、超めんどくさい。おとなしくオフしたい。末永いお付き合いをするには、優しさも大事なときが来るかもしれないがひとまずヒステリックになったのは、きっと何か嫌な出来事があったからだと思うので大人しく過敏になったLaravelさんとお付き合いを続けることにした。今回はテストで*で書いて気づいたけど、ちゃんと書き込むときはマージされるカラムなんかselectしない気もする。怒られるとビックリして、それの原因突き止めるのに時間かかったりしてなんかちょっとしたトラップ設定のような気もするしこんなんオフればいいやんって気もする。何度も言うが、これをデフォルト設定にしたのには何か嫌な出来事があったからかもしれないのでこのストイックさを優しく受け止めてあげる男っぷりを私たちは試されているのかもしれない。エンジニアポエム先日、PG会でエンジニアのメンタルコントロールについて、後輩たちに伝えたいこととしてKさんが率直に話してくれました。その勇気に、私はとても感嘆しました。私は、今までエンジニアのメンタルコントロールについて、率直に自分の言葉で周りに伝えたことがあまりないな、と。これまで私がエンジニアになってから、自分の技術力、周りの技術力、チームの技術力、会社の技術力を向上させることを、いつも考え、いろいろと働きかけてきました。技術力とエンジニアは切っても切り離せないものだからです。エンジニアにとって技術力の向上を続けることは、容易なことではありません。何のために、この勉強をしているのか。何のために、こんなに必死になっているのか。自分は、そもそもこんなことを勉強することを周りに求められているのか。技術力を向上して、自分は何がしたいのか。劣っていなければ、それでいいのではないか。周りに、この新しくて素晴らしい技術を語り合える人が誰もいない。こんなに勉強をしたのに、私はまだこんなにも未熟で、理解できていないことが多すぎる。世界は広く、技術は果てしなく、到達すべきゴールが見えない。勉強をすればするほど、孤独になっていく。そんなふうに感じていたことがあります。「あの人は、技術が好きで趣味のようなものだから。真似をする必要はないんだよ。変わった人だからね」そう言われるたびに、伝えたかったことが私にはあります。もがき苦しみながらも、エンジニアとして技術力を向上し続けてきた私の、技術力を向上するモチベーションについて。私が思うエンジニアの価値と幸せについて。そのことについて、今回は話したいと思います。技術力を向上するモチベーション、そしてエンジニアの価値と幸せについて私には、技術力が高ければ市場価値が上がり、思い描いた職場で働け、理想のカッコいいシステムが作れ、収入もどんどん上がり、幸せで充実したエンジニアライフが過ごせる、そう思っていた時代がある。今は、そうではないと思っている。エンジニアとして市場価値を高めたいということに、技術力向上のモチベーションを持つことは、もちろん悪いことじゃない。技術力だけがエンジニアの価値を決めるものではない。技術力ではないものが、エンジニアの価値を決めると言っても過言ではない。銃撃の腕は抜群だが、作戦どおりにまったく動かない兵士は、兵士として価値は高いだろうか。逆に作戦どおりに動くが撃っても一発も当たらない腕前の兵士は、兵士として価値は高いだろうか。作戦どおりに動き、銃撃の腕前もいいが、作戦の抱える問題点を上官に進言できずに、ミッションを成功させられない兵士は、兵士として価値は高いだろうか。作戦どおりに動き、銃撃の腕前もよく、作戦の抱える問題点も指摘できるが、決められた時間までにミッションを遂行できない兵士は、兵士として価値は高いだろうか。作戦どおりに動き、腕前もよく、作戦の問題点も指摘でき、タイムリミットも守るが、チームのメンバーと協力できない兵士は、兵士として価値は高いだろうか。価値の高い兵士とは、ミッションを正しく理解し、その作戦に問題がないか判断ができ、上官と意思疎通をきちんと取り、チームと協力して、その作戦を高度な腕前で指定のタイムリミットまでに遂行することができる、そういう人間だ。そのどれか一つでも欠けている兵士は、その他がいかに優れていても、価値が高い兵士にはなれない。技術力が高いというのは、兵士の銃撃の腕前と同じように、エンジニアに求められる最低限の価値だ。技術力向上をすれば価値を高められるというのはある意味で正解であり、ある意味で正解ではない。技術力向上とは、いかなる作戦にも対応できる最低限の能力を高めていることに過ぎない。それ以上に価値を高めるのには、技術力だけでは不十分であり、その他の要素を高めるということが技術力を手に入れたエンジニアが次にしなければいけないことだ。その他の要素を高めなければ、苦しんで手にした技術力も、何の価値もないものになってしまう。技術力を向上させないエンジニアは、ミッションを成功に導くための最低限の価値をチームに与えることができない、銃撃の腕前を磨かない兵士と同じで、そもそも兵士であるべき人ではない。市場価値を高めることをモチベーションとして技術力の向上を続けられるのか、と聞かれると、私はそうじゃないと思っている。エンジニアとして価値を高めたいのか。人よりできると思われたいから。好きな職場で働きたいから。自分の信じる美しいものを作りたいから。エンジニアとして、そのモチベーションで、毎日勉強を続けながら幸せに過ごすことはできるだろうか。そのモチベーションでは、毎日幸せに過ごすことはできないだろうと思っている。エンジニアとして収入が上がり、人よりできる人だと思われ、好きな職場で働き、理想の美しいコードを書けたとしても、またそこでも、エンジニアとして技術力を向上するように求められるだろう。この課題を解決するためには、より高度な技術力が必要だ。時代は変わっていくのだから。それはエンジニアとしての宿命だ。技術力向上を求められるのか、それは、エンジニアは技術力を持ってミッションを成功させなければならないという職務を担っているからだ。私たちエンジニアは、芸術家ではない。企業に勤める企業人であり、チームに所属するチームの一員だ。私たちのミッションとは何か。チームが持つ課題を解決すること、ユーザーが持つ課題を解決すること、世の中に新しい価値を生み出すこと。私たちエンジニアに課せられるミッションとは常にそういうものである。その課題は、常に時代と共に高度な要求になっていく。その前にあった課題がクリアされたら、次のより高次元な課題をクリアしなければならなくなるからだ。私たちエンジニアは常にその高度になっていく課題を解決するために、高度な技術力を求められ続ける。何のために技術力を高めるのか。市場価値を高め、需要のある価値の高いエンジニアになるためか。エンジニアとして日々成長を求められ続けていく中で、こういったものをモチベーションにしているなら、きっと幸せを感じることはできないだろう。上にはいつも上がいて、いつも自分のいるところより上を見上げながら、自分は本当ならばあちらにいるはずの人間だ、自分はあのように崇高なものを作る人間のはずだ、そう思いながら生きていくことしかできないだろう。必死になって見上げていたその場所に辿り着いても、その先にも上があり、技術の世界は果てしなく、新しい世界に足を踏み入れるたびに、自分はいつでも何も知らない未熟者であったと気づかされるのだ。やってみたこともないものを、何日で作れるのか問いただされ、期日を決められ、初めての試みに対しても責任を負うことを求められる。ビジネス要求の理解、周りへの配慮、エラーやバグを量産しない思慮深さ、コーディング能力の高さ、スピード、技術に対する深い知識、市場価値が高まれば、それらの要求度も当然のように高くなる。常に、どこへ行っても、今の自分よりも、より高度な技術を身につけるよう、技術力の向上を求められ続ける。それを全身で受け止め、それを楽しみ、幸せを感じるためには、何のために技術力を高めているのか、自分が目指すものは何なのか、その明確な目的を、理由を、志しを、いつも心に掲げていなければならない。私は、実装がうまくいかないたびに、技術の習得がうまくいかないたびに、バグやエラー、障害があるたびに、期日に追われるたびに、チームメンバーとうまくいかないたびに、エンジニアとしての熱意を否定されるたびに、メンタルコントロールが難しくなり、職場に行くことが苦しくなるということがあった。技術力が足りない私は、才能が足りない私は、人としての配慮が足りない私は、空気の読めない私は、相手が分かる言葉で説明できない私は、こんなに弱い私は、エンジニアには向いていないと、何度となく思うことがあった。必死になればなるほど、自分という蜘蛛の巣に絡まっていくような気がした。信じられるのは自分の技術力だけだ。誰も助けてなどくれない。私ができないと言えば、そこで私の価値も、私という存在の意味も、無くなる。必死に、目の前の技術に向き合わなくては。いう不安定なメンタルをなんとかごまかしながら懸命に働いた。自分の不安定な内面とは裏腹に、私はいつも順調に仕事を終わらせることができた。信じられるのは自分の技術力だけだ。仕事がいくら評価されても、技術力を認められても、私の心は、幸せというにはほど遠かった。いつも迷子の子供のように、不安がつきまとって頭から離れなかった。私はエンジニアになろうと思ったのか。私は何か、もっと大切なものを、目指したのではないか。そんなふうに考えるようになった。助けてくれる人は本当に誰もいないのだろうか。本当に私は一人なのだろうか。私のことを心配し、気にかけてくれる人はいなかっただろうか。私のプロダクトの完成を、一緒に祝ってくれる人はいなかっただろうか。本当に私が信じられるのは、自分の技術力だけだったのだろうか。私は、本当に自分のためだけに、こんなに必死になったのだろうか。