株式会社ヘンリー エンジニアブログ

株式会社ヘンリーのエンジニアが技術情報を発信します

事業戦略は技術戦略に影響を与えるが、技術戦略もまた事業戦略に影響を与えるべき

こんにちは。ヘンリーで VPoP (VP of Product) をしている agatan です。 2025年の10月から、これまでのエンジニアとしての役割に加え、VP of Product & 製品部門長という役割を担うことになりました。

これまではテックリードやアーキテクトなど、エンジニアとして、ヘンリーの複雑で巨大なドメイン(レセコン・電子カルテ)に技術面からアプローチしてきました。 VPoPという立場になり、プロダクトと事業をより俯瞰して見る中で、自分の中にあった「ある種の先入観」に気づくことができました。 今日はその言語化と、これからのヘンリーの開発組織が目指す「技術と事業の関係性」について書いてみようと思います。

この記事は

qiita.com

の1日目の記事です!

「技術戦略は事業戦略の従属変数である」と知らぬ間に思い込んでいた

先日のアーキテクチャカンファレンスでもお話ししましたが、私たちが向き合っているドメインは非常に複雑で、ソフトウェアの設計と組織の設計は、そのドメインの性質に応じて考える必要があります。

speakerdeck.com

これまで私は、「技術戦略」つまり「ある事業やプロダクトをどのような作り方で作るか」を決める際、事業戦略を一種の「前提条件(Input)」として捉えていました。 「事業として何を達成したいか(What)」がまずありきで、それを実現するための最適解として「どう作るか(How)」を策定する。依存の矢印は主に「事業 → 技術」への単方向である、というメンタルモデルを、無意識にもってしまっていたのです。

ヘンリーにおいても、マイクロサービス化の意思決定、モジュラーモノリスへの移行、Kotlin や GraphQL といった技術選定など、様々な意思決定に関わってきました。 これらは当然、ドメインの性質や採用市場、既存のコードベースといった制約の中で、その時点での事業目標を達成するためにベストだと考えた選択でした。

しかし、VPoPとして事業計画や予実管理、営業戦略といったレイヤーに深く触れるにつれ、この「単方向の依存」という認識自体が、実は自分自身の可能性、ひいてはエンジニアリング組織の可能性を狭めていたのではないか、と感じるようになりました。

技術戦略は「事業の選択肢」を創出する

今の私は、 「技術戦略と事業戦略は双方向の依存関係にあるべきだ」 と考えています。

事業戦略が技術戦略に要件を与えるのは当然ですが、同時に、技術戦略(現在のアーキテクチャ、チームのケイパビリティ、技術的負債の状況など)が、事業戦略に「リアリティ」と「選択肢」を与えます。

例えば、「小規模チームで作り切ればリスクは低いが時間が掛かる」、「大規模に体制を拡充するとリスクは高まるがうまくいけば時間を短縮できる」。 これは単なる開発リソース配分の話ではなく、事業のキャッシュフローや、市場参入のタイミングそのものを決定づける経営判断です。

また、もっと攻めの視点で言えば、優れた技術戦略は事業に新しいオプションを提供します。 私たちが進めているモジュラーモノリス化やドメイン駆動設計の実践は、単にコードを綺麗にするためだけのものではありません。

  • 「このアーキテクチャになっているからこそ、競合他社が半年かかるところを、我々は既存モジュールの組み合わせで1ヶ月で検証できる」
  • 「ここが疎結合になっているから、特定の診療科向けに機能を切り出して、別プランとして売り出すことができる」
  • 「こういう作りにしておくと、最悪失敗してもこの部分だけを切り離して捨てられるので、ここは攻めよう」

このように、技術的な武器があるからこそ描ける事業戦略が存在します。 エンジニアが技術戦略を磨き込むことは、経営に対して「このルートなら、もっと速く、高く登れる」という登山ルートを提案することと同義なのです。

「不確実性」を飼いならすための対話

もちろん、技術的な挑戦には不確実性がつきものです。「想定より時間がかかる」「パフォーマンスや信頼性に悪影響が出た」といった事象は往々にして起こります。

大前提として、シンプルに技術戦略が間違っていたことを認めて、より良い技術戦略にブラッシュアップしていくことが、まず初めに考えることであるべきです。 しかし、それに加えて重要なのは、その事実を即座に事業戦略へフィードバックし、事業戦略そのものを書き換える勇気を持つことです。

