ホワイトヘルスケア - テックブログ

ホワイトヘルスケアは、日本のヘルスケア領域における社会課題に正面から向き合い、現実世界を生きる人々の不安や痛みといった見過ごされるべきでない問題に対して本質的な解決に取り組むことで、持続的な医療システム・社会の実現を目指します。

【入社エントリー】育児とキャリアの両立を実現するために

はじめに

はじめまして、開発チームの岩本です。

2023年5月に業務委託から関わらせてもらい、2023年8月から正社員としてチームメンバーとなりました。 現在は熊本県在住で、夫と3歳と1歳の男の子との4人家族です。

育児とキャリアをどうやって両立しているのか、どういう工夫をしているの?といった部分を含め入社エントリーとして書かせていただきます。

転職を考えたきっかけ

前職では、自社サービスや受託開発の会社に勤めていました。 また、医療事務や医師事務作業補助で診療所に勤めていたこともあり、エンジニアとしても医療業界に関わっていければいいなと思ったのがきっかけです。

入社したきっかけや入社を決めた理由

転職先を探していたときに重視していたこと

以下の2点を軸に転職先を探していました。

  1. 医療業界に関連する仕事であること
  2. 働き方が柔軟で、育児と両立可能な環境があること(例:フルリモート)

入社したきっかけ

転職サイトで色々と情報収集をしていたところ、エージェント経由で人事の方からメッセージをいただきました。 その後、求人内容が自分の希望に沿っていると感じたので、カジュアル面談したのがきっかけです。

入社を決めた理由

事業・サービスで「一人ひとりが健康に向けて行動する社会の早期実現」という目標に、なるほど!そういう視点は面白いし今後絶対に必要になってくるだろうなと思い入社を決意しました。

入社前の不安とその後

入社前はいくつかの不安がありました。

  1. 子どもが突然発熱し、数日の休暇が必要になる可能性
  2. 本社が東京で、直接出社が難しい状況下でのリモートワークによるコミュニケーション(前職では本社が福岡で、緊急時には新幹線でアクセス可能だった)

これらの不安は、実際に入社してみると意外とスムーズに解消されました。

まず、入社初日から有給休暇が15日取得できるという点です。 入社すぐに取得するのは気が引けると感じましたが、人事の方から必要なときは休んでくださいと声をかけていただきとても助かりました。

次に、コミュニケーションに関してですが、開発チームの雰囲気のセクションでも記載していますが、テキストコミュニケーション能力が非常に高い方が多く進捗に大きく影響する問題は起きませんでした。

以上のように、入社前に感じていた不安は実際には会社の文化や制度によってほぼ解消され、より安心して仕事に取り組むことができました。

入社後の仕事内容

健康保険組合向けの「セルフメディケーション支援」ECサイトの運用・保守、機能改善などを担当しています。 最近はRailsでの開発が多めです(笑)

開発チームの雰囲気

コミュニケーションスタイル

私たちの開発チームにはフルリモートで働いているメンバーもいるため、コミュニケーションは基本的にテキストベースです。 しかし、メンバーそれぞれのテキストコミュニケーション能力が非常に高いため、多くの課題や問題点はオンライン上でスムーズに解決しています。

ペアプログラミングと認識合わせ

テキストだけでは足りない時はペアプログラミングやビデオ会議を利用して、認識齟齬がないようにしています。

オープンなフィードバック

また、進捗のMTGで「困っていることを気軽に共有できる場が欲しい」と提案したところ、その意見がすぐに取り入れてくれました。 結果として、個々のメンバーが気軽に質問や疑問を投稿できる、times風のチャンネルが作成されました。 これにより、チーム内での情報共有がさらにスムーズになっています。

育児と仕事の両立について

両立するための工夫

うまく進んだとき(理想)の1日のスケジュールはこんな感じです。

1日のスケジュール(画像作成元:tools.loumo.jp さま)

保育園のお迎えなど、家庭の用事を優先したい時間帯は会社のカレンダー(Outlook)にスケジュール登録してMTGが入らないようにさせてもらっています。 夕食に関しては、昼休憩に作り置きできるようレシピと食材がセットになったミールキットを利用して時短できるところは工夫しています。

…体力が尽きた場合は、趣味開発の時間は睡眠時間へ変わります(笑)

共働き夫婦の協力体制

私の夫もフロントエンドエンジニアであり、在宅勤務をしていることから、家庭内での協力体制は工夫しています。 Google カレンダーでお互いの仕事スケジュールを共有し、家族専用の Slack ワークスペースで日常業務や家事に関する情報交換を行っています。

