VisasQ Dev Blog

ビザスク開発ブログ

技術記事

ビザスクで利用している技術に関する記事。

GitHub Actions で特定ファイルの変更を含むプルリクにコメントする

GitHub Actionsを使って特定ファイルの変更を含むプルリクに自動でコメントを投稿する方法を紹介します。 弊社では特定ファイルを修正したときに必要な作業のリマインドに利用しています。 実装 以下のyamlファイルを .github/workflows に配置することで、h…

Pylance (type hints) の裏側を調べてみた

こんにちは、Core SRE の西川(@taxin_tt)です。普段はSREチームの一員として、インフラ周りの整備やたまにコードを書いたりしています。 ビザスクのアプリケーションのバックエンドはPythonで書かれています。普段の開発ではVS Codeを利用しているのですが…

今一度改めて Terraform ディレクトリ構造のベストプラクティスを考えてみた件

こんにちは!フルサポート開発チーム兼 Embedded SRE の高畑(Sorarinu (@int_sorarinu) / Twitter)です。 最近、スノーボードだけでなくキャンプにも手を出してしまった結果、どんどん沼にハマっていっている私ですが皆さまいかがお過ごしでしょうか。 先…

マイクロサービス化に伴うローカル環境の改善について

こんにちは。SREチームでリーダーをやっている木村です。 座右の名は「明日自分が交通事故にあっても、システムの運用を滞りなくする」です。 ビザスクは、サービスが開始されてから長年モノリシックな構成で開発を続けてきたのですが、サービスと組織の成長…

管理しやすい CLI ツールを作るためのビザスクの取り組みについて

こんにちは。SREチームでリーダーをやっている木村です。 座右の名は「明日自分が交通事故にあっても、システムの運用を滞りなくする」です。 本日は、デプロイやその他の自動化のハブにするためにビザスクでは、visasq-ctl というコマンドラインツールを 作…

必要に迫られて Google Cloud NDB ライブラリにパッチを当てたという話

こんにちは。プラットフォーム開発グループのくまがいです。 現在、弊社では大掛かりなシステム刷新のプロジェクトが進行しているのですが、その中で旧システムで利用している Cloud Datastore を移行中の新システム側からもアクセスする必要性が生じたこと…

ベンチマークツールRallyを使ってElasticsearchの負荷試験を実施する

はじめに 検索チームの加藤です。 弊社ではElasticsearchを使っているのですが、日々モニタリングを見ているとたまに負荷が高くなることがあり、「チューニングできたらなあ」と思っています。 チューニングするには、まず計測ですね。ということで今回はEla…

ビザスク管理画面のパフォーマンスチューニングをした話

こんにちは!フルサポート開発チームの高畑(Sorarinu (@int_sorarinu) / Twitter)です。 つい最近、ISUCON 12 の予選があったようで、 Twitter のトレンドに「SQLite」が上がっていて DB 屋さんたちがザワザワしていたようですが、皆さんいかがお過ごしで…

TerraformでElasticCloudの環境を立ち上げる

弊社で使っているElasticCloudの環境をTerraformを使って作成する方法を備忘録がてらご紹介します。

@vue/composition-api のバージョンアップを型検査で乗り切った話

アドバイザー/lite開発チーム フロントエンドエンジニアの小柳(@mascii_k)です。 はじめに 弊社サービス「ビザスクlite」では、Vue 2.6 向けのプラグイン @vue/composition-api を 2020/02 から導入しています。 tech.visasq.com ビザスクliteでの導入実績と…

Golang で Cloud Spanner に接続してデータを読み書きしてみた

こんにちは!フルサポート開発チームの高畑(@int_sorarinu)です。 最近になってようやくロボット掃除機を導入してみたのですが、引くほどゴミが取れていて愕然としたとともに、ロボット掃除機の優秀さに驚いている日々を送っている今日この頃、皆様いかが…

アドバイザー検索のフロントエンドを改善した話

アドバイザー/lite開発のたつかわです。 先日 ビザスクlite のアドバイザー検索機能のリニューアルを行いました。リニューアルするにあたりいくつかこだわったポイントがあったため、今回はそれらをまとめて記事を書こうと思います。また、ビザスクliteに未…

Pythonでデータを任意の形式に構造化できるライブラリcattrs

はじめに こんにちは。フルサポート開発チームのshi_maです。先日動物園に行ったらワオキツネザルから勢いよく餌を投げつけられました。好意的に解釈するとおそらくプレゼントだったのでしょう! 今回はcattrsという便利なPythonのライブラリを紹介します。 …

Cloud Pub/Sub Client libraryでのconcurrent.futuresの使われ方を調べた話

はじめに こんにちは。SREチームの西川です。 Cloud Pub/Sub Python Client library のソースコードリーディングを行う機会があり、library内でのconcurrent.futuresの利用方法についてメモしていたので、ついでに記事としてまとめてみました。 ※ この記事は…

個人的オススメの VSCode プラグイン 5 選をご紹介

こんにちは!フルサポート開発チームの高畑(@int_sorarinu、座右の銘:仕事している暇があったらスノボしろ)です。 先日の日曜日に雪山へ行ってスノボという名の雪活をしてきたのですが、慣れないトリックの練習で身体を痛めてしまい月曜日から元気がなく…