事業、ビジネスサイド、開発など、いろんな視点があり、それぞれお互いの変数が相互に影響し合っていることを認め合い、一緒に悩み、計画を動的にアジャストしていく。 ヘンリーのような難易度の高いドメインで勝つためには、この「双方向の対話」のループを高速に回すことが重要だと思うようになりました。

一人のエンジニアとして

正直なところ、技術戦略と事業戦略の関係性をこのように捉えることができるようになったのは、VPoPになってからでした。それまでは、もちろん事業に貢献することを意識してやってきたつもりではありましたが、どこかで事業戦略自体は所与のものであるという考えをもってしまっていたような気がします。

今振り返れば、テックリードやエンジニアだった頃の自分も、「もっと良い作り方」だけでなく「もっと良い事業の登り方」を考えることができたはずだと感じています。 「事業のことは経営が決めること」と、無意識に自分の領分を技術領域に限定してしまっていたのです。

だからこそ、私はVPoPとして、エンジニアのみんなが「技術の枠」に閉じこもらず、事業戦略という変数すらもハックできるような環境を作っていきたいと考えています。

「エンジニアも全員PLを見て、営業指標を気にしながらコードを書け」みたいなことをいいたいわけではありません。 そうではなく、自分たちが普段向き合っているコードや仕様、開発プロセスの中に、実は事業を動かすための『隠れた変数』があるということを意識できるだけで、もっともっと大きな価値を生み出せるはずだと思っているのです。

ヘンリーでの開発は、降りてきた仕様を単に実装するような開発ではありませんが、それでも事業の登り方のようなレベルの話については「固定された定数(制約)」だと捉えがちです。 しかし、現場のエンジニアだけが知っている事実があるはずです。 現場でコードを書いているエンジニアこそが、プロダクトの「手触り」を一番知っています。

  • 「今のアーキテクチャなら、実はこんな機能も低コストで実現できる」
  • 「これだけのものを作るには、一度基盤を整備してから一気に作ったほうが速い」

といったような現場からのインサイトが、経営会議の決定をひっくり返すべきだと思っています。

今回は私のバックグラウンドがエンジニアであるため、技術戦略を例にお話ししましたが、これはエンジニアに限った話ではありません。 デザイナー、プロダクトマネージャー(PdM)、ドメインエキスパートなど、あらゆる職能の専門性が、事業戦略にとってクリティカルなインプットを生み出しうると考えています。

私はエンジニアであり、技術以外の領域にはどうしても見落としが生まれます。「専門性を持った人たちが、それぞれの専門性をリスペクトしながら、共通のゴールに向かって越境し合いながら走る」というチームが理想的なチームだと思っています。 だからこそ、エンジニア以外のメンバーからは、それぞれの専門性に基づいた「事業へのインプット」を与えてもらいたいし、エンジニアについても私の見落としに気付かせてもらいたい。それができるような情報流通やコミュニケーション土台を作っていきたいと考えています。

おわりに

「事業戦略は技術戦略に影響を与えるが、技術戦略もまた事業戦略に影響を与えるべき」 すごくふつうのことを言っているかもしれませんが、これを高いレベルで実践するのはなかなかに難しいことだと思います。

ヘンリーの開発組織は、仕様書通りに機能を作る工場ではありません。技術的な洞察をもって、事業の未来を提案するシンクタンクであり、それを最速で形にする実行部隊です。 複雑怪奇な社会課題を技術でハックし、そのレバレッジで事業を非連続に成長させる。そんな「エンジニアリング」を、私たちと一緒に楽しみませんか。

ヘンリーはソフトウェアエンジニアを積極的に募集しています!興味を持っていただけた方は、ぜひお話させてください!

jobs.henry.jp

【挑戦状】誰が書いたコードか当てまShow!! 〜Kotlin Fest 2025 クイズコンテンツの解説〜

こんにちは。株式会社ヘンリーで開発者をやっているタケハタです。

ヘンリーは去る2025年11月1日に、Kotlin Fest 2025にことりスポンサーとしてスポンサーブースを出展しました。
イベント後に報告のエントリーで書いていたのですが、ブースでコンテンツとしてクイズを出題し、多くの方にチャレンジしていただきました。

そのクイズは「【挑戦状】誰が書いたコードか当てまShow!!」と題し、ヘンリーのエンジニア4人が同じ問題に対してコードを書き、どのコードを誰が書いたか当ててもらうというもので、非常に盛り上がり楽しんでいただくことができました。
そこで今回はそのクイズの紹介と答えの解説を書こうと思います。

