OmniAICreator/Qiita-1.07M huggingface dataset:
１日から始まり月末までを経理上の月度としない場合の月度の求め方


+ [相対日付の半期項目の日付を4/1ではなく、任意の日付(4/9)に設定したいのですが、可能でしょうか。。](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000PWSOv)

弊社も締め日が20日なので、標準の相対日付で月度を求めることができないので、数式項目で対処しています。 

弊社では21日からスタートなので以下のような式です。jc__cが日付の項目です

```
IF( DAY( jc__c ) < 21, TEXT( YEAR( jc__c ) *100 + MONTH(jc__c ) ) ,
IF ( MONTH(jc__c ) = 12, TEXT( YEAR( jc__c ) + 1) & '01' ,
TEXT( YEAR( jc__c ) *100 + MONTH(jc__c ) + 1)
)
)
```

9日で月度が変わるようにするには以下のように設定してみてください。 

```
IF( DAY( jc__c ) < 9, TEXT( YEAR( jc__c ) *100 + MONTH(jc__c ) ) ,
IF ( MONTH(jc__c ) = 12, TEXT( YEAR( jc__c ) + 1) & '01' ,
TEXT( YEAR( jc__c ) *100 + MONTH(jc__c ) + 1)
)
)
```

年月度から今年度の半期と昨年度の半期を求める式は以下のようになります。 

```
IF(AND( Nengetu__c >=
CASE(MONTH(TODAY()),
1,TEXT(YEAR(TODAY())-1) & "04",
2,TEXT(YEAR(TODAY())-1) & "04",
3,TEXT(YEAR(TODAY())-1) & "04",
TEXT(YEAR(TODAY())) & "04") ,
Nengetu__c <=
CASE(MONTH(TODAY()),
1,TEXT(YEAR(TODAY())) & "09",
2,TEXT(YEAR(TODAY())) & "09",
3,TEXT(YEAR(TODAY())) & "09",
TEXT(YEAR(TODAY())+1) & "09") ),"this1",
IF(AND( Nengetu__c >=
CASE(MONTH(TODAY()),
1,TEXT(YEAR(TODAY())-1) & "10",
2,TEXT(YEAR(TODAY())-1) & "10",
3,TEXT(YEAR(TODAY())-1) & "10",
TEXT(YEAR(TODAY())) & "10") ,
Nengetu__c <=
CASE(MONTH(TODAY()),
1,TEXT(YEAR(TODAY())) & "03",
2,TEXT(YEAR(TODAY())) & "03",
3,TEXT(YEAR(TODAY())) & "03",
TEXT(YEAR(TODAY())+1) & "03") ),"this2",
IF(AND(Nengetu__c >=
CASE(MONTH(TODAY()),
1,TEXT(YEAR(TODAY())-2) & "04",
2,TEXT(YEAR(TODAY())-2) & "04",
3,TEXT(YEAR(TODAY())-2) & "04",
TEXT(YEAR(TODAY())-1) & "04") ,
Nengetu__c <=
CASE(MONTH(TODAY()),
1,TEXT(YEAR(TODAY())-1) & "09",
2,TEXT(YEAR(TODAY())-1) & "09",
3,TEXT(YEAR(TODAY())-1) & "09",
TEXT(YEAR(TODAY())) & "09") ),"last1",
IF(AND(Nengetu__c >=
CASE(MONTH(TODAY()),
1,TEXT(YEAR(TODAY())-2) & "10",
2,TEXT(YEAR(TODAY())-2) & "10",
3,TEXT(YEAR(TODAY())-2) & "10",
TEXT(YEAR(TODAY())-1) & "10") ,
Nengetu__c <=
CASE(MONTH(TODAY()),
1,TEXT(YEAR(TODAY())-1) & "03",
2,TEXT(YEAR(TODAY())-1) & "03",
3,TEXT(YEAR(TODAY())-1) & "03",
TEXT(YEAR(TODAY())) & "03") ),"last2",
"other"))))
```
Azureサブスクリプションの概要

## はじめに
Azureにはサブスクリプションという効率的な運用に有効な考え方があります。
本記事では、サブスクリプション管理についてまとめます。

## サブスクリプションとは
Azureサブスクリプションは、**課金**と**セキュリティ**の単位として機能します。
- **課金の基盤**: サブスクリプションがすべてのAzureリソース（仮想マシンやストレージなどをまとめるための論理的なくくり）の課金単位となる
- **セキュリティのスコープ**: アクセス権や操作権限を管理する範囲を定義する

## サブスクリプションの種類
Azureには利用シナリオに応じたさまざまなサブスクリプションがあります。

