2019-01-01から1年間の記事一覧

2019年を振り返ってみるとブログと日常がリンクしていることがわかった

はじめに 正確にはまだ届きませんが、ブログを始めてから約1年が経ちました。 しょぼい内容でもいいから毎週月曜日に公開するようにしようと決めてから無事に続けることができて、完遂間近です。 そんなブログを始めた2019年でしたが、自分のために振り返っ…

Gitでリモートブランチをチェックアウトするときってそんなに難しいことをする必要があるのか

Git

Gitでリモートブランチをチェックアウトしたいときがよくあると思います。 他のエンジニアのGit操作をたまたま見る機会があり、そこで行っていた操作が気になってしまってこのブログに至ります。 git fetch でも git pull でも、とりあえずローカルにリモー…

Gitの新しいコマンドのswitchとrestoreに慣れたい

Git

しばらく前にGitの新しいバージョンがリリースされ、そこで git switch と git restore なるコマンドが使えるようになったことは知っていました。 しかし、これまでの慣れというものがあり、どうしても git checkout を使ってしまっていました。 先日、ふと…

PHP Conference Japan 2019 でチームに設計を取り入れた話についてLT登壇しました

これは エキサイト Advent Calendar 2019 の9日目の記事です。 はじめに 先週の12/1(日)に PHP Conference Japan 2019 があり、そこでチームにクリーンアーキテクチャっぽい設計手法について導入してみた話でLT登壇してきました。 そのときの総合的な(?)…

PHP Conference Japan 2019 に参加したので自分用メモを公開する #phpcon

はじめに 今回、12/1にPHP Conference Japan 2019 beyond.* に参加したので自分用にまとめます。 phpcon.php.gr.jp 実は、弊会社が協賛していて企業ブースに出展していて、自分も含めて3名ものLT登壇があり、普段の感覚とは大きく違いました。 発表者の話とT…

Slack bot で bot 自身の発言は無視したい

Slack botへのメンションをトリガーとした何かしらを作るにあたって、とりあえずの練習として「botへのメンションがあったらその内容をオウム返しする」ものを作りました。 そのとき、無限ループに陥ってしまったので、それを回避する方法です。 Slack bot自…

Terraformでaws_security_groupとaws_security_group_ruleの両方でルールを設定すると競合する

前回はセキュリティグループIDをソースに指定してセキュリティグループを作成する方法について書きましたが、今回はその流れでルールを書いていたらハマった話です。 ohshige.hatenablog.com セキュリティグループIDをソースに指定してセキュリティグループ…

TerraformでセキュリティグループIDをソースに指定したセキュリティグループを作成する

セキュリティグループを作成するときに、インバウンドのソースとして別のセキュリティグループIDを指定する方法はとても便利です。 よく使うのは、AWSで踏み台サーバを用意してアプリケーションサーバにはその踏み台サーバ経由でしかsshできないようにする場…

「プリンシプル オブ プログラミング」を読んで

はじめに しばらく前に会社の同僚からすすめられて読んだので今更ながらまとめます。 「3年目までに身につけたい 一生役立つ101の原理原則」という副題がついているにもかかわらず、3年目どころではない私でも楽しめました。 プリンシプル オブ プログラミン…

Terraformはどこで実行すれば良いのか教えてほしい

Terraformとは、多くのクラウドやその他のサービスを対象にInfrastructure as Codeを簡単に実現できる、便利なツールです。 その使い方は様々なところで紹介されているので良いとして、実際に実務として利用しようとした場合にTerraformをどこで実行するべき…

よく知られたボードゲームに似ているオススメのボードゲーム

はじめに たまにはボードゲームの話でもしようと思います。 最近はボードゲームも人気になり、ボードゲームと言えば人生ゲームやUNOだけではないということも多少広まっている気がします。 そこで、よく知られたボードゲームと似ているが、それとは違うもし…

AWS CodeDeploy で ELB のターゲットになっていない EC2 でも勝手に追加されてしまう

AWS CodeDeployを使っていて少しハマったのでメモとして残しておきます。 CodeDeployでデプロイする場合、どこのコードを使ってどんな方法でどこにデプロイするか色々なパターンがあります。 EC2 or オンプレ GitHub or S3 インプレース or Blue/Green Elast…

AWSのAuroraからGCPのBigQueryにEmbulkを使ってデータを転送する

AWSのAuroraからGCPのBigQueryにデータを転送する必要があり、最終的にEmbulkを使うことに落ち着いた話です。 最初は、AWS Data Pipelineを使ってAuroraからS3にエクスポートしてBigQuery Data Transfer Serviceを使ってS3からBigQueryにインポートするフロ…

AWSのData PipelineでAuroraを使ったらDriverClass not foundが出るときの解消

AWSのData Pipelineを使って、AuroraからS3でテーブルをまるっとエクスポートしようというときがありました。 テンプレートとして「Full copy of RDS MySQL table to S3」が用意されているので、さくっとできるかと思っていましたが、そうでもありませんでし…

GUIでクリックを自動化したかったのでPythonのPyAutoGUIを使ってみた

とある理由でPC上でのクリックを自動化したかったため、色々ツールを調べていました。 Windowsだといい感じのツールはあるようですが、Macだと手軽に使えて良い感じのツールは無さそうです。 ということで、今回はクリック自動化に求める内容もすごく単純な…

あとから Role をアタッチしてしまって CodeDeploy に失敗する場合は codedeploy-agent を再起動すれば良い