正答は下の方に書きますので、この記事を読んでいただいているみなさまもぜひチャレンジしてみてください!

出題したクイズ

回答者紹介

まずはコードを書いた回答者4名の紹介です(私も回答しています)。
こちらのプロフィールがどのコードを書いたか当てる上でのヒントになります。

コードを書いた4名

VPoTや創業エンジニア、料理長までいてバラエティに飛んだ面々です。

問題

4人が回答した問題は以下です。
上のコメント部分が問題で、書かれている仕様に沿ってsolve関数を実装し、想定実行結果と同じ内容が出力されるようにします。

/**
 * 
 * 問題: 以下の仕様を満たすように、`solve` 関数を実装してください。
 * 
 * - 標準入力から複数行の `name score`(スペース区切り)を読み取ります。
 * - 同じ名前が複数回登場した場合は、スコアを合計します。
 * - 合計スコアの降順、スコアが同じ場合は名前の昇順で並べます。
 * - 同点の場合は同順位とし、順位はスキップされます(例:1位,1位,3位)。
 * - 上位3名を出力してください。
 * - 出力形式は `順位. 名前 スコア` とします。
 */
fun solve(input: String): String {
    // 実装する
}

fun main() {
    val inputs = listOf(
        // --- Case 1 ---
        """
        alice 10
        bob 7
        alice 5
        cara 7
        dave 7
        """.trimIndent(),

        // --- Case 2 ---
        """
        taku 30
        haru 20
        ken 25
        haru 15
        ken 10
        """.trimIndent(),

        // --- Case 3 ---
        """
        a 5
        b 5
        c 5
        d 1
        e 10
        """.trimIndent()
    )

    for ((i, input) in inputs.withIndex()) {
        println("=== Case ${i + 1} ===")
        println(solve(input))
        println()
    }
}

想定実行結果
=== Case 1 ===
1. alice 15
2. bob 7
2. cara 7
2. dave 7

=== Case 2 ===
1. haru 35
1. ken 35
3. taku 30

=== Case 3 ===
1. e 10
2. a 5
2. b 5
2. c 5

Collection操作が多く必要で、書き方のクセが出やすい問題になっているところがポイントです。

選択肢(4人のエンジニアが書いたコード)

そしてそれぞれのエンジニアが書いたコードが以下のA〜Dの4つになります。

Aの回答

fun solve(input: String): String {
    var prevScore: Int? = null
    var prevRank = 1
    return input.split("\n")
        .map { it.split(" ") }
        .groupBy({ it[0] }, { it[1].toInt() })
        .mapValues { it.value.sum() }
        .toList()
        .sortedWith(compareByDescending<Pair<String, Int>> { it.second }.thenBy { it.first })
        .mapIndexed { index, (name, score) ->
            val rank = if (prevScore == null || prevScore > score) {
                index + 1
            } else {
                prevRank
            }

            (rank to "$name $score").also {
                prevScore = score
                prevRank = rank
            }
        }.takeWhile { it.first <= 3 }
        .joinToString("\n") {
            "${it.first}. ${it.second}"
        }
}

Bの回答

fun solve(input: String): String {
    val rankingList = input.lineSequence().map { line ->
        val array = line.split(" ")
        Pair(array[0], array[1])
    }.groupingBy {
        it.first
    }.fold(0) { sum, (_, score) ->
        sum + score.toInt()
    }.toList().sortedWith(
        compareByDescending<Pair<String, Int>> { it.second }.thenBy { it.first }
    )

    return buildString {
        var rank = 0
        var lastScore = 0
        rankingList.forEachIndexed { index, (name, score) ->
            if (lastScore != score) {
                rank = index + 1
            }
            if (rank > 3) {
                return@forEachIndexed
            }
            appendLine("$rank. $name $score")

            lastScore = score
        }
    }
}

Cの回答

fun solve(input: String): String {
    val scoreMap = buildMap<String, Int> {
        input.lineSequence().forEach {
            val (name, score) = it.split(' ', limit = 2)
            set(name, getOrDefault(name, 0) + score.toInt())
        }
    }
    val rankingMap = scoreMap
        .asIterable()
        .sortedWith(compareByDescending<Map.Entry<String, Int>> { it.value }.thenBy { it.key })
        .groupBy({ it.value }, { it.key })
    val topScorers = sequence<Triple<Int, String, Int>> {
        var rank = 1
        for ((score, names) in rankingMap) {
            val competitionRank = rank // 標準競技順位
            for (name in names) {
                yield(Triple(competitionRank, name, score))
                rank++
            }
        }
    }
    return topScorers
        .takeWhile { (rank, _, _) -> rank <= 3 }
        .joinToString("\n") { (rank, name, score) -> "$rank. $name $score" }
}