- **[無料試用版](https://azure.microsoft.com/ja-jp/pricing/offers/ms-azr-0044p/)**: 初心者や学習者向けで、30日間$200のクレジットと1年間の無料リソースが利用可能
- **[従量課金](https://azure.microsoft.com/ja-jp/pricing/offers/ms-azr-0003p/)**: 個人開発者や中小規模での利用に適しており、使用した分だけ支払う形式
- **エンタープライズ契約（EA）**: 大企業向けで、ガバナンス機能や割引が充実
- **[Azureインオープン](https://azure.microsoft.com/ja-jp/pricing/offers/ms-azr-0111p/?msockid=34f793eab5be64c33bd4874ab4276500)**: 12カ月有効なクレジットを購入して利用する形式。従量課金の場合、毎月精算するが、インオープンの場合は事前精算となる。検証等など一時的な用途で使用し、決まったタイミングで経費計上したい場合などのシナリオで有効
- **[CSP（クラウドソリューションプロバイダー）](https://azure.microsoft.com/ja-jp/pricing/offers/ms-azr-0145p/)**: パートナーのプロバイダーと契約する形態。Azureと直接の契約ではなく請求やサポートはプロバイダーを通して行うため運用サービスが含まれる場合あり

## [クォーター](https://learn.microsoft.com/ja-jp/azure/quotas/quotas-overview)について
1つのサブスクリプション内で作成できるリソースに上限が設定されています。これをクォーターといいます。
Azure portalのサブスクリプションの使用料＋クォーターから現在の使用状況が確認できます。
![スクリーンショット 2025-03-18 055041.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1518953/0691e3e9-33a8-4d88-aed3-bfb0dd28ef60.png)

### なぜクォーターが必要なのか？
意図せずにリソースが作成されるとその分コストが発生してしまいます。多額な課金を生まないために制限としてクォーターという設けられています。例えば、スクリプトを使用してリソース管理を行いたい場合、スクリプトに誤りがあると繰り返しリソースが作成され続けてしまうケースが考えられます。この予防策として上限が存在します。

### 上限引き上げ依頼
クォーターは意図しないリソース作成の予防策として用意されています。このため必要な場合は上限を引き上げることが可能となっています
以下、Azure portalからのクォーター引き上げのリクエスト画面となります。
![スクリーンショット 2025-03-18 060445.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1518953/cfa73a14-b3e4-45ee-8fad-09ca7ce6366e.png)

## 参考
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/management/azure-subscription-service-limits

https://learn.microsoft.com/ja-jp/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions
【Flutter】Windows環境からiOSアプリをCodemagicでテストする方法 🚀

Codemagicとは：
・Windows環境からでもMacなしでiOSビルドが可能
・GitHub/GitLabなどと簡単に連携
・無料プランで手軽にスタート可能

🔍 必要なもの
・Windows PC
・Flutterアプリのリポジトリ（GitHubなど）
・Codemagicのアカウント（無料で登録可能）

🛠 CodemagicでiOSシミュレーター向けにビルドする手順
① Codemagicとリポジトリを連携する
Codemagicにログインし、Flutterアプリのリポジトリを登録します。
https://codemagic.io/start/

Codemagicで「Add Application」を選択
GitHubなどで認証し、リポジトリを選択
② codemagic.yamlの設定
Flutterプロジェクトのルートに以下のcodemagic.yamlを作成します。

```
workflows:
  ios-simulator-test:
    name: iOS Simulator Test
    environment:
      flutter: stable
      xcode: latest
    scripts:
      - flutter packages pub get
      - flutter analyze
      - flutter test
      - flutter build ios --simulator --debug --no-codesign
    artifacts:
      - build/ios/iphonesimulator/*.app
```


この設定で、Codemagic上でシミュレーター用のiOSアプリが作成されます。
③ 変更をコミットしてGitHubにプッシュ
作成したファイルをコミット・プッシュします。

```
git add codemagic.yaml
git commit -m "Add codemagic.yaml for iOS simulator test"
git push origin main
```

④ Codemagicでビルドを開始 🎯
Codemagicで以下を行います。

「Start new build」をクリック
ワークフローを選択（ios-simulator-test）
「Start new build」を再度クリックしてビルドを開始
Codemagicがクラウド上でiOSシミュレーター向けアプリを生成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4038659/6319069b-222e-4244-9ca9-1caa0a86d7c9.png)


🌟 Windowsで動作確認をする方法
ビルドが成功すると、iOSシミュレーター用の.appファイルが生成されます。

Windows環境から手軽に確認するには Appetize.io がおすすめです。

📱 Appetize.ioを使ってブラウザで確認
Codemagicで生成した.appフォルダをZip圧縮してダウンロード
https://appetize.io/
にアクセス
zipファイルをアップロードして起動
ブラウザ上ですぐにシミュレーターが起動し、アプリの動作を手軽に確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4038659/244dc538-6826-4286-ab54-633cd96e093c.png)


🚩 注意点
Codemagicの無料枠にも一定の時間制限（500分/月）がありますが、個人開発には十分です。

‼️補足
こんなエラーが出ました。

:::note alert
Error: The plugin "firebase_core" requires a higher minimum iOS deployment version than your application is targeting.
To build, increase your application's deployment target to at least 13.0 as described at https://flutter.dev/to/ios-deploy
Error running pod install
:::

Podfile をiosフォルダ以下に格納する必要があるのですが、
そのためにはpodコマンドを使用する必要があります。
しかし、Windowsからでは使用できないので、LinuxとかMac OSの使用が必要となります。

これを回避するために、CursorでPodfileを生成してもらうと便利です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4038659/595696a1-b616-44c6-8e22-353250ee1455.png)

これに付随して、必要に応じてpbxprojファイル等も変更してくれるので、便利🎉
【VBA】テキストをインポートする

```
Sub LoadTextFile_SpaceDelimited()

Dim FilePath As String

Dim FileNum As Integer

Dim LineText As String

Dim DataArray() As String

Dim RowNum As Integer

Dim ColNum As Integer

' テキストファイルのパスを指定

FilePath = "C:\path\to\your\file.txt"

' ファイルを開く

FileNum = FreeFile

Open FilePath For Input As FileNum

RowNum = 1 ' Excelの行番号

' ファイルの終わりまでループ

Do While Not EOF(FileNum)

　　　Line Input #FileNum, LineText ' 1行ずつ読み込み

　　　' スペースで区切って配列に格納

　　　DataArray = Split(LineText, " ")

　　　' 各データをセルに書き込み

　　　For ColNum = LBound(DataArray) To UBound(DataArray)

　　　Cells(RowNum, ColNum + 1).Value = DataArray(ColNum)

　　　Next ColNum

　　　RowNum = RowNum + 1 ' 次の行に移動

Loop

' ファイルを閉じる

Close FileNum　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　End Sub
AWSが展開するデベロッパー用ツールカテゴリのサービスの一覧

## はじめに
AWSが展開するデベロッパー用ツールカテゴリのサービスの一覧についてまとめてみました。

## デベロッパー用ツールカテゴリ
　AWSクラウドで構築するアプリケーションの開発・デバッグ・テストをサポートするサービス群。クラウドのメリットを活かして高いパフォーマンス・可用性を持った開発ツールとして利用出来る。


## AWS Cloud9
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/8784356f-3d09-4ef6-a7b4-7cca19f970e8.png)
ブラウザベースのIDE(Integrated Develop Environment：統合開発環境)。

## AWS CloudShell
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/39328500-9087-401d-8d05-8ce592a5eed9.png)
マネージメントコンソールから使用出来るブラウザベースのコマンドラインインタフェース。

## AWS CodeArtifact
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/964fa06d-9ed3-497e-8af2-8b98ececeb34.png)
様々な開発言語で利用可能なライブラリレポジトリサービス。

## AWS CodeBuild
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/6eb8ecba-6053-4e64-a422-11ca8c46c131.png)
クラウド環境における継続的インテグレーションを実現するビルドサービス。

## AWS CodeCommit
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/4b60f317-3772-4c54-b53a-e7e44fb7b115.png)
マネージドGitレポジトリサービス。

## AWS CodeDeloy
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/a4b935d1-f2e8-4b4d-8cfb-61acf2dc7a18.png)
EC2インスタンスやオンプレミスサーバへの自動デプロイを実現するサービス。

## AWS CodePieline
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/510064a4-3ce6-4093-817e-bcf87cabde93.png)
コードのビルド、テスト、デプロイといったワークフローをパイプラインとして定義、実行でき、継続的デリバリーを実現するサービス。

## AWS CodeStar
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/b6a14191-7d2d-4450-901a-044059ae7f89.png)
様々なプログラミング言語の開発プロジェクトテンプレートに従って、CodePipelineやCodeBuildなどのプロジェクト雛形を自動生成するサービス。

## AWS Fault Inject Simulator(FIS)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/c614d537-a057-4497-a598-e8e4389ae592.png)
カオスエンジニアリングを実行するためのサービス。AWSリソースに対する破壊的なアクションをテンプレートに定義して実行し、システムの耐障害性や回復性を確認する。

## AWS Microservice Extractor for .NET
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/82247b1f-170c-4273-bf1d-4c36d8066401.png)
.NET Frameworkで構成されたモノリシックアプリケーションをマイクロサービスへ移行する際のサポートサービス。アプリケーションの依存関係の解析や可視化、抽出、リファクタリングなどを行う。

## AWS X-Ray
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/2c323ddb-1b2b-452f-99a3-905d10d812f8.png)
分散されたアプリケーションのデータを収集し、処理の実行可否やパフォーマンス情報を可視化・分析するサービス。

## Porting Assistant for .NET
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/9b29ba2b-a018-45b8-b248-39ee7803ab59.png)
.NET Frameworkアプリケーションを.NET Coreに移植する際に手動の労力を減らす互換性スキャナー。

## おわりに
ここまで読んでいただきありがとうございます！

## 参考文献
・AWSの基本・仕組み・重要用語が全部わかる教科書 (見るだけ図解) 単行本（ソフトカバー） – 2022/8/23
川畑光平 (著), 菊地貴彰 (著), 真中俊輝 (著)
p.52-53
2025/3/18主にITとかセキュリティの記事

現在対策なし　悪用されたAIが自動でメールを攻撃、アドレスを推定しフィッシング用の文章を生成(3/16)
https://forbesjapan.com/articles/detail/77825

SendGridとは？現代のビジネス環境に最適化されたクラウドメール配信基盤 – AI予測配信、量子暗号セキュリティ、APIインテグレーション(3/16)
https://nikkeimatome.com/?p=54872

「思考停止が招いた人災」　岡山の患者情報流出で報告書(3/16)
https://www.nikkei.com/article/DGXZQOUA12AHA0S5A310C2000000/

KAI:イード輸送キューを防ぐための顔認識技術(3/15)
https://voi.id/ja/news/468729

米国 ロシアとイスラエルの二重国籍者、LockBitランサムウェアの共謀に関与したとして米国に引き渡される (2025.03.13)(3/16)
http://maruyama-mitsuhiko.cocolog-nifty.com/security/2025/03/post-4c50bc.html

Anthropic、AIの隠れた目的を発見する「アライメント監査」技術を開発 – Claude 3.5 Haikuを使った実験で有効性を実証(3/16)
https://innovatopia.jp/ai/ai-news/49453/

POP3の「3」とは？POPからPOP2,POP3に至る電子メール受信プロトコル発展と確立までの歴史(3/16)
https://nikkeimatome.com/?p=54869

自宅の『Wi-Fiルーター』を「10年くらい使っている」はかなりヤバい(3/16)
https://news.yahoo.co.jp/articles/01afc8cbbd300ac19a307133d3b9f70d04197021?page=2

ガバメントクラウドにおけるネットワーク接続概要（省庁編）(3/15)
https://qiita.com/Regryp/items/78a766d863c4430e4ddb

NewsPicks トピックス 『デジタル政策と未来社会』のまとめ(2025.3.10～2025.3.17）(3/13)
https://blogs.itmedia.co.jp/business20/2025/03/newspicks_20253102025317.html?ref=rss

2021年8月21日に満場一致で可決された「ISO/IEC 18013-5:個人識別－モバイル運転免許証（mDL）」(3/15)
https://nikkeimatome.com/?p=54749

1965年に遡る電子メールの起源 – 1971年@記号の導入、1978年初のスパムメール、1982年SMTP策定、1984年POP実装、2004年Gmail登場(3/16)
https://nikkeimatome.com/?p=54859

相手が聞く耳を持つようになる反論の魔法【白魔法の心理学】
https://love-spo.com/books/shiromaho-sinrigaku/whitemagic_sinri-016.html

日本にはスパイ防止法が存在しない　その理由と背景と影響と課題(3/16)
https://www.epochtimes.jp/2025/03/290491.html

中国 人工知能生成合成コンテンツ識別弁法 (2025.03.14)(3/16)
http://maruyama-mitsuhiko.cocolog-nifty.com/security/2025/03/post-405cff.html
【AWS】コスト関連のサービスが紛らわしいのでまとめてみた

# はじめに
AWSはコスト関連のサービスが多い。
AWS SOAの勉強で、「○○をしたいのでどのサービスを使えばよいか」という問題がよく出るけど、そのサービスが何ができるのかを大まかにでも知っておかないと解けない気がしたので、簡単にまとめてみることにした。

この記事はあくまで個人用ですので悪しからず。

# コスト関連のサービス

## Cost Explorer

https://docs.aws.amazon.com/ja_jp/cost-management/latest/userguide/ce-what-is.html

コスト関連のサービスで、たぶん試験で一番問われるのはこれだと思う。

どのサービスを**どれくらい使っているか、どれくらいのコストがかかっているか**を視覚的に調べることができる。
それも、サービス別、リージョン別、アカウント別、タグ別に絞り込みやグルーピングを行うことができ、**グラフとして可視化することもできる**。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1751890/360069bb-8b64-44d6-98b8-045d07333cc9.png)
(グラフの例を載せたかったけど、いい画像がなかった)

あと、現在や過去のデータをもとに、**将来のコストを予測できる**機能も備わっている。

## Cost and Usage Reports(コストと使用状況レポート)

https://docs.aws.amazon.com/ja_jp/cur/latest/userguide/what-is-cur.html

個人的にはいまだにCost Explorerとの違いがよくわからないサービス。
名前の通りコストと使用状況を把握できるのはCost Explorerと一緒みたいだけど、こっちはより詳細に分析ができて、なおかつ**分析結果をCSVやJSONなどの形式でレポート化することができる**、という認識でよいのかなと思う。
ちなみにレポートの保存先はS3。

## AWS Billing and Cost Management

https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/billing-what-is.html

メインの機能としては**請求情報の取得、管理、支払いが行える**こと。
請求書の内容の確認、支払い方法の設定ができる。

…っていう認識だったんだけど、どうやらAWS Billing and Cost Managementは、**AWSにおけるコスト関連のサービス群の総称のこと**らしい、っていうのを最近知った。
つまりCost ExplorerやBudgetsなどを包括して、AWS Billing and Cost Managementというらしい。
で、さっき書いた請求関連の作業は**請求書**や**請求ダッシュボード**から実施できるとのこと。紛らわしすぎる。

## Budgets

https://docs.aws.amazon.com/ja_jp/cost-management/latest/userguide/budgets-managing-costs.html

予算が特定の閾値を超えた際に、アラートを出したりアクションを実行できるサービス。
Budgetsが問われる内容としてはこれがメインじゃないかと思うので、とりあえずはアラートを出せるサービスっていうことだけ覚えておけばいいかもしれない。

# おわりに
ある程度知識整理はできたけどやっぱり紛らわしいと思います。
競プロ日記#25/03/17

# アルゴ式-[マインスイーパー](https://algo-method.com/tasks/1149xEXL)
- 上下左右で斜めは考えなくてよいのでx,y方向に対しての差分配列を用意するのが良いらしい
```
// 差分を表す配列
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};
```

- これに対して以下の様に上下左右のチェックをかける
```
// マス (x, y) の上下左右に隣接する 4 マスを調べる
for(int d = 0; d < 4; ++d) {
    int nx = x + dx[d], ny = y + dy[d];
    // マス (nx, ny) が盤面内にあるならば、board[nx][ny] を答えに加える
    if(0 <= nx && nx < H && 0 <= ny && ny < W) {
        ans += board[nx][ny];
    }
}
```
AWSが展開するアナリティクスカテゴリのサービスの一覧

## はじめに
AWSが展開するアナリティクスカテゴリのサービスの一覧についてまとめてみました。

## アナリティクスカテゴリ
　ストレージやデータベースから収集したデータを加工・変換、解析・分析したり、結果を可視化したりするサービス。ビッグデータに代表されるデータ活用の中核となる技術なので、種類や内容をよく押さえておきたい。

 ## Amazon Athena
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/7f151ddf-93c4-4064-92b8-bd0fabe495cd.png)
 S3に保存されたデータに対してSQLを発行してデータを取得・分析できるサービス。

 ## Amazon CloudSearch
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/ba50deef-5094-4135-94b3-4aea5342035d.png)
 Webサイトやアプリケーション向けの検索エンジンサービス。

 ## AWS Data Exchange
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/82a33396-3102-40f3-be6d-916d260ee719.png)
 サードパーティから提供される様々なデータをS3へ取り込むことが出来るサービス。

 ## AWS Data Pipeline
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/32e5bbeb-717e-4f78-9bc4-cdb74fca32e7.png)
 RDSやS3にあるデータを定期的に移送・ETL処理などワークフローで自動実行するサービス。

 ## Amazon EMR
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/8c5a50b7-5b39-4162-bfb7-ac4c4c77dc53.png)
 オープンソースの「Apache Spark」「Apache Hive」「Apache HBase」「Apache Flink」「Apache Hudi」「Presto」といったビッグデータ処理プラットフォームのサービス。EMRは「Elastic Map Reduce」の略。

 ## Amazon FinSpace
 
 金融業界のデータを大規模かつ簡単に保存・カタログ化するデータ管理・分析サービス。

 ## Amazon Glue
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/cfc0fbfb-07d6-437c-8b80-552361c08838.png)
 S3やAurora、RDS、Redshiftなどからデータの抽出・変換・ロードを行うサービス。

 ## Amazon Kinesis
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/bfc56c39-16ca-4983-817b-0f811c12bd6c.png)
 ストリーミングデータをリアルタイムで収集・処理・分析するサービス。データストアにストリームデータをロードする「Kinesis Data Firehose」、データストリームのキャプチャ・処理・保存を行う「Kinesis Data Streams」、SQLやJavaでデータストリームを分析する「Kinesis Data Analytics」、ストリーミング動画のキャプチャ・処理・保存を行う「Kinesis Vide Streams」がある。

 ## Amazon Lake Formation
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/41a7bc27-85e2-44c7-95a4-0f5b66931a2e.png)
 S3をベースとしたデータレイクの構築、Glueを使って、データ抽出・クレンジング・クエリなどのワークフローの作成・実行を行うサービス。

 ## Amazon MSK
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/821d7d30-b965-4025-8cfe-41fcedc1dbcc.png)
 オープンソースの「Apache Kafka」を利用した分散メッセージングサービス。MSKは「Managed Streaming for Apache Kafka」の略。

 ## Amazon OpenSearch Service
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/64674e21-65b9-440e-b264-24cf6b8ff181.png)
 オープンソースの検索・分析エンジン「Elasticsearch」「Kibana」「Logstash」のサービス。Amazon ElasticSearch Serviceから名称が変更された。

 ## Amazon QuickSight
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/33d7524b-5f1d-4578-8487-262d99f05fba.png)
 様々なデータストアの可視化が可能なBI(Business Intelligence：ビジネス分析)サービス。

 ## Amazon Redshift
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/3b892498-4499-4971-8052-52855fc0868a.png)
 ビッグデータ解析用データウェアハウス。


 
## おわりに
ここまで読んでいただきありがとうございます！

## 参考文献
・AWSの基本・仕組み・重要用語が全部わかる教科書 (見るだけ図解) 単行本（ソフトカバー） – 2022/8/23
川畑光平 (著), 菊地貴彰 (著), 真中俊輝 (著)
p.51-52
非機能要件と向き合おう！：第4章「非機能要件のコミュニケーションを取る技術」

# はじめに

https://qiita.com/wolfmagnate/items/d9a2570d239edd2a8daa

非機能要件は品質が見えにくいという困難を抱えています。
特に、実際に対応にあたっている当事者と、外部からそれを見ている人間の間では相当な認識の違いが発生します。

その結果、全員がプロジェクトの成功、プロダクトの成功を目指しているにも関わらず、不幸にも味方同士で対立が起きやすいのです。

この記事では、対立を避け、全員が一丸となってソフトウェア開発に取り組めるような技術を紹介します。

**いいね、ストックをよろしくお願いします！**

## チーム全体が非機能要件の改善に取り組む
当事者でないと言語化しにくい要件でコミュニケーションを取りたいならば、**当事者になるのが最上の方法です**。いくつかの有名な手法やフレームワークでも、当事者を増やすことの重要性が述べられています。

- **シフトレフト**：簡単に言えば「さっさとテストをしよう」ということです。QA組織に任せるのではなく、エンジニアが信頼性の当事者になるべきです
- **DevOps**：「コラボレーション」が重要な原則です。作った製品を運用チームに一方的に投げるのではなく、対話を通じて相手を知り、お互いの仕事の意味を確信するべきという内容です
- **スクラム**：「透明性」「検査」「適応」という3本柱が掲げられています。非機能要件のコミュニケーションの文脈では、「透明性」がまさにこれでしょう。チーム全体がどの方向に向かっているのかを明確に共有することが重要です
- **プロセスやツールよりも個人と対話**：分かりやすく言えば「分業も機械化も無理！何でも知ってる賢い人間が集まらないとどうしようもない！」ということです

:::note
**全部やろう、当事者になろう**
非機能要件は複雑で、全てが相互作用する。非機能要件を理解したいなら、システムに関連するすべてを全力で学び、多くのイベントに参加するべきである。
:::

## 諦めずに対話する

全員が当事者になるべきとはいえ、開発者がシステム知識のない人間と話す場合など、互いの理解が不足した状態で対話しないといけないことはあります。このような場合の対処は**困難です**。

以下は月並みなアドバイスですが、このような基礎的なコミュニケーションを積み重ねていくことでしか解決できません。

:::note
**丁寧な対話**
- 「相手は自分の知らない理屈を知っているかも…？」と常に意識する
- 基本的に相手は専門外なだけでバカではない。丁寧に説明すればある程度は理解してもらえる
- 日頃から信頼を貯金しておく
:::

「プロダクトマネージャーのしごと」には、互いの考え方を深く理解することで対立を排除するテクニックについて分かりやすく書かれています。プロダクトマネージャーは、複数の要件の担当者とコミュニケーションを取り、プロダクトに真に必要なものを判断する仕事なので、非機能要件という分かりにくい分野でもコミュニケーションする技術が求められます。

https://www.oreilly.co.jp/books/9784814400430/

## 目標を利用してコミュニケーションを取る
非機能要件を見えやすくすることでコミュニケーションを容易にする手法です。

例えば、信頼性の分野では、目標をクリアしている限りは好きに機能追加を行い、目標を満たさない場合には保守運用チームの指示に従ってリリースを制限するという考え方があります。**エラーバジェット**は、この考え方をさらに発展させて、継続的なエラーの測定状態と目標から、機能追加と安定性向上の意思決定を行うための手法です。

![4-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1412657/2d397642-e0d2-41fd-97e5-51f0dbf50d76.jpeg)

「SLO サービスレベル目標」には、この考え方について分かりやすく書かれています。本書の前半は技術的な測定（ユーザー目線の測定）や集計方法について書かれていますが、後半以降は、SLOを利用した信頼性分野での意思決定手法について詳しく述べられています。

https://www.oreilly.co.jp/books/9784814400348/

:::note
**目標を使ったコミュニケーション**
非機能要件の良さをできるだけ精度よく可視化することで、お互いが取り組んでいることの価値を周囲と共有して、ハレーションを避けることができる
:::

ただし、これは「非機能要件が明確に数値化できる」という無理な仮定に基づいています。当事者からすると信頼できない数値でも、外部からすればその目標以外に非機能要件の品質を知る術がないため、誤った理解と、それに基づく**誤った決定を引き起こす可能性**があります。

例えば、保守性を表す目標として関数の複雑度を導入したときに、大量の商品コードごとに1行ずつ違う処理を実行する簡単なロジックを追加すれば、実体以上に複雑になったように見えます。

また、UXやユーザー価値といった非機能要件は数値化が特に困難です。

:::note warn
**目標は不完全**
非機能要件は、どれだけコストをかけたとしても明確に品質を表しにくい。

- コストをかけてなるべく最善の目標を得ること
- 当事者以外は目標の値はあくまで参考程度であることを理解し、当事者の意見に耳を傾けること
- 取り組んでいる人間の感覚がもっとも正確なので、**上意下達は失敗する**
:::

# おわりに
コミュニケーション上の課題は、最終的には「人間力」に依存します。いくつかのテクニックは開発されていますが、完全な自動化は困難です。
最も重要なのは、あきらめない、悪者を作らない、信頼を大切にする、などの基礎的な事項です。
非機能要件と向き合おう！：第3章「手段を目標に近づける技術」

# はじめに
https://qiita.com/wolfmagnate/items/d9a2570d239edd2a8daa

手段を目標に近づけるとは、非機能要件における本質的な困難を解決する技術です。
より分かりやすく目標達成につながる手段を決める技術と言い換えることができます。

目標と関係ないタスクをこなして工数を無駄にしない技術と言えます。

**いいね、ストックをよろしくお願いします！**

# 大量の測定と統計に傾向的に明らかにする
大量の測定を行うことで、どの部分が本質的な問題になっているかをデータ分析できる可能性があります。この手法は大量のデータが必要なので、人力での評価が必要になると難しいです。そのため、比較的機械的に処理できる範囲の大きいパフォーマンスと信頼性の分野で発展してきました。次のベストプラクティスは全て本質的には同じ内容を主張しています。

- **パフォーマンス**：プロファイリングによりボトルネックを特定する。「推測するな計測せよ」
- **信頼性**：オブザーバビリティを高め、障害の原因を明確に追跡できるようにする

:::note
**統計的な意思決定**
大量の情報を測定すれば、データから効果的な手段を考案できる可能性がある
:::

「オブザーバビリティ・エンジニアリング」には、測定の手法と測定からの意思決定の手法の両方が詳しく述べられています。

https://www.oreilly.co.jp/books/9784814400126/

「効率的なGo」にも、パフォーマンスの改善を**データ駆動**で行うための手法が書かれています。この書籍では、効率化の際に、目標を用いることの重要性も述べられています。

https://www.oreilly.co.jp/books/9784814400539/

# ベースラインと比較する
これは、いわゆる対照実験の考え方です。
なんらかの手段を打った直後に起きた変化は、おそらく手段による効果だろうと推定することができます。
この手法の問題点は、やった**後**にしか評価ができないことです。統計的に効果を予測する場合と違って、事前に必要な内容がわかるわけではなく、手段の決定時点ではただの予想に過ぎず、実施した後にようやく手段のよさを推定できます。

:::note warn
- ベースラインとの比較は手段の良さを評価する手法であって、予測する手法ではない
- ベースラインとの比較は目標の設定・測定に継続的に取り組んでいることが前提である
:::

この性質から、**手段についても継続的な改善が必要**だと分かります。
つまり、効果がありそうな手法をいくつか予想して実施し、実際に効果的だったものを残し、外れたものを取り消すことで、効果的な手段を見つけることができます。
このフレームワークが**KPT**です。Keepは良い手段、Problemは悪い手段、Tryはそれをもとに行う新しい手段です。逆に言えば、**具体的な品質・目標を理解することなく漫然とKPTだけを運用しても意味がありません**

:::note
**ベースラインとの比較**
- 継続的に品質情報の測定を行うと、比較によって手段の良さを推定できる
- ベースラインとの比較は事後的な推定なので、良い手段を発見するためには継続的な手段の改善が必要である
:::

# 現在の状態・目標の状態・期間から考察する
前節では、**効果がありそうな手法を予想する**必要性を説明しました。大量の測定と統計が使えない非機能要件の場合、予想と評価の繰り返しが必要です。

予想は人間による勘と経験に頼らざるを得ない領域ですが、ある程度のフレームワークはあります。いわゆる**ロジカルシンキング**などの手法は予想のために有用です。

本記事では具体的な思考法は解説しませんが、非機能要件の考察で必要な概念について簡単に述べます。

:::note
**効果的な手段を発見するポイント**
- 手段とは、現在の状態と目標の状態の差分を埋めるためのものであるから**現在・目標・差分**の全てを認識した上で考える必要がある
- 手段には**効果を発揮するまでの時間**がある。長期的施策と短期的施策の両面から考えるべきである
:::

「アジャイルなチームを作る 振り返りガイドブック」には、測定が難しい状況を乗り越えて継続的に改善を続けることの重要性が述べられています。

https://www.seshop.com/product/detail/24265

# 失敗から学ぶ
失敗から学ぶことは、非機能要件において特に重要視されています。

- 信頼性・セキュリティ・パフォーマンスの分野では、インシデント分析が重要視されている
- DevOpsでは、**非難のない事後分析**が重視されている

この理由は、**失敗からは、問題があることを認識できるからです**。

:::note
**失敗は情報量が多い**
- 失敗は、現在の目標および手段が誤っている・不足していることを示す
- 現在の問題の原因は、確実に間違っていることが保証される
:::

:::note
**成功は情報量が少ない**
非機能要件では、目標を達成しており、品質が高いように見えたとしても、それは**正しい目標・手段を意味しない**。なぜなら、次のようなケースがあるからである。

- 目標で本来必要ない過剰な水準を要求してしまっている
- 手段のうちいくつかはむしろ逆効果だが、全体としてプラスになっているため顕在化していない
- 実は目標も手段の全くのデタラメだが、外部の要因によってたまたまうまく行っているため問題になっていない

:::

失敗には必ず直接的な原因があります。例えば次のように、具体的な問題個所を特定できます。


- **パフォーマンス**：スロークエリがあった
- **ユーザ価値**：ユーザーの隠れたニーズを見逃していた
- **信頼性**：外部の信頼できないコンポーネントと強い依存関係があった

成功しているときには**開発プロセスのすべて**の改善の余地を探っていたのに対して、失敗しているときは**問題の原因の箇所**の改善の余地を探せばよいです。

さらに、失敗の分析からは、品質・目標・手段のすべての領域にわたって改善可能性を見出すことができます。例えば、次のような分析結果が得られる可能性があります。

- 目標が間違っている
    - そもそも追いかけていない品質につながる内容があった
    - 数値設定・確認項目が不十分だった
- 手段が間違っている
    - 手段を実施しても目標に寄与しなかった
    - 手段が正しく実施されていなかった

:::note
**失敗から得られる教訓**
失敗からは、目標・手段どちらの問題も検出できる。
:::

# おわりに
目標に適した手段を発見する方法は、具体的な目標の内容に大きく依存するため、一概に手法を述べることは困難です。この記事で解説したような方法を通じて継続的に改善し、当事者意識を持つことが重要です。
幸い、目標は測定可能なので、目標が達成されるまであきらめないことで、それなりの確率で良い手段を発見できるはずです。

https://qiita.com/wolfmagnate/items/a8fda188e583449034f3
非機能要件と向き合おう！：目次

# はじめに
機能要件と非機能要件は違います。非機能要件は固有の困難を抱えており、特殊な扱いを必要とするのです。

**いいね、ストックをよろしくお願いします！**

# 目標
本記事は、**非機能要件に共通する困難さを理解し、応用力の高いベストプラクティスを身に着ける**ことを目指します。

非機能要件には様々な分野があり、SRE、DevOps、ユーザーインタビューなど様々な手法が提案されています。これらの手法は、各分野ごとのベストプラクティスであり、汎用性は低いです。

本記事では、様々な特性を抽象的な「非機能要件」として取り扱うことで、より一段高い視座から、応用しやすい形で**本質的な理解ができるようになります。**

# 対象読者

- パフォーマンス・信頼性などなど、非機能要件に携わる人
- DevOpsやスクラム、プロダクトエンジニアリングなど、乱立する「イケてる手法」に混乱している人
- ソフトウェア工学の観点からスッキリと理解したい人

# 具体例について
本記事では、非機能要件の性質についてたくさんの具体例を扱いました。これは、本記事で解説する理論が、様々な非機能要件一般で成り立つ応用性の高いものであることを納得してもらうためです。ただし、文章を長くする原因にもなるので、折りたたみで記述しています。

# 書籍の紹介について
本連載では、適宜参考になる書籍を紹介しています。各分野に特化した非機能要件の改善手法の書籍を多く紹介しました。既に読んだことがある書籍でも、**より汎用的な非機能要件という視点から理解すると、新しい発見があるはずです**。

# 目次

https://qiita.com/wolfmagnate/items/e43007e82e7273826d18

https://qiita.com/wolfmagnate/items/221dac21240b9c5068ad

https://qiita.com/wolfmagnate/items/d843d1410b6f290eaba6

https://qiita.com/wolfmagnate/items/a8fda188e583449034f3
AWSが展開するコンテナカテゴリのサービスの一覧

## はじめに
AWSが展開するコンテナカテゴリのサービスの一覧についてまとめてみました。

## コンテナカテゴリ
　アプリケーションやコンピューティング処理を実行するためのコンテナ環境を提供するサービス群。コンテナは可搬性が高く、軽量に実行できる仮想化技術であり、今後活用されるシーンがますます拡大していくことが予想される。AWSで提供される関連サービスをしっかり押さえておきたい。

## AWS App2Container
JavaおよびAPS.NETアプリケーションのアプリケーションをコンテナ化するコマンドラインツール。

## Amazon ECR
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/e6a36f40-c073-4729-be55-8523f21a79c2.png)
AWSネットワーク内でDockerコンテナイメージを管理するリポジトリを提供するサービス。ECRは「Elastic Container Registry」の略。

## Amazon ECS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/70217e62-2025-4795-9487-6df17a06c10a.png)
コンテナの実行、動的IPアドレスやポートの割り当て、管理、オートスケーリングを行うオーケストレーションサービス。ECSは「Elastic Container Service」の略。

## Amazon EKS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/ec94d3f4-799e-46cf-8781-e163196b7b51.png)
オープンソースソフトウェア「Kubernetes」を利用して、コンテナ管理を行うオーケストレーションサービス。EKSは「Elastic Kubernetes Service」の略。

## Red Hat OpenShift Service On AWS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/b46b6415-5296-4f90-a09d-3b6b75ae44e1.png)
Red Hatが提供する、エンタープライズで必要な認証・アクセス制御などの機能を付加したKubernetesベースのコンテナプラットフォーム「OpenShift」をAWS環境で利用するサービス。

## おわりに
ここまで読んでいただきありがとうございます！

## 参考文献
・AWSの基本・仕組み・重要用語が全部わかる教科書 (見るだけ図解) 単行本（ソフトカバー） – 2022/8/23
川畑光平 (著), 菊地貴彰 (著), 真中俊輝 (著)
p.50-51
AWSが展開するアプリケーション統合カテゴリのサービスの一覧

## はじめに
AWSが展開するアプリケーション統合カテゴリのサービスの一覧についてまとめてみました。

## アプリケーション統合カテゴリ
　アプリケーション間のメッセージングや処理の連続実行、ワークフロー制御をサポートするサービス群。処理設計の中でこれらのサービスをうまく活用し、信頼性・可用性の高いアプリケーションを構築するようにしたい。

 ## Amazon AppFlow
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/b6e298c6-5fff-4e72-866a-b755674875ee.png)
 SalesforceやSlackなどのSaaSアプリケーションと、S3やRedshiftなどのAWSサービスとの間でデータを連携するサービス。

 ## Amazon EventBridge
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/4aed3e75-e404-49fe-88b5-4f86f536f9b2.png)
 DatadogなどのSaaSやカスタムアプリケーションとAWSサービス間でイベントデータを連携するサービス。

 ## Amazon Managed Workflows for Apache Airflow
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/b8444055-0512-42d6-86d5-46d403781169.png)
 ワークフローをスケジュール・モニタリングするオープンソースソフトウェア「Apache Airflow」のマネージドサービス。CloudWatch LogsやMetricなどの連携により可観測性が高められている。

 ## Amazon MQ
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/14882141-0ea4-4236-99ba-5e169f0e1359.png)
オープンソースソフトウェア「Apache ActiveMQ」を利用したメッセージキューサービス。MQは「Message Queue」の略。

## Amazon SNS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/7bdb5820-6a8d-4a47-b10a-762737efee80.png)
スケーラブルな1:Nのプッシュ配信を実現するメッセージ送信サービス。SNSは「Simple Notification Service」の略。

## Amazon SQS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/258acc4a-7d8c-4f96-b5c2-5f93c0ee6cfb.png)
スケーラブルな完全マネージド型メッセージキューサービス。スケーラブルな1:1の大量メッセージの送受信を実現するキューサービス。SQSは「Simple Queue Service」の略。

## AWS Step Functions
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/1a43460f-29bf-4b6d-97e6-d82aee2a2353.png)
AWS Lambdaで定義した関数をワークフロー式に実行するためのサービス。

## Amazon SWF
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/58dd4fba-be1a-4b4d-889d-5255f22a1c20.png)
「AWS Flow Framework」というフレームワークを用いて、JavaおよびRuby言語でバッチタスクをワークフローで実行するマネージドサービス。SWFは「Simple Workflow」の略。


## おわりに
ここまで読んでいただきありがとうございます！

## 参考文献
・AWSの基本・仕組み・重要用語が全部わかる教科書 (見るだけ図解) 単行本（ソフトカバー） – 2022/8/23
川畑光平 (著), 菊地貴彰 (著), 真中俊輝 (著)
p.50
Spring Bootでエンティティクラスに@Dataが使用できない場合

## 個人開発でSpring Bootを使用して@Dataが使用できない場面に遭遇
個人開発で簡単なCRUD機能を持つAPIを作成していたのですが、
JPAのエンティティクラスで@Dataアノテーションが使用できない（使用しないほうがいい）問題に遭遇したので記しておきます。

修正前
```
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name="booksinfo")
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="title")
    private String title;

    @Column(name="price")
    private Integer price;

}

