Safie Engineers' Blog!

Safieのエンジニアが書くブログです

セーフィーの知財研修のお話

この記事はSafie Engineers' Blog! Advent Calendar 11日目の記事です

はじめに

みなさんこんにちは。法務部知財グループの永島です。

セーフィーでは様々な社内研修を行っていますが、今回は知財研修にスポットをあててお話したいと思います。

  • はじめに
  • 知財研修ってなに?
  • セーフィーの知財研修
  • 入社時の知財研修
  • 希望者は誰でも受講できる任意知財研修
  • 知財研修への想い
    • 知財研修を始めたきっかけは?
    • 入社時の必須研修に知財研修(基礎編)を入れた理由は?
    • 知財研修の対象者を開発や企画だけでなく全社員とした理由は?
    • 知財レビュー(半年に1回)を始めたきっかけは?
    • 経営層への知財レビューを対面で実施している理由は?
    • 最後に、知財研修への想いを教えてください。
  • おわりに
続きを読む

セーフィー、関東地方発明表彰で「発明奨励賞」を受賞!

この記事はSafie Engineers' Blog! Advent Calendar 10日目の記事です

「社内プチ表彰式」の写真

はじめに

みなさんこんにちは。法務部 知財グループの永島です。
セーフィーでは、2022年に知財部門を立ち上げて以来、20件以上の特許が登録されています。
今回は、その中の1件について、上記表彰に応募したところ無事に受賞できましたので、お話いたします。

  • はじめに
  • 地方発明表彰とは
  • 受賞内容
  • どんな発明?
  • 本件特許に込めた想い
  • 「社内プチ表彰式」の様子
  • おわりに
続きを読む

エンジニアリングオフィスってなに? ~組織開発の第1歩 ~

この記事はSafie Engineers' Blog! Advent Calendar 9日目の記事です。

あいさつ

こんにちは!セーフィーの井上と申します!
2023年11月に入社し、エンジニアリングオフィスの一員として日々業務に取り組んでいます。

今回はセーフィーの「エンジニアリングオフィス」という部署は一体何をしているのか、皆様への紹介も兼ねて取り組んでいることについてお伝えさせていただきます!

  • あいさつ
  • エンジニアリングオフィスとは?
  • エンジニアリングオフィスのミッション
    • ミッション達成するためには
  • 取り組み内容
    • テックブランディング向上施策
    • テックブログ
      • 次のステップへ
    • 開発本部アイデアソン
      • 2024年の進化過程
        • 社内認知の向上と参加者の拡大
        • 第3回での大きな進展
      • 2024年の活動を通して得られた成果
        • 社内認知向上が一定の成果を達成
        • オンボーディング・ネットワーキング構築の取り組みとして採用
  • まとめ
  • 終わりに
続きを読む

2024年新卒エンジニア研修-新卒研修の成果発表とその後

この記事はSafie Engineers' Blog! Advent Calendar 8日目の記事です

はじめに

こんにちは、第1開発部でサーバーサイドエンジニアをしている坂上(さかうえ)です。今回は2024年新卒エンジニア研修における成果発表と、その後についてお伝えします。

  • はじめに
  • 研修の成果発表
  • サービス運用
    • 運用方針
    • 運用開始後
  • ナレッジ共有会
  • 最後に
続きを読む

2024年新卒エンジニア研修-isai connect開発のアウトプット_デバイス編

この記事はSafie Engineers' Blog! Advent Calendar7日目の記事です

はじめに

こんにちは。第4開発部でデバイスエンジニアをしている集路(しゅうじ)です。
今回は2024年新卒エンジニア研修におけるデバイス分野の開発についてお話しします。

  • はじめに
  • セーフィーでの2024年新卒エンジニア研修と作ったプロダクトの紹介
  • 開発したデバイスの概要
  • デバイス機能の決定まで
  • 開発上の苦労・工夫点
  • 今後の展望
  • 最後に
続きを読む

2024年新卒エンジニア研修-インフラ構築編

この記事はSafie Engineers' Blog! Advent Calendar 6日目の記事です。

はじめに

 こんにちは。第2開発部でフロントエンドエンジニアをしている東條です。今回は、2024年新卒エンジニア研修におけるインフラ分野の開発についてお話ししたいと思います。

  • はじめに
  • セーフィーでの2024年新卒エンジニア研修と作ったプロダクトの紹介
  • 導入
  • 定期実行について
  • バージョン更新とメンテナンスについて
    • バージョンが更新されているのかどうかが判断できない
    • バージョン更新中にアクセスするとエラーになる
    • Slackへの通知が確認できない
  • 感想
続きを読む

2024年新卒エンジニア研修-フロントエンド開発編

この記事は Safie Engineers' Blog! Advent Calendar 5日目の記事です。

自己紹介

