見出し画像

PharmaXの11月の開発チーム勉強会を紹介します!

※本記事は、PharmaX Advent Calendar 2022の 23日目の記事です。

こんにちは!
PharmaX株式会社、SM事業部エンジニアの江田(@asamuzakE)です。
弊社の開発チームでは普段からチーム全体の能力向上を目的として、さまざまな活動をしています(合宿、勉強会、OST会、輪読会など)。

その中でも自分は今年6月から開発チーム内の勉強会のセッティングをしており、エンジニアメンバーに勉強会の依頼をしたり、日程調整・案内をしてきました。
定期的な技術のアウトプットの場や情報交換の場が少ないという課題感から始めた勉強会ですが、大きなイベントがあった月を除くと隔週以上のペースでうまく続けられています。

今回は11月に実施した2つの勉強会をざっくり要点に絞って紹介したいと思います!


テスト設計技法

1つ目は尾崎さん(@FooOzaki)に実施していただいたテストの設計技法の勉強会です。
テストの歴史やベーシックなテスト手法を解説した上で、どこまでテストのカバレッジを意識するか・最低限抑えるべきテストの観点は何なのかについて話していただきました!


テストの歴史

  • ウォーターフォールからアジャイルになるにつれて、効率よく短いスパンで開発するためにテストが自動化されていった。

  • テストが開発工程の最後にあると、それまでの開発工程によって生まれたバグをすべて最後にチェックしなければならないため、バグ検出効率も悪く、大きな手戻りのリスクもある。

  • できるだけ上流工程のうちにレビュー・認識のすり合わせをすることや、早い段階で自動テストを書くなどシフトレフトの考えが重要

テストの基本

  • ホワイトボックステストは変更に弱いがロジックの詳細までテスト可能、ブラックボックステストはロジックの詳細まで確認できないが、変更に強い

  • 境界値テストは、条件分岐などで処理が変わる境界に対し、その前後の値でテストを行い、結果が変わるか確かめるテスト

  • 同値分割テストは、異なる処理結果となるパターンだけテストを行い、結果が変わるか確かめるテスト。境界値テストが境界値の前後を全て確認するのに対して、こっちは処理結果が同じものは1つのパターンだけの確認となる。

  • 他にも状態遷移テスト、組み合わせテスト、命令網羅・分岐網羅テストなどがあるが、基本的には境界値テストを意識し、重要処理だけこれらを行うなど必要に応じてテストに濃淡をつけることが重要。

まとめ

  • テスト状況を把握する指標にはカバレッジを起きがちだが、全ての処理に対して網羅的なテストを書くことは予算・人員的に不可能なため、重要な処理・怪しい処理に絞って網羅的なテストを行い、そうでない部分は最低限境界値を考慮したテストを書くなど、濃淡が重要。指標としてはカバレッジに加え、レビューの密度や効率を見ていくと良いのでは。

  • システムテストで見つかるバグは多くて55%しかない。決まった要件・設計に沿ってコーディングするだけでは検出できるバグに限界があるため、上流工程からしっかり関わってなぜやるか・どう実現するかを深堀り認識を合わせていくことが重要。


Azure ADとIntuneを中心に構築するゼロトラスト・セキュリティ

2つ目は上野さん(@ueeeeniki)に実施していただいたゼロトラストセキュリティの勉強会です。
ゼロトラストとはなにか、どんな技術によって実現可能となるか、そしてPharmaXとして今後どのようなセキュリティ体制になる必要があるかについて解説していただきました!

ゼロトラスト

  • 「何も信用せず、すべての通信を疑う」というセキュリティモデル

  • 従来は組織の内部と外部に強固な境界を作ることで内部の安全を確保するという考え方だったが、近年分散する情報資産に多様なスタイル(勤務形態・勤務場所)の人々がアクセスすることが増え、内部が安全という前提自体が以前より成り立たなくなってきている。

  • これからは境界の内外関わらずすべてのアクセスを信頼せず確認するという考え方をする必要がある。

  • ゼロトラストセキュリティは生産性の高さと機密性・安全性を両立した企業活動の実現を目指しており、従来の境界防御モデルのように「自由を奪い、閉じ込めることで守る」という考えとは逆を行く

ゼロトラストを構成する主要技術

  • ゼロトラストは主に認証・認可、ネットワークセキュリティ、エンドポイントセキュリティ、ログ収集の4つの技術によって成り立っている。

  • IdPを用いたシングルサインオン+他要素認証をすることで利便性を向上させつつ安全性も担保する(認証)。また、IDプロビジョニング機能によって、ユーザーの追加・削除・変更に伴う他の複数サービスのユーザー情報や権限の自動変更も可能。

  • ユーザー、エンドポイント、ネットワーク、アクセスするデータのトラスト情報によって動的にアクセス可能かどうかの制御を行う(認可)。トラスト情報とは、ユーザーのログイン時間やデバイス、アクセス元の場所などに対し、不審な振る舞い・状態になっていないかという信頼性の情報。

  • クラウドプロキシ(SASE)を経由することによって、セキュアなWeb・SaaS・プライベートアプリケーションへのアクセスが可能となる(ネットワークセキュリティ)。

  • 端末の管理と最適化(MDM)によって端末を把握し、必要に応じて自動で設定やソフトウェアの配信などを行えたり、リモートからデータを消去できる(エンドポイントセキュリティ)。

  • EPP、EDPによるマルウェアの予防と感染後の対応、DLPによるデータ漏えいの防止(エンドポイントセキュリティ)。

  • これらを実現するためにアクセスのあらゆるログ収集・保管、監視と分析、可視化が必要となる。

AzureADやIntuneをつかって何ができるのか?

  • Azure ADは、ID管理、認証・認可の仕組み、Intuneはエンドポイントセキュリティを提供している。Azure ADとIntuneを中心とした製品群で、ゼロトラストの主要要素は殆ど網羅できる

  • SASEの一部の機能(SWGやZTNA)はEMSだけでは、完結できない

PharmaXの目指すべきセキュリティ

  • サービスは会社のリソースへのアクセスと捉えることができ、患者なのか薬剤師なのか認証し、患者であれば薬を提供するサービス、薬剤師であればレセコンや薬歴などのサービスにアクセスできる、という認証・認可の仕組みと捉えることができる。

  • すべてがゼロトラストに基づくサービス設計・情報統制の実現によって、患者・生活者も安心して医療サービスを享受し、サービス提供者である医療従事者も創造的に生産性高くサービスを提供できるような状態を創る


最後に

今回は、直近実施した2つの勉強会について要点をピックアップして紹介しました。
テスト技法の勉強会に関しては、開発速度と自動テストのカバレッジをどうバランスを取っていくか、どの観点を重点的に考えるかの部分が特に参考になりました!
また、ゼロトラストの勉強会では、そもそもゼロトラストって何?という状態だったのでどういうものなのか、何ができるのかという話はすごく勉強になりましたし、全てを疑うのに以前より生産性が上がるというのが面白いなと思いました!

勉強会は誰かが得た知識が掛け算的にチームに広まるという点でとても良いと思っているので、今後も継続していきたいですね。
12月はアドベントカレンダーに集中するため勉強会は少なめなのですが、また来年以降も実施した勉強会を紹介できればと思います!

この記事が気に入ったらサポートをしてみませんか?