OPTIMINDテックブログのフィード

https://zenn.dev/p/optimind

世界のラストワンマイルを最適化する、OPTIMINDのテックブログです。「どの車両が、どの訪問先を、どの順に、どういうルートで回ると最適か」というラストワンマイルの配車最適化サービス、Loogiaを展開しています。https://recruit.optimind.tech/

フィード

記事のアイキャッチ画像
Firebase Hostingのプレビューチャンネル数リミットにヒットした件
OPTIMINDテックブログのフィード
問題今携わっているプロダクトの開発では、フロントエンド側をfirebase hostingに上げていて、PRごとにプレビュー用のチャンネルをCIでデプロイするようにしています。name: Firebase Hostingのプレビューチャンネルを作成on: pull_request: types: [ opened, reopened ]jobs: build: # ここでビルドする deploy-pr: needs: build runs-on: ubuntu-latest permissions: conten...
3日前
記事のアイキャッチ画像
GitHub Actions: PRのdiff行数に応じてラベルを貼る簡単なスニペット
はてなブックマークアイコン 1
OPTIMINDテックブログのフィード
ちょっとしたスニペットの紹介です.結構雑なやつですPRのdiff行数に応じてラベルを貼るワークフローの書き方の紹介です.完成図は以下のようになりますこのようなラベルが,PRを作成した際に自動的に作られるようになります.PRが更新されればラベルも貼り直しされます. スニペット.github/workflows/label-pr-diff-line-count.yml などのような名前で(ファイル名は何でもいいです)以下のような内容のワークフローを作成します.name: PRの差分行数カウントon: pull_request: types: [opened, sy...
5日前
記事のアイキャッチ画像
イベント資料アーカイブ: TypeScriptとの歩み そしてtRPCのなにが嬉しいのか
OPTIMINDテックブログのフィード
ミドルフェーズスタートアップにおける開発組織の課題への向き合い方 というイベントで発表した資料です.先に資料を作り始めていたので主題に若干かすっている程度で申し訳ないのですが,チーム開発をするうえでtRPCという選択は非常に大きな役割を果たしていると感じています.上記のスライドでコンテンツは終わりなのですが,軽く思ったことなどを書きます.(実際の発表時の資料から一部編集しております.)TypeScriptの完全な理解に向かうためには,リリースノートをよく読み,TypeScriptをよく触ることだろうな,と思いました.tRPCはきっと失っているものもいくらかありますが,適切でミ...
22日前
記事のアイキャッチ画像
テスト用のDBをセットアップしてみた
OPTIMINDテックブログのフィード
経緯少し歴史問題というか、負債を返すために必要なものであった。バックエンド側のテストは今までかけている部分が多く、特にDBへのデータアクセスに関するものはほぼテストが書かれていなかった。それで、この部分のテストを拡充していく中で、実際に生成されたクエリがちゃんと動いているか、データの整合性、インテグレーションテストや今後のパフォーマンスやスケーラビリティテストといった面を考慮した上で、モックデータではなく、リアルなテストDBが必要との結論になっていた。 初回の試み vitestのワークスペーステストはvitestを運用している。vitestでは ワークスペース を定...
1ヶ月前
記事のアイキャッチ画像
Google Cloud認定全冠したので知見や所感を共有します
OPTIMINDテックブログのフィード
初めにこんにちは。福岡からOPTIMINDという名古屋のスタートアップで働いている津守と申します。2024年2月に、Google Cloudの全認定資格(計11種)を取得しました。2年前には、Associate Cloud Engineer(ACE)、Professional Cloud Architect(PCA)、そしてProfessional Data Engineer(PDE)の資格を取得しています。PCAとPDEの更新時期が来たのを機に、全認定資格の取得を目指すことにしました。2023年12月24日から2024年2月12日の約2ヶ月間で、有効期限内のACEを除く残りの1...
2ヶ月前
記事のアイキャッチ画像
JavaScriptのIIFEについて
OPTIMINDテックブログのフィード
IIFEとは以下のようなコードがあったとします.declare const str: string;try { const json = JSON.parse(str); console.log('parsed: %o', json);} catch { console.log('not json');}[TS playground]このコードはつまり,JSONとしてパースしてみて,JSONなら parsed: <その内容>, そうでないなら not json とコンソールに書くコードです.JSONとして解釈可能な文字列かどうかで分岐したいだけ...
2ヶ月前
記事のアイキャッチ画像
cronジョブのログを出したい
OPTIMINDテックブログのフィード
経緯最近ちょこちょこDBに異常なデータが入り込んでしまっていて、その関係でサービスが使えなくなったりすることがあります。すぐに原因がわからず、原因が判明されるまで、ユーザー影響を最小限にするために、その異常検知と修復のcronジョブを組みました。この中で出会った問題とその解決についての記録となります。 ジョブの頻度を〇〇秒毎にしたいcronは作りましたが、デフォルトの設定では、頻度は1分毎になっています。* * * * * /bin/bash /abs/path/script.shただ、これを例えば、10秒毎に実行したい時にどうすれば良いでしょう。ワークアラウンドとし...
3ヶ月前
記事のアイキャッチ画像
最近のインシデントからの学び
OPTIMINDテックブログのフィード
この記事はOptimind Advent Calendar 2023の25日目の記事となります。 経緯本来別の記事を書く予定でしたが、直近プロダクトのインシデントがあったため、自分が直接責任者でもあり、その振り返りをこの機に書きたいと思いました。今のプロダクトはユーザーの利用時間避けるために、暫定毎週の月曜にリリースしています。すると翌日の9時あたりに、ユーザーが利用したエラー記録がスラックのチャンネルに流れてきました。その内容をチェックしたら、なんと、column reference "xxx" is ambiguousでした。いやいやいやいや、まずいぞこれ、って第一印象...
4ヶ月前
記事のアイキャッチ画像
X-Content-Type-Options: nosniff が効く条件と簡単な確認
OPTIMINDテックブログのフィード
軽いメモ程度です X-Content-Type-Options: nosniff とはhttps://developer.mozilla.org/ja/docs/Web/HTTP/Headers/X-Content-Type-OptionsMDNによる X-Content-Type-Options: nosniff の説明は日本語ページでは以下のようになっています.X-Content-Type-Options は HTTP のレスポンスヘッダーで、 Content-Type ヘッダーで示された MIME タイプを変更せずに従うべきであることを示すために、サーバーによって使用さ...
4ヶ月前
記事のアイキャッチ画像
社内向け休日通知botを作った
OPTIMINDテックブログのフィード
社内で「朝出社したら誰もいなくて、そこで初めて祝日だったことに気づいた」という話を聞きました。なんということでしょうか。せめて前日には気づかせてあげたいと思い、祝日を通知するSlack Botを作成しました。この記事は株式会社オプティマインドの社員による「Optimind Advent Calendar 2023」の6日目の記事です。https://qiita.com/advent-calendar/2023/optimind 全体の構成ざっくりと以下のような構成です。元データはGitHubへ手動アップロード&編集。Event BridgeでLambdaを定期実行してSlac...
5ヶ月前
記事のアイキャッチ画像
ブラウザのタブ開きすぎ問題への対処
OPTIMINDテックブログのフィード
最近PCで使っているブラウザのタブを開きすぎてメモリ不足になってしまい、これは本格的にどうにかしないといけないと思い立ちました。どう「タブ開きすぎ問題」と向き合うかについて、私なりの考え方や運用方法をご紹介します。!この記事は「このツールさえ使えば解決!」というような安直な内容ではありません。タブが増えるのはなぜなのかを分析し、そこからどういった対処法が考えられるかを考察し提案する記事です。この記事は株式会社オプティマインドの社員による「Optimind Advent Calendar 2023」の4日目の記事です。https://qiita.com/advent-calen...
5ヶ月前
記事のアイキャッチ画像
Dataformを用いたデータクレンジング
OPTIMINDテックブログのフィード
この記事はOptimind Advent Calendar 2023の2日目の記事となります。 はじめに皆さんDataform使っていますか?一年前にもDataformの記事[1]を書きましたが、その時と比べて2023.1130現在ではDataformにも様々なアップデートがあり、日々より便利になっています。(WorkflowやReleaseのConfigとか増えていてとても良い感じ)本記事では、そんなDataformを使用してデータをクレンジングする方法について簡単に記述しようかと思います。尚、ご留意いただきたい点として、本記事はGCP版のDataformを前提とした表現を多...
5ヶ月前
記事のアイキャッチ画像
業務でCloudRun Jobsを使ってみた話
OPTIMINDテックブログのフィード
この記事はOptimind Advent Calendar 2023の1日目の記事となります。 経緯最近のプロジェクトでは、GCPのCloudRun Serviceを使っていて、バックエンドのメインサービスが走っています。多くの場合は問題ないものの、多少時間のかかる操作が存在します。しかし、min-instancesの設定では、インスタンスの再起動がいつでも起こりうるので、たまたまこの時間のかかる処理が当たってしまうと、処理が予想外の中断となってしまいます。すると、これらの時間のかかる処理を、メインサービスから分離するために、色々と調査と実験を行いました。 CloudRun...
5ヶ月前
記事のアイキャッチ画像
AWSでセキュアなファイル送信システムを作る
OPTIMINDテックブログのフィード
はじめにみなさんは業務上で自分以外の(特に社外の)人とファイルのやりとりをしたいときどうしていますか?USBメモリに入れる、メールに添付する、DropboxやGoogleドライブなどで共有する、ファイル送信サービスを利用する、などなどいろいろな方法がありますね。今回は最後のファイル送信サービスのようなシステムを、なるべくAWSのマネージドサービスを使いつつ自分で作ってみたいと思います。説明のためにサンプルとなるCloudFormationのコードも随時添えておきます。!ここでご紹介する方法や実装にセキュリティ上の問題が無いことは保証しておりません。この記事を参考にして実際に試す...
1年前
記事のアイキャッチ画像
Dataformのチーム開発環境を考える
OPTIMINDテックブログのフィード
この記事はdatatech-jp Advent Calendar 2022の12日目の記事となります。 はじめにDataformがGCPIntegratedPreviewとして公開されました。チーム開発を考えた時、dbtのSaaS版では$50/Monthかかりますが、Dataformは無料*のため非常にリーズナブルです。*ただし、当然BigQueryのクエリコストなどはかかってきますしかし、このGCP版ですがPreview版のためチームで運用するにはまだ少し課題があると感じています。この記事ではその課題感と、それに対して暫定的にどういう対応をとっているのかを共有したいと思いま...
1年前
記事のアイキャッチ画像
SQSとSNSによるPub/SubをCloudFormationで構築
OPTIMINDテックブログのフィード
はじめにクラウドコンピューティングやマイクロサービスなどが盛り上がる中、スケールアウトや並列化との相性の良さなどからシステム間の通信方式としてPub/Subモデルが注目されています。Pub/Subモデルの特徴などは様々な記事にて語られています。https://cloud.google.com/pubsub/docs/overviewhttps://qiita.com/unasaka/items/626d832e7281ed6965ae本記事では Amazon SNS と Amazon SQS によりPub/Subモデルを実現する方法を紹介します。SQSのみでも実現可能ですがS...
4年前