リモート開発メインのソフトウェア開発企業のエンジニアブログです

59 posts by issei_m

Rails 8.0 が出たのでアップグレードした

November 15, 2024

posted by issei_m

先日、Rails 8.0 がリリースされ、直近で担当している Rails アプリのバージョンをアップグレードしたので手順等を簡単にまとめます。まずは Rails アップグレードをする際に普段やっている事と、 Rails ...

続きを読む →

AWS CDK の個人的に良かったプラクティス

October 22, 2024

posted by issei_m

これまでにいくつかのプロジェクトで AWS CDK を使ってきて、個人的に良かったと思うプラクティスをまとめたいと思います。公式でベストプラクティスに関するドキュメントやブログが提供されているので、基本的にはそれに従いつ ...

続きを読む →

CloudWatch Logs + Spark SQL で Rails ActiveJob の実行時間を集計してみた

July 17, 2024

posted by issei_m

Rails には主にバックグラウンドで処理を実行できる ActiveJob と言う機能がありますが、先日とあるプロジェクトで、各ジョブの実行時間を集計する必要がありました。幸いデフォルトで ActiveJob はジョブの ...

続きを読む →

Rails プロジェクトの webpack を Vite に移行した

June 12, 2024

posted by issei_m

ある Rails プロジェクトで、これまで webpack 5 でアセットをビルドしていましたが、今回 Vite に移行しました。移行に伴う経験や学びを紹介します。 移行の動機 個人的に Web UI の規模が小さいこと ...

続きを読む →

GitHub の Pull request は Squash and merge にしてみている

January 10, 2024

posted by issei_m

皆様、あけましておめでとうございます。今年もよろしくお願いいたします。 新年1発目の記事は、表題にある最近取り組んでいるプロジェクトの GitHub 運用について書きます。 GitHub ではリポジトリの設定で、Pull ...

続きを読む →

AWS CDK の権限周りについて考えてみた

September 12, 2023

posted by issei_m

AWS CDK でデプロイ等の業務を行う際に必要なアクセス権限を調べた所、よく考えられていてセキュリティリスクを抑える様に設計されている反面、デフォルトでは最悪 AdministratorAccess にエスカレーション ...

続きを読む →

[Rails] Active Admin で純粋な webpack を使用する際に行ったこと

August 04, 2023

posted by issei_m

皆さん、お久しぶりです。最近新しいプロジェクトで Rails を使っているのですが、そこで採用した Active Admin と、純粋な webpack の連携に少しコツが必要だったので今回はその紹介をします。 Acti ...

続きを読む →

Kinesis Data Firehose の PutRecordBatch のリトライ方法

April 18, 2023

posted by issei_m

AWS の Kinesis Data Firehose の PutRecordBatch を使うにあたって、失敗したレコードのリトライに関する日本語の記事があまり多くなかったので今回書いてみました。 使用する言語は Go ...

続きを読む →

AWS Fargate を使ってスプラトゥーン3の戦績を stat.ink に定期保存できるようにした

November 30, 2022

posted by issei_m

こんにちは。スプラトゥーン3が9月に発売を迎えてはや3ヶ月弱が経ち、いよいよ新シーズンである Chill Season が幕を開けようとしています。 さて、私は以前以下のような記事を書きました。 AWS Lambdaを使 ...

続きを読む →

DynamoDB でロックを実装する

September 30, 2022

posted by issei_m

バッチジョブとかを実装する場合、多くのケースでは冪等性を持たせる事が多いと思いますが、中にはジョブの性質上、一定期間内に1度しか起動してはならない場合もあったりします。 (具体的なケースの例はまた別の機会に書きます)1度 ...

続きを読む →

docker run/exec 時にキャリッジリターンが混じる件の解決方法

August 30, 2022

posted by issei_m

小ネタです。実際には私の実行オプションの指定に問題があっただけなのですが、同じ様な事象で困ってる人に届く様、タイトルはこのままにしておきます。 結論 docker run or docker exec ...

続きを読む →

[Rails] ActiveRecord のスコープはレコード作成時に値をセットしてくれる

August 09, 2022

posted by issei_m

久しぶりの投稿です。私は Rails を数年業務で使っているのですが、実は最近タイトルの件を知り、ベテランの Rails ユーザーにとっては初歩的な内容 (機能自体も rdoc に書いてある) なので記事にするか悩みまし ...