こんにちは。セーフィー株式会社 開発本部所属の佐々木 大翔(ささき ひろと)と申します。今回は、我々が行った2024年度新卒エンジニア研修における、フロントエンド開発についてお話ししたいと思います。

  • 自己紹介
  • エンジニア研修と開発したプロダクトについて
  • 活動内容
    • 画面定義
    • 画面実装
      • 使用技術
      • 工夫した点
    • テストコード実装
      • テスト方針
      • テストツール
      • 気をつけたこと・学んだこと
  • 試行錯誤した部分
    • 改善例
      • トップ画面の改善
      • プログレスバーの追加
  • アプリのフロントエンド開発をしてみて
続きを読む

2024年新卒エンジニア研修-isai connect開発のアウトプット_サーバーサイド

この記事は Safie Engineers' Blog! Advent Calendar 4日目の記事です。

はじめに

 こんにちは。第3開発部でエンジニアをしている伊東です。今回は2024年新卒エンジニア研修における、バックエンド分野の開発についてお話しします。

セーフィーでの2024年新卒エンジニア研修と作ったプロダクトの紹介

 セーフィーでは全体研修後、約3ヶ月のエンジニア研修があり、エンジニアとしての基礎を学びつつ、社内課題を解決するプロダクトを開発しました。課題選定から開発言語、体制まで全て自分たちで決める形式で、私たちは「isai connect」を開発しました。これは、他部署の方とランチに行くと会社がランチ代を負担してくれる「異才ランチ」制度をより活用し、活発化を図るためのプロダクトです。詳しくは以下の記事でご覧ください。

  1. 新卒研修の紹介とチーム開発前にやったこと
  2. アジャイルを実践してみる
  3. isai connectについて
  4. isai connect開発のアウトプット_サーバーサイド ←本記事
  5. isai connect開発のアウトプット_フロント (12/5 公開予定)
  6. isai connect開発のアウトプット_インフラ (12/6 公開予定)
  7. isai connect開発のアウトプット_デバイス (12/7 公開予定)
  8. 新卒研修の成果発表とその後 (12/8 公開予定)

機能

 isai connectで実装した主要機能は以下の通りです。isai connect管理者にはユーザ管理機能、ユーザにはレコメンド機能とコネクト機能を提供しています。

  • ユーザ管理
    月一で従業員名簿からユーザを作成・更新・削除する機能です。isai connectに登録していないユーザもレコメンドし、コネクトさせる必要があるため従業員名簿からユーザを一括登録しています。
  • レコメンド
    一緒にランチするメンバーを指定したチームからランダムに提示してくれる機能です。「全従業員が保持している属性」「属性判別が容易」の2観点からチーム指定をまず実装しました。今後は様々な属性を指定できるようにしていきます。
  • コネクト
    レコメンドされたメンバーに対してランチを誘うSlack DMを送信し、ランチ参加者だけのSlackグループを作成する機能です。社内の主なコミュニケーションツールであるSlackのDM機能を使用することで、メッセージの見逃しリスクを低減し、スムーズな意思決定を促進しています。

設計

 isai connectのバックエンド実装を設計書を用いて説明します。

ER図

 以下にisai connect用のER図を示します。

 各テーブルが管理している情報は以下の通りです。

  • ユーザ情報
  • 部門情報
  • 部署情報
  • グループ情報
  • コネクト実績情報
  • ユーザに関連する製品情報
  • コネクト状況の情報
  • コネクト参加者の情報

 コネクト実績とユーザに関連する製品情報を管理するテーブルは、ユーザと多対多の関係になることから、中間テーブルを使用して効率的に管理できるようにしています。

シーケンス図

 開発当初は処理ロジックを明確にするためシーケンス図を作成していましたが、API仕様書をフロントエンドと協議して作成する際に実装ロジックが明確になり、共通理解が生まれるため、途中から作成されなくなりました。開発時のシーケンス図の利用頻度は高くはありませんでしたが、参考としてレコメンドからコネクトまでのシーケンス図を掲載します。

API仕様書

 1〜3スプリントでは、認識の齟齬を生まないために予めフロントエンドと協議してAPI仕様を策定し、仕様書としてドキュメント化していました。4スプリント目では協議とドキュメント化の時間削減を目的に、バックエンドが定義したAPI仕様をSwagger UIを通じてフロントエンドに渡し、必要であれば都度修正するという試みを行いました。しかしながら、この試みは都度修正の特性上、フロントエンド・バックエンド双方に手戻りを多く強いることになり、結果として多大な時間を浪費することになりました。Swagger UIをドキュメントの代替として用いたことは間違ったアプローチではありませんでしたが、事前の十分な協議なしにこの方法を導入したことが問題でした。

 以下に最終的に作成したisai connectのAPI仕様書の一部を示します。

 isai/random/は、部門及び部署をクエリパラメータとして指定することで、ランダムなユーザを一人取得するためのAPIです。また、isai/connectは、ホストユーザーと1~3人のゲストユーザーのIDを受け取り、コネクトを行うためのAPIです。