drf-yasg で生成した swagger ドキュメントにレスポンスクラスを表示するハック

こんにちは!フルサポート開発チームの高畑(@int_sorarinu)です。 最近お休みの日は雪山に篭りがちで、先日の 3 連休のうち 2 日連続でスノボへ行ったら身体が痛すぎて使い物にならなくなっていました。最近は翌日以降に筋肉痛が襲ってくるようになりちょ…

Redash の Query Results Data Source で MySQL の関数が使えない問題について調べてみた

アドバイザー開発チームのぐりこ ( @glico800 ) です。 普段良く使っている Redash にて Query Results Data Source という機能を使ったところ、ちょっと罠を踏み抜いたので簡単に解説を残しておこうと思います。 Query Results Data Source とは? 複数のク…

ElasticsearchのIntervalsクエリで単語間の位置を考慮した検索を行う

こんにちは、検索チームのよこやまです。 最近単語の位置を考慮した検索について調べる機会があり、ElasticsearchのIntervalsクエリを確認していたため、調べた一部をご紹介できればと思います。Intervalsクエリは意外と使用している例が見つかりづらく、パ…

Sentry+Datadogで「運用の属人化」の壁を越えようとしている話

はじめに こんにちは。SREチームの西川です。現在、ビザスクではサービスのインフラ基盤のリプレイスに伴い、Sentry+Datadogを用いたサービス監視体制を整備しています。その中で、継続的に抱えていた「運用の属人化」という課題に対して、ツール面からアプ…

ZoomのAPIを使ってミーティングを作成して第三者に提供する

こんにちは、フルサポート開発チームのイトウです。 昨今ではZoom等のWeb会議ツールでミーティングを行う機会も多いと思います。弊社のスポットコンサルサービスでも、インタビューの際にZoomが使用されることがあります。本記事では、Zoomのミーティングを…

GASでMicrosoft Graph APIを使う

どうも、みともりです。今回はGAS(Google Apps Script)でMicrosoft Graph APIを使ってSaaSのアカウントをプロビジョニングしてみたというお話です。需要がありそうな割にGASでGraph APIを使うサンプルがあまり無かったため、誰かのお役に立てばと思いアウト…

チームの運用業務で Datadog をフル活用してみた話

こんにちは!フルサポート開発チームの高畑です。 先日バス釣りに出かけた時に暑すぎて腕を捲りながら過ごしていたら夏休み明けの小学生のような日焼けをしてしまいどこか懐かしい気持ちになりました。 さて今回は、フルサポート開発チームで実施している「…

Salesforceの開発フローを改善した話

ビザスク プラットフォーム開発部 SRE/SFチームの蓮尾 です。ビザスクで利用しているSalesforceの保守運用やエンハンス開発を担当しています。 去年、Salesforceの開発フローを改善しました。どのように改善したのか、なにが改善されたのかをご紹介したいと…

コーディングが捗るおすすめ VSCode ショートカット3選【デモ動画付】

アドバイザー開発チームのぐりこ ( @glico800 ) です。 最近同じチームの山元さんにペアプロで教えてもらったり、自分で調べたりした VSCode ショートカットの中から特にコーディングが捗ると思ったものを3つご紹介します。 「他にも便利なショートカットを…

スタートアップのテレフォニー戦略

こんにちは!ビザスクのITチームの水戸守です。社内ITの管理などのコーポレートエンジニア(情シス)をやってます。最近気温が上がり、マスクのせいか肌荒れがひどくなって困ってます。早くマスク外したいですね。 さて今回はテレフォニー。つまり電話関連のお…

vue-tsc を使った TypeScript Strict Mode の漸進的導入

こんにちは、ビザスクアドバイザー開発チーム、フロントエンドエンジニアの山元(@yamagen0915)です。 はじめに 弊社にはいくつかのフロントエンド環境があり、その中には TypeScript の strict mode が有効でない環境もあり、それらを strict mode が有効な…

SLO運用の振り返りを実施した話

こんにちは。SREチームの西川です。 SLOの運用開始から1年ほど経過した段階で、SREチームでSLO運用の振り返りを行いました。今回は、SLO運用の振り返りの内容やそれを踏まえてSREチームとしてどのようなことを考えているかについてまとめてみます。 SLOの策…

Vue Composition API とユニットテスト

ビザスクアドバイザー開発チーム、フロントエンドエンジニアの山元(@yamagen0915)です。 弊社では新しく開発する画面やリニューアルを行う画面において積極的に Composition API を採用しています。 この記事では Composition API を利用しているコンポーネ…

Python×Slack APIで使っていないカスタム絵文字を調べてみました

アドバイザー開発チームのぐりこ ( @glico800 ) です。最近ふと登録したけど全く使われていないカスタム絵文字ってどれくらいあるのだろうと思い、Python と Slack API を使って調べようとしたら、意外と参考になるコードが少なかったり、Slack App 周りの仕…

Dataflowを使った検索ログのETL基盤

桜の花より団子な 検索チームの tanker です。 (管理画面検索の概要については 以前の投稿を参照ください) 管理画面検索にキーワードサジェスト機能を追加しようとした際に、過去の RM (リサーチマネージャー) の検索クエリーなどから辞書データを生成してお…