hoomin.kani

KANISAN WEB

インフラ・サーバーサイドを頑張るカニが学んだあれこれ。

事業継続計画(BCP)とIPO準備に不可欠なIT統制のポイントまとめ


企業が成長を続け、将来的に上場を目指す際に避けて通れないのが、事業継続計画(BCP)とIT統制の整備です。

特に近年は、災害・サイバー攻撃・システム障害といったリスクが増大しており、これらにどう備えるかは企業価値や投資家からの信頼を大きく左右します。

本記事では、BCPの基本から、IPO準備で押さえるべきIT統制の要点までをまとめました。


1. 事業継続計画(BCP)とは

BCP(Business Continuity Plan) とは、災害・テロ・システム障害などの緊急事態に直面した際、重要な事業を止めない、もしくは可能な限り短時間で復旧させるための計画を指します。

BCPの目的

  • 重要業務の継続または早期復旧
  • 企業資産の損害を最小化し、倒産や事業縮小を防止
  • 顧客・株主からの信頼維持、企業価値の向上

実施プロセス

  1. 事業影響度分析(BIA)・リスク評価
  2. 事業継続戦略・対策の策定
  3. 計画の文書化
  4. 事前対策・教育訓練の実施
  5. 定期的な見直し・改善

情報システム面での重要ポイント(内閣府ガイドラインより)

  • 重要データのバックアップ確保と地理的分散保存
  • バックアップシステムや冗長化された回線・電源の用意
  • データ損失許容期間を踏まえたバックアップ頻度設定
  • 復旧時に不整合を防ぐための復帰計画
  • テレワーク環境での情報セキュリティ確保

📖 参考: 内閣府 事業継続ガイドライン(令和5年3月改訂)


2. ITガバナンスとIT統制の違い

IPO準備で混同されやすい概念に、 ITガバナンス と IT統制 があります。

項目 ITガバナンス IT統制
目的 経営目標達成に向けたIT活用の方針策定 ITリスク低減と適正運用の確保
対象 経営・全社レベル 実務・現場レベル
主体 経営層・役員会 各部門・現場責任者
例 IT戦略策定、IT投資判断 アクセス権管理、承認フロー
効果 競争力強化・企業価値向上 不正防止・法令遵守・内部監査対応

上場準備においては、 「ガバナンス=方針」「統制=実務」 という両輪を整えることが求められます。


3. SLA・SLO・SLIの開示

必須ではありませんが、投資家説明資料や契約上の信頼性証明として開示する企業が増えています。

  • SLA(サービスレベル契約): 顧客と合意する品質保証(例: 稼働率99.9%)
  • SLO(サービスレベル目標): 内部的に設定する具体的目標値
  • SLI(サービスレベル指標): 達成度を測る実績値

特にSaaS企業では「稼働率実績」の開示が信頼醸成につながります。


4. 国際規格(ISO認証)の取得

上場自体に必須ではないものの、取引条件や監査対応で役立ちます。

特に ISO27001(ISMS認証) は、IPO準備における内部統制工数を削減し、投資家や取引先からの信頼を得やすくなります。


5. J-SOX法(内部統制報告制度)

上場企業に義務付けられる制度で、財務報告の信頼性を確保することを目的とします。

  • 経営者は内部統制の有効性を評価し、内部統制報告書を金融庁に提出
  • 監査法人による監査を受ける必要あり
  • 重大な不備は修正・開示対象

IPO準備段階でも、将来を見据えた内部統制整備が望ましいとされています。

📖 参考: 金融庁「内部統制報告制度に関するQ&A」


まとめ

事業継続計画(BCP)は「企業の生命線」であり、IT統制は「企業の骨格」とも言えます。

IPO準備を進める企業は、これらを単なるチェックリスト対応ではなく、 企業文化として根付かせること が長期的な成長と信頼につながります。

「BCP=非常時の守り」「IT統制=平時の守り」。

この二つを両立させることが、上場後も持続的に成長し続ける企業の条件なのです。

【保存版】Claude Sonnet 4で「やさしい」インフォグラフィックを作る魔法のプロンプト

はじめに


Claude Sonnet 4のデザイン性の高いインフォグラフィック出力機能、皆さんもうご存知ですよね。

しかし「なんか色がギラギラしすぎて見づらい...」「もう少し上品で優しい感じにしたいなあ」と思ったことはありませんか?

実は、プロンプトの書き方一つで、幅広い年代の方に愛される、やさしいトーンのインフォグラフィックが簡単に作れるんです。

今回は、そんな「目に優しい」インフォグラフィックを生成するための具体的なプロンプトをご紹介します!


問題:デフォルトだとギラギラしがち