```
修正後
```
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Table(name="booksinfo")
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="title")
    private String title;

    @Column(name="price")
    private Integer price;

}
```

主な理由は以下の4点です。
- @ToString による無限ループのリスク
- @EqualsAndHashCode による Hibernate の不安定な動作
- @RequiredArgsConstructor が JPA の仕様と相性が悪い
- ID の setter を不用意に作ってしまう可能性

そのため代わりにJPAでｈ@Gatter, @Setterを使用しました。
Manusを使ってwebサイトを作ったら失敗した話

### Manusとは
「Manusは、思考と行動を繋ぐ汎用AIエージェントです。単に考えるだけでなく、結果を提供します。Manusは、仕事や生活のさまざまなタスクに秀でており、あなたが休んでいる間にすべてを完了させます。」（公式サイトより）
最近新しく出たAIエージェントですね。早速使ってみたい！とのことで簡単なwebサイトを作ることにしました。結果はまあ惨敗ですが、プロンプトで工夫が足りないとこうなるんだな〜という目で見守ってください。

### 早速使ってみた
東京都が出しているオープンソースを使って、各自治体における子育て支援政策の内容を
横串で確認できるサイトがあったら便利なのでは？？
しかもデータもかなり揃っているし、JSON形式で提供されており必要な加工が少なそう。
これは実験台として良いだろう！ということで今回のテーマに決定。

### 指示した内容
東京都のオープンソースを使って、各自治体ごとの子育て支援を横串で比較できるサイトを作りたい。
デプロイまでしてほしい。トップページはダッシュボードのようなイメージで、データの可視化をメインにしたい

・見やすいデザイン案
1.地図ベースのインターフェース
東京都の地図上に各自治体を表示
色分けで支援の充実度を視覚化（例：子育て支援総合スコアが高い自治体は濃い色）
タップ/クリックで詳細表示
2.比較ダッシュボード
複数自治体を横並びで比較できる画面
カテゴリー別（経済支援/保育/医療/教育など）のレーダーチャート
棒グラフや数値で具体的な支援額や施設数を比較
3.フィルター機能
子どもの年齢（0-2歳/3-5歳/小学生/中学生など）
世帯年収による支援の違い
共働き/シングルなど家族構成による絞り込み

・横串比較のための工夫
支援制度の名称が異なる問題を解決するため、共通カテゴリーを設定
「出産一時金」「出産祝い金」「子育てスタート応援金」などを「出産関連支援金」としてグループ化
金額・条件・申請方法などの詳細情報は個別表示

・スマホ対応と自動更新
レスポンシブデザインで PC/タブレット/スマホに対応
API 連携による定期的なデータ更新の自動化
更新日を明示して情報の信頼性を担保

上記に加え、技術スタックも指定した。（このあたりはclaudeに生成してもらった）

### Manusの検討状況やいかに
東京都のオープンソースを使って、という指示を元に、使って欲しかったデータセットを見つけてきてくれました。
![スクリーンショット 2025-03-18 0.43.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574524/d2eaedfb-27c1-46be-bf54-00a8aa741747.png)
データベーススキーマの設計まで行ってくれるらしい。（あれ、今回データベースを使う指示出していないんだけどな・・・）
![スクリーンショット 2025-03-18 0.51.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574524/0227e60b-6370-47bb-83d9-20a7439c789e.png)
最終的にデプロイする直前には、同意ボタンのクリックが必要になります。
クリックした後なので、「✅受け入れられました」と表示されています。
![スクリーンショット 2025-03-18 1.27.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574524/8d349d49-e378-4aa4-ada4-6e33344a94b0.png)

### Manusの成果やいかに！？
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

・・・ええ、暗すぎる。確かにカラーチャートとか指定してなかったけども。
![スクリーンショット 2025-03-18 1.27.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574524/1da5ab6c-586a-4831-857e-4a23542ac135.png)
地図から探す、を開くと緑に染まった東京都がドーン！百合子さんカラー。右下の凡例ぽいものも特に説明はなし。引きで見ても東京全体が緑になっているだけでした。
![スクリーンショット 2025-03-18 1.27.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574524/bac2af16-e7be-4d28-8b39-66de6176bf1d.png)
自治体を比較する、を開くと、そもそも千代田区と中央区しかデータを取れていない（のか、データベースに格納できなかったのか）元々のデータセットには全ての市区町村のデータが含まれていますが、生き残ったのはこの2区のみ。
さすが東京の中心、千代田区・中央区（個人の感想です）
![スクリーンショット 2025-03-18 1.27.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574524/af4f7e5c-de71-4961-a015-3e3db6e5d138.png)
条件から探す、は他の画面よりはややマシではあるが、右側の情報がイマイチ何を示したいのか分からない。まあここはこちらのプロンプトで細かく指定していなかったため仕方ないか。
![スクリーンショット 2025-03-18 1.28.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574524/b23033cb-b6b2-4f16-8b90-82a429b12843.png)


### 総評
指示を出してからデプロイ許可ボタンを押すまで、１時間もかからないくらいでした。
指示はカラーチャートを含めたり、画面ごとの機能要件を整理してあげることが必要そうです。
使うデータセットの管理や活用方法も定義してあげないといけなかったなあ、と思っています。
またプロンプトを変えてチャレンジしたい。なんせ、放置で出来るしね。
CloudFormationをざっくり理解する！

## はじめに

CloudFormation（クラウドフォーメーション）は、AWS（Amazon Web Services）が提供する「インフラをコードで管理する」ためのサービスです。

これを使うことで、手作業でAWSリソースを作成するのではなく、テンプレート（YAMLまたはJSON形式のファイル） を用いて自動的にリソースをデプロイできます🤗

## 目次

1. [CloudFormationの基本構造](#-cloudformationの基本構造)
2. [CloudFormationテンプレートの基本構造](#-cloudformationテンプレートの基本構造)
3. [CloudFormationのメリット](#-cloudformationのメリット)
4. [実際の使い方](#-実際の使い方)
5. [応用テクニック](#-応用テクニック)
6. [まとめ](#-まとめ)

## 🧷 CloudFormationの基本構造
CloudFormationには、次の3つの重要な概念があります。

#### 🔹 テンプレート（Template）
AWSリソース（EC2, S3, RDS, Lambdaなど）を定義する 設計図 のようなもの。YAMLまたはJSON形式で記述されます。
#### 🔹 スタック（Stack）
テンプレートを使って作成された 実際のAWSリソースの集合。
 例：EC2インスタンス、セキュリティグループ、S3バケットなどを含む環境。
#### 🔹 変更セット（Change Set）
既存のスタックを更新する前に、変更の影響を確認できる仕組み😊

![スクリーンショット 2025-03-11 15.44.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3427082/efe215ca-3c7a-41b1-bbc1-a8d53010ac5c.png)

## 🧷 CloudFormationテンプレートの基本構造
テンプレートは以下のような構成要素で作られます。

```yml
AWSTemplateFormatVersion: '2010-09-09'  # フォーマットバージョン（固定）
Description: "EC2インスタンスを作成するCloudFormationテンプレート"  # 説明