Dの回答

import java.util.TreeSet

typealias Name = String
typealias Score = Int

fun solve(input: String): String {
    // エントリを表すデータクラス
    data class Entry(val name: Name, val score: Score)
    data class RankedEntry(val rank: Int, val entry: Entry)

    // 登場人物のランキングSET
    class Ranking : TreeSet<Entry>(
        compareByDescending<Entry> { it.score }
            .thenBy { it.name }
    )

    tailrec fun aggregateScores(
        remaining: List<String>,
        scoreMap: HashMap<Name, Score> = HashMap()
    ): HashMap<Name, Score> {
        if (remaining.isEmpty()) return scoreMap

        val line = remaining.first().trim()
        if (line.isNotBlank()) {
            val (name, scoreStr) = line.split(' ')
            val score = scoreStr.toInt()

            scoreMap[name] = (scoreMap[name] ?: 0) + score

            return aggregateScores(
                remaining.drop(1),
                scoreMap
            )
        }
        return aggregateScores(remaining.drop(1), scoreMap)
    }

    // 集計
    val scoreMap = aggregateScores(input.lines())

    // Rankingクラスを使ってソート
    val ranking = scoreMap
        .map { (name, score) -> Entry(name, score) }
        .toCollection(Ranking())

    // 順位を計算し、上位3順位まで表示
    return ranking
        .foldIndexed(listOf<RankedEntry>()) { index, acc, entry ->
            // 順位の決定
            val rank = if (index > 0 && acc.last().entry.score == entry.score) {
                // 同点の場合は前の順位を維持
                acc.last().rank
            } else {
                // スコアが異なる場合は順位を更新
                index + 1
            }
            acc + RankedEntry(rank, entry)
        }
        .takeWhile { it.rank <= 3 }
        .joinToString("\\n") { "${it.rank}. ${it.entry.name} ${it.entry.score}" }
}

ここまでが問題になります!

誰がどのコードを書いたかわかりましたか?
正答と解説は下の方にありますので、回答を終えた方は下の方へスクロールしてください!



































正答と解説

A: Kengo TODA

AはヘンリーのVPoT、VPoEであるKengo TODAが書いたコードでした。
ポイントとしてはすべての処理をメソッドチェーンで書いている点ですね。
「ひとこと」に書かれている「全ては流れであり、流れこそが全てである...」で始まる文章がヒントで、すべてがチェーンされているコードは、まるで流れに身を任せているかのような処理を表現しています。

正解された方からは以下のようコメントをいただきました。

  • 全ては流れであり、流れこそが全てであるって書いてあるから全部メソッドチェーンしてる人だと思った
  • 初手split("\n")してるのはJavaっぽいと思ったので、Kotlinを好きって書いてる人とは違うと思った

適切にヒントを読み取って正解されている方も多くいました!

B: タケハタ

Bは私、タケハタが書いたコードでした。
私は一応Kotlinの書籍も過去に出版していて、「ひとこと」にも書いている通り「ワタシ Kotlin チョットデキル」人間として名乗っています。
なのでgroupingByfoldという普通の人がなかなか知らない関数を使用したり、PairのListをforEachIndexedで回す時に(name, score)で扱ったりと、Kotlinの機能をふんだんに使ったコードに仕上げました。

正解された方からは以下のようコメントをいただきました。

  • Pairを(name, score)で扱ってるのはKotlin玄人っぽい感じがした
  • buildStringはKotlin知ってる人っぽい

個人的な想定とは違ったのですが、StringBuilderではなくbuildStringを使うところにKotlinっぽさを感じてわかったという方がかなり多くいました!
やはりKotlin FestではKotlinが好きな方が多く来られていたので、こういった意見も興味深かったです。

C: creasty

Cはヘンリーの創業エンジニアであるcreastyが書いたコードでした。
このコードは正答率も低く、私もポイントがわからなかったのでなにがヒントだったのか後から本人に確認したのですが、なんと「なにも考えてなかった」という答えが返ってきました!
つまりプロフィールにはヒントがなにもなかったのです。どおりで正答率が低いわけですね。

ちなみに正解された方の中には

  • 予測不能って書いてるからこれだと思った

とおっしゃっていた方もいたのですが、その方にはコードからなにか感じる予測不能な要素があったのかもしれません。

