OmniAICreator/Qiita-1.07M huggingface dataset:
Content Safety Studio: コンテンツ安全性のための統合環境

## Content Safety Studio を提供する Azure AI Content Safety とは

Azure AI Content Safetyは、アプリケーションやサービス内の有害なユーザー生成コンテンツやAI生成コンテンツを検出するAIサービスです[^1]。その中核となるのがContent Safety Studioで、これは最先端のコンテンツモデレーションMLモデルを使用して、不適切、危険、または望ましくないコンテンツを処理するように設計されたオンラインツールです。

https://learn.microsoft.com/ja-jp/azure/ai-services/content-safety/studio-quickstart

## Content Safety Studioの特徴

Content Safety Studioは以下の特徴を持っています：

1. **直感的なインターフェース**: テキストと画像のモデレーション機能を視覚的に試すことができます。
2. **カスタマイズ可能なワークフロー**: テンプレートとカスタマイズされたワークフローを備えており、ユーザーは独自のコンテンツモデレーションシステムを選び、構築することができます。
3. **組み込みのブロックリスト**: Microsoftによる不適切な表現を検出するための用語ブロックリストが含まれています。
4. **カスタムブロックリスト**: ユーザーは独自のブロックリストをアップロードして、特定のユースケースに対応できます。
5. **モデレーションワークフロー**: コンテンツモデレーションのパフォーマンスを継続的に監視し向上させることができます。
6. **多様な業界対応**: ゲーム、メディア、教育、eコマースなど、様々な業界のコンテンツ要件に対応可能です。
7. **リアルタイムモデレーション**: 企業は自社のサービスをStudioに簡単に接続し、ユーザー生成かAI生成かを問わず、リアルタイムでコンテンツをモデレートできます。
8. **KPI監視**: 技術メトリック（待ち時間、精度、再現率）やビジネスメトリック（ブロック率、ブロック量、カテゴリ比率、言語比率など）を監視できます。

## 利用開始方法

Content Safety Studioを利用するためには、以下の前提条件が必要です：

1. Azureアカウント（無い場合は無料で作成可能）
2. Content Safety Azureリソース
3. Cognitive Services ユーザーロールをアカウントに割り当てること

重要: Studioの利用には、*Cognitive Services ユーザー*ロールをAzureアカウントに割り当てる必要があります[^9]。

## テキストコンテンツのモデレーション

Studioでは、以下の手順でテキストコンテンツを分析できます：

1. **[Moderate text content]** パネルを選択
2. 分析したいテキストを入力するか、サンプルテキストを選択
3. **[テストの実行]** を選択して分析を開始

分析結果では、各カテゴリの重大度レベル（0-安全、2-低、4-中、6-高）と、フィルター設定に基づいたAccepted/Rejectedの判定が表示されます。フィルターの構成タブでは、各カテゴリの許容レベルをカスタマイズすることもできます。

## 画像コンテンツのモデレーション

Content Safety Studioは、テキストだけでなく画像のモデレーションも提供しています：

1. **[Moderate image content]** パネルを選択
2. サンプル画像を選択するか、独自の画像をアップロード
3. **[テストの実行]** を選択して分析を開始

画像分析では、不適切な内容、暴力的な内容、性的な内容などを検出し、重大度レベルを提供します。

## Content Safety Studioの利点

1. **包括的な安全対策**: テキストと画像の両方に対応し、360度の包括的な安全対策を実現します。
2. **AI生成コンテンツへの対応**: ChatGPTやDALL-Eなどのツールで生成されたコンテンツにも対応可能です。
3. **インタラクティブな体験**: 包括的なWebベースのインターフェイスを提供し、迅速なコンテンツセーフティテストの実施を可能にします。
4. **監視ダッシュボード**: コンテンツ安全基準を簡単に追跡・管理できます。
5. **カスタマイズ可能**: ユーザーフレンドリーでカスタマイズ可能な環境を提供し、コンテンツセーフティの管理と維持を効率的に行うことができます。

Content Safety Studioは、デジタルプラットフォームの安全性と信頼性を高めるための強力なツールです。APIの実装前にサービスの動作を確認できるため、開発者にとって非常に有用なリソースとなっています。
return view()->withの使い方を少し深ぼってみる

# はじめに
Laravelでビュー(Bladeテンプレート)に変数を渡す際、よく使われるのがこの書き方:

```php
return view('sample')->with('title', '記事一覧');
```

最初のうちは「これ、どうやって渡してるの？」「Blade側でどう受け取るんだ？」と疑問に感じる部分ではあります。

この記事では、**view()->with()の仕組みと、Blade側での参照方法**を、軽く深堀していきます！

# ①view()->with()の基本構文

```php
return view('viewファイル名')->with('キー',値);
```

- 'キー'は**Blade側で使う変数名**になります。
-　値は任意のデータ(文字列、配列、オブジェクトなど)

**例:**
```php
return view('posts.index')->with('titile', '投稿一覧');
```

この場合、Bladeテンプレートresources/view/posts/index.blade.phpに$titleという変数が渡されます。

# ②Blade(View)側での参照方法
Blade側では、**with()の第一引数がそのまま変数名として使える**ようになります。
```blade
<h1>{{ $title }}</h1>
```
このように、コントローラでwith('title', '投稿一覧')と書けば、Blade側では{{ $title }}で表示できます。

# ③実務での複数データ渡し(チェーンで渡す)
```php
return view('posts.index')
     ->with('title', '投稿一覧')
     ->with('user', $user)
     ->with('count', 5);
```

Blade側:
```blade
<h1>{{ $title }}</h1>
<p>{{ $user->name }}</p>
<p>{{ $count }}</p>
```

# ④データ構造を理解する(裏側では配列に変換されている)

実はwtith()は内部的には$data配列にキーと値を追加しているだけです。

以下のコードと全く同じ結果になります。
```php
return view('posts.index', [
    'title' => '投稿一覧',
    'user' => $user,
    'count' => 5,
]);
```
つまり、**with()** **は「見た目がチェーンメソッドになっているだけ** で、やっていることは同じです。

# ⑤いつwith()を使うのか？
![IMG_7730.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2246240/ef1b4c5e-ca06-4c5f-9156-f2230472ff0c.jpeg)

# ⑥条件分岐との組み合わせ例(応用)

```php
$view = view('dashboard')->with('user', $user);

if ($user->is_admin) {
    $view->with('admin_message', 'ようこそ管理者様');
}

return $view;
```
Blade側:
```blade
<h1>{{ $user->name }}さん、こんにちは</h1>

@if(isset($admin_message))
    <p>{{ $admin_message }}</p>
@endif
```
- このようにwith()は**後から動的に追加できる**のが強みです。

# ⑦まとめ
![IMG_7731.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2246240/d9aee9cf-b70b-49e4-a5fa-afef60b30dc6.jpeg)
【ローカル開発で便利】TypeScriptの型エラーでgit pushできない！--no-verify で一時回避する方法

## 🐶 husky が push をブロック!?

TypeScript の型エラーが原因で `git push` ができなくてあれ？…みたいな状況、ありませんか？

プロジェクトにもよりますが、
僕の場合は`husky` が `pre-push` で型チェック（`tsc`）をしていて、エラーがあると **push を止めてくれる**ようになっています。

huskeyとは？？

https://zenn.dev/nozomi_iida/articles/20230223_setup_huskey

https://qiita.com/dtakkiy/items/8d6025c052784ab8eef4

でも、

> 「まだ開発途中だからpushしておきたいだけなんだよ〜！」  
> 「ローカルで動くかだけ先に見たい！」

というケースもありますよね。

---

## ✅ 解決法：`--no-verify` で一時的に無視！

```bash
git push origin HEAD -u --no-verify
```

これで一旦型エラーを回避してのpushができるようになりました”
Ingress-nginx CVE-2025-1974について

# Ingress-nginx CVE-2025-1974 について