Claude Sonnet 4は確かに美しいインフォグラフィックを作ってくれますが、何も指定しないと:

  • 🔴 高彩度の色使いでパキッとしすぎる
  • 🔴 コントラストが強すぎて目が疲れる
  • 🔴 ビジネス寄りの硬いデザインになりがち

特に、若い女性や年配の方が見る資料では、もっと優しい印象が欲しいですよね。


💡 解決:魔法のプロンプトを公開


そこで開発したのが、この「やさしいインフォグラフィック専用プロンプト」です:

以下の内容を、視認性・デザイン性の高い日本語のHTMLインフォグラフィックに変換してください。

デザイン要件
**レイアウト**
* 1〜2カラム構成、PC時は最大幅750px程度でセンター寄せ
* モバイル対応(レスポンシブ)

**カラーパレット**
* 単色系またはアナログカラー(隣接色)の優しい色合い
* ベージュ、ソフトピンク、ラベンダー、ミントなどの淡い色調を基調とする
* 高彩度の色は避け、全体に柔らかく上品な印象を保つ
* 背景色はオフホワイトで、要素が視認しやすようベストなコントラストを設定する

**情報の表現**
* 重要な語句は太字・色・ハイライトで強調
* 絵文字やシンプルなSVGアイコンでビジュアル化
* セクションごとに背景色や囲み枠で明確に区切る
* 必要に応じて図表・レーティング・タイムラインなどをSVGで表現

**構成**
* 導入部分で要点を簡潔に要約
* 読み進めたくなる自然な流れを意識
* 十分な余白で視覚的な区切りを明確に

まとめて欲しい内容は以下です:
[ここに実際の内容を入力]


このプロンプトのポイント解説


🎨 カラーパレットの指定が肝心

「単色系またはアナログカラー」と指定することで、統一感のある上品な仕上がりに。具体的な色名(ベージュ、ソフトピンク等)を挙げることで、AIの色選択を優しい方向に誘導しています。

📱 レスポンシブ対応もバッチリ

最大幅750pxという具体的な数値指定で、PC・スマホ両対応の読みやすいレイアウトを実現。

🔍 情報の階層化も自動

セクション分けや視覚的な区切りを明示することで、情報が整理されて見やすくなります。


実際に試してみた結果


このプロンプトを使って試しに「Claude Codeで出来ること3選」というインフォグラフィックを生成してみると...

以下のような比較的「やさしい」グラフィックが誕生しました!

  • ✅ コントラストがキツすぎない優しい色調
  • ✅ 適度な余白で読みやすい
  • ✅ SVGアイコンで視覚的にも楽しい
  • ✅ モバイルでも崩れないレスポンシブ対応

といった、理想的な仕上がりになりました!


まとめ


Claude Sonnet 4の力を最大限に活用するには、具体的で詳細なデザイン要件を伝えるのがコツです。特に:

  1. カラーパレットの方向性を明確に
  2. レイアウトの制約を数値で指定
  3. 情報の見せ方まで細かく指示

この3点を意識するだけで、グンと使いやすいインフォグラフィックが生成できます。

皆さんもぜひこのプロンプトを使って、目に優しい美しいインフォグラフィックを作ってみてくださいね!


このプロンプトは自由にコピペして使っていただいて構いません。より良い改良版ができたら、ぜひコメントで教えてください!

Cloud Translation API リクエスト数の増加をメールで通知する方法

Cloud Translation APIの料金

Cloud Translation API はGoogleが提供している機械翻訳機能のためのAPIです。

最初の 500,000 文字が無料ですが、あとは翻訳したテキスト等の量によって費用が加算されます。

参考: Cloud Translation の料金

急激な費用増加に備え、できればAPIのリスエスト数が増えたらアラートを出したい、という希望も出てくるでしょう。

そんな開発者に向けて、今回はCloud Translation API リクエスト数の増加をメールで通知する方法を共有します。


Cloud Monitoringでポリシーを作成

① まずはCloud MonitoringのコンソールからCREATE POLICYのボタンを押します。


② 次に指標を選択 をクリックし、以下のように選択していきます。

Consumed API > Api > Request count> 『適用』ボタンをクリック


③ フィルタを設定してCloud Translation APIのリクエスト数をカウントするようにします。

  • Filter: method
  • Comparator: =
  • Value: google.cloud.translate.v2.TranslateService.TranslateText

④ Transform dataに任意の数値を入力します。

※ 例)1日のリクエスト数の合計値をカウントする場合

  • ローリング ウィンドウ:1day
  • ローリング ウィンドウ関数: sum


⑤ 通知条件の設定

Configure alert trigger に通知する際の条件を入力します。


