サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ブラックフライデー
techblog.hacomono.jp
こんにちは!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 に 型ガード関数を作るための関数を提供する の実装をお願いすると、以下のようになりました。 以下に、指定されたメソッドを作成し
プロダクト開発チームの田中と申します。(社内ではたなしゅんと呼ばれております) 先日新機能のリリースを行いまして、リリース時に既存テーブルに対してのカラム追加が必要だったのですが、カラム追加の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'
フロントエンドのテックリードのみゅーとん(@_mew_ton)です。 弊社では新しいプロジェクトを立ち上げの際に、Nuxt3を採用しています。 このプロジェクトでは、APIコール部分の実装について、以下のようなルールを設けています。 ブラウザからは、 Nuxt3 の ServerRoutes (BFFサーバ) へアクセスする BFFサーバから、APIサーバへアクセスし必要な情報を取得する BFFサーバにて、ブラウザで表示するためのデータ構造に変換する (不要な情報を削ぎ落とす) このプロジェクトでE2Eテストを導入するためBFFサーバのモックを準備しました。 今回は、Nuxt3 の ServerRoutes 機能を利用してモックサーバを作る方法を紹介します! TL;DR Nuxt3 は API の実装に server/api 配下にソースを配置する Nuxt3 が利用しているサーバエンジン
フロントエンドのテックリードのみゅーとん(@_mew_ton)です。 弊社では新しいプロジェクトを立ち上げの際に、Nuxt3を採用することにしました。 また、従来までのプロジェクトの反省点として、 Atomic Design を考慮して実装することにしました。 ただ、Atomic Design について調査していくと、Atomic Design の考え方をそのままディレクトリに落とし込んでいくのはどうやら悪手のようで、Google サジェストからも、いくつか失敗のケースが散見されました。 そこで、Nuxt3 のディレクトリ構成にマッチするような Atomic Design の構成を考えてみたので紹介します。 Atomic Design とは Atomic Design とは、パーツ単位でUIデザインを設計する手法です。 Atomic Design 自体は 5年以上前から提唱されている設計方
このページを最初にブックマークしてみませんか?
『techblog.hacomono.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く