本記事では、2025年3月24日に[公式ブログ](https://kubernetes.io/blog/2025/03/24/ingress-nginx-cve-2025-1974/)で公開された脆弱性CVE-2025-1974について、備忘録的に一部のみ説明します。

## 1. 脆弱性の概要

Ingress Nginxのwebhookサーバでは、AdmissionConfigurationが設定されておらず、追加の認証機構も実装されていません。そのため、ネットワーク上でIngress Nginxと通信可能な任意のプロセスが、admission webhookと同一の形式のHTTPリクエストを送信することが可能です。これにより、攻撃者は内部で任意のコマンドを実行できる状態となっています。

## 2. 技術的背景

Ingress Nginxは、Kubernetes環境におけるIngress Controllerとして動作しており、内部ではadmission webhookを利用したリクエスト処理を行っています。しかし、webhookサーバ自体にAdmissionConfigurationが実装されていません。

- **AdmissionConfiguration未設定**  
  webhookサーバに対する認証やアクセス制限が存在せず、且つNetworkPolicyも設定されていない環境の場合だとWebhook Serverに対するHTTPリクエストがそのまま処理される状態になっています。

- **内部でのコマンド実行処理**  
  PR差分で確認できる通り、内部でコマンドを実行する際に、ユーザーから渡されたパラメータが検証なしに連結され、`exec.Command`が呼び出されます。以下はそのコードの一部抜粋です。

  ```go
  // ExecCommand instantiates an exec.Cmd object to call nginx program
  func (nc NginxCommand) ExecCommand(args ...string) *exec.Cmd {
      cmdArgs := []string{}

      cmdArgs = append(cmdArgs, "-c", cfgPath)
      cmdArgs = append(cmdArgs, args...)
      //nolint:gosec // Ignore G204 error
      return exec.Command(nc.Binary, cmdArgs...)
  }
  ```

  これにより、悪意のあるHTTPリクエストを送信することで、コマンドライン引数に任意の値を注入し、リモートでコード実行が可能となる可能性があります。[GitHub Issueコメント](https://github.com/kubernetes/kubernetes/issues/131009#issuecomment-2750873467)および[PR差分](https://github.com/kubernetes/ingress-nginx/compare/controller-v1.12.0...controller-v1.12.1)にて詳細な議論が行われています。

## 3. まとめ

本脆弱性により、Ingress Nginxとネットワーク的に接続されている全てのプロセスがIngress Nginxに対して攻撃できる状態です。
Ingress Nginxの脆弱性CVE-2025-1974は、AdmissionConfigurationが設定されておらず、追加の認証機構も存在しないため、webhookがネットワーク上の全てのプロセスに対して開かれている状態且つリクエストの内容から任意のコマンドを実行できる状態等、複合的な要因が絡んでいます。運用環境におけるリスクを低減するため、速やかに[案内](https://kubernetes.io/blog/2025/03/24/ingress-nginx-cve-2025-1974/)に従い、対策を講じることが求められます。

## 参考情報
- Kubernetes公式ブログ: [Ingress Nginx CVE-2025-1974 公開記事](https://kubernetes.io/blog/2025/03/24/ingress-nginx-cve-2025-1974/)
- GitHub Issueコメント: [議論](https://github.com/kubernetes/kubernetes/issues/131009#issuecomment-2750873467)
- 対応PR差分: [controller-v1.12.0...controller-v1.12.1](https://github.com/kubernetes/ingress-nginx/compare/controller-v1.12.0...controller-v1.12.1)
railsでcookies.signed, encryptedをテストする

# これはなに

rails の controller test において、cookies.signed を使用した cookieを検査する方法に関するメモ。

# メモ

そもそもの問題点は、`ActionDispatch::IntegrationTest`では`cookies`は`Rack::Test::CookieJar`が用いられる。
これは`signed`、`encrypted`を扱えない。

そこで、`ActionDispatch::Cookies::CookieJar`を用意する。
```.rb
cookiejar = ActionDispatch::Cookies::CookieJar.build(request, cookies.to_hash)
```

これを用いることで、`signed`,`encrypted`を参照できる。
```.rb
cookiejar.signed[:hoge] 
cookiejar.encrypted[:fuga] 
```
個人的備忘録：.DS_Store をGitに入れないための .gitignore と削除コマンドメモ

## はじめに
macOS を使っていると、.DS_Store というファイルが自動的に生成されます。

:::note info
**これはフォルダの表示設定を記録する隠しファイルであり、システム上は便利ですが、Git プロジェクトでは邪魔者になりがちです。**
:::

この記事では、.DS_Store を Git の管理対象から除外し、クリーンなリポジトリを保つための方法を、個人の備忘録としてまとめます。

## 書こうと思ったきっかけ
チーム開発で、毎回 .DS_Store による不要な差分が出るたびに気になっていたためです。

:::note warn
**個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。**
:::

自分の開発環境だけでなく、他のメンバーにも影響するため、備忘録としてしっかり整理しておこうと思いました。

## 手順まとめ

### .gitignore に .DS_Store を追加する
```bash
echo .DS_Store >> .gitignore
```
確認:
```bash
cat .gitignore
```

### すでに Git に追加されている .DS_Store を削除（追跡対象から外す）
```bash
git rm --cached .DS_Store
```

### 変更をコミットする
```bash
git add .gitignore
git commit -m "Remove .DS_Store and ignore it"
```

### リモートに push（必要に応じて）
```bash
git push
```

## 補足：すべてのプロジェクトで無視したい場合
```bash
git config --global core.excludesfile ~/.gitignore_global
echo .DS_Store >> ~/.gitignore_global
```
この設定で、今後作成するすべての Git プロジェクトで .DS_Store が無視されます。

## まとめ
- macOS 特有の .DS_Store は、Git プロジェクトでは無視した方が良い
- `.gitignore` に追加すれば、今後は追跡されない
- すでに追加されている場合は `git rm --cached` で外す
- グローバル設定にすれば、毎回記述しなくて済む

開発環境の清掃は、効率とチームワークの第一歩。不要なファイルを除いて、スマートに管理してみてください！
Azure AI Content Safety：安全なAI環境を実現するためのツール

# Azure AI Content Safetyとは

Azure AI Content Safetyは、アプリケーションおよびサービス内の有害なユーザー生成コンテンツやAI生成コンテンツを検出するMicrosoftのAIサービスです[^1]。このサービスは、テキストと画像の分析APIを提供し、様々な種類の有害コンテンツを複数の重大度レベルで検出する機能を備えています。

https://learn.microsoft.com/ja-jp/azure/ai-services/content-safety/overview

## Azure AI Content Safetyの全体概要

Azure AI Content Safetyは、デジタルコンテンツの安全性を確保するための強力なAIサービスです。開発者はこのサービスを利用して、アプリケーションやプラットフォーム上の有害コンテンツをリアルタイムで検出し、ユーザー体験を保護することができます。

## 主な使用シナリオ

Azure AI Content Safetyは以下のようなシナリオで活用できます：

- 生成AIサービスに送信されるユーザープロンプトの安全性確認
- AIモデルによって生成されたコンテンツのモデレーション
- オンラインマーケットプレイスでのユーザー生成コンテンツのモデレーション
- ゲーム内のチャットやユーザー生成コンテンツの監視
- ソーシャルメディアプラットフォームでの不適切なコンテンツの検出
- 企業メディアのコンテンツモデレーション
- 教育環境での不適切なコンテンツのフィルタリング


## 提供される機能

Azure AI Content Safetyは、以下の専門化された機能を提供しています：

### テキスト分析API

有害なテキストコンテンツを検出します。最先端のAIモデルを使用して、憎悪的、暴力的、性的、自傷的なコンテンツを検出し、重大度スコアを割り当てることができます。

### 画像分析API

不適切な画像コンテンツを検出します。MicrosoftのFlorenceファウンデーションモデルを使用して、リアルタイムで画像を識別し、有害なコンテンツをフラグ付けします。

### 保護されたマテリアル検出

著作権で保護されたコンテンツを検出します。これにより、AI生成コンテンツに著作権侵害の可能性があるものが含まれていないかを確認できます。

### カスタムカテゴリAPI

独自のコンテンツカテゴリを作成し、検出することができます。

### プロンプトシールド

大規模言語モデルへの悪意ある入力攻撃のリスクを検出します。

### グラウンデッドネス検出

AIの回答がソース資料に基づいているかを検証します。

## 特徴

1. **ニュアンスや文脈の理解**: Azure AI Content Safetyは、具体的な文言をすべて指定することなく、プロンプトや生成された文章の意味と文脈を読み解き、暴力的な文言などを解析することができます。
2. **多言語対応**: プロンプトや回答の言語に関わらず、同じポリシーでAzure AI Content Safetyを使用できます[^4]。
3. **カスタマイズ可能**: ユーザーや企業のポリシーに合わせてカスタマイズすることができます。
4. **リアルタイム処理**: 有害なコンテンツをリアルタイムで識別し、フラグを立てることができます。

## まとめ

Azure AI Content Safetyは、アプリケーションやサービス内の有害なコンテンツを検出するAIサービスで、テキストや画像をリアルタイムで分析します。憎悪的、暴力的、性的、自傷的なコンテンツを複数の重大度レベルでスキャンし、カスタマイズ可能な機能を提供します。ユーザー体験を保護し、安全なAI環境を実現するための強力なツールです。
AWSの仕様変更によりECSでコンテナが起動しない

## はじめに
2024/10ごろ、これまで問題なくできていたECSのコンテナ起動で急にエラーが出るようになり、起動ができなくなりました。その時に調べてわかったことを記しておきます。

## 原因になったAWSの仕様変更
https://aws.amazon.com/jp/about-aws/whats-new/2024/07/amazon-ecs-software-version-consistency-containerized-applications/

- 仕様変更前
  - ECRのイメージタグからECSのコンテナを起動
- 仕様変更後
  - ECRのイメージタグに紐付く、イメージダイジェストからECSのコンテナを起動

## 何が起きたか
以下、担当システムでの事例を元に説明します。
### 仕様変更前
1. イメージタグを元にコンテナを起動
2. ECRに対して、同じイメージタグでプッシュを行う
3. 1.と同じイメージタグを元にコンテナが起動しようとする
4. 問題なくコンテナが起動する

### 仕様変更後
1. イメージダイジェストAを元にコンテナを起動
2. ECRに対して、同じイメージタグでプッシュを行う
  a. イメージダイジェストAに紐付くイメージタグがなくなる
  b. イメージダイジェストBが作成される
3. イメージダイジェストAを元にコンテナが起動しようとする
4. CannotPullContainerError:pull image manifest has been retried 1 time(s): failed to resolve ref ~~ というエラーが発生する（イメージダイジェストAはすでにイメージタグに紐付いていないため、「そんなものないよ」と怒られている）

![スクリーンショット 2025-03-18 9.42.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4033808/f3c576dd-e62d-4a0c-9e1e-223cb544357e.png)


## 想定される対処方法
今回の仕様変更に対しては、以下の方法で対応することが可能です。

案１：ECRにプッシュをする際に同じイメージタグを使用しない
→イメージタグ自体が新しいものに更新されるため、イメージダイジェストに紐づくイメージタグが存在しない、という状況が発生しなくなる

案２：ECRにプッシュをするたびに「新しいデプロイの強制」（Force new deployment）を行い、ECSに紐づくイメージダイジェストを更新する
→「新しいデプロイの強制」（Force new deployment）を行うことで、ECSが最新のイメージダイジェストからコンテナを再起動するため、古いイメージダイジェストを参照しなくなる

## 我々の対処方法
担当システムでは、同じイメージタグを使用しない運用にするためには、ECRのプッシュ方法やその後のECSのコンテナ起動を1から見直す必要があるため、対応するのは難しく、案２の解決策で問題を解決しました。
### 運用変更後の流れ
1. イメージダイジェストAを元にコンテナを起動
2. ECRに対して、同じイメージタグでプッシュを行う
  a. イメージダイジェストAに紐付くイメージタグがなくなる
  b. イメージダイジェストBが作成される
3. 「新しいデプロイの強制」（Force new deployment）を行う
4. イメージダイジェストBを元にコンテナが再起動される
5. エラーが発生しなくなり、問題解決
Eclipse マーケットプレースでSunCertPathBuilderExceptionが発生したときの対処

「Copilot for Eclipse」のパブリックプレビュー公開が公開されているとの記事を読んだので自分の環境にも導入しようとしたが、素のEclipseではなくPleiades All in Oneを使っているせいなのか、あるいはネットワーク環境が邪魔しているのか、すんなりとはインストールできなかった。

Copilot for Eclipseだけに限らず他の拡張機能を導入しようとした際にも、Eclipse マーケットプレースで「インストール」ボタンを押下した際に必ずエラーが発生した。

発生したエラーは下記のとおり。
> https://～～～のリポジトリーを読み取ることができません。
> PKIX path building failed:
> sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification > path to requested target

対処方法として、「eclipse.ini」の末尾に下記の行を追記することで解決した。
`
-Djavax.net.ssl.trustStoreType=Windows-ROOT
`

参考記事：
https://stackoverflow.com/questions/76237322/pkix-sun-certification-issues-with-eclipse
【Power BI】集計元のデータを表示したくないとき

こんにちは。
株式会社エーティーエルシステムズの大場です。


Power BI に「データポイントをテーブルとして表示」というオプションがあることをご存じでしょうか？
この機能、フィールドの設定方法によっては、可視化の集計元データが表示されるため
見せたくないデータがある場合、注意が必要です。

今回は、集計元のデータが表示される例と、それを非表示にする方法を共有します。


## サンプルデータ
ダミーデータとして、フィットネスジムの来館者履歴を用意しました。
以下はデータの一部の行です。

![table.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4013595/dcb1dbe0-2b26-4406-bec4-a0c28fe8dafa.png)

## グラフを作成
Power BI Desktopを用いて、フィットネスジムの月ごとの来館者数推移を可視化します。


折れ線グラフを選択し、値を次の通り設定。（以下は失敗例です）
* X軸に「月」
* Y軸に「名前」のカウント


![スクリーンショット 2025-03-24 192321.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4013595/bb04e75a-5987-4611-8372-645dad7d3c75.png)


来館者数推移を示すグラフができました。
![スクリーンショット 2025-03-24 192723.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4013595/cbe19b79-8eb5-431e-8f39-0ecabf720636.png)


## データポイントをテーブルとして表示
Power BIのオプションに、「データポイントをテーブルとして表示」するものがあります。
ビジュアルの作成に使用されたデータの一覧を表示できる機能です。

https://learn.microsoft.com/ja-jp/power-bi/create-reports/end-user-show-data?tabs=powerbi-desktop#use-data-point-table-in-power-bi-desktop


作成した棒グラフの1つの要素を右クリックし、「データポイントをテーブルとして表示」を選択してみます。
![スクリーンショット 2025-03-25 101556.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4013595/103e1586-c232-410e-8c5d-1a719ab0ead4.png)

棒グラフには、月ごとの集計人数が表示されていますが、
このオプションを選択することで、選択月と登録されている「名前」が表示されました。
![スクリーンショット 2025-03-25 102629.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4013595/1f6a1b1c-d285-444b-8d7e-e8b3e1febe02.png)



もし、レポートの閲覧者に、 **グラフに表示している情報以外は見せたくない
 （来館者の名前を知られたくない）場合** このように表示されてしまうのはマズいですよね。

## 集計に関連するデータ表示させない方法
メジャーを作成・使用することで、集計元のデータを非表示にすることができます。


「データポイントをテーブルとして表示」する機能には、上記のMicrosoft公開情報に
記載されている考慮事項と制限事項があり、メジャーの使用がこれに当てはまるからです。
***
 **メジャーを使用して改善** 
 

来館者数をカウントするメジャー `来館者数 = COUNT(Sheet1[名前])` 
を作成し、Y軸に設定します。


棒グラフの要素を右クリックしてみると、「データポイントをテーブルとして表示」ができなくなっていることがわかります。


![スクリーンショット 2025-03-25 144215.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4013595/0a6006ba-600f-4262-bfa4-aa3a0a9c9d19.png)




 **※以下のように、データを非表示にするだけでは、
「データポイントをテーブルとして表示」が有効で、集計元データが表示されてしまうためご注意ください。** 



![スクリーンショット 2025-03-25 122716.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4013595/eefa83b5-8809-408d-b4da-e95c550a69d5.png)



## まとめ


* 「データポイントをテーブルとして表示」すると集計元データが表示される
* メジャーを使用することで上記機能が使用できなくなり、集計元データを非表示にできる
* データを非表示にしても上記機能は有効なため、集計元データが表示されてしまう

Power BI で集計元データを表示したくないとき、ひとつの手段として参考にしていただければと思います。
【備忘録】wsl2でubuntu(Linuxディストリビューション)を動かすには

## きっかけ

自分の業務は新卒１年目の自分にとっては多くの言語を使います。(と思います)
中でもLinuxコマンドはよく使うため、業務でキャッチアップした技術を家でも練習できないかなと思い導入することになりました。

## wslとは

Windows Subsystem for Linux=wsl

LinuxのプログラムをWindows上で稼働させる仕組みのことを言います。元々のWindowsと並行でLinuxを動かせるのがメリットだと思っています。


## ubuntu_Linuxディストリビューションの導入手順

やりたいこと：wsl2をインストールし、その中でubuntuを動かす


### wslのインストール
*  コマンドプロンプトで以下のコマンドを実行する
```powershell:cmd
PS C:\> wsl --install
```
:::note info
この時勝手にubuntuはインストールされる
:::

*  設定を反映させるために一度再起動

*  再起動後Ubuntuを起動
   *  ユーザー名とパスワードを設定

　　　■ユーザー名
　　　　cmd-testuser001
　　　■パスワード
　　　　test_001

### wsl上のUbuntuにteratermでログインしたい。
ssh用のserverがないので、opensshserverを導入する。
*  opensshserverの導入
```bash:bash
$ sudo -E apt update
$ sudo -E apt upgrade ← 必要に応じて..
$ sudo -E apt install openssh-server
```
*  ssh鍵の生成
```bash:bash
$ sudo ssh-keygen -A
```
*  sshd_configを修正
```config:sshd_config
Port 10022 
#sshd を 22番以外のポートで立ち上げたい場合(今回は変更していません)

PasswordAuthentication yes
#パスワード認証を許可したい場合
```
*  修正が反映されたことを確認
```bash:bash
$ sudo /etc/init.d/ssh status
#以下が表示されればOK
active (running)

$ sudo /etc/init.d/ssh restart
#以下が表示されればOK
[ ok ] Restarting ssh (via systemctl): ssh.service.
```
*  うまくいかない場合は以下コマンドでwslを再起動
```bash:bash
wsl.exe -t Ubuntu
```
## TeraTermのダウンロード
ダウンロードリンク：https://github.com/TeraTermProject/teraterm/releases


*  SSH接続を試す
以下の設定で接続を試す
```config:config
ホスト：localhost
サービス：SSH
TCPポート：22
バージョン：SSH2

■ユーザー名
cmd-testuser001
■パスワード
test_001
```

### 参考
https://learn.microsoft.com/ja-jp/windows/wsl/install


## 終わりに
現場ではteratermのマクロを使って環境にログインしています。
時間があるときにマクロファイルも作ってみてログインできるようにしてみようかなと思います。(2025年3月31日)
統計検定1級　2022　統計数理　問3　解説

![img20250324_08524337.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/e7fdfbbe-54a5-4217-b1a9-90f6e29aaa76.jpeg)
![img20250324_08530812.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/09c7c1ab-a0c1-4996-a865-34e83e7a16bf.jpeg)
![img20250324_08533564.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/9275980b-6593-4db8-ae92-267f667a35db.jpeg)
![img20250324_08535967.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/81771e00-01b1-499a-8bc4-259ce71d93ef.jpeg)
AWS未経験の新卒1年目がAWS JumpStart 2025に参加して成長を実感できた話

# はじめに
こんにちは、インティメート・マージャーの直人です。
先日開催された「AWS JumpStart」に参加してきたので、そのレポートを書きます。

自分は新卒1年目のエンジニアで、普段は主に Google Cloud を使用しています。
AWS についてはほとんど経験がなく不安でしたが、実際に参加してみると非常に楽しく貴重な経験になりました！

# 結論
AWS JumpStart に参加して、**本当によかった**と感じています！
- コーディングは一切不要で、サポートやマニュアルがとても丁寧で初心者でも安心して取り組める
- 単なる AWS サービスの学習にとどまらず、「要件に応じたアーキテクチャ設計」を実際に考える経験ができる
- アーキテクチャ検討は若手にとって貴重な機会であり、システムの全体像を理解するのにとても役立つと実感した

「クラウドサービスをちゃんと触ってみたいけど難しそう」と感じている方には、**JumpStart は最適な第一歩**になると思います！

# AWS JumpStart とは？
AWS 初心者向けのオンライン勉強会で、クラウドの基礎を学べます。
以下が今回のスケジュールで、ハンズオンやグループワークを中心に行われました。
参加者は250名ほどでした。

2025年の残りは、以下の日程で開催されるそうです。

- 5/27(火)〜5/28(水)
- 8/27(水)〜8/28(木)
- 10/23(木)〜10/24(金)

詳細や申し込みは以下のリンクからどうぞ！

https://aws.amazon.com/jp/blogs/news/aws-jumpstart-2025/

# Day 1｜講義 & ハンズオン
### 🎓 講義
Web の基礎知識から、AWS の主要サービスや設計の考え方まで幅広く学べました。
**「可用性（Availability）」** と **「拡張性（Scalability）」** に重点を置いている印象でした。
特に Web サービスの利用者が 1 人から 1,000 万人に増えていく場合の設計を段階的に考えていく内容は、とても勉強になりました。

設計に正解はなく、「計測 → 分析 → 改善」というサイクルを繰り返す重要性がよく理解でき、難しいけれど非常に面白いポイントだと感じました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925807/8b4c581d-5a4e-43ba-ac1f-8cb853177f41.png)

### 🛠️ ハンズオン
実際に AWS コンソールからサービスの構築を体験できました。
参加前は「アベイラビリティーゾーン？プライベートサブネットって何？」というレベルでしたが、丁寧なマニュアルと解説があり、理解を深めながら進めることができました。
もし途中でついていけなくなっても、Discord で個別にサポートしてもらえます。

コンソール上で簡単にサービスを構築でき、「これなら小規模な Web サービスならすぐにリリースできそう」と思えて、モチベーションアップにもつながりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925807/073435a7-29be-4e4e-955a-d7e492349848.png)

# Day 2｜クイズ & アーキテクチャ検討
### ❓ クイズ
1日目の復習としてクイズが行われ、Zoom の投票機能を使って回答しました。
間違えてしまった問題もありましたが、自信を持って答えられるものもあり、手応えがありました。
クイズのレベル感としては、AWS の資格で言うと Cloud Practitioner ～ Solutions Architect Associate 相当とのことでした。

基礎的な知識はしっかり身についたと感じ、自分の成長を実感できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925807/149571fa-559d-496c-a67b-4539619b1daf.png)


### 🧩 アーキテクチャ検討
「課題の説明 → 個人で検討 → グループで話し合いながらアーキテクチャ図を完成」という流れでした。
Discord 上でロール（社会人1〜3年目 / AWS初心者 など）に応じてグループ分けがされるため、同じレベル感で安心して取り組めます。
グループワーク終了後にはいくつかのチームが発表を行い、課題自体はそこまで複雑ではないものの、**チームごとにまったく異なる構成になっていて**とても興味深かったです。

課題の詳細は伏せますが、初心者グループの私たちが「合っているかわからないけど...」と言いながら、なんとか完成させたのが以下の図です。
**JumpStart 直前まではアーキテクチャ図を「読む」ことすらできなかった私が、ある程度理解しながらグループで話し合い、完成させることができて感動しました。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925807/a987f047-34f3-4b5f-a707-555b0cfd10d9.png)


# その他の参加してよかったこと
### Discordに質問専用のAIが用意されていて気軽に質問できた
AWS の方に直接質問するのはハードルが高くても、こちらでなら気軽に質問できます。
こちらも AWS の方が見てくれていて、AI が間違った回答をしている場合は補足してくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925807/af57902b-0721-41e1-a1a0-44130fce408f.png)

### ハンズオンの時間以外でもAWSのサービスを触ることができる
参加者一人ひとりに、3日間有効な AWS のアカウントが発行されました。
全てのサービスが使えるわけではありませんが、ハンズオンの内容をもう一度1人でやってみると理解がより深まりました。

### 講義資料をすべて共有してもらえる
2日間で使用されたスライドや資料は共有してもらえて、復習にとても役立ちました。

# おわりに
Discord でのやり取りが盛んで活気があり、終始楽しく、誰でも質問しやすい雰囲気がありました。
Google Cloud や Azure など、他のクラウドサービスを使っている方でも知識を応用できるので、クラウドに関心がある方はぜひ参加してみてほしいです！

最後に、インティメート・マージャーでは新卒から中途まで、幅広く採用を行っています！
少しでもご興味を持っていただけた方は、ぜひ採用ページもご覧ください！

https://recruit.intimatemerger.com/
非機能要件定義のポイント

## 参考

以下は[「非機能要求グレード」実践セミナー　システム基盤の非機能要件定義を講義と演習で身につける](https://www.ipa.go.jp/archive/digital/iot-en-ci/jyouryuu/hikinou/ps6vr700000077he-att/000066192.pdf)を参考に記述している。

## 定義
非機能要件とは、システムが持つべき性能や信頼性などの品質に関する要求である。
機能要件は業務仕様で明確に定義されるのに対し、非機能要件は曖昧になりがちで、システム開発のリスクにつながる。そのため、体系的かつ明確な定義が必要。

## 1. 非機能要件がなぜ重要か？
非機能要件の不備がビジネスリスクに直結するため。

非機能要件の問題点：
- 曖昧な表現（例：「レスポンスは速く」など）
- ベンダーと発注者間の認識ギャップ

結果として開発後の手戻り、コスト増加につながる。
非機能要件を明確に定義することで、開発の手戻りを防ぎ、運用トラブルを減らすことが可能になる。

## 2. 非機能要求グレードとは？
IPAが提唱する「非機能要求グレード」は、非機能要件を体系的に整理し、ベンダーとユーザー間での合意形成を円滑にするための手法。

主な構成要素：
- モデルシステムシート：システムの社会的影響を基準に、非機能要件の基準を3段階で定義。
    - 社会的影響がほとんどないシステム
    - 社会的影響が限定されるシステム（社内基幹系など）
    - 社会的影響が極めて大きいシステム（インフラ系など）
- 非機能要求グレード表：非機能要件を可用性、性能・拡張性、運用保守性、移行性、セキュリティ、システム環境・エコロジーの6大項目に分類し、それぞれ具体的なレベルを設定。
- 樹系図（項目一覧）：非機能要件の分類をツリー形式で整理し、要件定義の漏れを防ぐ。

## 3. 非機能要件の主な分類（6大項目）
- ① 可用性
    - システム稼働時間、障害時の復旧目標など
    - 対策例：冗長化、バックアップセンター設置
- ② 性能・拡張性
    - 業務量の増加予測、ピーク時性能要件
    - 対策例：キャパシティプランニング（サーバやネットワークの適切な設計）
- ③ 運用・保守性
    - 稼働レベル、障害対応レベル、監視体制
    - 対策例：運用マニュアル整備、監視ツール導入
- ④ 移行性
    - 新システムへの移行方法、移行期間
    - 対策例：移行リハーサル、データ移行ツール整備
- ⑤ セキュリティ
    - 利用制限、不正アクセス防止、データ秘匿
    - 対策例：アクセス管理、不正監視、検知システム導入
- ⑥ システム環境・エコロジー
    - 耐震性、消費エネルギー、CO2排出量
    - 対策例：環境負荷の少ない機器選定、エネルギー効率改善
## 4. 非機能要件定義の流れ
非機能要件の定義は、以下の手順で進めると円滑になる：
- 開発システムに最も近い「モデルシステム」を選定。
- 重要な非機能要件をグレード表で確認し、ユーザーとベンダー間でレベル合意。
- 樹系図で項目一覧を確認し、漏れなく詳細項目を決定。
- このように段階的に詳細化することで、コスト・品質面の影響が大きい項目を早期に明確化でき、開発のリスクを軽減できる。

## 5. 非機能要件定義のメリット
- 発注者と開発ベンダー間でのコミュニケーション円滑化。
- システム開発の手戻り・トラブル削減。
- システム運用コストの明確化。

結果として、システムの信頼性向上、運用安定化、コスト効率化が実現できる。

## 6. まとめ、感想
チーム内においても上流工程と下流工程で担当者が異なることは往々にしてあるので明確に定義した上で認識の齟齬がない状態を作るようにする。
[LangGraph] langgraphを触ってみる

# 背景
* AI World 2025展示会に参加して、ある会社は四つのAIエージェントを提供している
* ユーザはこの四つのAIエージェントを利用したい場合は、UI画面はどう実装するか

### 以前のUI画面
|メニュー|チャット部分|
|:-----------:|:------------:|
|Agent_A | |
|Agent_B | |
|Agent_C | |
|Agent_D | |

### AI時代の画面
|チャット部分|
|:------------:|
|ユーザの入力する情報より、自動的にエージェントを選べる |

# LangGraph基礎
* Node
    * 状態を受け取り、処理して、新しい情報を状態に返す
* Edge
    * ノード間の接続を定義し、遷移ルールを決める
* State
    * Graph全体で共有される状態のオブジェクト


# langgraphで上記の問題を解決してみる
### ChatGPT Sample - だれの口調で自己紹介するか？（ルフィ/アーニャ）
- https://romptn.com/article/1937

### ワークフロー
![スクリーンショット 2025-03-25 20.43.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13451/63578179-6573-452b-9562-6f408ecdc217.png)

### edgeを定義
```
def decide_role(
    state: State,
) -> Literal["anya_res", "rufi_res"]:
    if "ルフィ" in state.role:
        return "rufi_res"
    elif "アーニャ" in state.role:
        return "anya_res"
    else:
        print("ロールが正しく入力されていません。もう一度入力してください。")
        return "other"
```

### ソースコード
- https://raw.githubusercontent.com/alingogo/langGraph-study/refs/heads/main/PrebuiltReActAgent/statemachine.py
フロントエンド入門：CSSでスタイルが反映されないときの最後の手段として !important をまとめてみた

## はじめに
CSSを学習・実装していく中で、スタイルが適用されない・意図しない見た目になることがあります。

***そのようなときに登場するのが `!important`。今回はこの `!important` に絞って、自分の学習用として整理しておきます。***

## 書こうと思ったきっかけ
あるCSSプロパティを上書きしたいのに、なぜか反映されないことがありました。開発者ツールで確認してみると、他のCSSに `!important` が使われていたことが判明。

:::note info
**個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。**
:::

自分もいざという時に適切に使えるようにしたくて、備忘録としてまとめています。

## 内容の説明

### !important とは？
CSSにおいて、あるスタイル指定を強制的に適用するための宣言です。通常のスタイルルールよりも優先度が高くなります。

```css
.example {
  color: red !important;
}
```
このように使うと、同じセレクタやより詳細度の高いスタイルがあっても、基本的に `color: red` が優先されます。

### どんなときに使う？
- 外部CSSやライブラリのスタイルを強制的に上書きしたいとき
- 開発中に一時的にスタイルを適用させたいとき

### 注意点
- 多用すると、後からスタイルの調整が難しくなる
- `!important` 同士が競合すると、セレクタの詳細度が高い方が勝つ（混乱のもと）
- チーム開発ではルールを決めて使うことがおすすめ

## よくある使用例
```css
button {
  background-color: #ff9800 !important;
}

.alert {
  display: none !important;
}
```

## まとめ
- `!important` はCSSの優先度を強制的に高める記述
- 便利だが乱用厳禁。最後の手段として使うべき
- 他のスタイルに影響を与える可能性があるので、運用には注意が必要

トラブルシューティング中など「どうしても上書きされない！」という時に、落ち着いてこの知識を使えるようにしておきたいです！
MacのWordでPDFにエクスポートできない

## 問題

MacのWordファイルをWordでPDFに変換しようとしたところ、エラーが出て保存できない状態になりました。さらに、この現象が起こると、Wordから印刷もできなくなります。これらの現象は次の操作をすると解決することがあります。

また，この現象はPowerpointでも起こることがあります。

## 解決方法
1. Appleメニュー>システム環境設定を選択
2. プリンタとスキャナをクリック
3. コントロールキーを押したままデバイスリストの任意の場所をクリック
4. 印刷システムをリセットを選択
【RPA/UiPath】わかりやすいフローを作成するには、"一度にいろんなことをやらない"を意識する

## "一度にいろんなことをやらない"って？
具体例を交えたほうがわかりやすいと思いますので、次のような業務をRPAで対応するケースで考えます。

:::note info
**（想定ケース）**
Excelに記載されているデータをWEBフォームに入力して登録する業務を自動化したい。
ただし、いくつかの項目は編集して入力する必要がある（例えば、電話番号のハイフンを抜く、など）。
:::

こういったケースの場合、大きく３つの処理に分けることができます。
- Excelデータの読み込み
- 入力データの編集
- WEBフォームへの入力

この場合、"一度にいろんなことをやらない"とは、**WEBフォームへの入力処理を行う領域では、Excelの読み込みやデータの編集を行わず、入力処理のみを実装する**ということです。

このように、**ある処理を行う領域では、その処理のみを実装する**という意識を持つことが、わかりやすいフローを作成するためには重要です。

## 具体的なフロー例
"一度にいろんなことをやらない"を意識しなかった例と意識した例はそれぞれ次のようになります。
ここでは、RPAツールとしてよく使われている"UiPath"でフローを作成しました。

### 意識しなかったフロー
単純に処理をRPA化させた際に作りがちなフローで、一つのブロックの中にすべての処理が実装された形になっています。
ひとつのブロックに実装されているため、折りたたんで表示した際に全体像を掴むことができません。
またすべて展開した場合でも、階層が深くなりがちで処理が込み入ってくるほど複雑さが増していきます。

（すべて折りたたんだとき）
![BadFlow_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4043178/e2ab1be2-d60c-47c3-8359-f0bddd17d4f4.jpeg)

（すべて展開したとき）
![BadFlow_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4043178/53ecd7c8-0c24-4a42-b054-13e20ee83523.jpeg)

### 意識したフロー
"一度にいろんなことをやらない"を意識したフローは、次のような形になります。
折りたたんだ際には、各処理がそれぞれの領域で分かれているため、全体の処理の流れが掴みやすくなります。
また、展開した際も階層が浅くなり、どこでどんな処理を行っているかが理解しやすくなります。
実装する際も、それぞれの担当領域が分かれているため、"一度に考えないといけないことが少なくなる"、"ひとつのことに専念できる"というのもメリットのひとつだと感じています。

（すべて折りたたんだとき）
![GoodFlow_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4043178/67942e1d-d47a-473b-bb0e-dae030dd9bd7.jpeg)

（すべて展開したとき）
![GoodFlow_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4043178/1a416c31-b305-4f8a-bccb-3395f5be1dd7.jpeg)

一方でデメリットとしては、"重複する処理が発生しやすく、処理効率が低下する可能性がある"ということです。

今回の例でいえば、意識しなかったフローではExcelデータの行ループが１回だけです。
しかし、意識したフローではExcel（データテーブル）の行ループが２回になっています。
そのため、ループを２回行っている分だけ意識したフローのほうが処理に時間がかかるでしょう。

この点に関しては、「可読性と処理効率のどちらかを取るか？」を天秤にかけて判断します。
Excelにどれだけのデータがあるのかを考慮したうえで、求められている要件（処理時間など）を満たしているのであれば、むやみに処理効率を追い求めるよりも、今後の運用・保守を見据えて可読性を取るのが良いと考えています。
無償のUIテスト自動化ツールを調べてみた

## はじめに
近年は複数のUIテスト（※）自動化ツールが存在し、無償・有償まで多岐にわたります。
※UIテストとは、デスクトップ・Web・モバイルアプリケーションのユーザーインターフェースが正しく機能しているか確認するテストです。
今回、無償のUIテスト自動化ツールについて調べてみました。
本記事での記載内容は、各ツールのWebサイトを基に調査した内容となります。

また、調査した無償ツールと、有償版のUIテスト自動化ツール [Ranorex](https://ranorex.techmatrix.jp/)（※） の比較をおこないました。
※Ranorex は、デスクトップ/Web/モバイルアプリの自動化に対応しています。
　テスト対象アプリのUI操作を記録し、テストの作成/実行を可能とします。

## 無償版 UIテスト自動化ツール①
Windows デスクトップアプリに対応しているUIテスト自動化ツール：
* UWSC

![vsUWSC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/12bf6978-8cac-4ee6-9186-e963a68ba941.png)

Windows デスクトップアプリに対応している無償ツールはあまり見つかりませんでした。
UWSCは無料ツールとなりますが、2017年以降は更新が止まっているようです。UWSC によって単純作業の自動化が可能となり、UWSCをRPAツールとして使用しているケースも多い印象です。
UWSCはレポート出力機能を持ち合わせていないため、"機能テスト" という観点であれば有償ツールのほうが向いています。

UWSCとRanorex の違いについては、以下のBlog記事で紹介されてます。
 [UWSC と Ranorex の違い](https://ranorex.techmatrix.jp/blog/2022/12/16/uwscandranorex/)

## 無償版 UIテスト自動化ツール②
デスクトップWebアプリもしくはモバイルWebアプリに対応しているUIテスト自動化ツール：
* [Selenium](https://www.selenium.dev/ja/documentation/overview/)
* [Playwright](https://playwright.dev/)
* [Cypress](https://www.cypress.io/)
* [Puppeteer](https://pptr.dev/)
* [Appium](https://appium.io/docs/ja/2.1/intro/) 

![vsWebOSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/0f4c2394-8b1e-44bf-9714-f9364a52f527.png)

デスクトップWeb・モバイルWebに対応している無償ツールは比較的多く存在しますが、無償ツールの場合、全ツールにおいてテストの修正にコーディングが必要となります。

SeleniumとRanorex の違いについては、以下のBlog記事で紹介されてます。
 [SeleniumとRanorexの違い -オブジェクト認識-](https://ranorex.techmatrix.jp/blog/2022/04/01/difference-ranorex-selenium/)
 
## まとめ
今回、無償版のUIテスト自動化ツールと有償版のRanorexの比較をおこないました。
無償ツールはテストの修正にコーディングが必要となる一方で、有償ツール Ranorex はテストの作成・修正いずれにおいてもノーコードで対応可能となります。

テスト作成者が開発者の方で、コーディングに抵抗がないとしても簡単な操作もすべてコーディングというのは多少なりとも労力がいるかと思います。
一方で、Ranorexのような有償ツールであれば、GUI操作で対応可能となります。
また、有償ツールの場合には、自動的に結果レポートが生成されるため、対象のレポート自体をエビデンスとして使用できるのも大きなメリットとなります。

UIテスト自動化に興味がある方は、ぜひ今回の情報を参考とし、要望に合ったツールを選択ください。
【kintone 初級編】プロセス管理：ステータスに関わるカスタマイズについて


こんにちは！かねごん（[@hrbk25](https://x.com/hrbk25)）です！  

kintoneのプロセス管理機能を活用すると、業務の進捗管理や承認フローを効率化できます。しかし、カスタマイズを行う際にはいくつかの落とし穴があり、つまずきやすいポイントが存在します。

そこで、今回はkintoneでプロセス管理のステータスを扱うカスタマイズの注意点、解決策について簡単にまとめてみました。

## どんな人向けの記事か
- kintoneのカスタマイズを始めたばかりの方
- プロセス管理のステータスを使ったカスタマイズをしようとしている方


## kintoneプロセス管理のステータスカスタマイズ　注意点

今回の内容は、公式ドキュメントと併せてご確認ください。

https://cybozu.dev/ja/kintone/docs/rest-api/records/update-status/

https://cybozu.dev/ja/kintone/docs/rest-api/records/update-statuses/

### 1. レコード追加画面ではステータスを取得できない
**注意点:**
`app.record.create.show` などレコード追加画面のイベントでは、レコードが未作成のためステータス情報を取得できません。

**想定する場面:**
- レコード編集画面でステータスを取得していたため、同じコードをレコード追加画面でも適用しようとしたが、エラーが発生。
- ステータス情報を元に処理を記述したが、追加画面では想定通り動作しない。

**解決策:**
- `app.record.create.submit.success` イベントを利用し、レコード作成後に処理を行う。
- プロセス管理の設定情報を取得して、処理を行う。（詳細は以下を参照。）

https://cybozu.dev/ja/kintone/docs/rest-api/apps/settings/get-process-management-settings/


### 2. ステータスのアクション名を複数同じにするとエラーが発生する
**注意点:**
kintoneのプロセス管理では、同じステータス内で同名のアクションが複数存在すると、どのアクションを実行するのか判別できず、エラーが発生します。

REST API（`PUT /k/v1/record/status.json` または `PUT /k/v1/records/status.json`）を使用してステータスを変更する場合、指定したアクション名が一意でないと、エラーが発生する可能性があります。

**想定する場面:**
- 承認フローをシンプルにするため、「承認」や「完了」など、よく使うアクション名を複数のステータスで重複して設定してしまい、エラーが発生。
- ステータス変更をREST APIで自動化しようとしたが、アクションの識別ができずエラーになる。

**解決策:**
- アクション名を一意にする。命名ルールを統一し、可読性を向上させる。
- 「承認（上司）」と「承認（管理者）」のように役割を明確にする。
- プラグインに用いる際は、プロセス管理の設定情報を取得して、設定画面で事前にチェックをかけて警告を行う。

### 3. APIトークンを使用してステータス変更時にエラーが発生する

**注意点:**
APIトークンを使用してステータスを更新しようとした際、以下の条件に該当するとエラーが発生します。

- **「Administrator」以外の作業者が指定されている**  
  APIの実行ユーザーが作業者に含まれていない場合、エラーが発生します。  
- **APIトークンの権限が不足している**  
  APIトークンに必要な閲覧・編集権限がない場合、ステータスの更新ができません。  

**想定する場面:**
- 元々、ユーザー認証でAPIを実行する場合を想定したコードになっていたため、エラーが発生。
- APIトークンを使用して「Administrator」以外の作業者が指定されたレコードのステータスを変更しようとしたが、エラーが発生。

**解決策:**
- 実行する内容に合わせて、適切なプロセス管理の設定であるか、作業者の指定が正しく行われているか確認し、必要に応じて修正する。  
- APIトークンに、レコードやフィールドの閲覧・編集権限を適切に付与する。



## さいごに
いかがでしたでしょうか？

今回は、kintoneのプロセス管理をカスタマイズする際に注意すべきポイントを簡単にまとめてみました。

本記事が少しでもお役に立てれば嬉しいです！
個人的備忘録：保証切れや使用者不明…そんなミスを防ぐためにPC管理台帳を作って親に渡してみた話

## はじめに
この記録は、社内で利用しているPCの管理状況をまとめた個人用の備忘録です。

:::note info
**個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。**
:::

業務で利用するPCが増える中、購入日やスペック、保証期限などをきちんと管理することで、運用ミスやトラブルの予防につなげることが目的です。

## 書こうと思ったきっかけ
過去に「このPC、保証切れてたのか」「誰がどのPC使ってるんだっけ？」といった曖昧な管理によって対応が遅れた経験がありました。

そこで、まずは自分の管理しているPCを見える化し、いつでも確認できるように備忘録として残しておこうと思いました。

## 管理台帳（自分用記録表）

| 管理番号 | PC名（ホスト名） | 使用者 | 購入日 | メーカー | 型番 | OS | CPU | メモリ | ストレージ | 資産番号 | 保証期限 | 備考 |
|-----------|------------------|--------|----------|----------|--------|------------|----------|--------|----------------|------------|------------|--------|
| PC001 | PC-TOKYO-01 | 山田 太郎 | 2023/04/01 | Dell | XPS 13 | Windows 11 | Core i7 | 16GB | 512GB SSD | A12345 | 2026/04/01 | メイン機 |
| PC002 | PC-TOKYO-02 | 鈴木 花子 | 2022/11/15 | HP | EliteBook 840 | Windows 10 | Core i5 | 8GB | 256GB SSD | A12346 | 2025/11/15 | サブ機 |
| PC003 | PC-OSAKA-01 | 佐藤 健 | 2023/01/10 | Lenovo | ThinkPad X1 | Windows 11 | Core i7 | 16GB | 512GB SSD | A12347 | 2026/01/10 | リモート可 |
| PC004 | PC-OSAKA-02 | 高橋 愛 | 2022/09/30 | Apple | MacBook Pro | macOS Ventura | M1 | 16GB | 512GB SSD | A12348 | 2025/09/30 | デザイン用 |
| PC005 | PC-NAGOYA-01 | 田中 実 | 2023/03/25 | ASUS | ZenBook | Windows 11 | Core i5 | 8GB | 256GB SSD | A12349 | 2026/03/25 | - |
| PC006 | PC-FUKUOKA-01 | 伊藤 美咲 | 2023/02/01 | Dell | Inspiron | Windows 10 | Core i3 | 4GB | 128GB SSD | A12350 | 2026/02/01 | 一般事務 |
| PC007 | PC-TOKYO-03 | 渡辺 裕介 | 2022/12/12 | Lenovo | IdeaPad | Windows 11 | Core i5 | 8GB | 256GB SSD | A12351 | 2025/12/12 | - |
| PC008 | PC-KOBE-01 | 中村 純 | 2023/06/20 | HP | ProBook | Windows 11 | Core i5 | 16GB | 512GB SSD | A12352 | 2026/06/20 | モバイル利用 |
| PC009 | PC-SAPPORO-01 | 小林 涼 | 2023/05/05 | Apple | MacBook Air | macOS Sonoma | M2 | 8GB | 256GB SSD | A12353 | 2026/05/05 | 営業用 |
| PC010 | PC-TOKYO-04 | 本田 翼 | 2023/07/15 | Fujitsu | Lifebook | Windows 11 | Core i5 | 8GB | 512GB SSD | A12354 | 2026/07/15 | - |

## まとめ
このように一覧表にしておくことで、どのPCが誰に使われていて、どのタイミングで更新が必要かがひと目でわかります。

さらに必要に応じて、ネットワーク情報やソフトウェア状況、セキュリティ管理の項目も追加していくことで、より実用的な資産管理台帳に成長させていきたいと思います！
Webアプリ開発でハマった「日付フィルターとタイムゾーン問題」解説

## はじめに

Webアプリを作っていて、「日付フィルターをかけたのにデータが漏れる」現象に出くわしたことはありませんか？

今回は、実際に私が体験した **「日付フィルターのタイムゾーン落とし穴」** を解説します。 私と同じく、初心者の方でも理解できるよう、仕組み・原因・解決策までしっかりまとめました。

---

## ■ 発生した問題

Vue.jsの画面で「2024-03-25のデータ」を絞り込みたいと考えました。 ユーザーが「2024-03-25」を選択すると、API（Laravel）に以下のようなクエリを投げます。

```json
{
  "order_date_from": "2024-03-25",
  "order_date_to": "2024-03-25"
}
```

PHP（Laravel）側ではこう受け取ってフィルターします。

```php
if ($order_date_from) {
    $tr_study = $tr_study->whereDate('order_date', '>=', $order_date_from);
}
if ($order_date_to) {
    $tr_study = $tr_study->whereDate('order_date', '<=', $order_date_to);
}
```

## ■ なぜデータが漏れるのか？（原因）

原因は **「タイムゾーン」** です。

多くのサーバーやデータベース（MySQL）は **UTC（協定世界時）** で動いています。 一方、私たちが普段使っているのは **日本時間（JST／UTC+9）** ですよね。

このズレによって、

- **DBの"2024-03-25"はUTC基準（日本時間だと9時間ズレ）**
- フロントはJST基準で送信

結果として「3月25日のデータなのに拾えない」「3月24日の深夜データまで拾ってしまう」現象が起きます。

---

## ■ 解決策①【MySQLのタイムゾーンをJSTに設定】

DBがJSTで動いていれば、この問題はほぼ解決します。

### 【手順】

XAMPPなら、`C:\xampp\mysql\bin\my.ini` に以下を追記します。

```ini
[mysqld]
default-time-zone = '+09:00'
```

その後、MySQLを再起動しましょう。

### 【確認】

以下のSQLを実行して、JSTになっているかチェック！

```sql
SELECT @@global.time_zone, @@session.time_zone;
```

結果が `+09:00` なら成功！

---

## ■ 解決策②【UTC運用の場合はフロントで変換】

もし「サーバーはUTC運用」の場合は、フロントでJST→UTCに変換してAPIへ渡しましょう。

```javascript
const startUtc = dayjs('2024-03-25').startOf('day').subtract(9, 'hour').toISOString();
const endUtc = dayjs('2024-03-25').endOf('day').subtract(9, 'hour').toISOString();
```

Laravel側は`where()`で日時比較する形がおすすめです。

---

## ■ 解決策③【日付は文字列のまま扱う設計】

もし「時刻は不要」という仕様なら、**日付を文字列（YYYY-MM-DD）として扱う設計** も有効です。

### 【メリット】

- タイムゾーンの影響を受けにくい
- SQLのDATE型や`whereDate()`で安全に扱える
- UIもシンプルになる

Laravelならこう書けばOK。

```php
if ($order_date_from) {
    $tr_study = $tr_study->whereDate('order_date', '>=', $order_date_from);
}
if ($order_date_to) {
    $tr_study = $tr_study->whereDate('order_date', '<=', $order_date_to);
}
```

この形なら、MySQLの`DATE()`で評価されるため、時刻のズレが影響しません。

---

## ■ 【保存時のCarbonの使い方】

ただし、DBにデータを保存する時点で **UTCズレしていると意味がない** ので、保存時にも注意が必要です。

Laravelでは、保存時に`Carbon`を使ってJSTに揃えて保存するのがオススメです。

```php
// 例：文字列の日付をCarbonでJST化して保存
$order_date = Carbon::parse($request->input('order_date'))->setTimezone('Asia/Tokyo');
$model->order_date = $order_date;
$model->save();
```

こうすることで、保存時にもズレが起こらず、後の検索も安全になります。

---

## ■ まとめ（再発防止の教訓）

✅ **タイムゾーンは最初に設計・方針決め！**（JST運用かUTC運用か）
✅ DB・サーバー・フロントで「基準時刻」を合わせる
✅ `whereDate()`は便利だけど、タイムゾーン影響を受けるので注意
✅ JST運用なら my.ini に`default-time-zone`を書く だけでも事故防止になる
✅ 時刻が不要なら、**日付文字列運用＋Carbonで保存時チェック** が安全

---

## ■ 最後に

日付や時間はアプリ開発の永遠のテーマ。少しでも「なんでズレるの？」が減らせたらうれしいです。 この経験が誰かの役に立ちますように！
トピックに6つの指示があることがわかりません


似ているけど違うチャレンジのエラーメッセージがあります。

# We can't find that the Experience Management topic has six instructions

+ [Error is we can't find that the experience management topic has six instructions but when i was trying to add 6 instruction, it only add 5 instruction because 1st instruction is blank and it don't include blank instruction then how can i add 6 instruction](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX000000NU7c0AG)
+ [Error when trying to verify "Build Your First Agent with Agentforce"](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000PX7gL)

:::note
I deleted my agent and recreated it and that worked.  
:::

+ [Coral Cloud Resort Service Agent Challenge - We can't find that the Experience Management topic has six instructions.](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000MYlOn)

:::note
I was able to back track my steps and fix it.
:::

+ [Is there a way to edit Topic without starting over](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000MZCpn)

:::note
Go back to Agent -> open the service agent -> deactivate the agent -> click on 'Experience Management' -> remove all the instructions -> add 6 blank instructions then start putting the instruction added in trailhead one by one-> activate - 

> then check (I was getting the same issue, and it got resolved. this works without creating new agent)
:::

# We can't find a total of 6 instructions associated with the Customer Experience Support topic in the Coral Cloud Experience Agent.

+ [Agentforce Innovator Challenge - Update a Flow, Agent Action and Topic](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX000000WubH)

:::note
You should only get these 5 instructions before inserting the 6th one (see the screenshot after). 

Please review the instructions and delete the one that should not be there. You can still take over the challenge if you don't succeed coming back to the previous configuration.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e1f3201f-bb2a-4867-8d86-1c3086e13cbf.png)
:::
038 AI屋さんの　LLMにトークン全文入力　GEMINI2.5PRO


038 AI屋さんの　LLMにトークン全文入力　GEMINI2.5PRO

また新しいモデルですね、

思考推論強化がされ、このままで　プチ　ディープリサーチな様相です。
コーディングも強化されて、助かります。

モデル単体で、深い思考がされると、
アプリレベルでの実装が容易になります、
AIエージェント開発も活性化します。



https://blog.google/technology/google-deepmind/gemini-model-thinking-updates-march-2025/?utm_source=deepmind.google&utm_medium=referral&utm_campaign=gdm&utm_content=#advanced-coding


---


![スクリーンショット 2025-03-26 7.49.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237930/897fcf43-812d-4c72-ae61-70b214dd98d0.png)

![スクリーンショット 2025-03-26 7.50.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237930/bbe79fcc-02a8-4fc0-809a-edc3e6835fbb.png)


---



![スクリーンショット 2025-03-26 7.35.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237930/a656bb7f-2472-40e2-a762-ab40a3ab28fe.png)


---

目次


https://qiita.com/bono0/items/dc1d000c98af7e07c9a7





ー以上ー
ソフトウェアライセンスについてのメモ（備忘録）

主要な4つ（MIT、Apache、GPL、BSD）について整理。


## MITライセンス
- 作者の名前をどこかに記載しておくこと
- 作者に一切の責任を求めない限り自由に使ってOK（商用利用・改変自由）

> 参考：[MIT License - Open Source Initiative](https://opensource.org/licenses/MIT)

## Apacheライセンス 2.0
- Apache Licenseであることを表示
- 改変版を配布する場合、変更した箇所を明記すること
- 特許に関する明示的な許諾条項が追加されてる（特許侵害リスク軽減）

参考：[Apache License 2.0 - Open Source Initiative](https://opensource.org/licenses/Apache-2.0)

## GPL（GNU General Public License）
- コピーレフト
- GPLライセンスのソフトウェアを利用・改変して配布する場合、変更後のソースコードもGPLライセンスで必ず公開すること（ソースコード公開義務）
- 商用利用も可能だが、コードの公開義務があるためビジネス上の制約が多い

参考：[GNU General Public License v3.0 - Open Source Initiative](https://opensource.org/licenses/GPL-3.0)

## BSDライセンス
- 基本的にMITライセンスとほぼ同じ（自由で制限が少ない）
- 「2条項BSD」「3条項BSD」「4条項BSD」のバリエーションあり
- 条項が増えるにつれて、以下のような制約が追加されることがある
- 販売促進や広告で継承元の開発者名を勝手に使ってはいけない

参考：[BSD License - Open Source Initiative](https://opensource.org/licenses/BSD-3-Clause)

## ライセンス選択時のポイントまとめ
- 商用利用が目的 → MIT, Apache 2.0, BSD が推奨（自由度高め）
- オープンソースプロジェクトを拡張したい → GPL が一般的（コピーレフトによりコード公開が義務付けられる）

プロジェクトの目的に合わせて、適切なライセンスを選ぶことが重要。
信頼度成長曲線とは【備忘録】


## 信頼度成長曲線とは
ソフトウェアのテスト段階で、発見されたバグの累積数をグラフ化したもの。

縦軸： 累積バグ発見数
横軸： テスト時間やテストケース数
テストの進行とともに、バグの発見状況（品質の推移）を可視化するために用いる。

## バグ曲線の特徴
テスト進行に伴い、一般にS字型の曲線を描く。

- 初期段階
  - バグの発見数は少ない（テスト環境が整っていない、または準備不足のため）。
- 中盤段階
  - テストケースが充実し、一定の割合でバグが見つかるようになる。
- 終盤段階
  - ソフトウェアが安定し、発見されるバグは減少し、最終的にはほぼゼロになる。

## バグ曲線の活用方法
- 品質推定
  - テスト初期からの曲線を見て、今後のバグの出現傾向を予測可能。
  - 序盤で多くのバグが発見された場合、品質が低いことを疑う。
  - 序盤のバグが極端に少ない場合、テストケース不足を疑う必要がある。
- バグ管理の目安としての活用例
  - プロジェクト固有の目標（テストケース数の5％程度など）を設定。
  - 目標値よりも大幅に多いバグが見つかれば、プログラムの設計・実装を再検討。
  - 目標値を大幅に下回れば、テスト計画・テスト設計を再検討。

## バグ曲線活用時の注意点
- 曲線はあくまでも傾向を表す指標である。
- プロジェクトごとの特性に応じて適切な目標を設定することが必要。
- 単独の指標として用いるのではなく、他の品質管理手法とも併用する。

## 参考資料
- [信頼度成長曲線（バグ曲線 / PB曲線）とは - IT用語辞典 e-Words](https://e-words.jp/w/%E4%BF%A1%E9%A0%BC%E5%BA%A6%E6%88%90%E9%95%B7%E6%9B%B2%E7%B7%9A.html#:~:text=%E4%BF%A1%E9%A0%BC%E5%BA%A6%E6%88%90%E9%95%B7%E6%9B%B2%E7%B7%9A%EF%BC%88reliability,%E3%81%AE%E4%BA%88%E6%B8%AC%E3%81%AA%E3%81%A9%E3%82%92%E8%A1%8C%E3%81%86%E3%80%82)
- [定量的品質予測のススメ](https://www.ipa.go.jp/archive/publish/qv6pgp0000000yw8-att/000005133.pdf)
フロントエンド入門：FormSubmitでのスパム対策に使える2行のコードを自分用にまとめてみた

## はじめに
お問い合わせフォームなどを公開すると、意図しないスパム送信が増えることがあります。

:::note info
**FormSubmitなどの外部サービスを使う際にも、スパム対策は欠かせません。**
:::

本記事では、以下の2行のコードに絞って、その役割と効果をまとめた備忘録です。

```html
<input type="text" name="_honey" style="display:none">
<input type="hidden" name="_captcha" value="false">
```

## 書こうと思ったきっかけ
FormSubmitでフォームを実装した際、突然意味不明な送信が連続したことがありました。

調べてみると、簡単な対策として上記2行を使うことでかなり防げると分かり、記録しておくことにしました。

## 内容の説明
### `<input type="text" name="_honey" style="display:none">`
これは「ハニーポット」と呼ばれる仕組みです。

- スパムボットは、すべてのinputフィールドに値を入れて送信しがち
- ユーザーには見えないフィールドに何か入力がある → スパムと判定
- 人間はこのフィールドが見えないので入力しない → 通常送信と判定

つまり、**見えない入力欄に文字が入っていたら、それは機械的な送信だとみなして処理を拒否する**というテクニックです。

### `<input type="hidden" name="_captcha" value="false">`
これはFormSubmitに備わっている**CAPTCHA（画像認証）を無効化する**設定です。

- CAPTCHAを使いたくない（ユーザーに負担をかけたくない）場合に便利
- 代わりにハニーポットやIP制限などで対策する必要がある

FormSubmitでの基本的な設定項目の一つとして覚えておくと良いです。

## まとめ
- `input type="text" name="_honey"` はスパムボット対策のための「罠」
- `input type="hidden" name="_captcha" value="false"` は画像認証をオフにする
- FormSubmitなどのサービスを使うとき、最低限この2つを入れておくことでスパム被害を軽減できる

今回はこの2行だけにフォーカスしましたが、他にも `_next` や `_autoresponse` など、便利なhiddenフィールドがあるので、今後また整理していきたいと思います！
【試験対策】テレワークを狙うサイバー攻撃とは？手口と対策を徹底解説！

✅ はじめに
近年、テレワークやハイブリッドワーク の普及により、企業の働き方は大きく変化しました。
しかし、これに伴い、新たなサイバー攻撃のリスク も増加しています。

✅ テレワーク環境は攻撃者にとって狙いやすい
✅ セキュリティ対策が甘い個人PC・ネットワークが標的にされる
✅ 応用情報技術者試験（午後）での出題が予想されるテーマ

本記事では、
✅ テレワークを狙うサイバー攻撃の手口
✅ 具体的な攻撃事例
✅ 効果的な対策
✅ 試験の出題ポイント
を解説します！

⸻
📌 テレワークを狙うサイバー攻撃とは？
🔹 概要
テレワーク環境では、社内ネットワークとは異なり、管理の行き届かないPCや通信経路が増える ため、
攻撃者にとっては侵入しやすいポイント となります。

主な攻撃手法には以下のものがあります。
| 攻撃手法| 内容 |
|:-:|:-:|
| VPN（仮想プライベートネットワーク）の脆弱性攻撃  | VPN機器の脆弱性を悪用し、企業ネットワークに不正侵入  |
| フィッシング詐欺  | 社員をだましてマルウェアをインストールさせたり、認証情報を盗む  |
| BYOD（私物端末）のセキュリティ不備を悪用  | 私物のPC・スマホが狙われ、マルウェア感染や情報漏えいを引き起こす  |
| Wi-Fiの盗聴  | 公共Wi-Fiを利用する社員の通信を傍受し、情報を盗む  |
| リモートデスクトップ（RDP）の不正アクセス |パスワードの総当たり攻撃でリモートデスクトップを突破される  |


📌 具体的な攻撃事例
✅ 1. VPNの脆弱性を狙った攻撃
	•	内容:
社員がテレワークで利用するVPN機器の脆弱性が悪用され、攻撃者が社内ネットワークに侵入。
	•	手口:
	•	VPN機器の古いバージョン に脆弱性がある
	•	攻撃者がVPNの脆弱性を悪用し、認証を回避して社内ネットワークに侵入
	•	結果:
企業の機密情報が盗まれたり、ランサムウェア攻撃の踏み台にされる。

✅ 2. フィッシング攻撃による情報漏えい
	•	内容:
「社内システムのアップデート通知」 になりすました偽メールを送信し、社員に偽のログインページ に誘導。
	•	手口:
	•	偽サイトで入力したID・パスワードを盗む
	•	盗んだ情報を使って、攻撃者が正規アカウントとしてシステムにログイン
	•	結果:
社内の機密情報や顧客データが漏えいし、企業が大きな被害を受ける。

✅ 3. 公共Wi-Fiを利用した盗聴
	•	内容:
テレワーク中の社員がカフェのフリーWi-Fiを使用。
攻撃者が通信を盗聴し、ログイン情報や機密データを取得。
	•	手口:
	•	偽のWi-Fiスポット（Evil Twin Attack） を設置し、社員を接続させる
	•	盗聴ツール（Wiresharkなど） で通信データを解析し、ログイン情報を盗む
	•	結果:
社内システムへの不正アクセスが発生し、データが流出。

⸻

📌 被害を防ぐための対策
テレワーク環境を安全に運用するために、技術的対策＋社員教育が必須 です。

🔹 1. VPNのセキュリティ対策
✅ VPN機器を最新のバージョンに更新
	•	古いVPNソフトウェアには脆弱性があるため、定期的なアップデートを徹底。

✅ 多要素認証（MFA）の導入
	•	VPN接続時に、パスワード＋ワンタイムパスワード（OTP） を要求することで、不正ログインを防ぐ。

🔹 2. フィッシング詐欺への対策
✅ 社員向けのフィッシング訓練を実施
	•	怪しいメールの特徴（緊急性の強調・リンクの違いなど）を周知。
	•	「メール内のURLを直接クリックせず、公式サイトからログインする習慣」を徹底。

✅ メール認証技術（SPF・DKIM・DMARC）の導入
	•	なりすましメールを検出し、ブロックする。

🔹 3. BYOD（私物端末）のセキュリティ強化
✅ 企業用デバイスの使用を推奨
	•	個人PCではなく、企業管理の端末を使用させる。

✅ MDM（モバイルデバイス管理）の導入
	•	リモートワイプ機能で、紛失・盗難時にデータを削除できるようにする。

🔹 4. 安全なWi-Fi利用
✅ 公共Wi-Fiを利用しない、またはVPN経由で接続
	•	フリーWi-Fiを使う場合は、企業のVPNを経由して通信を暗号化する。

✅ 社内ネットワークとテレワーク環境を分離
	•	ゼロトラストモデルの導入で、「誰であっても信頼しない」原則を適用する。

🔹 5. リモートデスクトップ（RDP）の強化
✅ リモートデスクトップのパスワードを強化し、二要素認証を導入
✅ RDPの使用を制限し、IPアドレス制限を設定

⸻
📌 試験での出題ポイント
✅ 記述問題の対策
試験では、「テレワークを狙った攻撃手法と対策」を説明する問題が予想されます。

Q1. テレワーク環境を狙った攻撃の手法を1つ挙げ、その対策を説明せよ。

解答例:
攻撃手法: VPNの脆弱性を悪用した攻撃
対策: VPN機器のソフトウェアを最新に更新し、脆弱性を修正する。さらに、多要素認証（MFA）を導入し、不正アクセスを防ぐ。

Q2. テレワーク中の社員がフリーWi-Fiを利用する際に発生するリスクを挙げ、その対策を説明せよ。

解答例:
リスク: 公共Wi-Fiを利用すると、攻撃者による通信の盗聴が発生する可能性がある。
対策: VPNを使用して通信を暗号化し、社内システムへの安全なアクセスを確保する。

⸻

✅ まとめ
	•	テレワーク環境では、VPNの脆弱性、フィッシング、Wi-Fi盗聴、RDP不正アクセスなどが脅威となる。
	•	技術的な対策（VPN更新、MFA、MDM導入）と、社員教育を組み合わせることが重要。
	•	試験では「攻撃手法」「リスク」「具体的な対策」をセットで理解し、記述問題に対応できるようにする！
フロントエンド入門：ロゴ画像がうまく表示されなかったので <img> の使い方を整理した話

## はじめに
HTMLでロゴ画像を表示するとき、`<img>` タグを使うのが基本です。今回は以下のようなコード：

```html
<img src="images/logo.png" alt="ロゴ" style="height: 50px;">
```
この1行に絞って、何をやっているのか、なぜこのような書き方をしているのかを、自分用の備忘録としてまとめます。

## 書こうと思ったきっかけ
Webサイトのロゴを配置する際に、表示サイズが大きすぎたり、画像の読み込みに失敗していたりすることがありました。

:::note info
**個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。**
:::

特に `alt` 属性の重要性や `style` でのサイズ指定の意味をちゃんと理解しておきたいと感じたのがきっかけです。

## 内容の説明
### `src="images/logo.png"`
- 画像ファイルのパスを指定します。
- `images/` フォルダの中に `logo.png` という名前の画像がある前提。
- 相対パスなので、HTMLファイルの位置とフォルダ構成が関係します。

### `alt="ロゴ"`
- 画像が表示できない場合に代わりに表示されるテキスト。
- 視覚障害者向けのスクリーンリーダーでも読み上げられる。
- アクセシビリティやSEOの観点からも重要。

### `style="height: 50px;"`
- CSSを直接タグに指定する「インラインスタイル」。
- この場合は、画像の高さを50pxに制限。
- 幅（width）は自動的に比率を保って縮小される。

## まとめ
- `img` タグでロゴを表示する際は、`src` のパス、`alt` の説明、`style` によるサイズ調整が基本。
- 特に `alt` の記述を忘れがちなので注意。
- サイズはCSSファイルにまとめてもよいが、インラインで調整したいときは `style` も有効。

Webページの第一印象を決めるロゴ部分だからこそ、丁寧に書く習慣をつけていきたいです！
【実務メモ】<section> に aria-label ではなく aria-labelledby を使う理由


最近、HTMLのアクセシビリティ対応を見直している中で、
<section> 要素に aria-labelledby を使う書き方に触れる機会がありました。

```
<section aria-labelledby="service-heading">
  <h2 id="service-heading">サービス</h2>
  ...
</section>
```
この構文、一見まわりくどいように感じるんですが、ちゃんと理由があります。

## aria-label ではダメなのか？
たとえばこう書いた場合：

```
<section aria-label="サービス">
  <h2>サービス</h2>
  ...
</section>
```
ぱっと見はこっちのほうがシンプルに見えます。
でも実務で考えると、ラベルと見出しの2箇所を管理することになるので、変更があったときに片方だけ直し忘れるリスクがあります。

## aria-labelledby のほうがいい理由
メンテナンス性が高い
→ 見出しテキストを1か所変えれば、スクリーンリーダーの読み上げも自動で変わる。

情報の一貫性が担保できる
→ 開発者の意図とスクリーンリーダーに伝わる内容が一致する。

セマンティクスがはっきりする
→ 見出しの要素とラベルの要素が明確につながるので、アクセシビリティツールでもセクションの意味を正確に捉えられる。

## 実際の現場での使い分け指針
| 状況 | 選ぶ属性 |
|--------|---|
| セクションに見出し（h2など）がある | aria-labelledby を使う |
| 見出しを表示したくない、<br>もしくは見た目だけの装飾で意味を持たせたい | aria-label を使う |
## 結論：命名の一元化と可読性の両立を意識する
案件をやっていると「これ、あとで文言変わるかも」と思うことって多いですよね。
そういうときに aria-label で書いてしまうと、見た目とスクリーンリーダーで読まれる内容がずれて、修正漏れやバグの温床になります。

なので、自分は今後、以下のルールで書いていくつもりです。

- 基本は aria-labelledby を使って、見出しと役割を紐づける

- 見出しを出したくないときだけ aria-label を使う

今までは「アクセシビリティ対応＝altつけること」くらいの認識でやっていた部分もあったので、
こうした細かい部分からも品質を上げていけるように意識していきたいです。
Ubuntu系で、ホームディレクトリ内のフォルダ名を日本語から英語に変更する方法

### ubuntuとlinuxmint22.1で行いました
これは原則　自分のための記憶メモです



Ubuntu系で、ホームディレクトリ内のフォルダ名（「ドキュメント」「ミュージック」など）を日本語から英語に変更する方法は以下の通りです。

### 方法1：ターミナルでコマンドを実行する
1. **ターミナルを開く**（`Ctrl + Alt + T`）
2. 以下のコマンドを実行して、言語パッケージをインストール：
   ```bash
   sudo apt install xdg-user-dirs-gtk
   ```
3. 以下のコマンドで言語を英語に設定：
   ```bash
   export LANG=en_US
   ```
4. フォルダ名を更新：
   ```bash
   xdg-user-dirs-gtk-update
   ```
5. 確認ダイアログが表示されるので、「古い名前を保持」ではなく「新しい名前に変更」を選択。


### 注意点
- バックアップを推奨。
- ターミナルで`LANG=en_US.UTF-8`を設定しても同様の効果があります。
- 変更後、ターミナルで`ls ~`を実行し、フォルダ名が英語（Documents, Musicなど）になっているか確認できます。

これでホームディレクトリのフォルダ名が英語表記になります。他のシステム言語は日本語のまま維持することも可能。
フロントエンド入門：CSSが反映されないときに確認すべき <link rel="stylesheet"> の正しい書き方をまとめてみた

## はじめに
HTMLファイルにCSSを適用するためには、`<link rel="stylesheet" href="...">` の記述が必要不可欠です。今回は、特に以下の形式：

```html
<link rel="stylesheet" href="css/style.css">
```
に絞って、基本的な動作や注意点を自分の学習のためにまとめました。

## 書こうと思ったきっかけ
外部CSSファイルを読み込んだつもりが全く反映されず、原因を調べた結果 `href` のパスや記述場所に問題があったことに気づきました。

:::note info
**個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。**
:::

初歩的な部分ですが、確実に理解しておきたいと思い備忘録としてまとめます。

## 内容の説明
### `rel="stylesheet"` とは？
- `rel` 属性は、このリンクが「どのような関係性のリソースか」を示すもの。
- `stylesheet` を指定することで、外部のCSSファイルであることをHTMLに伝える。

### `href="css/style.css"` の意味
- `href` は読み込むCSSファイルの場所（パス）を示す。
- `css/style.css` は、HTMLファイルと同階層にある `css` フォルダ内の `style.css` を読み込むという意味。
- パスの指定ミス（例：フォルダ名のスペル間違いやパスの階層違い）はCSSが読み込まれない原因になる。

### `<head>` タグ内に書く理由
- CSSファイルはHTMLの読み込み時に最初から適用される必要があるため、`<head>` 内で指定する。
- `<body>` の後ろに書くと、スタイルが一瞬適用されず崩れた表示になることもある。

## まとめ
- CSSを読み込む基本形：
  ```html
  <link rel="stylesheet" href="css/style.css">
  ```
- 正しいパスを指定することが最重要
- `<head>` 内に忘れずに記述

この1行があるかないかで、見た目の整ったWebページになるかどうかが決まる。

**今後もHTMLを書く際には、必ず確認するようにしていきたいです！***
フロントエンド入門：HTMLでスマホ対応するなら <meta viewport> を使うと便利だったのでまとめてみた

## はじめに
Web制作において、スマートフォンやタブレットといった画面サイズの異なるデバイスに対応するためには、HTMLにおける `<meta name="viewport">` の設定が重要です。

この記事では、特に次のように書かれる定番の設定：

```html
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
```
について、自分の学びのために整理した個人用備忘録です。

## 書こうと思ったきっかけ
スマホ表示でページがやたらと縮小されて見づらいと感じたのがきっかけです。

:::note warn
**個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。**
:::

CSSやレスポンシブ設定をどれだけ頑張っても、そもそも `<meta>` の設定がなければ、意図通りに表示されないことに気づきました。

## 内容の説明
### `width=device-width` とは？
ユーザーのデバイス（スマホやPCなど）の画面幅をそのまま反映するという指定。
これがないと、スマホ表示でもブラウザはデスクトップ向けの幅（例：980pxなど）でレンダリングしようとしてしまう。

### `initial-scale=1.0` とは？
ページが最初に読み込まれたときのズーム倍率を設定する。
`1.0` は等倍（つまりズームなし）で表示することを意味する。
これがないと、初期表示が縮小されて文字が小さくなってしまうことも。

### よくある落とし穴
- `<meta>` の指定が `<head>` 内にない、または順番が遅くてCSSが先に読み込まれてしまっている
- `width=1024` などと固定していると、スマホでレイアウト崩れ

## まとめ
- モバイル対応の基本はまずこの1行から：
  ```html
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  ```
- CSSのレスポンシブ設計が効かない場合、まずはこれを確認する
- ユーザーのデバイスに合わせた表示をするための第一歩

自分でHTMLを書くときは、必ずこの行を入れるように習慣づけておきたいと思いました！

## 関連記事

https://qiita.com/free-honda/items/a49314079857dcbe3d21