サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ChatGPT
techblog.hacomono.jp
はじめに こんにちは、セキュリティ推進グループの徐承賢(a.k.a. sunchan)です。前回、Burp AIを活用したDASTの脆弱性診断について紹介しました(Burp AI: セキュリティ診断にAIの力を借りる - hacomono TECH BLOG)。今回はその続編として、「Takumi AI」を使い、実際のプロジェクトでソースコードの脆弱性診断(SAST: Static Application Security Testing)を実施した結果をお伝えします。 本記事では、AI技術を活用した脆弱性診断の実践を通じて得られた知見と、効果的な活用方法についてお伝えできればと思います。 Takumiとは Takumiは、大規模言語モデル(LLM)を活用したホワイトボックスチェックと呼ばれるSAST(Static Application Security Testing)向けの脆弱性診断
こんにちは、リアーキテクチャ&イネーブルメント部のjunです。 普段はフレームワーク寄りの機能やライブラリの開発、パフォーマンスチューニング、リファクタリングなどなどプロダクトの土台を支える役割を担当しています。 今回は、運用品質向上のために開発した、Go言語のエラーハンドリングライブラリ「go-errorsx」の設計思想と活用方法をご紹介します。 ※ go-errorsxはまだ発展段階のライブラリです。APIの変更や機能追加が行われる可能性があります。また、ValidationErrorは開発中の機能で、将来的にcontribとして別パッケージに分離する可能性があります。 なぜ新しいライブラリが必要だったのか 既存の素晴らしいGoエラーライブラリ(pkg/errors、eris、cockroachdb/errorsなど)はそれぞれ優れた特徴を持っていますが、運用品質を向上させる機能をもう
こんにちは、プラットフォームチーム所属のmaco+(まこたす)です。 ちょうど2年前に「モノリスなRailsにモジュラーモノリスを導入した話」というタイトルで執筆させていただきましたが、その後の取り組み・経過について中間レポートをお伝えできたらと思います。 導入の背景 本題に入る前に導入の背景やポイントについて簡単におさらいしたいと思います。 導入検討当時、今後人数の増加が考えられる開発組織においてhacomonoプロダクトの開発生産性を下げないようにしたいという課題がありました。人数が増えると複数のチームから触れるようなコードに対しては認知負荷があがり責任の所在が曖昧になるものです。当時これらの問題はそこまで顕在化しておらず、予防的な意味合いでモジュラーモノリスの導入がなされました。 なぜモジュラーモノリスだったのかなどより詳しい話は、先述の記事を参照いただければとおもいます。 また当時
こんにちは。hacomono UX部エンジニアの yasu です。 hacomonoでは、フィットネスクラブ・インドアゴルフ・24hジム・スイミングスクールなどのウェルネス領域の店舗運営を支える会員管理・予約・決済システムを提供しています。 この記事では、hacomonoでUXエンジニアという職種を定義するに至った背景から、その役割や求めるスキルなどをご紹介します。 なぜUXエンジニアという職種定義が必要になったのか? hacomonoのプロダクト開発本部では、「プロダクトエンジニア」の定義は存在していましたが、UX部が求めるエンジニアの定義については明文化されていませんでした。 そこで今回、ユーザー体験に対して責任を持つ技術職として「UXエンジニア」を定義しました。これは次の理由からです。 育成方針・評価軸の明確化:UX部エンジニアの成長を体系的にサポート 開発組織内での役割明確化:UX
はじめに 基盤本部で今後のhacomonoのアーキテクチャ設計をしている @bootjp と申します。 最近はマイクロサービス化に向けての社内共通のイベントバスの設計や基盤周りの設計/実装を行っています。 以前にはこのような記事を書き、分散システムや分散データベース、分散ストレージなどが大好きです。 「Goで作って理解するRaftベースRedis互換KVS」という同人誌も書いています。 もし興味のある方はお手にとってみてください。 さて、今回は分散システムやマイクロサービスで頻繁に用いられるQueueについて焦点を当てた記事を書きます。 とくにマネージドサービスを用いない環境では、RedisでQueueを実装してる方は多いのではないでしょうか? しかし、ナイーブなQueueの実装には罠があり、データロストの危険性があります。 実例とともにデータをロストしないためには何が必要なのかをこの記事
この記事は hacomono advent calendar 2024 の18日目の記事です 今年9月にhacomonoにJOINし、基盤本部というところで今後のhacomonoのアーキテクチャ設計をしている @bootjp と申します。分散システムが好きです。 hacomonoも昨今のWebサービスの例にもれず、分散システム化しています。 そしてより高い可用性と低い運用コストを目指して新たなアーキテクチャの検討をしています。 今回はその取り組みのなかで、分散システムに関わる難しさというテーマで一貫した時刻の取り扱いの話で記事を書きます。 はじめに 昨今のWebをはじめとしたサービスは一つのサーバーで完結することが少なくなりました。 一つのアプリケーションを複数のサーバーやコンテナで、そして異なるサービスのシステムを組み合わせて「分散システム」として構築されています。 それは可用性や負荷分
この記事は hacomono advent calendar 2024 の16日目の記事です こんにちは、hacomonoのプロダクト開発本部のたつ(X)です。僕からはhacomonoの「プロダクトエンジニア」について今回も書かせてもらいます。前回は「プロダクトエンジニア」という役割を定義しましたというお話」という記事の中で、hacomonoのプロダクトエンジニアの定義やそのスキル・マインドについて紹介させていただきました。 さて本日のお話は、そのプロダクトエンジニアの定義や考え方をどのように浸透させていくか、育成していくかという視点からhacomono社内での取り組みの一つである開発設計書のテンプレートを紹介させていただこうと思います。 hacomonoでは機能の開発のフロー中で、実装に入る前に「開発設計書の作成」と「設計レビュー」という段階を用意しています。設計レビューとは端的に言って
こんにちは!hacomonoの開発基盤グループでインターンとして活動しているゆーたです。 2024年7月にhacomonoにジョインしました。これまで約2年間、主にアプリケーション開発を担当するインターンやバイトをしていましたが、hacomonoでは開発基盤チームに所属していることもあり、インフラも含めて広く触れる機会をいただいています。 先日、初めてのタスクを完遂したので、今回はその内容を振り返りたいと思います。 TL;DR Notionで管理しているテックブログ記事を、はてなブログへ自動転写するアプリケーションを開発 記事の手動転写による30分〜1時間のリードタイムを、数分に短縮することに成功 背景 hacomonoでは、記事の管理をNotionで行い、投稿先にははてなブログを利用しています。 これまで、Notionで執筆した記事を手動でコピーし、はてなブログに貼り付けていました。しか
こんにちは、hacomonoのプロダクト開発本部のたつ(X)です。 前回は「hacomonoの機能開発チームのたつです」と自己紹介したのですが、組織も大きくなりまして「部」なんて言葉を使うようになりました。 さて本日のお話は、2024年に入って「プロダクトエンジニア」という役割を社内で定義・言語化しましたのでそのお話をしたいと思います。 以前にもこじこじが「プロダクトエンジニア」について記事を書いてくれています。 本日はその第2弾としてhacomonoの「プロダクトエンジニア」の定義とその誕生の経緯についてお話したいと思います。 と言っても何も新しい役割を定義しましたという話ではなく、今までも社内で活躍してくれていた人の特徴を言語化・再定義したというお話です。 なぜ「プロダクトエンジニア」という言葉を定義したのか? 理由は4つあります。 組織が大きくなるにつれて、プロダクト開発エンジニアの
こんにちは、QA部SETチームのモーリーです。 hacomonoに入社して3月で5ヶ月目になります。 hacomonoではドキュメントツールとしてNotionを利用しています。 今回はhacomonoのNotionの使い方でいくつか課題を感じていたので 解決のために実行したことをシェアしようと思います。 記事の本題に進む前に、Notionで扱っている種類について触れておきます。 下記のように情報を分類したときに、今回はフロー情報にフォーカスして課題に取り組みました。 ストック情報 あとから何度も更新がされて活用する「蓄積される情報」です。 例:仕様書、マニュアル、等 フロー情報 その場限りで更新がされない「流れる情報」です。 例:議事録、メモ、等 hacomonoで感じたNotionの課題 hacomonoに入社して過ごしてみたところ、以下のような課題を感じていました。 階層化が進んでいて
hacomono インテグレーションチームに所属している西脇です。社内では htz (ひつじ) と呼ばれており、インテグレーション領域の開発とチームマネージメントを行っています。 先月まではエンタープライズ開発チームとして活動していましたが、エンタープライズのお客様のご要望に多い主に API の公開や、システム連携の仕組みを開発する事が多い事から、今月よりインテグレーションチームとチーム名称を変更し活動をしています。 普段はインテグレーションチームでの開発とチームマネージメントも行いつつも、Rails や RSpec 周りの改善についても行っています。今回は現在 hacomono で抱えている問題と、その問題についての取組について紹介したいと思います。 はじめに hacomono のバックエンドアプリケーションは Ruby on Rails で実装されており、テストは RSpec で記述さ
どうもみゅーとんです. 最近パフォーマンス周りで問題をおこしかけてしまったので, パフォーマンスの劣化を抑制する方法を調べてみました. 概要 3 行でまとめ public repository であれば, CodSpeed を無料で利用できる main ブランチでのパフォーマンスを計測しておき, Pull Request で劣化したら警告してくれる CodSpeed から, 内部処理を詳細に追うことができる 前提知識 vitest でパフォーマンステストを行う構成ができていることが条件になります. 導入方法についてはこの記事を確認してください. techblog.hacomono.jp CodSpeed とは docs.codspeed.io なんて読むんでしょうか・・?私はコードスピードと呼んでいますが, コッドスピードのほうが正しそう・・? GitHub Actions で実行した P
はじめまして!hacomono インターン生の、インフラとウマと馬が大好きなかわにーと申します。お馬さんかわいい。 2022年6月に入社してから2年弱経ち、このタイミングでやってきたことの整理として振り返り記事を書いています。 hacomono のインターンに興味を持っていただける方の参考となれば幸いです。 (※編集部注:2024年1月現在、hacomono開発チームのインターンは募集停止しております。再開次第、hacomonoプロダクト公式Xなどでお知らせいたします!) hacomono に応募したきっかけ 大学に入学してから今まで、気の赴くままに趣味として低レイヤやインフラ技術を学んでいました。何か役に立つようなプロダクトを作るわけでもなく、ただ自分の好奇心に従って。 しかし、大学院修士1年の頃、早期選考、インターン….、就活早期化の波が押し寄せます。 趣味ばかりで実務経験のない私は、
この記事は、hacomono Advent Calender 2023の20日目の記事です。 はじめに こんにちは、プラットフォームチーム所属のまこたすです。 この記事は主にMySQL5.7,MySQL8.0のcollation周りの挙動の違いについて書いています。AWS RDS MySQL5.7がEOLを迎える今、一番話したい内容はRails x MySQL5.7環境からRails x MySQL8.0環境へ移行する際にハマった話とそこからみる気をつけるべき観点という話題ではあるのですが、前提の話が長いので記事を2つに分けてお伝えします。今回はRailsの話は触れず、MySQLのcollation周りの話のみをします。 この記事で書くこと MySQL5.7, MySQL8.0でのサーバー, データベース, テーブルのcollationの決まり方とSHOW CREATE (TABLE|DA
はじめに こんにちは、Engineering Officeアシスタントのちいです。 2023年9月14日(木)にファインディ社主催のLunchLT「ポストモーテムLT会!「SRE成熟度評価」「社内共有会」カルチャーを醸成するためにやったこと」に発表者としてEMのよこちゃんが登壇しました。 発表内容や登壇しての感想をテックブログでも公開させていただきます。 発表内容 よこちゃんのタイトルと発表資料は以下です。 ◾️タイトル「hacomonoでのポストモーテムの取り組み」 今回は、hacomonoが近年急成長する中でのインシデント対応について発表させていただきました。 hacomonoではインシデント発生時のリードを担当するPSIRTチームを立ち上げました。 インシデントレポートやポストモーテムはnotionで管理しており、インシデントについては稼働率の推移や、インシデント対象機能や原因の割合
自己紹介 hacomonoの運動スクール向けの機能開発チームでEMをしている藤谷(社内ではしゅんぺいと呼ばれています)です。 最近は柚子胡椒を自作したらかなり美味しくできたので、いろんなものを柚子胡椒味にして楽しんでいます。 話したいこと hacomonoでは、2023年に運動スクール向けの機能をリリースしました。 まだまだ改善が始まったばかりではあるのですが、1→10フェーズの開発チームにおける品質向上の取り組み状況を共有できればと思います。 背景 2023年に運動スクール向けの機能をリリースし、SMBからエンタープライズへと導入を進める中で、要求品質とのギャップが顕在化してきました。 また、エンジニア組織も2年で 12人 → 76人と急拡大する中で、試行錯誤しつつ品質向上に取り組んでいます。 全体のアプローチ 1. PDCAの仕組み作り 品質向上に向けた取り組みは終わりはなく継続して改
こんにちは、エンジニアリングオフィスのなかむら(@rh1011_)です。 このチームは以下に責任を持ち活動を行っています。 HRチーム、現場開発チームと密に連携しながらの採用活動(DevHR) 技術・組織カルチャー広報(DevRel) 社内エンゲージメント よろしければCTOの作成記事がありますのでご覧ください。 はじめに なぜ採用するのか hacomonoの魅力と、やるべきことの洗い出し ひたすら実施 ①テックブログ ②イベント企画、登壇 ③協力いただくエージェントとの信頼感の醸成 ④熱いスカウト ⑤候補者体験の向上 今後の課題 エンジニアリングオフィスとして おわりに 参考リンク 想定読者 スタートアップで採用に取り組んでいるエンジニア、エンジニアマネージャ、HR 話さないこと 採用マーケティングチャネル別の施策詳細 はじめに hacomonoはこの1年間でエンジニア、プロダクトデザイ
こんにちは、プラットフォームチーム所属のまこたすです。 昨今、様々な場で「モジュラーモノリスを導入した」という話を目にするようになってきました。弊社でも昨年からモジュラーモノリスの試験導入を進めており、社内でノウハウが徐々に溜まってきたため、今回 技術ブログ で なぜ導入したのかと知見の共有 をさせていただけたらと思います。 想定読者 モノリスなアプリケーションの分割を検討している Railsへのモジュラーモノリスの導入を検討している 話さないこと チーム体制がどうあるべきかという観点の話 以下アーキテクチャについての詳細 モノリスアーキテクチャ モジュラーアーキテクチャ 背景 今回「モジュラーモノリスを導入した」というタイトルですが、最初に検討・導入に至るまでの背景について触れたいと思います。 hacomonoという組織・サービスの成長 hacomonoというサービスはリリースから現在に
どうも、フロントエンドテックリードのみゅーとん(@_mew_ton)です。 TypeScript で型でガチガチに固めるのが好きで、よく業務時間内に型パズルを書いてます。 Nuxt3 の useFetch を OpenAPI ベースで型安全にする仕組みができたので、今回はその共有をします。 TL;DR 記事中の Gist をそのままコピーして利用してください. 以下の手順で型安全にする OpenAPI の定義ファイルを openapi-typescript をつかって TypeScript の型にする 型パズルを実装する useFetch でこの型を利用するためのラッパーを作る 対象読者 本記事は以下の読者を対象としています Nuxt3 を使っていて、 useFetch を型安全にしたい要件がある OpenAPI のスキーマをがんばってメンテできている TypeScript で型ガチガチに
どうも。フロントエンドのテックリードをやっています。みゅーとん(@_mew_ton)です。 Vue3 のリファレンスを読んでいたところ、「関数型コンポーネント」なるものが気になったので、軽く触ってみました。 はじめに リファレンス 対象読者 以下の読者を想定しています。 基本的な vue のコンポーネントを記述できる ちょっと動的なコンポーネント作りたくなって困った人 そのため、 vue の基礎について詳しく解説はしません。 また、本記事では関数型コンポーネントの vue2, vue3 での違いにも触れますが、vue2 側については掘り下げません。 TL;DR 3行でまとめ 名前のとおり、関数を定義するように実装できるコンポーネント 少ないコードでサッと動的なコンポーネントをかける vue3 ではこれを作るメリットが少ない。 おさらい 先におさらいしておくと、一般的なコンポーネントは2種類
こんにちは、hacomono POS開発チームに所属するたけ(竹本)です。 今回、私が育休を取得したのでその経緯や育休〜復帰に至るまでについてお話したいと思います。 ※技術的な話はでてきません 育休を取得した理由 今回の育休は次男が産まれたことがきっかけでした。 長男のときは妻が実家に帰省して出産したのですが、コロナ禍や長男の幼稚園のこともあり、 家族で相談して実家に帰省しないことになりました。 hacomonoはフルリモートという働き方ですので育休を取るほどでもないかと思ったのですが、 長男のときを思い出すと妻も産後1~2ヶ月は体調回復に集中してほしいと考え、育休を取得する方向でマネージャーやメンバーに相談しました。 マネージャーやメンバーから温かい応援を頂いたため3ヶ月育休を取ることにしました。 育休前のこと 私が所属しているPOSチームの開発が佳境であり、育休直後にローンチであったた
こんにちは。ハードウエアのメカニカルエンジニアデザイナーをやっている うら(Ura)です。 メインプロダクトがSaaSということもあり、ソフトウエアプロダクト中心の弊社ですが、実はハードウエア領域でも自社プロダクトを開発しており、メーカーという一面もあったりします。 PCBA(Print Circuit Board Assembly)から筐体の金型設計、SCMからデリバリーまで、実は社内でかなりの部分をコントロールできる体制を作っております。 型だと絶対に不可能で3Dプリンターならではのおいしいスイッチ 長くなりそうなので結論からずばり言っちゃうと 「サイドアクセス型タクトスイッチの押し子パーツの筐体との一体成型構造って、いくつかやり方ある中でも、設計自由度が高くてオシャレでかつ3Dプリンターならではの構造をプロトでよく使います」という記事になります。 何言ってんの??という方のために以下
はじめに こんにちは、hacomonoでウェブアプリケーションの開発を担当しています、野崎です(社内ではサイモンと呼ばれています)。 少し前に、Nuxt 3とCapacitorで作るiOSアプリの記事をパブリッシュしており、今回はその続きです。Capacitorで構築したiOSアプリから外部ライブラリをプラグイン化して呼び出すという話をします。 併せて読んでいただけますと、より理解しやすくなりますのでそちらもご参考ください。 techblog.hacomono.jp 前提条件 hacomonoのPOSレジとは hacomonoではフィットネスクラブやジムの店舗管理システムと連動して使えるPOSレジを開発、提供しています。 POSレジ自体のコンテンツはあくまでウェブアプリケーションとして構築されており、WebViewを介して画面操作が可能となっています。 iOSアプリ周辺のアーキテクチャを図
フロントエンドのテックリードをやってます。みゅーとん(@_mew_ton)です。 前回は作りたいライブラリの設計を全部ChatGPT にやってもらいました。 今回は、その実装を楽にすすめていこうと思います。 また、前回と異なり、今回は手動でブログを書いています。ほとんどが失敗の記録です。 TL; DR 3行でまとめます ChatGPT にコードを書かせる際、 TypeScript の型パズルはまだ難しい Google Copilot に1からコードを書かせるのも難しい 型パズルはまだ人力である必要がある AIに型パズルはまだ早い・・? そもそもの要件は、「型ガード関数7種を提供する」「型ガード関数を作るための関数を提供する」の2つでした。 さっそく ChatGPT に 型ガード関数を作るための関数を提供する の実装をお願いすると、以下のようになりました。 以下に、指定されたメソッドを作成し
プロダクト開発チームのまっつんです。 今期から機能開発のチームではなくパフォーマンス改善の部隊にジョインすることになりました。 初手のタスクはフロント側の改善タスクでした。フロント側は今までなんとなくで開発しちゃってたところがあったので、これを機にフロント側の理解をさらに深めようと思い試してみたことを記事にしてみました。 今回は、何番煎じだという感じですがSSRについて自分の言葉でまとめました。 前提知識の確認 SSRについて クライアントがサーバーにリクエストすると、サーバー側でHTML(①)をレンダリングして返します。 クライアント側は①とJavascriptを評価し、静的な①をインタラクティブにするためhydrationを実行し、クライアント側で生成した実DOMに差分を反映していきます。 この一連の処理をSSRと呼びます。 nuxt.com mountedというライフサイクルフックが
こんにちは、開発グループの和田(ニックネームはなつです)です。 普段は大阪からリモートで、hacomono のエンタープライズ領域( = アドオン開発基盤周辺)を主に担当しております。 大手のお客様にシステム導入する際、Saas であっても個別の要件をいただくことは往々にしてあるかと思います。 hacomono ではプロダクトとしては対応しない場合でも、アドオンとして積極的に個別開発を行っており、その中でもよくある任意のページを組み込みたい、という要望を実現するためにとったアプローチを紹介できればと思います。 アプローチ 技術的な要件・前提条件 Vue2 / Nuxt2 ES6 クライアントサイドレンダリング 読み込み対象となるコンポーネントはビルド/デプロイ時点では不明であり、任意の URL が指定される 考えられるアプローチ CTO や Google 先生に助言をもらいつつ、マイクロフ
プロダクト開発チームの田中と申します。(社内ではたなしゅんと呼ばれております) 先日新機能のリリースを行いまして、リリース時に既存テーブルに対してのカラム追加が必要だったのですが、カラム追加のALTER TABLEが中々終わらないという問題が以前のリリース時に起きていたこともあり、事前に問題なくDBマイグレーション(Railsを利用しているため、この記事ではALTER TABLEなどのDB操作をマイグレーションと呼びます)が実施できるように調査を行いました。 その際に調査した内容や工夫したことなどを共有したいと思います。 過去のリリース時に起きた問題 ALTER TABLEが終わらない メンテナンスタイム中にデータベースのマイグレーションができるのが理想ですが、hacomonoのサービスの特性上24時間運営の店舗様にもご利用いただいているため、頻繁にメンテナンスタイムを設けることが難しく、
hacomono CTOのまこ(@macococo)です 今年最後のテックブログでは、2022年の hacomono の開発組織を振り返りたいと思います。 ちなみに昨年の振り返りはこちら。 開発組織の変化 2021年末の段階では、正社員が15名ほどの組織でした。当時の課題は、私自身が開発も担当しており、CTO という役割以上に開発チームのリーダーとして開発の中心に居たことと、私自身が開発に多くの時間を割けられずにボトルネックになってしまっていたことでした。2022年からはチームを分け、3月のB調達を経て採用が強化されたことで、チームもメンバーも大きく成長する年になりました。 (コードを書ける時間が減ったのは悲しいですが。。) 非常にありがたいことに、今年も多数の優秀かつバリュー体現の高いメンバーにJoinいただき、プロダクト組織全体で48名と約3倍の組織に成長しました。業務委託・アルバイト
最近ポケモンメザスタにハマっている、プロダクト開発チームのまっつん(@pagu_o28)です。 プロダクトの品質向上のために、コードカバレッジもテストコード自体の質も高い状態にしていきたいです。 hacomono のバックエンドは Ruby on Rails で、テストフレームワークは rspec です。今回はバックエンド側のコードカバレッジの測定について書きます。 1. カバレッジレポートを確認できる状態にする まずは現状の確認をしました。 simplecov を導入済みでしたが、何故かちゃんと計測できていない状態でした。 なぜ計測できていないのかを調査するところからはじめました。 SimpleCovのREADME を確認してみる よく読んでみると、下記の記述はアプリケーションのコードを require する前に呼んでおくこと!と書いてありました。 require 'simplecov'
次のページ
このページを最初にブックマークしてみませんか?
『techblog.hacomono.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く