実装

 isai connectのバックエンドの実装方法について説明します。

使用技術

 配属後の学習コストを減らす目的で、実際にセーフィーで活用されている言語及びフレームワークを選定しました。使用言語、フレームワーク、主要なライブラリは以下の通りです。

  • 言語
    • Python
  • フレームワーク
    • FastAPI
  • ライブラリ
    • Pydantic
    • SQLAlchemy
    • Alembic

ディレクトリ構成

 バックエンドの1層目の主要ディレクトリ及びファイルを以下に示します。

   app/
    ├── connect_db.py
    ├── cruds/
    ├── init_db.py
    ├── main.py
    ├── models/
    ├── routers/
    ├── schemas/
    ├── tests/
    ├── util/
    

 このディレクトリ構成で開発を進めた結果、ビジネスロジックがcrudsに集中してしまい、ファイルの肥大化と難読化が進行、重複処理が増加するという課題が生じました。この課題を解決するため、今後の開発ではディレクトリ構成の見直しが必要だと考えています。改善策としては、crudsディレクトリ内では純粋なデータベース操作のみを許容し、ビジネスロジックは新たに作成するservicesディレクトリに移動、共通処理の抽出などが挙げられます。これらの変更により、コードの構造が明確になり、保守性と可読性の向上が期待できます。

認証

 isai connectの認証では、セキュリティ面と実装の容易さから、OAuth2をベースに、JWTを認証トークンとする方式にしています。基本的な実装はFastAPI公式に従っていますが、トークンが漏洩した場合のリスクを軽減を目的に、追加でリフレッシュトークンを導入しています。また、トークンの保存にはHttpOnlyおよびSecure属性を持つCookieを使用しています。

工夫したポイント

 isai connectでは、ユーザの情報取得やDM送信のためにSlack APIを使用しています。これを逐次処理でおこなうと相当な時間を要するため、処理を並行化やマルチスレッド化することが検討されました。並行化とマルチスレッド化を比較したところ、処理時間平均に大きな差異はありませんでしたが、最小と最大の処理時間の差が並行化した方が少く、安定した性能であったため、並行化が採用されました。結果として、DM送信の処理時間を逐次処理したときと比較して2.6倍ほど早めることができました。

おわりに

 筆者は、インターンシップで個人でのシステム開発経験を積む機会がありましたが、チームとしてフロントエンドやバックエンドに分かれての開発経験は限られていました。個人開発の際には、設計のドキュメント化を軽視する傾向がありましたが、チーム開発を経験した現在では、チーム内共有の観点からその重要性を強く認識するようになりました。現在所属する部署では、実装だけでなく、事前の調査や事後の評価など、実装の前後のプロセスも成果物の一つとして重視されています。そのため、配属前にドキュメント化の重要性に対する意識を高められたことは、非常に有益でした。
 今後、isai connectは開発フェーズから運用フェーズに移行しますが、システムの拡張を継続し、社内コミュニケーションを活発にしたいと考えています。
 最後までご覧いただき、ありがとうございました。

2024年新卒エンジニア研修-isai connectについて

この記事はSafie Engineers' Blog! Advent Calendar 3日目の記事です

はじめに

こんにちは、第1開発部でサーバーサイドエンジニアをしている坂上(さかうえ)です。今回は2024年新卒エンジニア研修で開発したプロダクト「isai connect」について、その背景や機能を紹介します。

  • はじめに
  • isai connectを作った経緯
  • ターゲットと課題と解決策
  • 開発を始める前のエピソード
  • isai connectの機能紹介
    • 異才ランチに誘う人を探す機能
    • SlackのグループDM自動作成機能
    • コネクト履歴機能
    • コネクト実績機能
  • デバイス
  • isai connectを育てていく
続きを読む

2024年新卒エンジニア研修-アジャイル開発編

この記事はSafie Engineers' Blog! Advent Calendar 2日目の記事です。

はじめに

こんにちは!第1開発部でサーバーサイドエンジニアをしている古谷です! 今回は2024年新卒エンジニア研修で行った開発について開発体制の観点からお話しします!

  • はじめに
  • セーフィーでの2024年新卒エンジニア研修と作ったプロダクトの紹介
  • 開発体制をアジャイル開発に決定
  • スクラムで意識したこと
  • スクラムイベントでの工夫
    • ユーザーストーリーマッピング
    • スプリントプランニング
    • デイリースクラム
    • スプリントレビュー
    • レトロスペクティブ
    • ポジティブ共有会
  • 結果と感想
続きを読む

© Safie Inc.