Resources:  # 作成するAWSリソースの定義
  MyEC2Instance:
    Type: "AWS::EC2::Instance"
    Properties:
      ImageId: "ami-0abcdef1234567890"  # AMI ID（リージョンごとに異なる）
      InstanceType: "t2.micro"  # インスタンスタイプ
```

## 🧷 CloudFormationのメリット
 #### ✅ 自動化：手動でAWSリソースを作成する手間を省ける
 #### ✅ 再利用可能：同じテンプレートを使えば、環境を再現可能
 #### ✅ 管理が楽：どんなリソースがあるのか一目で分かる
 #### ✅ 変更追跡：変更セットを使って安全にアップデート可能

## 🧷 実際の使い方
#### ① テンプレートを作成
上記のようなYAMLまたはJSONファイルを作成します。
#### ② スタックの作成
AWSマネジメントコンソール、AWS CLI、AWS SDK（Python/Boto3など）でデプロイします。

▶️ AWS CLIの場合
```yml
aws cloudformation create-stack --stack-name MyStack --template-body 
file://my-template.yaml
```
#### ③ スタックの更新
```yml
aws cloudformation update-stack --stack-name MyStack --template-body 
file://updated-template.yaml
```
#### ④ スタックの削除
```yml
aws cloudformation delete-stack --stack-name MyStack
```

## 🧷 応用テクニック
#### 🔹 パラメータ（Parameters） を使うと、可変値をテンプレートに埋め込める。
#### 🔹 条件（Conditions） を使って、特定の条件下でリソースを作成できる。
#### 🔹 出力（Outputs） を使うと、作成したリソースの情報を外部に渡せる。
#### 🔹 組み込み関数（!Ref, !Sub, !GetAtt など） で動的な値を扱える。

## 🧷 まとめ
* CloudFormationを使うと、AWS環境をコードで管理できるので、手作業を減らし、インフラの一貫性を保つことができます。

* 小規模な環境から大規模なシステムまで幅広く使えるので、AWSを本格的に運用するなら習得しておくと便利です！ 🚀

#### 💡 次のステップとしては…
実際にテンプレートを書いてデプロイしてみるパラメータや条件を活用して動的なテンプレートを作るCloudFormationのベストプラクティスを学ぶと良さそう！
質問の効用

仕事をしていて何かしらつまづいたとき、同僚や上司、あるいはその道の詳しい人に質問することはごく自然な行動です。私はこの「質問する」という行為自体がとても大切だと考えています。質問をすることで、単に問題を解決するだけでなく、思考の整理や新たな発見につながることが多いからです。

## 良い質問は課題の整理になる

プログラミングあるあるで、相談相手に質問をしているうちに自分で答えにたどり着いてしまうという経験はないでしょうか。これは決して珍しいことではなく、むしろ「質問する」という行為が持つ本質的な価値の一つだと思います。

質問するとき、私たちは通常、

- どこまで理解できているか
- どこから理解できていないか

を整理しながら、質問相手に伝えようとします。このプロセスの中で、自分の考えの整理が進み、ロジックの矛盾や思い違いに気づくことがあります。その結果、質問をし終わる前に自己解決してしまうのです。

また、仮に質問をした相手が直接的な答えを持っていなかったとしても、質問を整理することで「どの部分をどう解決すれば全体が解決するのか」が見えてくることがあります。質問する行為自体が、問題を構造化し、解決への道筋を立てる助けとなるのです。

この効果は、人に質問する場合だけでなく、自分で Google 検索をする際にも応用できます。適当にキーワードを並べて検索するよりも、課題を整理しながら質問を組み立てることで、より適切な検索キーワードを選ぶことができ、検索結果への理解も深まります。

## 良い質問はアイデアのタネになる

良い質問をすることで、課題の構造が浮き彫りになり、それが新たなアイデアにつながることもあります。

例えば、「なぜこのコードが動かないのか？」と考えたとき、

1. そもそもこのコードはどのように動作するべきなのか？
2. どの部分が期待通りに動いていないのか？
3. どのような原因が考えられるか？
4. どうすればこの問題を解決できるか？

といった具合に、問題を深掘りしていくことになります。これはまさに、論理的思考を鍛えるトレーニングになり、ひいては新しい発想の源泉にもなり得ます。

実際、多くの技術的ブレイクスルーは、「そもそもこの問題はなぜ起きるのか？」という問いから生まれています。良い質問をすることで、新しい技術的アプローチや、より洗練されたソリューションが見つかることもあるのです。

## 良い質問は質の高いコミュニケーションを促す

質問の仕方が良いと、単なる問題解決にとどまらず、質の高いコミュニケーションを生むきっかけにもなります。

例えば、相手が答えやすい形で質問を整理すると、相手もスムーズに考えを共有できるようになります。また、質問の仕方が的確であればあるほど、相手との意思疎通がスムーズになり、誤解が減ります。

さらに、良い質問をすることで、チーム内での知識共有が活発になります。質問の過程で新たな視点が生まれたり、他のメンバーの経験やノウハウを引き出したりすることができるため、組織全体の成長にもつながるのです。

特に、リモートワーク環境では、テキストベースでのやり取りが多くなります。そのため、相手がスムーズに理解できるよう、背景情報を適切に整理し、簡潔かつ明確な質問をすることが求められます。良い質問は、円滑なコミュニケーションを生み、効率的な問題解決につながります。

## まとめ

質問をすることは、単なる問題解決手段にとどまりません。良い質問は、

- 自分の理解を整理し問題の本質を明らかにする
- 検索や調査の精度を向上させる
- 新たなアイデアのきっかけを生む
- 質の高いコミュニケーションを促進する

というメリットをもたらします。普段の業務においても、「質問力」を意識してみることで、より効率的に問題解決ができるだけでなく、知識の蓄積や成長にもつながるはずです。

仕事で何かにつまづいたときには、ぜひ「どう質問すればより良い答えにたどり着けるか」を考えてみてください。
CORSとは？初心者にもわかるクロスオリジンリソース共有の解説

## はじめに

ウェブ開発をしていると、突然ブラウザのコンソールに「CORS policy」というエラーが表示されて頭を抱えた経験はありませんか？このエラーの正体であるCORS（Cross-Origin Resource Sharing：クロスオリジンリソース共有）について、技術的な知識がなくても理解できるように解説します。

## CORSとは何か？

CORSは「異なるウェブサイト間でのデータやりとりを制御する仕組み」です。これは主にセキュリティのために存在しています。

### オリジンとは？

「オリジン」は、ウェブサイトの「住所」のようなものです。オリジンは以下の3つの要素からなります：

1. **プロトコル**: `http://` や `https://`（どのような方法でアクセスするか）
2. **ドメイン**: `example.com` や `localhost`（どのサーバーにアクセスするか）
3. **ポート番号**: `:8080` や `:3000`（そのサーバーのどの「ドア」を使うか）