続きを読む →

[AWS] EventBridge Rules による ECS Scheduled Task はエラー時リトライできない

May 18, 2022

posted by issei_m

なので Step Functions を使いましょうと言うお話です。 ある ECS で動いているバッチジョブの定期実行に EventBridge Rules を使って実装していたのですが、ある時ジョブがほぼ一定の頻度で失 ...

続きを読む →

Goroutines と Channels を使ってジョブを並行化した時のメモ

March 18, 2022

posted by issei_m

先日、Go で書かれたとあるバッチジョブのパフォーマンス改善として処理の並行化をするにあたり、今回初めて使った Goroutines, Channels で色々とハマりどころがあったので備忘録用にここにまとめておきます。 ...

続きを読む →

JMeter gRPC Request で gRPC リクエストを送る方法とハマった点

January 17, 2022

posted by issei_m

遅くなりましたが皆様あけましておめでとうございます。今年もどうぞ宜しくお願い致します。 さて、今回とあるプロジェクトで gRPC の API サーバーへの負荷試験をする事になったのですが、以前、中の人が記事を書いた通り、 ...

続きを読む →

Docker による AWS Lambda 関数コンテナイメージ化のすすめ

December 06, 2021

posted by issei_m

皆さん Lambda 関数は書いてますか?? Lambda と言えば現在では多数の言語でのランタイムをサポートしていますが、その中でもコンテナイメージを使った開発が個人的には楽だと感じていて日々使っているので紹介していき ...

続きを読む →

Scala のテストライブラリのバージョン互換の件で苦労した話

November 18, 2021

posted by issei_m

とある Spark のプロジェクトのテストに新たに spark-testing-base を追加しようとしたらバージョン互換の件でうまく動かず、一旦解決したと思ったら今度は既存のテストが動作しなくなっ ...

続きを読む →

Vagrant で Linux での最新の Docker 環境を構築

October 18, 2021

posted by issei_m

私は普段、 Docker を使った開発では macOS で Docker Desktop for Mac を使う事が多いのですが、今回とあるプロジェクトで Linux を使っているメンバーが、 Linux 固有で発生する ...

続きを読む →

Go の interface は構造体の利用側が定義すると言う話

October 04, 2021

posted by issei_m

Go を業務で使い始めてそろそろ 1 年が経ちました。Go には、これまで私が使ってきた Scala や PHP とは違う特性がいくつかあるのですが、その中でもユニークだったのが表題の件です。これは、 Go 本体の Wi ...

続きを読む →

CloudWatch Logs を S3 にエクスポートする際オブジェクトのイベント通知が発生しない場合がある

August 25, 2021

posted by issei_m

CloudWatch Logs にはログを S3 にエクスポートする機能があるのですが、この機能を使ってログを S3 にアップロードした際、S3 バケットの s3:ObjectCreated:PUT  ...

続きを読む →

aws-vault を使って AWS IAM のクレデンシャルを安全に管理する

June 16, 2021

posted by issei_m

最近、ローカルの開発 PC 上での AWS IAM のクレデンシャルの管理に aws-vault を使い始めてみた所、結構良さそうだったので紹介します。 ローカルでの IAM のクレデンシャル管理について AWS 上のコ ...

続きを読む →

Spark 2.x で null を含む JSON を書き出す方法

May 27, 2021

posted by issei_m

Spark 2.x では、 DataFrame を JSON に書き出す際、値が null のデータは失われます。 次のコードを見てみましょう: 定義した Person の age&nbsp ...

続きを読む →

[GitHub Actions] Secrets や書き込み権限が必要な Workflow を Dependabot からも使えるようにする

April 30, 2021

posted by issei_m

先月、とある GitHub リポジトリで使っている Dependabot が送ってくる Pull request の CI が軒並み落ちるようになり、状況を見てみるとどうやらリポジトリの Secrets がうまく Wor ...

続きを読む →

SparkでDataFrameの内容を単一のファイルに保存する

February 01, 2021

posted by issei_m

Sparkで処理したDataFrameをファイルとしてディスクに書き出す際、通常ファイルはパーティションの数分作成されます。 上記の df はパーティション数が3つなので、 /tmp/spa ...

続きを読む →