⑥ 通知先の設定

Configure notificationsで通知先のメールアドレスを選択し、アラートポリシー名を入力したら完了です。


お疲れ様でした。 あとはリクエスト数がしきい値を超えたらメールが飛ぶようになります。

Terraform Planの実行速度を上げる3つの方法

f:id:hoominkani:20220210190232p:plain

管理するリソースが増えるにつれ、terraform planコマンドの実行に
とんでもなく時間がかかる……。

そんな経験はありませんか?

この記事では、インフラエンジニアの頭を悩ませるそんなお悩みを解決し、
Terraformでの変更を高速化する3つの方法を共有します。

--parallelism オプションで 並列処理の数を増やす

Terraform公式で -parallelism というオプションが存在します。

説明は以下の通りです。

-parallelism=n - Limit the number of concurrent operation as Terraform walks the graph. Defaults to 10.

Terraform document


parallelismオプションを活用し、並列処理の数を増やします。(デフォルトは10)

自分のPCのスペックにもよりますが、20や30に変えると
ある程度の改善が見込めるでしょう。


terraform plan -parallelism=20


環境変数として設定することも可能です。

export TF_CLI_ARGS_plan=20


.terraformignore を使う

変更しないファイルを .terraformignore に追加すると
その分は差分検知されないので、
terraform planの実行速度が向上します。

example: .terraformignore

/dir
ec2.tf


-target オプションを使う

terraform plan , terraform apply といったコマンドを実行する際は
-target オプションを使って、特定のリソースだけに対象を絞ることができます。

たとえばEC2インスタンスにだけterraform planを実行したい場合、

以下のようなリソース名を設定していれば

resource "aws_instance" "this" {
 ... 
}

このようにtargetを指定することが可能です。

terraform plan --target=aws_instance.this 


いかがだったでしょうか。
ぜひ様々な手法を用いてTerraformを快適に使いましょう。

Amazon ECS Execで コンテナに接続する方法

f:id:hoominkani:20220119162235p:plain

ECS Execの登場でコンテナアプリケーションでもデバッグが容易に!

Amazon ECS、Fargateを使用している際、デバッグに苦労した経験はないでしょうか。

かつてはAWS Sesstion Manager で Fargate に SSH 接続したりと工夫が必要でしたが、ECS Execの登場でコンテナへの接続が容易になりました。

以下、接続方法を簡単に紹介します。

タスク IAM ロールに以下のポリシーを適用

{
   "Version": "2012-10-17",
   "Statement": [
       {
       "Effect": "Allow",
       "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
       ],
      "Resource": "*"
      }
   ]
}

サービスに対しECS Execの有効化

aws ecs update-service \
    --cluster cluster-name \
    --service service-name \
    --enable-execute-command

enableExecuteCommand プロパティがtrueになっているか確認

aws ecs describe-tasks \
    --cluster cluster-name \
    --tasks task-id
  • "enableExecuteCommand": true になっていることを確認

ECS Exec を使用してコンテナに接続

aws ecs execute-command --cluster cluster-name \
    --task task-id \
    --container container-name \
    --interactive \
    --command "/bin/sh"

簡単ですね! ECS Exec ありがたい……。

Terraform workspaceの使い方

f:id:hoominkani:20190824191355p:plain

Terraform workspaceを使う

ワークスペースの作成、切り替え

# dev という名前の workspace を作成して切り替え
terraform workspace new dev
# dev という名前の workspace に切り替え
terraform workspace select dev

ワークスペースの一覧を表示

  • terraform workspace list
$ terraform workspace list
  default
* dev
  pro

環境ごとにtfvarsファイルを分ける

# devとproの2つの環境で環境編変数を分ける
$ touch terraform.tfvars.dev
$ touch terraform.tfvars.pro

# ワークスペースdevに切り替え
$ terraform workspace select dev

# ワークスペースdevの変数でterraform planを実行
$ terraform plan -var-file=terraform.tfvars.dev

リソース名を環境ごとに変更

tags = {
  Name = "${var.project_name}-${terraform.workspace}"
}

IPv6で疎通確認&サーバーのアドレスを取得

f:id:hoominkani:20190824190424p:plain

IPv6で疎通確認

通常のping ではなく ping6 を使用します。

$ ping6 xxxx:xxxx::xxxx:xxx:xxxx:xxxx

IPv6のアドレスを取得する

nsloopupでAAAAレコードを検索

-type=AAAA を設定するのが肝です。

$ nslookup
>>set type=AAAA
>>domain
$ Server:        XXX.XXX.XX.X
$ Address:       XXX.XXX.XX.X#XX

これで快適なIPv6ライフを♪