例えば、`https://example.com:443` というのは一つのオリジンです。

## なぜCORSが必要なのか？

インターネットには多くの悪意あるウェブサイトが存在します。あなたがオンラインバンキングのサイトにログインしているとき、別の悪意あるサイトがあなたのブラウザを通じてバンキングサイトにリクエストを送り、情報を盗もうとするかもしれません。

このような脅威から守るため、ブラウザには「**同一オリジンポリシー**」というルールがあります。このルールは「あるウェブページは、そのページと同じオリジンのリソースにしかアクセスできない」というものです。

しかし、現代のウェブサービスでは異なるオリジン間での通信が必要なケースが多いです。例えば：
- フロントエンドとバックエンドを別々のサーバーでホスティングする場合
- 外部APIを使用する場合

そこで登場するのがCORS（クロスオリジンリソース共有）です。これは「特定の条件を満たせば、異なるオリジン間での通信を許可する」という仕組みです。

## CORSの仕組みをわかりやすく例えると

### セキュリティゲートの例え

CORSは、高セキュリティビルのエントランスにあるセキュリティゲートのようなものです：

1. あなた（ブラウザ）が別のビル（別のオリジン）にある会社（API）を訪問しようとします
2. セキュリティゲート（ブラウザのCORS機能）があなたに「どこから来たんですか？」と尋ねます
3. あなたは正直に「〇〇ビル（現在のオリジン）から来ました」と答えます
4. セキュリティゲートは会社に「〇〇ビルからの訪問者がいますが、入れてもいいですか？」と確認します
5. 会社が「はい、そのビルからの訪問者はOKです」と応答すれば入れます（Access-Control-Allow-Origin）
6. 会社が「いいえ、そのビルからの訪問者は認めていません」と応答すれば入れません（CORSエラー）