IAM で MFA を強制する方法と CLI での認証方法

October 20, 2020

posted by issei_m

今関わっているとあるプロジェクトでは、利用している AWS のリソースを操作するすべてのユーザーに対して MFA (多要素認証) を設定する事を義務付けています。 MFA 自体は AWS に限らず、多数の Web サービ ...

続きを読む →

AKS上のKubernetesの秘匿情報をAzure Key Vaultで管理する方法

September 15, 2020

posted by issei_m

最近AKSでKubernetesを管理しているのですが、SecretオブジェクトをAzure Key Vaultで管理したくなり、調べた所、Azure Key Vault Provider for Secrets Sto ...

続きを読む →

docker-compose.ymlのサービス名にアンダースコアを使うと正しいインターネットホスト名ではなくなる

August 25, 2020

posted by issei_m

以前こんな記事を書きました。 AWS CLI v2の公式Dockerイメージが出たみたいなので使ってみた ご存知の通りDocker Composeでは、以下の様にしてサービス (≒コンテナ) に名前をつける事ができ、これ ...

続きを読む →

Scalaのコレクションで遅延処理を行う

August 17, 2020

posted by issei_m

皆様おはようございます。梅雨もとっくに過ぎ、すっかり夏らしい空模様となりました。埼玉は毎日気温が高くて死にそうです・・・。 さて今回はScalaのコレクションネタです。結論から先に書くと、Scalaのコレクション処理 ( ...

続きを読む →

24時間稼働でないKinesisストリームの運用で手こずった点

May 21, 2020

posted by issei_m

前回に引き続き、Kinesisネタです。今回は、前回紹介したとあるコンシューマアプリケーションの運用で、タイトルにもある通り24時間稼働ではないユースケースでの運用で少しハマった点があるので書き記します。 ダウンタイムに ...

続きを読む →

Scala + Kinesis Client LibraryでKinesisコンシューマーアプリケーションを作る

May 14, 2020

posted by issei_m

ここ最近のプロジェクトでKinesisのコンシューマーアプリケーションをScalaで開発・メンテしていたので、何回かに分けてノウハウをメモしておきます。 今回はScalaでKinesis Client Libraryを使 ...

続きを読む →

JAVA_TOOL_OPTIONS環境変数でAWS Lambda関数のシステムプロパティを設定する

April 16, 2020

posted by issei_m

最近AWS Lambdaをよく使う事があり、色々知見が溜まってきました。今回はAWS Lambdaに直接関係がないトピックですが、JavaアプリケーションをLambdaで動かす時にシステムプロパティの値を変更したくなり、 ...

続きを読む →

AWS CLI v2の公式Dockerイメージが出たみたいなので使ってみた

April 01, 2020

posted by issei_m

既に使っている方も多くいると思いますが、先月AWS CLI v2が正式リリースされました。このバージョンではバイナリが各メジャーなOS毎に用意されていて、Pythonのインストールが不要になったので、v1の頃より使いやす ...

続きを読む →

AWS LambdaのJavaランタイムでミドルウェアのコネクションのリークでハマった件

March 03, 2020

posted by issei_m

今回はAWS LambdaでJava 8ランタイムを使った際に、Redis等のミドルウェアとのコネクションの管理関連でハマった点を備忘録として残しておきます。AWS Lambdaを使う上では抑えておくべき点である基本的な ...

続きを読む →

parquet-toolsでApache Parquet形式のファイルをローカルでお手軽に確認する

February 21, 2020

posted by issei_m

こんにちは、皆さんお久しぶりです。最後のエントリからだいぶ期間が空いてしまいましたが、これからちょくちょくまた書いていきますので宜しくお願いします。 さて今回ですが、小ネタになってしまい恐縮ですが、タイトルの通りApac ...

続きを読む →

Google Wifiを1ヶ月使ってやめた話と乗り換え先

November 18, 2019

posted by issei_m

※この記事は、先月新しく発表されたGoogle Nest Wifiではなく、旧モデルであるGoogle Wifiの話となります。予めご了承下さい。 こんにちは。こちらには2回目の投稿になります。 ここ1ヶ月程、自宅の無線 ...

続きを読む →

(Scala) List[Option[A]]#flattenで起きる事

November 01, 2019

posted by issei_m

先日、kojiがOption(scala)の実用的な使い方 − データのマージ処理と言うナイスな記事を書いてくれたので、ScalaのOptionを包括した List#flatten についてもう少し掘 ...

続きを読む →

Rails 6からActiveRecordのAssociationはscopingの影響を受けなくなっている件と対処法

September 26, 2019

posted by issei_m

こんにちは。日本ではすっかり秋の空が近づいてきました。個人的に夏は暑さが苦手であまり好きではないのですが、終わってしまうとなると毎年どこか寂しい気持ちになります。一方で、秋はご飯が美味しいので食べる事が好きな僕にとっては ...

続きを読む →

(小ネタ)GitHubDarkを使ってGitHubをダークモードなUIにする

August 16, 2019

posted by issei_m

こんにちは。暑い日が続いていますが皆さんいかがお過ごしでしょうか?僕が住んでいるさいたまーでは連日の猛暑で外に出る気力も起きません。(因みに弊社はフルリモートなので外に出る事はあまりありません。採用も行っているので、興味 ...

続きを読む →

PostgreSQLなRDSでIAM Database Authenticationを使ってみた

August 02, 2019

posted by issei_m

最近、とあるPostgreSQLなRDS(Auroraでない)を運用しているのですが、普通にRailsから使っているのとは別に、Lambdaからも接続する要件があり、表題のIAM Database Authenticat ...

続きを読む →

Elasticsearch for Apache Hadoopを使ってSparkからAmazon ESにデータと連携してみた

June 17, 2019

posted by issei_m

今とあるプロジェクトで、Amazon EMRを使って少し大きめなボリュームのデータ処理をしているのですが、その中のあるデータの中身をWebフォームからニアリアルタイムでフィルタリングしたいと言う要望があり、その基盤として ...

続きを読む →

(小ネタ)md5sumを使ってリモートにあるファイルとのチェックサムを検証するワンライナー

May 31, 2019

posted by issei_m

先に結論から書きます。 SSH接続した先にあるファイルとローカルファイルを比較する AWS S3上にあるファイルとローカルファイルを比較する ※S3の場合は、コンテンツをローカルにDLしてから計算している関係で、ファイル ...

続きを読む →

macOSでVirtualBoxがインストールできない時の対処法

May 16, 2019

posted by issei_m

ここ最近プロジェクトではほぼDockerを使うようになり、Vagrantはあまり使わなくなりました。それに伴い、VirtualBoxの使用頻度も3〜4年くらい前に比べると格段と減った気がします。 そんなある日、とあるプロ ...

続きを読む →

RubyMine 2019.1でRailsをdocker exec経由で起動可能になったがバグあって使い物にならない件

April 15, 2019

posted by issei_m

こんにちは。皆さんは普段どのような開発環境を使っていますか?僕はJetBrainsのIDEが好きなので、All Products Licenseを購入して各プロジェクトごとに適したIDEを愛用しており、RubyではRub ...

続きを読む →

Bug in the Ansible’s s3_sync module `file_change_strategy` not working and workaround for it

March 29, 2019

posted by issei_m

I’ve described the actual workaround in the very bottom. If you are hasty just jump to: Workaround As of ...

続きを読む →

Ansibleのs3_syncモジュールのfile_change_strategy: date_sizeのバグと対処法

March 22, 2019

posted by issei_m

対処法については一番最後に書いてありますので、面倒な方は読み飛ばして下さい: 対処法 このバグは当エントリ執筆時点の2019年3月22日現在確認ができています。また、現段階でAnsible本体にIssueとPull Re ...

続きを読む →

AWS CLIで標準入出力でS3オブジェクトを操作する方法

March 07, 2019

posted by issei_m

標準入力からアップロード 標準出力へダウンロード ご覧の通り、 -を引数として渡すとそれぞれ標準入出力が使われます。既に周知かと思いますが、僕は知りませんでした。普段からちょっとしたファイルの操作をする時に、いちいち物理 ...

続きを読む →

ECSの機能でSSMのParameter Storeに格納した機密情報をTaskDefinitionに埋め込む

March 06, 2019

posted by issei_m

こんにちは!今回は去年AWSで公開された、SSM (System Manager) のParameter Storeに格納した機密な情報(DBのパスワード等)を、直接ECSのTaskDefinitionに指定できる機能が ...

続きを読む →

OpenSSLを使った安全なファイルの転送を検証してみる

February 18, 2019

posted by issei_m

こんにちは!今年もあと残すところ11ヶ月を切ってしまいました。時間が経つのは早いですね・・・。さて、今回はOpenSSLを使って表題の件を検証をしてみたいと思います。 先日、とあるファイル共有サービスのログイン情報を含む ...

続きを読む →

Using .gitattributes in package distribution in GitHub

January 30, 2019

posted by issei_m

Hi there, how’s it going? This is the second time to write the entry in English for me. Anyway, do you know or ...

続きを読む →

AWS Lambdaを使ってスプラトゥーン2の戦績をstat.inkに定期保存できるようにした

January 09, 2019

posted by issei_m

皆さん新年あけましておめでとうございます。今年もよろしくお願いします。新年と言うわけで、1発目の投稿は少しカジュアルな感じで行こうと思い、表題のネタを取り上げるに至りました。 スプラトゥーン2とは? 多分名前くらいは皆さ ...

続きを読む →

RSpecのletの遅延評価を利用してよりコンテクスチュアルなSpecを書く

December 28, 2018

posted by issei_m

皆さんこんにちは。もう今年も残すところわずか3日となりました。早いものです。 さて、年末感のかけらもないネタですが、今回はRSpecのletについて、最近自分の中で1つの理解が得られた(気がする)ので書いてみようと思いま ...

続きを読む →

PHPのコレクションライブラリ Knapsack を使ってみる

December 07, 2018

posted by issei_m

今日は僕が普段中規模以上のPJで使っている、PHPのコレクションライブラリ Knapsack の紹介をします。 特徴 Knapsackの主な特徴は、 コレクション操作用の高階関数が豊富 イミュータブル 全てが遅延評価 i ...

続きを読む →

S3のGETリクエストでRangeヘッダーを使う

November 15, 2018

posted by issei_m

久しぶりの投稿です。 先日とあるプロジェクトで、Amazon S3に保存されているCSVファイルをデータベースにインポートする機能をPHPで作りました。 PHPではCSVを fopen と言う関数を使う事で、ストリームか ...

続きを読む →

Rails 5.2のcredentialsを使うとDeviseからエラーが発生する問題と応急処置

August 08, 2018

posted by issei_m

※この問題はDevise 4.4.3以下で起きます。次期バージョンである4.5.0では修正されました。 発生した問題 とあるプロジェクトをRails 5.2で作っているのですが、Deviseを導入していくつかの設定を行っ ...

続きを読む →

How to check the public (outbound) IP on CLI

July 18, 2018

posted by issei_m

Simply, you just hit: $ curl ipinfo.io/ip 18.179.199.139 Enjoy 👍

続きを読む →

1Passwordの二要素認証機能を試してみる

July 14, 2018

posted by issei_m

皆さんこんにちは。梅雨も明け、一気に夏模様となりましたね。熱中症等に気をつけて過ごしていきたい所です。 さて、今回は1Passwordの二要素認証ついて書いてみたいと思います。 1Passwordとは このブログの読者に ...

続きを読む →

Amazon EKSが一般公開されたので使ってみた

June 25, 2018

posted by issei_m

皆さんこんにちは。先日、ついにAWSのAmazon EKSが一般公開されましたね。現時点ではまだオレゴンとバージニア北部でしか使えませんが、今回は検証の為、ユーザーズガイドに沿って実際にクラスタを作成し、ゲストブックアプ ...

続きを読む →

DockerでAWS Lambda用のNode.jsネイティブモジュールをビルドする

June 06, 2018

posted by issei_m

先日、AWS LambdaのNode.jsでiconvを使うのが大変だった件と言う記事を書きましたが、その後すぐ、AWSがAmazon Linux用の公式Dockerイメージを公開している事を知りました。 そこで、前回は ...

続きを読む →

AWS LambdaのNode.jsでiconvを使うのが大変だった件

May 17, 2018

posted by issei_m

皆さんこんにちは。関東地方では梅雨入りもまだと言うのに、暑い日が続いていますがいかがおすごしでしょうか。 私は暑いのが苦手なので、ついに先日、今年初の冷房を使い始めました。笑 さて、最近、AWS Lambdaでiconv ...

続きを読む →