2019」の3日目の記事です。id:chiiichellのエンジニア2年生がリーダブルコードを読んで今年自分が書いたコードを振り返るでした。Divisionの加賀谷です。内部統制の実現手段の1つである「ITへの対応」について整備改善を日々進めています。社内の内部統制事務局と監査法人に評価とアドバイスをいただきながら、IT統制のうちの全般統制への対応を実施しています。GitHubがとても有効だと感じることが多くありました。この記事では先の記事に学び行ってきた中で、弊社のIT統制におけるGitHubの活用事例をご紹介したいと思います。規程類の管理GitHubにリポジトリを作り、規程類をMarkdownで統制項目毎に.mdファイルを作っています。Issueに起こして議論を進め、規程の更新はプルリクエストを経てmasterへマージしています。Flowで運用していて、masterが現在適用されている統制の整備状況としています。規程類は一度作り終えたら終了というものではなく、会社やサービスの維持と発展のために改善を加えていくものなので、どういった経緯でこの方法になったのか、どんなIssueからどんな議論がされたのか、追跡や検索ができることが大切です。いった面からもGitHubはとても有効です。PDFとホスティングまた、GitHubとは直接関係ありませんが、規程類をMarkdownで書いておいて良かったことを紹介します。GitHubでMarkdownが表示できるとはいえ社外の監査法人とやりとりする時があるので、リポジトリに参加してもらうことは現実的に難しかったりします。そこで、スクリプトでMarkdownをPDFに変換しています。markdown-pdfではCSSでフォントや紙のサイズを指定することができるので、文書のデータと体裁を分けて考えることができます。concatもできるので、1つのMarkdownファイル毎に1PDFではなく、規程類のまとまり毎に1つのPDFにconcatしています。"";}GitHubに参加していない社内メンバーに公開するにはDocusaurusが便利です。Markdown+Docusaurusの活用についてはBASEの開発者様向け機能のドキュメントサイトをリニューアルしたときの記事もご覧下さい。本番データベースなどの重要なシステムにアクセスする特別な権限を持つメンバーは、業務に応じてアクセス管理権限一覧に基づき設定しています。特権の付与や権限を変更する際には責任者の承認を必要とするワークフローにしています。今誰がアクセス権限を持っているかの一覧、どういう理由で申請したのか、誰が承認したのか。ワークフローの構築と証跡管理、モニタリングにGitHubを使っています。アクセス管理権限一覧をYAMLで書いておき、追加及び削除の申請はYAMLファイルへプルリクエストをして、必要な承認者のレビュー(PullRequestのapproved)を受ける運用にしています。定義することでプルリクエスト作成時に自動で固定できます。ファイル自体のコードオーナーは、モニタリングするメンバーにしています。実施していませんが、gitリポジトリ内のYAMLファイルにすることでプログラムとの親和性が上がり、TerraformやAnsibleなどインフラ構成管理の中にも組み込むこともできると思います。CODEOWNERSの例です。して障害は起きないように策を講じるのですが、万が一事故や障害が起きたときには解決に至るまでを記録・管理する手段を講じておくことが必要です。Actionを使っています。ようなチャンネルを作り現況報告をするところから始まります(Slackがダウンしていたら代替のチャットで)。Actionで定期的に障害のチャンネルが作られているかどうかを監視し、あった場合にはGitHubに障害管理Issueを作ります。障害管理Issueは自動的にincidentタグをつけて責任者にアサインされます。責任者が障害報告を書いて障害対応が終わったらIssueをクローズしています。GitHubで管理し起票を自動化することで、報告漏れをなくし、未解決の障害や根本対応を要するものの定期的な棚卸しなどが容易になりました。Actionは次のように書いています。ActionのJasonEtco/create-an-issueはIssueをテンプレートから作るActionです。このActionを定期的に行う必要があるSaaSのアカウントの棚卸しタスクに使っています。Issueとして作成し、各SaaS管理者にアサイン、棚卸し内容を書いて終わったらクローズするという運用で証跡管理しています。workflow_templates/review_accounts/slack.md内部統制の環境整備と開発者体験の両立を目指して弊社の事例をご紹介させていただきました。手探りでやっているところが多いので、活用事例をお持ちの方いらっしゃったらぜひお話を聞かせていただきたいです。コーポレートエンジニアのミッションは、ショップオーナーに安心してサービスを使い続けていただくために、業務の有効性及び効率性・財務報告の信頼性・事業活動に関わる法令などの遵守並びに資産の保全といった内部統制の環境整備と開発者体験の両立を考え続け、改善し続けていくことです。必要以上のルールや運用が難しい統制を固めることでサービスの成長スピードを落とさず、逆に加速できるよう、柔軟なバランス感を持って改善を進めていきたいと思います。Calendar」の記事一覧はこちらです。)の開発チームによるブログです。Groupのマネージャーをしている山田です。12/1から始まっ...ほとんどの事はコミュニティから学んだアドベントカレンダー最終日です!BASEで代表を務めている鶴岡です。いつもこの時期...コーチングとスタートアップの相性がいい理由はじめまして。2019の25日目の記事です。BASE株式会社でCTOをやっ...スーパーヒーローに憧れ続けてプロダクトマネージャーになったBASEに入社する前からインターネットプロダクトが大好きだったのもあり、そこに全力を注げる環境もあるの...Archiveスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。