## 実際の例：ローカル開発環境での例

例えば：

- あなたのウェブアプリは `localhost:8080` でホスティングされています
- アプリ内のページ `localhost:8080/1` にアクセスする場合：
  - 同じオリジン `localhost:8080` からアクセスすると → 問題なく閲覧可能
  - 別のオリジン `sample.com` からアクセスすると → CORSポリシーによりブロックされる

## CORSを設定する方法

CORSを設定するのは主にサーバー側（API側）の仕事です。サーバーは「どのオリジンからのアクセスを許可するか」をHTTPレスポンスヘッダーに含めます。

### 基本的なCORS設定例（Node.js/Express）

```javascript
app.use((req, res, next) => {
  // 特定のオリジンからのアクセスのみ許可
  res.header('Access-Control-Allow-Origin', 'https://localhost:3000');
  
  // 許可するHTTPメソッド
  res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
  
  // 許可するヘッダー
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  
  next();
});
```

## CORSエラーの主な原因と解決方法

### 1. Access-Control-Allow-Origin が設定されていない

**症状**: `No 'Access-Control-Allow-Origin' header is present on the requested resource`

**解決策**: サーバー側でアクセスを許可するオリジンを設定します。

### 2. 許可されていないオリジンからのアクセス

**症状**: `The 'Access-Control-Allow-Origin' header has a value that is not equal to the supplied origin`