また具体的な役割として、夫は主に保育園の送迎(朝)、洗濯、ゴミの回収といったタスクを担当してもらっています。 このような明確なロール分担とコミュニケーションの高度化により、共働きでも業務と家庭の両立がスムーズに行えているのでキャリアを諦めずにフルタイムで勤務できているのかなと思います。

まとめ

カジュアル面談したときから、イメージが変わることがなくとても働きやすい環境だと感じています!

地方在住でフルリモート勤務ができるというのは、キャリアも諦めることなく働けるのでとても助かっています。 (夫の家族のサポートもフル活用できますし…笑!!)

まだまだ入社したばかりですが、私自身の技術もしかりプロダクトに関しても会社と共に成長していきたいと考えています。

採用情報

子育てしながらも働きやすい環境となっています! まだまだこれからの部分は一緒に作っていきましょう!! 少しでも気になった方は、ぜひお気軽にお問い合わせください!

採用情報詳細

hrmos.co

ActiveRecordにおけるscopeとclass methodの使い分けに対する考察

概要

  • ActiveRecord には、class method と同じような挙動をする scopeが定義できる
  • class methodscope を使い分ける方針として下記に統一すると良いと考える
    • 戻り値としてActiveRecord::Relationを期待する場合は scope
    • 戻り値としてActiveRecord::Relationを期待しない場合は class method

はじめに

ホワイトヘルスケア エンジニアの林です。

本記事は、Rails 初学者が scopeclass method の使い分けに悩み、最終的にどのように使い分けるか考察した内容を記載しています。

scope とは

公式より scope の説明を抜粋します。

よく使うクエリをスコープに設定すると、関連オブジェクトやモデルへのメソッド呼び出しとして参照できるようになります。スコープでは、where、joins、includes など、これまでに登場したメソッドをすべて使えます。どのスコープメソッドも、常に ActiveRecord::Relation オブジェクトを返します。

railsguides.jp

私はホワイトヘルスケアに join するまで Django を扱っていましたが、この scope という概念は Django にありません。また、プロジェクトに途中から join したこともあり、コード内に定義されていた scopeclass method を見て、ふわっとした理解から入ったため、使い分けに悩みました。

使い分けに悩んだ点は、scopeclass method で同じ挙動を定義できる点です。 例えば、以下の scopeclass method は同じ挙動をします。

class Article < ApplicationRecord
  # 公式ページに挙げられているscope例
  scope :published, -> { where(published: true) }

  # 上記scopeと同じ挙動をするclass method
  def self.method_published
    where(published: true)
  end
end

Ruby には for 文のように、同じ挙動を異なる表現で実装できるということもあり、使い分ける必要があるのか非常に悩みました。

scope の位置付けと class method の使い分け考察

使い分けを考えた際、Rails における scope の役割や位置付けは何かを調べました。結論として、位置付けに関しては、全てこの一文に集約されると考えています。

どのスコープメソッドも、常に ActiveRecord::Relation オブジェクトを返します。

また、scope という単語が表す「範囲」という意味からも、レコードの範囲を絞るために使う(= filter として使う= ActiveRecord::Relation オブジェクトを返す)ことが想定されている役割であると考えました。

(余談)個人的には、この一文は Rails における scope の位置付けを示しており、コーディング規約(もっというと Rails の思想)に関わるため、もっと強い言葉にした方が良いと思っています。

では、scope はレコードの範囲を絞るために使う、とした場合に、class method はどのように扱うべきか? 結論としては、ActiveRecord::Relation オブジェクトを返さない場合は全て class method にする、という結論に至りました。

上記を実装方針とすることで、scopeclass method の役割が明確かつ分離されるため、レビュー時やリーディング時の認知負荷軽減にも役立つと考えています。(私が認識していなかっただけで、そのような実装方針は定まっていました)。

まとめ

scopeclass method の使い分けをまとめると以下になります。

  • 戻り値としてActiveRecord::Relationを期待する場合は scope
  • 戻り値としてActiveRecord::Relationを期待しない場合は class method
    • ex.1. ActiveRecord::Relationの値を変更する(戻り値は成功/失敗を表す bool)
    • ex.2. 特定条件に合わせたレコードを作成する(戻り値は作成したレコード)

このような実装方針とすることで、認知負荷を下げ統一のある実装になると考えています。

採用情報

Whitehealthcare に興味が出てきた方はこちらからチェックをどうぞ

https://hrmos.co/pages/whitehealthcare