D: giiita

Dはヘンリーの料理長であるgiiitaが書いたコードでした。
ポイントとしては「ひとこと」にある「業務コードとしてレビューしてもらう気持ちで実装しました」と書かれている通り、コードに丁寧なコメントが書かれている点ですね。
あとは「好きな言語」にScalaを書いていることもポイントで、正解された方からは

  • tailrec使うの絶対Scalaの人でしょ!

というコメントもいただきました。
このコードは正答率も一番高かったです!

あとはなぜか

  • 「趣味: 土地間取り探し」でわかりました!

とおっしゃっていた方もおり、やはりコードにはエンジニアの様々な一面が表現されるものなのだなと、感動を覚えました。

クイズはいかがだったでしょうか?

本記事を読んでいただいたみなさまは、どのコードを誰が書いたかわかったでしょうか?

当日、ブースでこちらのクイズを多くの方が真剣に取り組み、楽しんでいただけました!
かなり難しいクイズになるかと思ったのですが、想像以上に多くの方が正解していて、参加者のみなさまの洞察力に驚きました。
今後もヘンリーでは様々なイベントで、楽しんでいただけるコンテンツを用意していきますので、ブースなどで見かけた際はぜひお立ち寄りください!

告知: Kotlin Fest 2025のアフターイベントを開催します!

最後に告知です。
ヘンリーでは11月25日(火)に、Kotlin Fest 2025の非公式アフターイベントとしてServer-Side Kotlin Night 2025を開催します!

henry.connpass.com

弊社からKotlin Festに登壇したnabeoも含む、計8名の登壇者でお送りするServer-Side Kotlinのイベントです。
当日直前まで申し込み可能ですので、ぜひこちらもご参加いただければと思います!

HealthTech Meetup vol.2を開催しました #healthtechmeetup

ヘンリーでPMをやっているdamです。

2025/10/24にタイミーさんのタイミー広場をお借りして、メドレーさん、リンケージさんと合同で「HealthTech Meetup vol.2」を開催しました。

healthtech-meetup.connpass.com

ショートトーク紹介

今回は『おもろムズい医療業界』のテーマに沿った各社のショートトークからはじまりました。

弊社からは前々職から15年電子カルテの開発に関わり続けている尾渡が登壇しました。

15年間で感じてきた医療業界特有の苦悩や葛藤を語り、会場からは「あるある〜」と共感の声が湧いていました。

公募LT紹介

今回は参加者からの公募LTを事前募集し、5名の方に登壇いただけました。

どの発表も面白い内容で、それぞれが医療の課題についてどのように向き合っているかの話が興味深かったです。

特に今回は医師の方にもご登壇いただき、より現場視点の話が語られる貴重な機会として盛り上がるシーンもありました。

もっとお話を聞きたい!と思ったところで制限時間5分の銅鑼が鳴り響いて終了〜の流れも盛況で、話の続きについては懇親会で大いに語り合っていただくこともできました。

本イベントを開催してみて

実は前回vol.1の開催に対してvol.2でお申し込み頂いた方は新規の方が多く、はじめましての方々と多く出会えた機会でもありました。

まだまだ医療界隈には知らない領域で頑張っている人が大勢いらっしゃいますね!

次回のHealthTech Meetup vol.3は年明け3月頃の開催を予定しています。まだまだこの輪を広げて、引き続きHealthTech業界を盛り上げて行きたいと思いますので、応援よろしくお願いいたします。

ご参加いただいた皆様、ありがとうございました!!

大変使いやすい会場をご提供くださったタイミーさんも、ありがとうございました!!

さいごに

ヘンリーでは医療 DX を通じて理想駆動で社会課題を解決してくれる仲間を募集しています!!気になった方は気軽にカジュアル面談をお申し込みください。

また、2025年11月13日に弊社のエンジニアとカジュアルに話せる少人数のイベントを予定しています。こちらも併せてご検討ください。

ヘンリーにおける Honeycomb 活用を紹介します

株式会社ヘンリーで SRE をやっている id:nabeop です。

弊社で開発しているクラウド型電子カルテ・レセコンシステムの Henry は複雑な医療ドメインを紐解いてシステムとして実装しており、開発と運用の両面でドメインの複雑性からくる問題の迅速に特定・解決することは重要なテーマです。

このため、弊社では OpenTelemetry を活用してアプリケーションのトレース情報を収集し、Honeycomb を活用してトレース情報の分析を行っています。この記事では、弊社での Honeycomb の活用方法について紹介します。