タイトルの通りです。 EC2インスタンスを作成した後で、CodeDeployを使いたくなり、色々設定してやってみてもなかなかデプロイに成功してくれませんでした。 必要なRoleはアタッチしているはずですが、以下のようなエラーが出続けました。 The overall deplo…

google-api-php-client でどんな通信が行われているか見るために Guzzle の Middleware を使う

PHP

PHPでGoogle Play Developer APIを使ってAndroidのレシートを検証したいときは、こんな感じでやればOKです。 ohshige.hatenablog.com APIを実データで叩くだけなら問題ないのですが、モック化したいということがありました。 モック化のやり方は良いとして、…

AWS CodeDeploy で登録した GitHub トークンを削除したい

AWS CodeDeployは、EC2、Lambda、オンプレサーバなどへのデプロイを自動化してくれるサービスです。 デプロイのリビジョンタイプとして、アプリケーションをS3に置いておくかGitHubに置いておくか選ぶことができます。 GitHubに置いておく場合はCodeDeployが…

Laravel の Storage で disk として S3 を指定したときに deleteDirectory できない

LaravelにはStorageというファサードがあり、ローカルだろうがS3だろうが簡単ファイル操作を簡単に行うことができ、とても便利です。 例えば、localにファイルを設置したい場合は、 Storage::disk('local')->putFile('', $file); などとすることができ、loca…

Laravel の Storage で S3 の特定のディレクトリをプレフィックスとして固定したい

LaravelにはStorage というファサードがあり、ローカルだろうがS3だろうが簡単ファイル操作を簡単に行うことができ、とても便利です。 config/filesystems.phpのdisksにはデフォルトで以下のような設定があります。 'disks' => [ 'local' => [ 'driver' => '…

AtCoderで競技プログラミングというものに触れて半年が経った

はじめに AtCoderで競技プログラミングを始めてから半年が経ったので久しぶりに中間報告としてアウトプットします。 開始3ヶ月時点でのブログはこちらです。 ohshige.hatenablog.com 開始1ヶ月時点でのブログはこちらです。 ohshige.hatenablog.com 現状 現…

PhpStorm で Laravel の Blade 内でもエンティティ等の補完をしてほしい

PhpStormにおけるLaravelの補完といえば laravel-ide-helper ですが、Blade内でエンティティ等の補完をする方法がわからなかったので調べました。 結論としては、これです。 blog.jetbrains.com 例えば、以下のようなエンティティがあったとします。 name = …

PHPでは未定義でも配列の代入ができる

PHPでは、変数をあらかじめ宣言していなくてもエラー無しでいきなり配列の代入ができるということを、恥ずかしながら初めて知りました。 $hoge[] = "hoge"; var_dump($hoge); array(1) { [0]=> string(4) "hoge" } 同様に、こんなこともできます。 $hoge["ho…

PHPでGoogle Play Developer APIを使ってAndroidのレシートを検証した後にAcknowledgeしたい(超簡易メモ版)

調査してもほとんど情報を見つけることができない「Acknowledge」の挙動について超簡易的にまとめてみます。 以降、間違った情報もある可能性が高く、課金処理は慎重に実装されるべきなので、鵜呑みにはしないようお願いします。 基本的にはこちらの続きで、…

ブログをはじめて半年が経った

このブログをはじめてから半年が経ちました。 毎週1記事はアップするようにして、よく続いているなと自分でも思っています。 もともとは2019年になったタイミングで何かやってみようと思い立ったのがキッカケでした。 ブログの目標はお小遣い稼ぎでも有名に…

PHPでiOSのレシートを検証したい(超簡易メモ版)

前回はAndroidのレシート検証について超簡易的なメモを残したので、その流れでiOSについても超簡易的なメモを残します。 ohshige.hatenablog.com 参考: レシート検証プログラミングガイド iOSの場合、公式の特別なライブラリは無いようなので、PHPからその…

PHPでGoogle Play Developer APIを使ってAndroidのレシートを検証したい(超簡易メモ版)

GoogleのAPIを操作するためのPHP向けライブラリとしてgoogle-api-php-clientがありますが、Androidのレシート検証に際して使い方がイマイチわからなかったので、メモとして残します。 github.com 前提として、Google Play Consoleを使って、OAuthトークンや…

【完成版】Googleカレンダーの条件に合う予定が終了したらメンション付きで概要を通知したい(IFTTT + GAS + Slack)

はじめに 知人から以下のような相談を受けました。 Googleカレンダーの決まった予定が終わったタイミングで、その予定の詳細を予定参加者にSlackで通知したいが、簡単にできる方法を知らないか? IFTTTとSlackの連携や簡単なGASなら知識はあるようでしたが、…

IFTTTとGASとSlackを連携してGoogleカレンダーの予定が終わったら通知したい

はじめに IFTTTとGoogle Apps Scriptを使って、Googleカレンダーの予定が終了したタイミングでSlackに通知してみます。 Googleカレンダーに登録されている予定が終了したタイミングで、Slackに @ohshige 「〜〜〜」の予定が終わりました。 と通知してみます…

GASを使ってSlackにメンション付きで投稿したい

はじめに Google Apps Script から Slack API を呼んでメンション付きで特定のチャンネルに投稿してみたのでまとめます。 Slack API Incoming Webhooks の URL を取得 まずは、 Incoming Webhooks の設定をする必要があります。 このページに従って進めれば…