**解決策**: サーバー側の許可リストにアクセス元のオリジンを追加します。

### 3. プリフライトリクエストの問題

**症状**: `Method XXX is not allowed by Access-Control-Allow-Methods`

**解決策**: サーバー側で許可するHTTPメソッドを追加します。

## まとめ

CORSは「異なるウェブサイト間でのデータのやり取りを制御する仕組み」です。セキュリティのためにブラウザに組み込まれていますが、適切に設定することで必要な通信を安全に行うことができます。

ウェブ開発者として、CORSを理解しておくことは非常に重要です。API開発時には適切にCORS設定を行い、意図したクライアントだけがAPIにアクセスできるようにしましょう。

CORSエラーが出たら、「どのオリジンからのアクセスを許可すべきか」を考え、適切に設定することが解決の鍵となります。
IguanaDoc

　EngineeroLabs の Engineero Nathan が GPL ライセンスで公開している git リポジトリ [latex_in_word](https://github.com/EngineeroLabs/latex_in_word) のマクロを編集（インターネット上のサーバ[^1]と交信して latex のソースをコンパイルした画像ファイルを取得する部分を [Tex2imgc](https://tex2img.tech/) [^2] で代替）して実用化した。
　Microsoft Word の Equation Editor に馴染めない TeXニシャンにお勧めです。

![screen-shot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233450/5ec31b95-df83-4766-bcc9-6af1f64bfc5b.png)

詳しくは [github](https://github.com/dan-yok-jpn/IguanaDoc) を御覧ください。 リポジトリ名は Microsoft PowerPoint で同様の機能を高度に実装している [IganaTeX](https://www.jonathanleroux.org/software/iguanatex/) にあやかった。

[^1]:目下、停止中。
[^2]:dvipng より既定で良質な画像を生成する。
幸せな生活を送れる都道府県はどこだ

どうも、akindです。
今回は自分とゆかりのある「奈良県」をもっと盛り上げたいという思いから地域特製のようなものを分析して見ました。

※データはESTATの地域情報から導出しています。

↓↓リンク
https://public.tableau.com/app/profile/akira.sugimoto/viz/_17422211297230/VS?publish=yes

今回は子育てのしやすさを基準にしています。
また、これを機により深く掘り下げて分析してもっと奈良県の魅力を伝えられるように精進します。



![奈良は住みやすいのか-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037041/5f998198-8156-4de9-8a27-64db3267d9da.png)

①転入者
定住者の数値が欲しかったのですがなかったためどれだけの人が奈良に魅力を感じて転入をしているのかをグラフで見てみましょう。
2020年までは緩やかに下がり続けていたのですが2021年を機に盛り返し始めています。
コロナ禍の影響でリモートワークが普及し、都心部に住まなくても仕事ができるようになった点やリニア新設による交通の利便性の向上を見込んでの移住が増えたのかは定かではありませんが、非常に喜ばしいです。

②保育所数
今回の軸となる分析対象です。
共働きの家庭やパートに出られる時、保育所の存在は本当に支えになりますよね。
都心部などでは人口に対して託児所や保育所の数が少なく、待機児童が多いことが問題視されていますが、奈良県では保育所などの施設の数は意外にも右肩上がりです。
転入してきても安心して子育てをできる環境が整ってます。

③婚姻件数
子育てをするには安心できる環境であることが確認できたので次は婚姻件数を見ていこうと思います。
残念ながら婚姻件数は右肩下がりとなっています。
理由をもっとリサーチしたいところではありますが、奈良県内には大手企業が少なかったり、大学進学や就職を機に県外へ移る方が多かったりと県内で育ったものの他の都道府県に行ってしまう方が多いと耳にします。（実際に私の友人もほどんどが大阪や東京に転勤・引越しをしており孤独感を感じています）
そのため、奈良県の外で婚姻して子育てをするタイミングで奈良に帰ってくるパターンが多いのかもしれません。(浅すぎる、浅すぎるぞakind)
実際にアンケートなどを取って生のデータを集めて見たいですね。


④有効求人数
最後は生きていく上で欠かせない職の多さを示す指標である有効求人数です。
コロナ禍であった2020年は一気に下がっていますが、2021年には息を吹き返し上昇傾向にあります。
個人的には職種別のデータが欲しかったところではありますが、うまくデータセットの結合ができずあえなく断念。もっとTableauのテクニックを深めてインタラクティブな分析ができるように学習を続けていかなければ...

今回はこの辺で失礼します
ここまで読んでくださりありがとうございました。
SQLコマンドの分類と概要

## SQLコマンドの分類と概要

SQL（Structured Query Language）は、データベースを操作するための言語であり、大きく **DDL（データ定義言語）、DML（データ操作言語）、DCL（データ制御言語）、TCL（トランザクション制御言語）** の4つに分類されます。本記事では、それぞれのカテゴリと代表的なコマンドについて詳しく解説します。

---

### 1. DDL（Data Definition Language：データ定義言語）

DDLは、データベースの構造を定義・変更するためのコマンド群です。**テーブル、スキーマ、インデックス** などの作成・変更・削除に使用されます。

#### ✅ 主なDDLコマンド

| コマンド | 説明 |
|---------|------|
| `CREATE` | データベースやテーブル、インデックスなどのオブジェクトを作成 |
| `ALTER` | 既存のテーブルやオブジェクトの構造を変更 |
| `DROP` | テーブルやデータベースなどのオブジェクトを削除 |
| `TRUNCATE` | テーブル内の全データを削除し、オートインクリメントをリセット |

#### 💡 DDLの使用例
```sql
-- テーブルの作成
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100)
);

-- テーブルの変更（カラムの追加）
ALTER TABLE users ADD COLUMN age INT;

-- テーブルの削除
DROP TABLE users;
```
---

### 2. DML（Data Manipulation Language：データ操作言語）
DMLは、データベース内のデータを操作（追加、更新、削除、取得）するためのコマンド群です。

#### ✅ 主なDDLコマンド
| コマンド | 説明 |
|---------|------|
INSERT | データを追加
UPDATE | 既存のデータを更新
DELETE | 既存のデータを削除
SELECT | データを取得（DQL：Data Query Language に分類されることもある）

#### 💡 DMLの使用例
```sql
-- データの挿入
INSERT INTO users (id, name, email, age) VALUES (1, 'Alice', 'alice@example.com', 25);

-- データの更新
UPDATE users SET age = 26 WHERE id = 1;

-- データの削除
DELETE FROM users WHERE id = 1;

-- データの取得
SELECT * FROM users WHERE age >= 20;
```

---

### 3. DCL（Data Control Language：データ制御言語）
DCLは、データベースのアクセス権限やユーザー管理を行うためのコマンド群です。

#### ✅ 主なDDLコマンド
| コマンド | 説明 |
|---------|------|
GRANT | ユーザーに特定の権限を付与
REVOKE | ユーザーから特定の権限を剥奪

#### 💡 DCLの使用例
```sql
-- ユーザーにSELECT権限を付与
GRANT SELECT ON users TO user1;

-- ユーザーから権限を剥奪
REVOKE SELECT ON users FROM user1;
```
💡 DCLは主に データベース管理者（DBA） が使用することが多く、一般の開発者が触る機会は少ないです。

---

### 4. TCL（Transaction Control Language：トランザクション制御言語）
TCLは、トランザクションの制御を行うためのコマンド群です。データの一貫性や整合性を保つ ために使用されます。

#### ✅ 主なTCLコマンド
| コマンド | 説明 |
|---------|------|
COMMIT | トランザクションの変更を確定
ROLLBACK |トランザクションを取り消して元の状態に戻す
SAVEPOINT | トランザクションの途中で一時的な保存ポイントを作成


#### 💡 TCLの使用例
```sql
-- トランザクションの開始
BEGIN;

-- データの更新
UPDATE users SET age = 30 WHERE id = 1;

-- 変更を確定（コミット）
COMMIT;

-- トランザクションの開始
BEGIN;

-- データの削除
DELETE FROM users WHERE id = 1;

-- 変更をキャンセル（ロールバック）
ROLLBACK;
```

💡 COMMIT しない限り、データの変更は永続化されません。

---

### ✅ SQLコマンドの全体分類まとめ
| カテゴリ | 主なコマンド | 説明 | 
|---|---|---|
DDL| CREATE, ALTER, DROP, TRUNCATE | データベース構造の定義・変更
DML | INSERT, UPDATE, DELETE, SELECT | データの操作
DCL | GRANT, REVOKE | アクセス制御
TCL | COMMIT, ROLLBACK, SAVEPOIN | トランザクション制御

---

### 🎯 まとめ
・DDL（データ定義言語）：テーブルやデータベースの構造を定義・変更
・DML（データ操作言語）：データの追加・変更・削除・取得を行う
・DCL（データ制御言語）：データベースのアクセス権限を管理
・TCL（トランザクション制御言語）：トランザクションの管理

このように、SQLコマンドは用途ごとに整理されています。特に DML（INSERT, UPDATE, DELETE）とTCL（COMMIT, ROLLBACK）を組み合わせることで、安全なデータ管理が可能 になります。適切なSQLコマンドを使い分けて、効率的なデータベース操作を行いましょう！
アウトプットの大切さをオンラインイベントで学んだ話

## はじめに

先日、「Androidエンジニアの有山さん＆そば屋さんから学ぶ！スキルアップに繋がる思考法や技術とは？」というオンラインイベントに参加しました。

このイベントで、アウトプットの重要性について改めて考えさせられたので、学んだことを共有したいと思います。

※ 自分なりの解釈を入れた上で記載しているため、登壇者の方々の意図とは異なる記述をしてしまっているかもしれませんので、その点はご了承いただけますと幸いです:bow:

## 3行で

- アウトプット calls アウトプット
- "分からない"もアウトプットする
- 「マサカリ」を恐れずに発信しよう

## アウトプット calls アウトプット

イベントでは「自分がアウトプットをすることで、周りが合わせてアウトプットしてくれるようになる」という旨を仰っていました。
自分がアウトプットをすることで、周りもそれに突っ込みをいれる形でアクションがあったり、触発されてアウトプットしてくれるようになるそうです。
確かに自分も、前職の社内勉強会で発表した際にリアクションをいただけたりしましたし、現職のチームリーダーの方がアクションを取った際には自分も何か反応しようと思います。アクションを起こすのは大切ですね。

またイベント内で「相手から発信してくれるのを待つのではなく、自分からやっていくのが大切」という旨もおっしゃっていました。

自分から継続的にアウトプットを行うことで、周りにアウトプットをする文化を自然と根付かせていく、そんな大人に私はなりたい。そう思いました:melting_face:

## "分からない"もアウトプットする

「分からないことも発信することが大事」との旨の話もありました。
アウトプットというと、自分の知識を発信するイメージがあると思います。ですが自分の分からないことを発信することで、周りから教えてもらえたり、同様の悩みを持つ人とつながったりすることができるそうです。

私自身「アウトプットする時はしっかり知識を身につけてからじゃないと」と肩肘張っていた部分があったので、確かに完璧に分かっている必要はないのかと目から鱗でした。

特に社内での発信では、周りのアウトプットへのハードルを下げることもできて、アウトプットをする環境を根付かせる有効な手段になりそうだなと思いました。

## 「マサカリ」を恐れずに発信しよう

アウトプットには、いわゆる「マサカリを投げられる」ことが付き物かもしれません。しかし、本イベントでは「あまり気にしない方が吉」という旨の話がありました。

ただ攻撃的な発言をしてくるだけなのであればその人は自分にメリットをもたらさない人間だし、教えてくれる人なのであればその発言をポジティブに受け取るべきとのことでした。

確かに「こんな初歩的なことを言ったら批判を受けるんじゃないか」と思いアウトプットしなかったことが何度もあるので、今後はそのようなことは気にせずに発信していくべきなのだなと痛感しました。

## まとめ

今回のイベントを通じて、アウトプットの重要性を改めて感じました。

- 自分から積極的にアウトプットしていく
- 分からないことも発信することで学びにつながる
- マサカリは気にしない

ということを意識して、これから積極的にアウトプットしていきたいと思います！
Laravel のセッション管理と Web サイトの仕組み（サーバー・DNS・ロードバランサー・ドメインの関係）

**Webサイト**はユーザーのリクエストに応じてデータを処理し、レスポンスを返す仕組みで動いています。
本記事では、Laravelの**SESSION_DRIVER** の仕組みを中心に、サーバー・DNS・ロードバランサー・ドメインの関係をWebサイトの動きを通して解説します。


# ①Webサイトの基本的な流れ
例えば、ユーザーが Web サイト（daeudaeu.com）にアクセスし、ログインしてセッション管理を行う流れを考えてみましょう。

- Webサイトのリクエスト・レスポンスの流れ
  - **1.daeudaeu.comにアクセス**
→DNSがdaeudaeu.comをIPアドレスに変換

  - **2.Webサーバーと通信開始**
→ロードバランサーが、リクエストを適切なサーバーへ転送

   - **3.ユーザーがログイン**
→サーバーが認証し、セッションを作成(SESSION_IDをCookieに保存)

   - **4.ページを移動する**
→CookieのSESSION_IDを元に、サーバーがログイン情報を維持

   - **5.ログアウトする**
→SESSION_IDを削除し、ユーザー情報を消去


![スクリーンショット 2025-03-31 092708.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2246240/8b1526e2-4b17-47f5-8895-f020c632e0be.png)


この流れの中でセッション管理、サーバーの役割、DNS、ロードバランサーの動きが連携しています。
それぞれの仕組みを詳しく見ていきましょう。

# ②LaravelのSESSION_DRIVERとWebサイトの動き
Webサイトは **「ステートレス（リクエストごとに状態を保持しない）」** ですがSessionを使うことでログイン状態やカート情報を維持できます。
Laravel では **.envのSESSION_DRIVERを設定**することで、セッションの保存先を指定できます。

**①.file**
→保存場所はstorage/framework/sessions(デフォルト)
→単純なアプリで利用される

**②.database**
→保存場所はsessionsテーブル(DB)
→複数サーバー環境向けである

**③.redis**
→保存場所はRedisキャッシュ
→高速処理が必要な場合に利用される

**④.memcached**
→保存場所はMemcached
→キャッシュ用途

**⑤.cookie**
→保存場所はクライアントのCookie
→セキュリティリスクあり

**⑥.array**
→保存場所はメモリ(リクエストごとのみ)
→テスト時に使用される

例:)databaseを利用する場合
→.envでSESSION_DRIVER=databaseに変更
```
SESSION_DRIVER=database
```
→artisanコマンドでsessionsテーブルを作成
```
php artisan session:table
php artisan migrate
```

→これでSessionがデータベースに保存され、ロードバランサーを使った環境でも安定して動作


# ③サーバー・DNS・ロードバランサーの関係
Webサイトが動くためには、**DNS・ロードバランサー・Webサーバーの連携**が必要です。

### ・DNS(ドメインネームシステム)とは？
→DNSは、daeudaeu.comのようなドメインをIPアドレスに変換する仕組み。
→ユーザーがdaeudaeu.comのアクセスすると、DNSサーバーがIPアドレス(例:123.35.201.1)に変換し、適切なサーバーへ接続します。

![スクリーンショット 2025-03-31 093833.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2246240/4957310c-d115-4ae2-b8d1-78ac7f5f12da.png)


### ・ロードバランサーとは？
→ロードバランサー（Load Balancer）は、大量のリクエストを**複数のサーバーへ分散する装置・サービス。**
→AWS ELB、Nginx、HAProxy などが利用される。

![スクリーンショット 2025-03-31 093723.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2246240/9c5d77dd-0e41-4993-8aae-9d1d561369be.png)


### ・ロードバランサーが必要な3つの理由
- 1.負荷分散(アクセスが集中しても処理を分散)
- 2.サーバー障害時の自動フェイルオーバー
- 3.スケーラビリティの向上(サーバーを追加すればスケール可能)


# ④ドメインとIPアドレスの関係
Web サイトは「ドメイン（例: daeudaeu.com）」と「IP アドレス（例: 123.35.201.1）」を組み合わせてアクセスします。

**・ドメイン**
→人間が覚えやすい名前(例:daeudaeu.com)

**・IPアドレス**
→サーバーを識別する数値(123.35.201.1)

**・DNS**
→ドメインをIPアドレスに変換する仕組み


# ⑤まとめ
・Webサイトは **「DNS → ロードバランサー → Web サーバー」** の流れで動く！

・LaravelのSESSION_DRIVERを適切に設定することで、セッション管理が安定！
Firebase Emulator が起動しないエラーの解決方法

# **Firebase Emulator が起動しないエラーの解決方法**
ローカル環境でFirebaseのElulatorを試してたが詰まったので、解決した方法を記事にします。
Firebase Emulator Suite を起動しようとした際に、以下のエラーが発生しました。

実際のエラー
```sh
$firebase emulators:start
i  emulators: Starting emulators: functions, hosting
⚠  hosting: Hosting Emulator unable to start on port 5000, starting on 5002 instead.
⚠  functions: The following emulators are not running, calls to these services from the Functions emulator will affect production: auth, firestore, database, pubsub, storage, dataconnect
i  hosting[xxx]: Serving hosting files from: .output/public
✔  hosting[xxx]: Local server: http://127.0.0.1:5002
i  ui: Emulator UI logging to ui-debug.log
⚠  ui: Fatal error occurred: 
   Emulator UI has exited with code: 1, 
   stopping all running emulators
```

エラー詳細 (ui-debug.log の内容)
```
Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/user/.cache/firebase/emulators/ui-v1.13.0/server/server.mjs not supported.
Instead change the require of /xxx/xxx/.cache/firebase/emulators/ui-v1.13.0/server/server.mjs to a dynamic import() which is available in all CommonJS modules.
```


## 解決方法
以下の手順でエラーが解消され、正常にFirebase Emulatorを起動できました。

1. Firebase CLI をアンインストール
まず、現在インストールされている Firebase CLI を削除します。
```
npm uninstall -g firebase-tools
```

2. npm キャッシュをクリア
古いキャッシュが影響している可能性があるため、npm のキャッシュを削除します。
```
npm cache clean --force
```
3. Firebase CLI を再インストール
Firebase CLI を再インストールします。
```
npm install -g firebase-tools
```
4. Firebase に再ログイン
再インストール後、Firebase にログインし直します。
```
firebase login
```

5. Firebase Emulator を起動
再度、エミュレーターを起動します。
```
firebase emulators:start
```
正常に Firebase Emulator が起動しました！

firebase-toolのバーションは以下です。
```
firebase-tools@13.34.0
```

## 考察
古いFirebase EmulatorがNode.jsのrequire()を使えなかったのだと思います。
新しいFirebase CLIでは修正されている可能性があるため、firebase-toolsを再インストールすることで解決 しました。