続きを読む

ヘンリーではクラウド基盤の移行プロジェクトを開始しています

株式会社ヘンリーで SRE をやっている id:nabeop です。

今回は SRE チームが中心になって Henry のクラウド基盤を Google Cloud から AWS に移行しようとしているプロジェクトについて紹介します。

なぜ、クラウド基盤を移行するのか?

レセコン一体型電子カルテの Henry は開発当初からクラウド基盤として Google Cloud の Cloud Run や Cloud SQL を使っていました。Henry の開発当初はインフラ担当のエンジニアがいない状態でも少ない人数で最速でサービスを開発する必要があったため、インフラ部分が抽象化されている Google Cloud を選択するのはごく自然な選択だったと思います。

Henry の開発が進むにつれて、開発当初はクリニックを想定していましたが、回復期リハビリテーション病院や急性期のような複雑な機能が必要な医療機関での利用も想定されるようになりました。このように開発開始当初に想定していたよりも複雑な機能が求められつつ、高い信頼性が求められる医療機関さんへの導入を見据え、コンテナの実行基盤を Cloud Run から GKE など抽象化レベルが低く、我々がより細かいコントロールが可能なサービスへの移行についても検討はしました。しかし、Henry のサービス特性などを総合的に考えた結果、クラウド基盤として AWS が適切であると判断しました。

また、急性期の医療機関さんのように24時間/365日で高い稼働レベルを求められる医療機関さんが使い始めるまえにクラウド基盤そのものの移行というリスクの高いプロジェクトを完了しておきたいという背景もありました。

移行プロジェクトの現在地

Henry のアプリケーション部分は Docker コンテナで稼働しているため、クラウド基盤を変更しても全く動かないということはありません。しかし、Google Cloud と AWS では異なる部分もあるため移行を本格的に開始するにあたり下記のような検討を実施しました。

  • Google Cloud で構築している内容と同等の構成を AWS で実現するにあたっての懸念点の整理と大まかなコストの試算
  • PoC として Henry の最低限の機能を AWS 上で構築し、上記の懸念点以外に大きな見逃しがないかの確認

現在は、PoC 検証によって大きな見逃しはないものの、Google Cloud と AWS での機能差異や AWS では実現が難しい機能が存在することは確認できたので、これらのギャップを埋めるためのアプローチや不確実性の解消のための検証を実施しています。具体的には以下のような検証やアプローチの検討があります。

  • Google Cloud (Cloud SQL for PostgreSQL) から AWS (Aurora for PostgreSQL) データマイグレーション時の手順と想定されるダウンタイムの予想
  • アプリケーションの CI/CD パイプラインの作り直し
  • AWS での置き換えが難しい機能を Google Cloud で維持するための手段の検討
  • アプリケーションの移行手順の検討
  • ECS サービスの構成の検討

今は上記の内容のうち、予想される不確実性のうちリスクが高いものや不確実性が大きいものを優先して検証しています。

Henry 本体の開発スケジュールとの兼ね合いはありますが、これらの課題を順次解決していき来年中には AWS への移行を完了させる見込みです。

we are hiring!!!

稼働済みのサービスのほぼ全ての機能でクラウドサービスの移行をするというのは今のタイミングでしかできない珍しい取り組みだと思います。また、AWS に移行したあとにも高い信頼性が求められる医療機関さんにも安心して使っていただけるように DR やセキュリティ周りの強化に踏み込んでいく予定です。

AWS 移行プロジェクトだけでなく、高い信頼性が求められる医療機関さんに安心してお使いいただけるシステムにしていくには、さまざまな課題を解決する必要があります。ヘンリーではこれらの課題を一緒に解決してくれる仲間を募集しています。

ヘンリーでの SRE の取り組みに興味をもたられたら、ぜひ気軽にカジュアル面談などでご説明させていただきたいです。

Cloud Operator Days Tokyo 2025 に参加しました

株式会社ヘンリーで SRE をやっている id:nabeop です。

2025年9月5日にクロージングイベントが開催され、Cloud Operator Days Tokyo 2025 が終了しました。会社としての参加は今回が初めてでしたが、クロージングイベントではたくさんのかたに弊社ブースを訪れていただき、とても有意義なイベントでした。運営事務局のみなさま、素敵なイベントを開催していただきありがとうございました。

今回はブースの様子や弊社から登壇した内容の紹介などをご紹介できればと思います。

続きを読む