OmniAICreator/Qiita-1.07M huggingface dataset:
ハッキングの始め方　②ハッキングを学ぶためのロードマップ

# 【初心者向け】サイバーセキュリティエンジニアになる為のロードマップ
サイバーセキュリティエンジニアを目指すためには、一歩ずつ知識や技術を踏み埋めていくことが重要です。
この記事では、どのように勉強を始めればよいか、実際に私が学んでいる環境やロードマップを紹介します。

## 1. ネットワークの基礎を学ぶ
ハッカーの基本は、ネットワークを理解することから始まります。下記はその基礎知識です。

### ■ OSI参照モデル
アプリケーションなどの通信レイヤーを7階層に分割したモデル
各階層でどのような技術が関与するかを理解することが重要

### ■ TCP/IP
現在のインターネットで使われている実用的なプロトコル群
IPアドレス、ポート番号、MACアドレスなどの基本を理解する

### ■ ブラウザの動作原理
URL入力からレスポンス取得までの処理の流れを理解
DNSルックアップやHTTP/HTTPS通信の仕組みを学ぶ

## 2. Kali Linuxの環境を用意する
ハッカーの演習環境として世界中で利用されているOSが Kali Linux です。
環境を用意する方法としては、前回記事で紹介した Docker を活用した構築方法がおすすめです。
👉 https://qiita.com/hk4zushi0701/items/b3518923c8254ea8e3de

### ■ Kali Linux とは
ペネトレーションテストに特化したLinuxディストリビューション
Nmap、Burp Suite、John the Ripper、Wireshark などがプリインストール

### ■ Kali Linuxへのアクセス方法（dockerで作成した場合）
VSCode の拡張機能「リモートエクスプローラー（Remote Explorer）」をインストール

1．Docker Desktop を起動する
2．VSCode 左側のテレビのようなアイコン「リモートエクスプローラー」を開く
3．接続先を「開発コンテナ（Dev Containers）」に切り替える
4．一覧から kali-linux コンテナを選択して接続
5．Kali Linux 内部のファイル編集やターミナル操作が可能になります

## 3. TryHackMeで学習する
Kali Linux の環境が整ったら、実践的な演習に進みましょう。
初心者に最もおすすめのサービスが TryHackMe です。

### ■ TryHackMe
👉 https://tryhackme.com/

初心者向けに学習ロードマップが用意されており、段階的に知識を身につけられる
最初は「Pre Security」学習パスから始めると、無理なく学習を進められる
仮想マシンへVPNで接続して、実際の演習を行うことが可能
プログラミングの知識やネットワークの知識等も身に着けられる

## 実践してみる：HackTheBoxも活用！
TryHackMeに慣れてきたら、よりチャレンジングな環境で腕試ししてみましょう。

### ■ HackTheBox
👉 https://www.hackthebox.com/

中〜上級者向けの問題が揃った実戦演習プラットフォーム
実際のシナリオに近い形式でセキュリティスキルを磨ける
初回登録時に簡単なCTFを解く必要があるため、ゲーム感覚で進められる

## 【まとめ】
まずはネットワークの基礎を学んで理解を深める
Kali Linuxで実際に技術を使う環境を構築する
TryHackMeやHackTheBoxで実戦経験を積んでスキルを強化する
【実験】SuiteScriptの自動生成 ーその3ー

### ✅ 成功例③「入力フォームで指定した注文書IDの承認待ち情報をJSONで出力」

#### 概要

フォーム画面を通じてユーザーに「注文書ID」の入力を求め、指定された注文書が承認待ちであれば、その情報をJSONで表示するスクリプト。

### 実行したプロンプト
#NetSuiteのダッシュボード上に「注文書 承認待ち」と記載がある場合
#この情報をJSONで出力するスクリプトを生成してください
#出力したい"id"を出力前に入力する仕組みにしてください

#### 生成されたスクリプト
~~~
/**
 * @NApiVersion 2.1
 * @NScriptType Suitelet
 */
define(['N/search', 'N/ui/serverWidget'], (search, serverWidget) => {

    const onRequest = (context) => {

        if (context.request.method === 'GET') {

            const form = serverWidget.createForm({ title: '注文書IDを入力してください' });

            form.addField({
                id: 'po_id',
                type: serverWidget.FieldType.TEXT,
                label: '注文書ID'
            }).isMandatory = true;

            form.addSubmitButton({ label: '検索' });

            context.response.writePage(form);

        } else if (context.request.method === 'POST') {

            const poId = context.request.parameters.po_id;

            const purchaseOrderSearch = search.create({
                type: search.Type.PURCHASE_ORDER,
                filters: [
                    ['status', 'anyof', 'PurchOrd:A'], // 「承認待ち」ステータス
                    'AND',
                    ['internalid', 'is', poId]
                ],
                columns: [
                    'tranid',
                    'entity',
                    'trandate',
                    'amount',
                    'status'
                ]
            });

            const results = [];

            purchaseOrderSearch.run().each(result => {
                results.push({
                    id: result.id,
                    tranId: result.getValue('tranid'),
                    vendor: result.getText('entity'),
                    date: result.getValue('trandate'),
                    amount: result.getValue('amount'),
                    status: result.getText('status')
                });
                return true;
            });

            context.response.setHeader({ name: 'Content-Type', value: 'application/json' });
            context.response.write({ output: JSON.stringify(results, null, 2) });
        }
    };

    return { onRequest };
});

~~~
【実験】SuiteScriptの自動生成 ーその2ー

### ✅ 成功例②「承認待ち注文書をJSONで出力」

#### 概要

ダッシュボードに表示される「注文書 承認待ち」の情報を検索し、JSON形式で出力するスクリプト。

### 実行したプロンプト
#NetSuiteのダッシュボード上に「注文書 承認待ち」とき記載があります
#この情報をJSONで出力するスクリプトを生成してください

#### 生成されたスクリプト
~~~
/**
 * @NApiVersion 2.1
 * @NScriptType Suitelet
 */
define(['N/search'], (search) => {

    const onRequest = (context) => {
        if (context.request.method === 'GET') {

            const purchaseOrderSearch = search.create({
                type: search.Type.PURCHASE_ORDER,
                filters: [
                    ['status', 'anyof', 'PurchOrd:A'] // 「承認待ち」ステータス
                ],
                columns: [
                    'tranid',
                    'entity',
                    'trandate',
                    'amount',
                    'status'
                ]
            });

            const results = [];

            purchaseOrderSearch.run().each(result => {
                results.push({
                    id: result.id,
                    tranId: result.getValue('tranid'),
                    vendor: result.getText('entity'),
                    date: result.getValue('trandate'),
                    amount: result.getValue('amount'),
                    status: result.getText('status')
                });
                return true;
            });

            context.response.setHeader({ name: 'Content-Type', value: 'application/json' });
            context.response.write({ output: JSON.stringify(results, null, 2) });
        }
    };

    return { onRequest };
});
~~~
MyBatis Generator の各種設定の覚書き

# はじめに
MyBatis Generatorを使用するにあたり、各種設定に関して気になったことをまとめました。

# lombok対応
lombok対応のMyBatis Generatorプラグインがあるので、それを使用します。

generatorConfig.xmlファイルにプラグインを追加します。

```xml:generatorConfig.xml
...
    <context ...>
        <!-- lombok対応 -->
        <plugin type="com.softwareloop.mybatis.generator.plugins.LombokPlugin">
        </plugin>
...
```
上記設定で、モデルクラスに``@Date``アノテーションが付与されます。
その他、当プラグインには、いろいろな設定項目があります。

https://github.com/softwareloop/mybatis-generator-lombok-plugin

generatorConfig.xmlに上記を設定後、実行するための設定は、EclipseプラグインとMavenでは違うので、それぞれ以下に示します。

## Eclipseプラグインを利用する場合
pom.xmlの``<dependencies>``タグに以下を追加し、lombok対応用プラグインをプロジェクトのビルドパスに追加します。

```xml:pom.xml
...
    <dependencies>
        <!-- MyBatis Generator用lombok対応プラグイン -->
        <dependency>
            <groupId>com.softwareloop</groupId>
            <artifactId>mybatis-generator-lombok-plugin</artifactId>
            <version>1.0</version>
        </dependency>
        ...
    </dependencies>
...
```
## Mavenを利用する場合
pom.xmlの``<plugin>``タグのmybatis-generator-maven-pluginの``<dependencies>``タグにlombok対応用プラグインを追加します。

```xml:pom.xml
...
<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>${mybatis.generator.version}</version>
    <configuration>
        <overwrite>true</overwrite>
    </configuration>
    <dependencies>
        <!-- lombok対応プラグイン -->
        <dependency>
            <groupId>com.softwareloop</groupId>
            <artifactId>mybatis-generator-lombok-plugin</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- 以下必要なプラグインを設定 -->
        ...
    </dependencies>
</plugin>
...
```

# コメント出力制御
生成されたコメントの出力制御は、``commentGenerator``タグにて行います。

詳しくはこちらにあります。

https://mybatis.org/generator/configreference/commentGenerator.html

MyBatis Generatorで出力されるコメント中の日付の出力を抑制したい場合は、以下のように設定します。
```xml:generatorConfig.xml
<context ...>
    ...
    <!-- 更新日付を出力しない -->
    <commentGenerator>
      <property name="suppressDate" value="true" />
    </commentGenerator>
    ...
```
実行のたびに日付が付与され、Diff時に変更のない個所も変更箇所としてピックアップされてしまうことを防ぐことが出来ます。

# 自動生成されるSQLにスキーマ名が付与されないようにする
こちらに方法が記述されてます。

https://esoro.jp/?p=1597

PostgreSQLだと、以下のような設定となります。
```xml:generatorConfig.xml
    ...
    <table schema="public" tableName="%"> 
        <!-- スキーマ名修飾しない -->
        <property name="ignoreQualifiersAtRuntime" value="true" />
    </table>
    ...

```
意識低い系エンジニアがAWS SCS(SCS-C02)に合格した件

# はじめに

AWS全冠を目指して資格学習をしている者です。
前回の戦いはこちら。

https://qiita.com/meru_meru/items/e794546ae295e8f0d8d5


SCSの合格体験記、なんか少なくねぇ？

というところから少しでもご参考になればと思い、記事にいたします。


## スコア
802点でした。合格ラインは750点なので結構ギリギリです。

直近で受けたSAP、DOPも800点前半だったのでそれ相応に難しい問題だったというのが垣間見えます。

ちなみに試験終了後は「これはー！！！落ちたやろなあー！！！」という気持ちでいっぱいでした。


## 学習時間
80hぐらいです。
まとまった時間は通勤時間(往復で3～4時間)で捻出しました。

## つまづいたこと
実際の試験中でも苦戦したのが、IAMやKMSグラント、ADサービス系、cognitoといった認証回りです。

試験でもかなりの比率で出題されており、重要な概念と思われます。が、自分は苦手で苦戦しました。

問題集の解説だけでは理解できず、ChatGPTも利用するようになりました。
これがとても良かったです。どこまでもかみ砕いて説明してくれました。

ただし定期的に嘘をつかれるので、それなりにチェックしないといけないのが手間...

## 今後
私はAWS全冠を目指しているので、次はANS取得に向けて学習しています。
引き続きやったるでぃー！
あのMVCをMVCという人が多すぎる

# はじめに
　　
　ソフトウェアをModel,View,Controllerの３つに分けるアーキテクチャを
MVCアーキテクチャと呼びます。
MVCアーキテクチャにはいろいろな方言があります。

# 原初MVC

一番最初のSmalltalkでのMVC

C-M-Vの形

Cが入力
Vが表示


![原始MVC.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/734922/d71ad255-1cbf-4fed-b230-3b5e5549d627.jpeg)


# 原始MVC-2

C-M-Vの形

Cが入力
Vが表示

CとVが通信する方式も確認されています。

![原始MVC-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/734922/a83e0581-dfd8-4313-8ba9-629290ae0501.jpeg)




# MVC2

V-C-Mの形

Cが入力
Vが表示

![MVC2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/734922/dac8c737-4858-48ac-b5ac-d684a7a9e768.jpeg)



# WebMVC

V-C-Mの形

Vが入力と表示

![WebMVC.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/734922/04e2b925-5ce6-40fa-b572-6dfe45e2814f.jpeg)



# まとめ

　MVCには色々あります。
 MVCと書く場合は、どのMVCなのか書いていただくと助かります。



参考リンク
[Model View Controller Wiki](https://ja.wikipedia.org/wiki/Model_View_Controller  "MVC wiki")
【実験】SuiteScriptの自動生成 ーその１ー

### ✅ 成功例①「自分のユーザー情報をJSONで出力」

#### 概要

NetSuiteログインユーザー自身の基本情報（ユーザーID、名前、メールアドレス、部署など）を取得し、JSON形式で出力するスクリプト。

#### 実行したプロンプト
#SuiteScript生成
#NetSuite
#自分のIDに関する情報の出力

#### 生成されたスクリプト

```
/**
 * @NApiVersion 2.1
 * @NScriptType Suitelet
 */
define(['N/search'], (search) => {

    const onRequest = (context) => {
        if (context.request.method === 'GET') {

            const quotaSearch = search.load({
                id: 'customsearch_sales_quota_currentyear' // 保存済み検索のIDに置き換え
            });

            const results = [];
            quotaSearch.run().each(result => {
                results.push({
                    id: result.id,
                    salesrep: result.getText({ name: 'salesrep' }),
                    quota: result.getValue({ name: 'quota' }),
                    quotaname: result.getValue({ name: 'quotaname' }),
                    targetontotal: result.getValue({ name: 'targetontotal' })
                });
                return true;
            });

            context.response.setHeader({ name: 'Content-Type', value: 'application/json' });
            context.response.write({ output: JSON.stringify(results, null, 2) });
        }
    };

    return { onRequest };
});
```
【実験】SuiteScriptの自動生成3つの実例 ー概要編ー

### はじめに

NetSuiteのSuiteScriptを学習するため、AI（ChatGPT）による自動生成を試しました。実際に試したところコードの修正なしでそのまま実行可能なスクリプトが複数回生成されました。
その中から特に成功した3つの実例を紹介します。

自動生成への高い期待を少々裏切るような簡単なスクリプトです。
とはいえ、ChatGPTには事前にAPIの読み込ませ学習をさせ、幾つかの失敗例を経てここでは**堅めの成功パターン**をご紹介していることをお許しください。
ちなみに、ChatGPTには成功例を**成功した**とコメントして保存させています。
闇雲のスクリプトを生成をさせてどれが上手くいって上手くいかないなどがわからなくならないよう、今後の出力に役立つようにプロンプトの追加も調整事項としてを行っています。

各成功例のスクリプトは別の記事で掲載しています
参考までの実行に留め、稼働中のシステムに負荷をかけ過ぎないよう、皆様の学習に役立ててください

https://qiita.com/naoyamiyake/items/f224f207792880ac80bc

https://qiita.com/naoyamiyake/items/3181abe43f9a04948c03

https://qiita.com/naoyamiyake/items/20d0b349e2ac494d5a48

---

### ✅ 成功例①「自分のユーザー情報をJSONで出力」

#### 概要

NetSuiteログインユーザー自身の基本情報（ユーザーID、名前、メールアドレス、部署など）を取得し、JSON形式で出力するスクリプト。

#### 成功ポイント

* NetSuite標準モジュール（runtime、search）の正しい活用。
* 明確な目的とシンプルな構造。

#### 実行したプロンプト
#SuiteScript生成
#NetSuite
#自分のIDに関する情報の出力

---

### ✅ 成功例②「承認待ち注文書をJSONで出力」

#### 概要

ダッシュボードに表示される「注文書 承認待ち」の情報を検索し、JSON形式で出力するスクリプト。

#### 成功ポイント

* NetSuite標準モジュール（search）と明確な検索条件を活用。
* 結果出力がシンプルで明快。

### 実行したプロンプト
#NetSuiteのダッシュボード上に「注文書 承認待ち」とき記載があります
#この情報をJSONで出力するスクリプトを生成してください

---

### ✅ 成功例③「入力フォームで指定した注文書IDの承認待ち情報をJSONで出力」

#### 概要

フォーム画面を通じてユーザーに「注文書ID」の入力を求め、指定された注文書が承認待ちであれば、その情報をJSONで表示するスクリプト。

#### 成功ポイント

* NetSuite標準モジュール（serverWidget、search）を用いたフォーム作成と検索の組み合わせ。
* 明確なユーザーインプットを伴う仕組みで、実用性が高い。

### 実行したプロンプト
#NetSuiteのダッシュボード上に「注文書 承認待ち」とき記載があります
#この情報をJSONで出力するスクリプトを生成してください
#出力したい"id"を出力前に入力する仕組みにしてください

---

### おわりに

これらの実例から、AIを活用したSuiteScriptの自動生成はNetSuiteの特に初期段階の学習に大幅に効果を発揮することと思います。標準的な処理であれば、コード変更なしで実用レベルのスクリプトを短時間で手に入れることが可能です。ぜひ皆さんも試してみてください。
devcontainer imageのpullでエラー

## 現象

Macでdevcontainerを使って開発していた。Macでは問題なかった。
windowsで開く用事があって、そのリポジトリをwindows側でクローンし、コンテナでリビルドして開くをしたところエラーでビルドできなかった。

```
[2025-05-13T05:03:50.638Z] Error fetching image details: read ECONNRESET
[2025-05-13T05:03:50.638Z] Start: Run: docker pull mcr.microsoft.com/devcontainers/python
[2025-05-13T05:03:50.848Z] 
[2025-05-13T05:03:50.864Z] Using default tag: latest
[2025-05-13T05:03:52.142Z] Error response from daemon: Head "https://mcr.microsoft.com/v2/devcontainers/pyt
hon/manifests/latest": EOF
[2025-05-13T05:03:52.206Z] Stop (1568 ms): Run: docker pull mcr.microsoft.com/devcontainers/python
[2025-05-13T05:03:52.207Z] []
[2025-05-13T05:03:52.207Z] Error response from daemon: No such image: mcr.microsoft.com/devcontainers/python:latest
```

## 原因調査

ChatGPTに相談したところ、まずネットワークの確認を指示された。

- mcr.microsoft.com への疎通確認
```
curl -v https://mcr.microsoft.com/v2/
```
→ 200 OK が返れば正常、タイムアウトならネットワーク・FW・Proxyを確認

実行してみた↓
```
$ curl -v https://mcr.microsoft.com/v2/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Host mcr.microsoft.com:443 was resolved.
* IPv6: 2603:1061:f:101::10, 2603:1061:f:100::10
* IPv4: 150.171.69.10, 150.171.70.10
*   Trying [2603:1061:f:101::10]:443...
* Connected to mcr.microsoft.com (2603:1061:f:101::10) port 443
* schannel: disabled automatic use of client certificate
* Recv failure: Connection was reset
* schannel: failed to receive handshake, SSL/TLS connection failed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* closing connection #0
curl: (35) Recv failure: Connection was reset
```

「TCP接続はできているが、SSL/TLSハンドシェイクで接続リセット (Connection reset)」が起きています。とのこと

## 対策
IPv6を無効化して再試行
一時的にIPv6を無効にしてIPv4で再接続を試す：

Windows (PowerShell 管理者権限)
```
Disable-NetAdapterBinding -Name "*" -ComponentID ms_tcpip6
```

をして、もう一度ビルドすると問題なくコンテナを開くことができました。

トラブル時はIPv6を一時的にOFFにし、終わったら元に戻す運用がベストとのこと

Windows (PowerShell 管理者権限)
```
# 有効化
Enable-NetAdapterBinding -Name "*" -ComponentID ms_tcpip6
```
意識低い系エンジニアがAWS SAP(SAP-C02)/DOP(DOP-C02)に合格するまで

# はじめに
前回までの戦いはこちら

https://qiita.com/meru_meru/items/d5b70c3cbd8b7ab80149

## この記事を通してお伝えしたいこと
AWSの資格に関してはキチンと学習さえすれば、誰でも合格できると思います。(まだ半分しか持ってないけど)
とはいえハードルが低い訳でもないので、確固たる意志を持ち、学習を継続することが大事だと感じました。
素養が無い私がどのようにして合格出来たのかを公開することで少しでも皆様のご参考になれば幸いです。

## AWSの受験経歴
別の資格を取ったり、炎上PJに参画したりでところどころ期間が空いています。

* AWS CLF(2022/2)
* AWS SAA(2022/7)
* AWS DVA(2022/11)
* AWS SOA(2023/11)
* AWS SAP(2024/9)
* AWS DOP(2025/2)

## スコア
結構ギリギリですが、合格は合格です(ｷｯﾊﾟﾘ)

SAP：810
DOP：831

## 学習時間_SAP
80hぐらいです。

育休期間突入直後に受験となりました。
当時の学習スケジュールはこのようだったと記憶しています。

### 通常期
子供がいてなかなかまとまった時間が捻出できません。土日は家族サービスですので自分時間は作れません。
なので平日に早起きすることで学習時間を捻出していました。(現在進行形)

もちろん早く起きれなくて朝時間が確保できない日もありましたが、基本的にはこのスケジュールでした。
朝からジムに行ったりして学習時間が短くなったりもしました。

```
06:00 起床、学習
09:00 始業
20:00 就業、家事(5分でも隙間があれば問題集)
24:00 就寝
```

### 試験直前
直前ともなると気合が入っているので4h睡眠で回していました。
その結果、試験前日から当日は結膜炎になったりしました。

```
04:00 起床、学習
09:00 始業
20:00 就業、家事(5分でも隙間があれば問題集)
24:00 就寝
```

## 学習時間_DOP
93hぐらいです。

育休中に取得しました。育休と言いつつも全く休む時間もなく、自分時間など消し去られています。

### 通常期
子供就寝後から就寝まで時間がありますが、妻との会話に時間を費やしているので学習時間に充てることはしませんでした。
よって朝活でしか学習時間は捻出できていません。
```
06:00 起床、学習 or ジム
??:?? 子供が起きたら家事
22:00 子供就寝、家事
24:00 就寝
```
### 直前期
通常期と違うのは起床時間を早めているだけです。
あとは合間で問題集を解くことができそうであれば積極的にやっていました。
※ただし上の子が常時ちょっかいをだしてくるのでこの時期はほぼ合間もできていません。。。

```
05:00 起床、学習
??:?? 子供が起きたら家事
22:00 子供就寝、家事
24:00 就寝
```

## 意識したこと
* とにかくまとまった時間を捻出すること
* 数分でも時間があるなら問題を解くこと
* 問題を解いた後、他の選択肢がなぜ×なのかを全て理解すること
* あとはとにかく「やるべし！やるべし！やるべし！」

ざっくり言うとこれだけなのですが、プロフェッショナルになると試験範囲が膨大だったり、サービスの深い知識が必要だったりします。

なので数分の学習では賄えなくて、長時間の学習時間捻出が重要でした。
ある程度インプットができれば数分で問題集を、、、というのも有効だったのですが、波に乗るまではハードでした。


## 後悔・反省点
後悔するポイントは特になく、反省点が何個かあります。

### 試験はさっさと受けるべき
完成度を高めてから受験したい気持ちが強く、受験までに時間を要しています。実際はもう少し早く受験しても合格できただろうと感じています。
(余裕だったという訳ではなく、一週間前倒していても実力に変化がなかっただろうという意味合いで)

### 時間捻出の工夫に時間を費やしすぎた
早起きをするための仕組みづくりや、こんなときはこのように対応しよう、といったルール化に時間を割いたのは間違いでした。
対子供スケジュールなので予定通りにいくことは全く無く、無意味でした。
そんなことよりさっさとたくさん問題を解くべきでした。

## 今後
これを執筆時点でSCSは合格しています。その次はANS合格に向けて学習に取り組んでいます。
ここが山場かと思うので引き続き意識低い系代表として根性を見せます。
「多要素認証（二要素認証）」を正しく知ろう

情報セキュリティへの配慮が必須となっている昨今、これを読んでいる皆さんは「二要素認証」や「二段階認証」という言葉を一度は耳にしているものと思います。しかしながら、以下の点までしっかりと把握している方は意外と少ないのではないでしょうか。

+ 「二**要素**認証」と「二**段階**認証」はどう違うのか？
+ 具体的にどういうケースが多要素認証に当てはまるのか？

この記事では、上記2点の疑問について分かりやすく説明します。

# 多要素認証（二要素認証）とは？
**多要素認証（Multi-Factor Authentication, MFA）とは、認証の「要素」のうち2種類以上を併用して認証を行うこと**を指します。併用する**要素が2つであれば二要素認証（Two-Factor Authentication, 2FA）** と呼ばれます。

認証の「要素」とは、一般的に以下の3つを指します。

+ **記憶情報** : その人が「知っている」ことで認証する（パスワード等）
+ **所持情報** : その人が「所持しているもの」で認証する（IDカード等）
+ **生体情報** : その人の生体情報で認証する（指紋等）

上記のうち2つ以上が併用されていれば、多要素認証の要件を満たします。

例えば「パスワード（記憶）」と「IDカード（所持）」を併用する認証であれば「記憶 + 所持」の二要素認証と呼べます。

一方、「パスワード（記憶）」と「秘密の質問（記憶）」の確認を求める場合は「記憶 + 記憶」になります。これは二要素認証には当てはまりません。

# 二段階認証とは？
**二段階認証（Two-Step Authentication）とは、認証を2回以上に分けて行うこと**を指します。**二要素認証とはまた別の概念**です。

この際、認証の要素が何なのかは問いません。「IDとパスワード（記憶）を確認したあと、秘密の質問の確認を求める」のは二段階認証に該当するものです。「IDとパスワード（記憶）を確認したあと、ワンタイムパスワード（所持）の確認を求める」のも二段階認証になります。

なお、三段階以上のものも含めた「多段階認証」という呼び名も存在するようですが、あまり一般的ではないように見受けられます。

# 認証の「要素」の具体例
**ある認証が多要素認証であるかを判断するためには、どの認証がどの要素に当てはまるのかを知る必要があります**。どの方法がどの要素に当てはまるのか、具体的に見ていきましょう。

## 記憶情報
+ パスワード
+ パターン認証（画面に表示されるドットをなぞった「パターン」で認証するもの）
+ 秘密の質問

**「本人しか知らない情報」による認証は「知識情報」** として扱われます。

本人（と認証先）しか知らないことが認証の根拠なので、パスワードを複数サイト使い回したり、他の人に情報が洩れたりすると安全ではなくなります。

## 所持情報
+ IDカード
+ セキュリティートークン
+ スマートフォン
+ ソフトウェアトークン
+ SMS

**本人しか所有していない物を使った認証は「所持情報」** として扱われます。SMSについては「電話番号を所有している」という扱いで、ここに含まれます。

盗まれたり複製されたりすると安全ではなくなります。

ソフトウェアトークンは利便性が高く、スマートフォンのアプリを使ったものが普及していますが、ハードウェアトークンと比べて複製耐性は劣ります。

## 生体情報
+ 指紋認証
+ 顔認証
+ 網膜認証

**本人の身体的特徴を利用して認証を行うものは「生体情報」** です。

専用の機器が必要であり以前はハードルが高いものでしたが、生体認証をサポートしたスマートフォンの普及により各段に扱いやすくなりました。

基本的に複製が困難なものではありますが、それが不可能という訳でもありません。分かりやすいところだと、双子だと顔認証が突破される危険性があります。

また、生体情報が不正な方法で複製されていないかを検知する技術も必要です。例えば「大根で指紋認証を偽造した」という事例があり、このような誤検知を防ぐ技術が求められます。

**静脈認証も安心できない? 大根で作った偽造指で認証に成功**
https://xtech.nikkei.com/it/free/NC/NEWS/20050701/163801/

# 【おまけ】「メールによるワンタイムパスワードの送信」はどの要素なのか？
IDとパスワードによる認証を行ったあと、メールでワンタイムパスワードを送信するサイトがあります。これは多要素認証と呼べるのでしょうか？

残念ながら筆者はセキュリティの専門家ではありません。正確な定義で「記憶情報」なのか「所持情報」なのかは分からないのですが、実用上は「記憶情報」として扱うべきだと考えています。

[Wikipedia の多要素認証のページ](https://ja.wikipedia.org/wiki/%E5%A4%9A%E8%A6%81%E7%B4%A0%E8%AA%8D%E8%A8%BC)では記憶情報として扱われています。確かに「IDとパスワード」のみでメールを閲覧出来る場合は、その通り「記憶情報」と扱うべきです。

しかし、近年の Gmail のようなサービスでは、昔ながらの POP や IMAP プロトコルを使った単なる「IDとパスワード」によるメールの受信を無効化することができます。さらに、これらのサービスでは SMS 等を併用した多要素認証もサポートされています。これは単純な「記憶情報」というより「所持情報」の要素も含んだものです。

このような事情から「メールが受信できること（メールを受信できる端末を所持していること）」を実質的に「所持情報」として扱っているサイトも多いのだと思います。

とはいえ、多要素認証のないメールアドレスも普通に存在するものです。実用上は、安全側に倒して「記憶情報」として扱うのが適切でしょう。**もし信頼のおける「所持情報」を扱いたいなら、ソフトウェアトークンや SMS など他の方法を選ぶべき**です。

# まとめ
「多要素認証（MFA）」とは、「記憶情報」「所持情報」「生体情報」のうち複数の要素で認証を行うものです。「二要素認証（2FA）」はその一種であり、2つの要素で認証を行うものです。

「二段階認証（Two-Step Authentication）」は多要素認証とは別の概念であり、単に認証のステップを2回に分割することを指します。

ある認証が多要素認証に該当するのかを判別するには、どの情報がどの認証の要素に該当するのかを知る必要があります。

記憶情報は本人しか知らない情報です。情報が他人に知られた場合は安全ではなくなります。
所持情報は本人しか持たない「もの」です。盗難や複製のリスクがあります。
生体情報は本人の生体情報です。複製されにくいものですが誤検知の問題があります。
Python を使って Excel のワークシート名を取得する方法は何ですか。

## 紹介
データ分析とオフィス自動化の分野において、Pythonを使ってExcelファイルを処理することは、不可欠なスキルとなっています。ワークシートの名前を取得することで、ファイルの構造を素早く把握することができます。この記事では、無料のライブラリを使ってPythonでExcelのワークシート名を取得する方法について詳しく説明します。
* [Python で Excel の全ワークシート名を取得する方法](#python-で-excel-の全ワークシート名を取得する方法)
* [Python で Excel の隠しワークシートの名前を取得する](#python-で-excel-の隠しワークシートの名前を取得する)

## 準備
**1. 無料のPython Excelライブラリをインストールする**
PythonでExcelドキュメントを操作するには、FreeSpire.XLS for Pythonライブラリが必要です。これはpipを介してすぐにインストールできます。
```
pip install Spire.Xls.Free
```

（この無料ライブラリにはページ数の制限があることに注意してください）

**2. サンプルファイルの準備**
複数のワークシートを含む Excel ドキュメントを用意します。このドキュメントには、「To Do リスト」「予算」「活動内容」のワークシートと、2 つの隠しワークシート（「留意点」「連絡先」）が含まれます。下記の通りです。
![GetSheetNmaes.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/6626fed5-b78e-4888-816b-7535fb7357f5.png)


## Python で Excel の全ワークシート名を取得する方法
無料の Python ライブラリが提供する **`Worksheet.Name`** プロパティを使用すると、指定されたワークシートの名前を取得できます。Excel ファイル内の全ワークシート（非表示のものを含む）の名前を取得するには、各ワークシートをループ処理します。

以下に簡単なサンプルコードを示します。
```python
from spire.xls import *
from spire.xls.common import *

# Excelドキュメントを読み込む
workbook = Workbook()
workbook.LoadFromFile("input.xlsx")

# ドキュメント内の各ワークシートをループ処理する
for sheet in workbook.Worksheets:

    # ワークシートの名前を取得して出力する 
    print(sheet.Name)
```
返される結果:
![GetSheetsNamesR.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/8cc309ed-53a8-42af-a24f-9c957132748c.png)


## Python で Excel の隠しワークシートの名前を取得する
隠しワークシートの名前だけを取得する場合は、ワークシートをループ処理する際に、**`Worksheet.Visibility`** プロパティを使って、現在のワークシートが隠し状態（**`WorksheetVisibility.Hidden`**）であるかどうかを判断することができます。
隠しワークシートであれば、**`Worksheet.Name`** プロパティを使ってその名前を読み取ります。簡単なサンプルコードは以下の通りです。
```python
from spire.xls import *
from spire.xls.common import *

# Excelドキュメントを読み込む
workbook = Workbook()
workbook.LoadFromFile("input.xlsx")

# ドキュメント内の各ワークシートをループ処理する
for sheet in workbook.Worksheets:

    # 非表示のワークシートを検索する
    if sheet.Visibility == WorksheetVisibility.Hidden:

        # 非表示のワークシートの名前を取得して出力する
        print(sheet.Name)
```
返される結果:
![GetHiddenR.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/ec89b098-8ac5-4b02-9581-70d8a6c04442.png)

* * *

この無料の Python ライブラリがサポートする Excel の処理機能についてさらに詳しく知りたい場合は、「[Python Excel ライブラリのオンラインドキュメント](https://www.e-iceblue.com/Tutorials/Python/Spire.XLS-for-Python/Program-Guide/Spire.XLS-for-Python-Program-Guide-Content.html)」を参照してください。
Databricksの新しいSQLエディター

気づいたら、同時参照と同時編集、コメントの追加、履歴管理ができるようになっていました。使用体験がノートブックと統一されていく感じです。

https://docs.databricks.com/aws/ja/sql/user/sql-editor/new

# 有効化

SQLエディタで**New SQL editor**のトグルをオンにします。

![Screenshot 2025-05-13 at 14.59.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/4a37aba5-2492-4ddd-a652-e38beed60d2d.png)
![Screenshot 2025-05-13 at 14.03.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8abba776-f086-4526-9b1a-fbd322390a06.png)

# 同時参照・同時編集

クエリーのアクセス権を付与することで、他のユーザーと同時にクエリーを参照、編集できます。

![Screenshot 2025-05-13 at 15.00.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/c88c519b-e893-40f4-acb7-4c5f8c0eb2d9.png)
![Screenshot 2025-05-13 at 14.28.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/a7daaf04-a413-4ad7-94fb-0324b49c3c12.png)

アニメーションの方がわかりやすいかと。

![](https://assets.docs.databricks.com/_static/images/sql/editor/multiple-editor.gif)

# コメントの追加

クエリーの一部を選択するとアシスタント呼び出しボタンとその右にコメントボタンが表示されます。

![Screenshot 2025-05-13 at 15.02.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d917bfc6-b2b2-48bf-a3f1-c7575dc51d35.png)
![Screenshot 2025-05-13 at 15.02.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/85a470a6-4eb5-496f-9488-8e27a7065348.png)

`@`マークを用いてユーザーをメンションすることも可能です。

# 履歴管理

これも地味に嬉しい機能。以前の状態からの差分を確認して、必要に応じて前の状態に戻すことができます。

![Screenshot 2025-05-13 at 15.05.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/9dcb6444-7f07-4385-841c-48addff4f462.png)

本格的にソース管理したい場合には、[Git連携](https://docs.databricks.com/aws/ja/sql/user/sql-editor/new#%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E7%AE%A1%E7%90%86)することもできます。

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)
【Salesforce】rakumoとの連携やユーザライセンスを付与する方法

・rakumoのとSalesforceの接続について
→https://help.rakumo.com/r/article?id=1#social-scheduler
 上記のサイトの”rakumo ソーシャルスケジューラー”に記載の各マニュアルを参考に対応


・Salesforce側でrakumoライセンスをユーザに付与する方法
→1．クイック検索から”インストール済みパッケージ”を選択
 2．”rakumoSocialScheduler”のライセンスの管理を選択
 3．ユーザの追加、削除を行う
🔰初心者必読の本読んでみた〜Web制作者のためのCSS設計の教科書〜

## この投稿でわかること
+ 「Web制作者のためのCSS設計の教科書」１章・２章の概要
+ エンジニア初心者が感じていること

## どんな本？
![スクリーンショット 2025-05-13 12.09.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4065192/387d1124-43de-4f2b-8581-921f14231ad8.png)
画像参照）[Amazon](https://www.amazon.co.jp/Web%E5%88%B6%E4%BD%9C%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AECSS%E8%A8%AD%E8%A8%88%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E3%83%A2%E3%83%80%E3%83%B3Web%E9%96%8B%E7%99%BA%E3%81%AB%E6%AC%A0%E3%81%8B%E3%81%9B%E3%81%AA%E3%81%84%E3%80%8C%E4%BF%AE%E6%AD%A3%E3%81%97%E3%82%84%E3%81%99%E3%81%84CSS%E3%80%8D%E3%81%AE%E8%A8%AD%E8%A8%88%E6%89%8B%E6%B3%95-%E8%B0%B7-%E6%8B%93%E6%A8%B9/dp/4844336355)

:::note info
**ABOUT**
<em>タイトル</em>　　「Web制作者のためのCSS設計の教科書」
<em>作者</em>　　　　谷拓樹
<em>どんな人に</em>　初心者エンジニア、学び直したいと考えている人に　
:::

## 読んだきっかけ
勉強をスタートするにあたりおすすめされた本です。
始めたばかりの新人エンジニアがまず理解しておくべきことがわかる本になっていますし、これから先立ち返って読むにもいい本となっています。
![quiita用イラスト作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4065192/6f7b8677-ffdb-47b0-a30d-bbd188559ebb.png)




## この本を読んでわかること
本の表紙にもあるとおり、**修正しやすいCSSの設計方法**について理解が深まる内容となっています。
全部で７章構成となっており、CSSの設計とは？基本として理解しておくことって？コンポーネント設計は？など、**将来を見据えたウェブ制作ができる人材**を目指すにあたって、心得ておくことが詰まっています。
（個人的意見ですが、本の中身の色合いやデザインがとても好み♡）

## 私が学びを得た3つのこと
### 1.「見た目通りに作って終わり」は３流以下
　現在は静的コーディングの練習を行なっています。モデルとなるWEBサイトを仕様書を見ながら、同じように作成していくという作業です。
 
　最初こそ、「デザインカンプと同じになった！できたぞ！」と意気揚々とメンターに提出していましたが、たくさんのレビューが。見た目的な指摘ももちろんですが、構造がぐちゃぐちゃになっていたり、要素セレクタを繋げて指定していたり、全くもって**次に修正に入る人のことを考えていませんでした**。
 
　WEBサイトというのは、**運用していく**というのが大前提です。新しい情報を追加したり、不要になった箇所を削除したり、ずっとそのままの状態で置いておくということはまずないです。
　修正に入る人が自分であっても他の誰かであっても、０から作り直さないと追加・修正ができない状態では、本当の意味で作成ができたとは言えないのです。
 
　**WEBサイトを見る人のこと、修正に入る人のこと、それらを考えた設計をしていくことの大切さ**を改めて感じることができました。


### 2.急がば回れ
　急いでいたり焦っていたりする時って大体何かを忘れたり、失敗してしまったりしませんか？私は本当によくあります。CSSの設計も同じなんだなと思いました。
　というのも、クラスを指定しなくても、要素を並べていけば、ぶっちゃけCSSの指定ってできてしまいますよね。
 
完成を急いて見やすい構造を作る作業を省いてしまうと、後から修正が入ったとき、HTMLも変えて〜、CSSも変えて〜と大変になります。また、先に作成する構造を確認せず、上から順番に作っていくと、最後に大幅に修正が必要になった、なんてことも初心者の時は起きがちじゃないでしょうか。

　結局、**いいものを作るには最初に時間をかけて土台を丁寧に固めることが大切なんだ**と思います。そうすることで最初の進みは遅いようでも、結局ゴールに辿り着くのは早く、成果も大きくなります。

![Image_fx (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4065192/72348c25-30ed-4b42-8e85-4b7a08734588.jpeg)


 
### 3.構造が複雑になっていく前に詳細度は知っとけ
　今現在はトップページのサイト制作を勉強で行なっているだけですが、案件に入るようになれば、それだけで終わるなんてことはほとんどないでしょう。
　構造が深くなっていくにつれ、CSSのルールセットをコンポーネント(*1)にすることが重要になってきます。その前に**詳細度**(*2)をしっかりと理解しておくのが大切だと感じました。

 なぜかというと、CSSを指定しても適用されないのはこの詳細度が関係してきます。デバックの際に適用する箇所が見つけられず、無理やり```!inportant```で適用していくとCSSの破綻に繋がってしまうからです。
 セレクタに依存せず、修正しやすい構造を意識していきたいです。

 ## 用語について
 :::note info
**コンポーネント**
意味：部品、構成要素。
Web開発において汎用性や独立性を高めた仕様や設計を持つものを指す。
→どこか別の場所に入れたり、位置を変更したりなど再利用できること前提で作られた要素のこと。
:::

:::note info
**詳細度**
複数のCSS宣言が競合した場合、どのスタイルが優先されるかを定めたブラウザのアルゴリズム。
→スタイルを指定するときにどのスタイルが優先されるのか、細かい取り決めがあり、セレクタ・要素それぞれに優先度がありつつ、組み合わさることによってより複雑化している。
:::

## まとめ
　設計やアーキテクチャの話では建築に例えられる文言がいくつかあります。そこで私が共感したのが、「**構造がしっかりしていない建築は、いくら見た目が綺麗であっても、それはすばらしい建築と言えるのか**」ということです。
 　外見の美しさだけでなく、内部構造も整え、土台がしっかりとした美しさを常に忘れず、エンジニアとして勉強を積んでいきたいです。
![Image_fx (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4065192/fd750d5d-ab30-4260-a806-30e4e993f6fc.jpeg)
「MB-820試験対策: マイクロソフト認定資格に最速で合格する最も賢い方法」

MB-820試験対策資料とは、Microsoft Dynamics 365 Business Central Developer（MB-820）認定試験の準備をしている受験者が使用する練習用教材を指します。これらの資料には、サンプル問題、模擬試験、学習ガイドなどが含まれていることが多く、受験者は試験の出題形式を理解したり、本試験前に知識を確認したりするために活用しています。

 Microsoftは、Dynamics 365 Business Centralを拡張・カスタマイズするスキルを証明したい開発者向けにMB-820試験を設計しました。この認定資格は、特にERP（エンタープライズリソースプランニング）環境で働くプロフェッショナルの間で、ますます人気が高まっています。
 
MB-820を効果的に勉強するには？

[Microsoft MB-820](https://prepbolt.com/paths/microsoft/data/mb-820)試験に関してGoogleでよく検索されているトピックの1つが、「効果的な勉強方法」です。多くの受験者は、体系的な準備方法を探しています。以下は実践的な学習のコツです：
Business Central開発に関するMicrosoft公式の「Learn」学習パスから始める
MB-820試験対策資料を活用して、問題形式に慣れる
毎日の学習ルーチンを設定する。理論と実践の両方に取り組む
オンラインフォーラムや開発者コミュニティに参加して、仲間と情報交換する
効果的な準備には、システムの理解とコーディングの実践の両方が必要です。試験対策資料は有効ですが、ハンズオン（実践的）な経験が合格の鍵となります。

MB-820試験で問われる主なトピックは？

もう1つよくある疑問は、「MB-820試験ではどのようなトピックが問われるのか？」です。受験者は重点的に学習すべき分野を知りたがっています。この試験では主に、以下の能力が問われます：
AL言語を使用してBusiness Centralを開発・拡張するスキル
拡張機能（エクステンション）の作成と管理
APIや統合シナリオの活用
データモデルの理解とイベントベースの開発手法の活用
権限、ロール、環境設定の構成
これらの分野を見直し、最新のMicrosoft MB-820試験対策資料を使って各トピックへの理解度を確認することで、合格への準備を整えることができます。Microsoftは、理論だけでなく実務経験を持っていることを前提としています。
Rustのライフタイムにつく謎のforの解説 -HRTB-

# トレイト境界のfor
rustには公式入門書に載っていない深淵の構文がいくつかあります。
（2025年5月現在）その一つが、関数のトレイト境界に記載するfor文です。
```rust
// こんなん
F: for<'a> Fn(&'a str)
```

**HRTB (Higher-Rank Trait Bounds)** といいます。高階トレイト境界と訳すようです。
以下にその動作をライフタイムの基本的な知識がある前提でご説明します。

# 概要
このforは、単純にいえば『どれでも』という意味です。どんなライフタイムでも問題なく動く'aを想定した定義が、このHRTBです。

明示的に利用するタイミングとしては、『コールバック関数を定義する際、コールバック関数にライフタイムを指定する必要がある時』等です。（他の場合にも使いますが、ここでの使い方が理解できれば大体大丈夫です）

通常ライフタイムを関数等のジェネリクスとして指定する際、そのライフタイムの実体は呼び出し元の文脈に依存しますよね。
しかし、コールバック関数においてはコールバックを呼び出す関数内の文脈によってライフタイムが構成される可能性があるため、必ずしも定義だけで確定できません。

```rust
// これだとcall_with_strの中の文脈にあるライフタイムを指定できない
fn call_with_str<'a,F>(f: F)
where
    F: Fn(&'a str)
{
    let s = String::from("hello"); 
    f(&s); // コンパイルエラー
}
```

本質的には、『関数内部の実装によって確定する＝関数定義で確定しない』ライフタイムの定義をしたい訳です。
そこでこのfor文が活躍します。forとは、『これを満たすものすべて』の意味です。
コールバック関数に対してどのようなライフタイムであれ許容する実装を求める事で、コンパイルエラーを解消します。

```rust
// いけた
fn call_with_str<F>(f: F)
where
    F: for<'a> Fn(&'a str)
{
    let s = String::from("hello");
    f(&s);
}
```
素晴らしい。コンパイルが通りました。

ただし、前記の例文ではライフタイムを全て省略しても糖衣としてコンパイルが通ります（！）。コールバックを利用している時も、特に指定なしでもなんとな〜くうまくいくことの方が多いわけですね。

前提として、HRTBは『覚えておくと使い方が増える』類の構文ではありません。いつの間にか使われている、の方が多いと思います。
ただ、様々〜なレアケースの中で、急にエラー原因としてコイツが現れることがあります。
[StackOverFlowのやつ](https://ja.stackoverflow.com/questions/96277/rust%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%88%E3%83%AC%E3%82%A4%E3%83%88%E5%AE%9F%E8%A3%85%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E9%96%A2%E6%95%B0%E3%81%AE%E5%A4%9A%E9%87%8D%E5%AE%9A%E7%BE%A9%E3%81%A8%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E3%81%AE%E6%8C%AF%E3%82%8B%E8%88%9E%E3%81%84%E3%81%AB%E9%96%A2%E3%81%97%E3%81%A6)

稀なタイミングでは必要になるので、その際は抑えておく、というイメージかなと思います。

# 余談
ちなみにこちらの機能、[公式リファレンスブック](https://doc.rust-lang.org/reference)と共に、[The Rustonomicon](https://doc.rust-lang.org/nomicon/intro.html)に記載があります。

RustnomiconというのはRust公式の珍しい機能解説ページです。
クトゥルフ神話に登場する架空の魔道書『Necronomicon』が由来であり、まさしく深淵の機能解説となっています...。
【Copilot Studio】PowerPointで精度が悪いならPDF化！【画像で解説】

前回「PowerPointの表をナレッジとして登録しても回答されない！」ということが検証されました

## PowerPointをPDF化しましょう！
表付きのPowerPointをそのままPDFにし、ナレッジとして登録しました

## ↓ 検証結果
できるっぽい！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/f8eec623-702d-4c44-82df-5b88d57f2f0a.png)
【ChatGPT】を自分の“人生スキーマ”を書き換えるために使ってみます。


　どうも、カーブミラーです。

　今回は、ChatGPTを自分の“人生スキーマ”を書き換えるために使ってみます。

:::note info
本記事は、ChatGPT（Plus版）
で行なっております。
画像はありません。あしからず。
:::
　ChatGPT等の動作状況を知らせる
　　OpenAIのステータスページ。
　　　[OpenAIステータス](https://status.openai.com/)
***
　こちらも載せますね。
　　[ChatGPTが使えない？ログインできない・反応しない原因やエラー時の対処法を解説](https://aismiley.co.jp/ai_news/chatgpt-error-resolution-explanation/)
***
　著作権法については
　　こちらを参照するのが
　　　良いのではないかと。

　文化庁レポートをもとにした
　　著作権法についての動画（約20分）
　　　[かいちのAI大学　【警告】ChatGPTの画像生成は危険です...【4o Image Generation】](https://youtu.be/8VLUnG-iyo0?si=rAfjMboqmNqppDGq)
***
　まずは、【ニュース】です。

　ChatGPTのDeepResearchで
　　GitHubリポジトリを
　　　接続できるようになりました。

　[OpenAI開発者ポスト](https://x.com/OpenAIDevs/status/1920556386083102844?t=sHQZQozr9qBLBde8qdP80A&s=19)

　質問を入力すると、
　　DeepResearchエージェントが
　　　リポジトリのソースコードや
　　　　プルリクエストを読み込み、
　　　　　引用付きの詳細なレポートを
　　　　　　返してくれます。

　DeepResearchボタンをタップして、
　　プルダウンメニューをタップすると
　　　三つのボタンが現れます。

　　真ん中の“GitHub”を
　　　タップすることで
　　　　この機能が利用できます。

　まぁ、一般の方が使うことは
　　少ないかと思いますが😅
***
　次に

　ChatGPTの
　　DeepResearchのレポートが
　　　PDF形式でエクスポート可能に
　　　　なりました。

　[OpenAI公式ポスト](https://x.com/OpenAI/status/1921998278628901322?t=0cVfcr_Bo1GM1UHjAukZng&s=19)

　表や画像、
　　リンク付き引用・出典を含む
　　　整ったPDF形式で
　　　　エクスポートできます。

　共有アイコンをクリックして
　　「PDFとしてダウンロード」を
　　　選ぶだけ。

　この機能は
　　Plus、Team、Proユーザーに向けて
　　　すでに展開中。

　EnterpriseおよびEduユーザーにも
　　近日中に提供予定。
***
　では、【本題】です。

　今回は、
　　ChatGPTを
　　　自分の“人生スキーマ”を
　　　　書き換えるために使ってみます。

　ChatGPTさんとのやり取りで、
　　偶然出てきたもので、
　　　どこまで有効なのか
　　　　わかりません😅

　それでも
　　何かを得られるかと
　　　思います。
　　　　そうだといいな〜な感じかも。

　では、どうぞ。

***（ChatGPT）***
最高の選択です。
\*\*「自分の“人生スキーマ”を書き換える」\*\*というこのアイデアは、ChatGPTをただの情報ツールではなく、**自己認識と再創造の装置**として使うものです。


## ■ スキーマとは？

心理学・認知科学における「スキーマ」は、

> **私たちが世界や自分をどう理解しているかの“無意識の設計図”**
> のようなものです。

たとえば以下のような例があります：

* 「努力は報われるべき」
* 「人は社会に役立たなければならない」
* 「成功とは経済的な安定である」

これらは、普段は気づかないけれど、あなたの判断や選択を決定的に左右しています。


## ■ ChatGPTによるスキーマ書き換えワーク（実践編）

以下の3ステップに分けて、ChatGPTを活用できます：


### STEP 1：**現在の“人生スキーマ”をAIが抽出**

#### 入力例：

```
以下の質問に素直に答えるので、私の人生観・価値観・無意識的前提（スキーマ）を分析してください：
- 今まで最も頑張ったことは？
- それはなぜ？
- 成功したと思った瞬間は？
- 尊敬している人はどんな人？
- 人生で一番後悔していることは？
- どんな時に無価値だと感じる？
```

→ ChatGPTが、あなたの思考の「見えない構造」を言語化します。
例：

> 「あなたは“努力＝存在価値”というスキーマに従っている可能性があります」


### STEP 2：**スキーマを相対化・分解・疑問視させる**

#### 指示例：

```
上記で抽出された私の人生スキーマを、以下の観点から批判的に分析してください：
- それは誰に植え付けられたものか？
- 他の文化や時代ではどう捉えられていたか？
- それを信じることのメリット・デメリットは？
- 逆のスキーマを持つ人の視点は？
```

→ ChatGPTが、**別の現実の見方**を提供してくれます。
例：

> 「縄文時代の人々にとって“努力”は価値ではなく、自然との調和が中心でした」


### STEP 3：**新しいスキーマをAIと共に“創作”**

#### 指示例：

```
私は今後、別の人生スキーマで生きてみたいです。  
以下の条件を満たすような新しい人生観・行動原理を5つ提案してください：
- 遊びや喜びを中心にする
- 社会通念にとらわれない
- 力まなくても生きられる
- 美や偶然性を大切にする
```

→ 例：

> 「人生とは、意味を作るためではなく、“味わうため”のものだ」
> 「価値は、到達点ではなく、プロセスの濃度に宿る」

こうした言葉を「新しい人生OS」として据え、日々の選択や思考を変えていくのです。


## ■ 応用発展

* 新スキーマに基づいた「1日の過ごし方」「理想の仕事」「人間関係のあり方」もChatGPTに再構築させる。
* 新スキーマで「過去の失敗や後悔をどう読み替えるか」を語らせる。
* 定期的にスキーマを再評価する「月イチの編集会議」をChatGPTと開催。
***

　これをどう活かすかは
　　みなさん次第です。

　みなさんの
　　作品制作の糧に
　　　なれば、幸いです。

　今回は、ここまで。
Webデザイナーが動画編集をしてみて感じたこと

## はじめに

私はWebデザイナーですが、最近はYouTube用の動画編集が主な業務になっています。
いろいろ気付きもあったので、整理のために以下の項目に沿って簡単にまとめてみます。

* デザインスキルを活かせるところ
* 逆に、うまく活かせなかったところ
* まったく違うスキルが必要なところ

すべて**個人の感想**なので、軽い気持ちで見てください～。

:::note
動画は主にAdobe Premiere Proで編集しています。
:::


## 💡 デザインスキルを活かせるところ

### きれいに見やすくレイアウトできる

必要な要素をどう画面内に収めるか、
どうしたら分かりやすく伝えられるか考えるのは動画でも同じです。
Webと違ってスクロールできるものではないので、
画面サイズの制限は動画の方が強めかもしれません。

### 動画のテーマに合わせてパーツを作れる

動画で扱うテーマに合わせてテロップベースやフレームを自分で作ることができます。
こういったパーツはフリー素材もたくさんありますが、
自分で作ることができれば動画内で統一感も出しやすくクオリティが高まります。


## 💭 うまく活かせなかったところ

### 文字周りの調整にモヤモヤする

フォント選びやカーニングなどはもちろん動画でも活かすことができます。
ただし、Premiereは文字周りの細かい調整が苦手。
できないわけではないですが、Photoshopに慣れているとやりづらさが強いです。

タイトルのような部分は他のソフトで画像として作ってもよいですが、
その他のテロップを一つ一つ調整するのは時間がかかってしまうので、**諦めも必要**です。
普段カーニングに気をつかっている人ほどモヤモヤすることでしょう……。

ちなみに、シェイプ（図形）のサイズも
きっちり作ろうとすると面倒な仕様なので同じくモヤモヤします。

### 要素の動きが単調になる

私はCSSアニメーションのようなシンプルな動きに馴染み深かったので、
**動くものに対する発想力**が足りていないように感じます。
上から下に……小から大に……つい決められたルールに沿って動かしてしまうので
良くも悪くも単調な印象になりがちです。

### 止まっていることが違和感になる

Webは基本的に止まっていることが前提、補助的に動きを取り入れますが、動画はその逆。
**動いていることが前提**なので、完全な静止状態が続けば違和感に繋がります。
テロップの出し方や消し方、場面の切り替え方などに工夫が必要です。

写真のように止まっているものを見せたいときは、
ただ少しずつズームするだけでも動いている感じを出せます。


## 🚨 まったく違うスキルが必要だったところ

### 時間の設計が難しい

どのタイミングで何を見せるか、
どれくらいの秒数が必要かを考えるのに最初は苦戦しました。

具体的には、テロップを何秒表示すればしっかり読めるか、
セリフとセリフの間の沈黙が何秒あれば聞きやすいか、
見ていて飽きないテンポ感はどのくらいなのかなど。

### 音に対する知識がなかった

動画にはBGMやSEの要素が加わりますが、
適切なものを選ぶのは難しく、時間もかかります。
また、音源の形式確認やノイズ除去、音量調整などの作業も必要です。
あまり知識がない部分だったので、今でもうまくできている気がしません……。


## おわりに

あくまで私個人の話になりますが、
Webデザインの知識や経験が活かせる部分もあれば、
逆に頭を固くしてしまう部分もありました。

動画はWeb以上に、きれいなだけでは通用しないものだと思います。
上には書いていませんが、動画の内容によってはバラエティ的な感覚も必要だったり。

とはいえ、特に**情報を分かりやすく伝えるための動画**では
デザイナーの視点は強みになっているように思います。

ここまで読んでいただき、ありがとうございました。
どこか一部分でも、何かの参考になれば幸いです。
【Copilot Studio】PowerPointの表はナレッジにできない【画像付き解説】

Copilot Studioのナレッジに指定するPowerPointで制限があるのではと思い、検証しました。結論、パワポの表はナレッジとして現状使えない。

※前提
・プライマリ言語を英語に設定
・検証するPowerPlatform環境は日本リージョンテナント

## 設定するナレッジ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/c70a43f6-9eec-4300-8ea8-d5e93473c76e.png)





## ↓ テスト結果
できない！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/aa1e54d9-06ef-4e06-adfb-8326e7d04fe5.png)



## 一方でテキスト化されたPowerPointをナレッジとして指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/fd5a4b5f-9d6e-40f8-ab76-902dec87942f.png)

## ↓ テスト結果
できる！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/022d1207-c6c0-4619-9ad8-3fd2e62e3e11.png)


## 結論
PowerPointの表はナレッジとして利用できない。（2025年5月13日現在）

## じゃあどう活用するの？ パワポを救いたい！
PDF化しましょう！以下で実証してみました！

https://qiita.com/ChatSKY/items/8d2956d0bbd38170edcf
FinOpsフレームワーク解説 〜第２回〜 フレームワークの全体像

## 目次：
　　・フレームワークの目的と構成要素の概要
　　・FinOps Foundationによる標準モデルの紹介

## 今日の一枚まとめ：
![スクリーンショット 2025-05-13 14.04.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895754/ea05ffec-c188-41a4-99bd-7ef7315994e6.png)


## 内容：

### フレームワークの目的と構成要素の概要
FinOpsフレームワークの目的は、組織がクラウドコストを効果的に管理し、最適化しながら、クラウド投資をビジネス目標にしっかりと結びつけ、最大限のビジネス価値を引き出すことにあります。
従来のITコスト管理とは異なり、FinOpsは技術、財務、ビジネスの各部門が協力し、リアルタイムでクラウド支出を可視化・分析しながら、意思決定と最適化を継続的に行う運用モデルです。

このあたりが肝になっており、特に日本では「コスト管理は経理/財務部/コスト管理部/業務管理部がやるから〜」の意識があり、全体としてどれだけのコストがどれだけのビジネス価値を生んでいるのか、という感覚は非常に持ちづらいです。
もちろん一様には言えませんが、たとえば部署ごとにカンパニー制度をとる縦割りの海外企業などは、そういったコスト意識が自分ごととしてとらえられるように見えます。

では早速フレームワークの中身を見ていこうと思います。

まず、フレームワークは主に以下の構成要素から成り立っています。
####	•	行動規範（Principles）
FinOpsを推進するうえで組織全体が共有すべき基本的な考え方や価値観です。例えば、コストの可視化や説明責任、継続的な最適化、部門横断的なコラボレーションなどが挙げられます。
FinOpsの原則は、クラウド財務管理の全体を貫く基本的な価値観や行動指針です。

####	•	ペルソナ（Stakeholders/Personas）
エンジニア、財務担当、経営層など、クラウドコスト管理に関わる全ての関係者が対象となります。各自が役割と責任を持ち、協力して運用することが重視されます。
FinOpsの実現とは、一つのチームがなんとかできるものではありませんので、多様な関係者の協働を前提としています。

####	•	実践サイクル（Phases）
FinOpsの実践は、以下の3つの反復的なフェーズで構成されます。
Inform, Optimize, Operateです。

####	•	活動領域（Capabilities/Domains）
コスト配分、予算策定、レポート作成、異常検知など、FinOpsの目的を達成するための具体的な活動や能力です。

####	•	成熟度モデル（Maturity Model）
FinOpsの成熟度は「Crawl（初期）」「Walk（中級）」「Run（高度）」の3段階で評価されます。組織は自社の現状に応じて段階的にFinOpsを発展させ、スケールや複雑性に応じて最適な実践レベルを目指します。
これらの構成要素が相互に連携し、組織全体でクラウドコスト管理とビジネス価値最大化を実現するのがFinOpsフレームワークの特徴です。


### FinOps Foundationによる標準モデルの紹介
FinOps Foundationは、クラウドコスト管理と最適化の分野で国際的な標準を策定する団体であり、FinOpsフレームワークの公式なベストプラクティスと原則を提供するものだと理解しています。
こういったフレームワークをどう使いながら一体何に役立てていくのかというところですが…

####	•	包括的なベストプラクティス集
世界中の多様な企業やパートナーの知見を集約し、実践的なノウハウや教訓をフレームワークに反映しています。
####	•	構造化されたアプローチ
組織がFinOpsカルチャーを導入しやすいように、原則・利害関係者・ライフサイクル・機能・成熟度モデルという明確な構造で整理されています。
####	•	反復的な改善サイクル
「Inform」「Optimaize」「Operate」の3フェーズを繰り返しながら、組織全体で継続的な最適化と価値創出を目指します。
####	•	集合学習の活用
FinOps Foundationは、業界全体の集合知を積極的に取り入れ、フレームワークを進化させ続けています。これにより、最新のクラウド活用動向や課題にも柔軟に対応できる仕組みとなっています。


### 最後に
こういったフレームワークは図を一枚の絵で見るとまとまって見えるものの、いざ解説しようとするとなかなか難しいものがあります。
その辺りも含めてさらっと一読いただければ理解できるようにしていくのが目標です。

フレームワークの一枚絵![スクリーンショット 2025-05-13 14.04.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895754/3c7268b6-92ee-4c3c-9b41-297ed792d003.png)
Virtual Boxがネットワークにつながっているようでつながっていない

# 結論
Virtual Boxでネットワークがつながらないときには以下を確認
- VirtualBoxのネットワーク設定を確認する
    - ネットワークアダプタは適切なものになっているか？
    - ケーブル接続にチェックボックスが入っているか？
- ゲストOS内でネットワーク設定を初期化してみる
    - 以下のコマンドを仮想マシン内で実行（下記コマンドはWindows）
    - netsh int ipv4 reset reset.log
    - netsh int ipv6 reset reset.log
- ゲストOSを再起動
- それでもだめならVirtual Box再インストール

# 背景
Virtual Box内でWindows OSの仮想マシンを立ち上げて作業をしていた時、ホストOSのほうで有線LANから無線LANから切り替えた際に仮想マシンのネットワークアダプタを変更しました。

※ ネットワークアダプタを無線LANのアダプタに変更する手順
「Virtual Box」 -> 「該当の仮想マシンを右クリック」 -> 「設定」 -> 「ネットワーク」 ->「ネットワークアダプターを無線LANのアダプタに変更」で変更を行えば通常

ところが、ブラウザ検索ができなくなりました。しかしgitのリポジトリがcloneできたり、特定のサイトにはアクセスができたりと原因がはっきりとしない状況に陥りました。

# 解消
今回の場合ケーブル接続にチェックがついていなかったため、チェックを付けたところネットワークにつながるようになりました。

![virtual-box.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456848/762b5dff-2f6e-4fa9-82b2-e2c919c7864b.png)
flutter runを実行したらParse Issue (Xcode): A template argument list is expected after a name prefixed by the template keyword ${FlutterアプリのPath}/ios/Pods/gRPC-Core/src/core /lib/promise/detail/basic_seq.h:102:37

## 具体的なエラーコード

flutter を実行したら

```Dart
Parse Issue (Xcode): A template argument list is expected after a name prefixed by the template keyword ${FlutterアプリのPath}/ios/Pods/gRPC-Core/src/core /lib/promise/detail/basic_seq.h:102:37
```
が発生

## 解決策
Firebase SDK versionが11.10.0になるようにpub.devで調べた
firebase_core,
firebase_auth,
cloud_functions,
cloud_firestore,
firebase_storage,
firebase_crashlytics,
firebase_messaging,

の最新バージョンをpubspec.yamlに記述する。

## 参考
https://github.com/grpc/grpc/issues/39458
可愛いうさぎの絵文字・スタンプを探せる・使えるサイト「usagi.fan」を作りました！

はじめに
こんにちは！ 今回は、私が個人的に開発した、可愛いうさぎの絵文字やスタンプを簡単に探して使えるウェブサイト「usagi.fan」についてご紹介させていただきます。うさぎ好きの方、コミュニケーションで可愛いうさぎを使いたい方はぜひご覧ください！
![usagi.fan1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4086272/2811bd8a-9b52-4e15-9cde-57b91ec872b7.png)

「usagi.fan」とは？
「usagi.fan」（https://usagi.fan/ - 仮のURLです。実際のURLに修正してください）は、様々なプラットフォームで使えるうさぎの絵文字やスタンプを集めたウェブサイトです。

簡単に探せる: キーワード検索やカテゴリ分けで、お気に入りのうさぎをすぐに見つけられます。
すぐに使える: 用途に合わせた形式（画像ファイルやコピー可能なテキストなど）で簡単にダウンロード・コピーできます。
様々なプラットフォームに対応: Slack、Discord、LINEなど、お好きな場所で使えます。（具体的な対応形式について補足するとより良いでしょう）
なぜ「usagi.fan」を作ったのか？
私自身がうさぎが大好きで、普段のオンラインコミュニケーションでも可愛いうさぎの絵文字やスタンプをよく使っていました。しかし、色々な場所に散らばっていたり、探すのに手間がかかったりすることがありました。
![usagi.fan2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4086272/78e87bd2-58b5-4723-bd7d-38218781b254.png)
![usagi.fan3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4086272/d2c1b8be-0cc3-44a9-9ed6-e87c85e564ca.png)


そこで、「うさぎの絵文字やスタンプを一つの場所に集めて、誰でも簡単に見つけて使えるようにしたい！」という思いから、この「usagi.fan」開発をスタートしました。技術的な学びも兼ねて、楽しみながら開発を進めました。

こだわった点・技術的な話（Qiita向けに少しだけ）
（ここは、Qiitaの読者であるエンジニア向けに、もし技術的なこだわりや使用技術があれば簡単に触れると良いでしょう。例：）

使用技術: フロントエンドはReact/Vue/Next.jsなど、バックエンドはNode.js/Python/Goなど、インフラはAWS/GCP/Vercelなど。（実際に使用した技術を記載してください）
工夫した点: 検索機能の実装、画像の最適化、UI/UXデザインなど。（具体的に書ける範囲で）
難しい話は抜きにしても大丈夫ですが、Qiitaらしさを出すなら少し触れるのがおすすめです。

「usagi.fan」の使い方
使い方はとっても簡単です！

https://usagi.fan/ にアクセスします。（実際のURLに修正してください）
トップページや検索窓から、探したい絵文字やスタンプを探します。
お気に入りのうさぎが見つかったら、クリック（またはタップ）して詳細ページへ。
ダウンロードボタンやコピーボタンから、お使いのプラットフォームに合った形式で取得します。
ぜひ、あなたのオンラインコミュニケーションで可愛いうさぎを活用してみてください！

今後の展望
今後は、さらに多くのうさぎ絵文字・スタンプの追加や、ユーザーからの投稿機能、お気に入り機能などを実装していきたいと考えています。使ってみて「こんな機能があったらいいな」といったご意見があれば、ぜひフィードバックいただけると嬉しいです！

まとめ
今回は、私が作ったうさぎの絵文字・スタンプサイト「usagi.fan」をご紹介しました。うさぎ好きの方もそうでない方も、このサイトで可愛いうさぎに癒されたり、コミュニケーションを楽しんだりしていただけたら幸いです。

ぜひ一度サイトを訪れてみてください！

サイトURL: https://usagi.fan/ （実際のURLに修正してください）

タグ案
うさぎ 絵文字 スタンプ ウェブサービス 個人開発 [使用した技術があればその名称、例: React, Vue, Node.js]
EC2専有ホストの動き

# 内容
EC2専有ホストは、顧客専用の物理サーバー上でEC2インスタンスが稼働する仕組みです。本記事では専有ホストの設定項目からその動作について確認します。

![ec2-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/7d9efe89-e476-4a16-903d-d44149c522e4.png)

# インスタンスファミリー
インスタンスファミリーを選択します。この際、「複数のインスタンスタイプをサポート」という項目があります。

* 無効の場合：特定のインスタンスタイプ（例：m7i.large）のみが専有ホスト上で起動可能です。

* 有効の場合：同一ファミリー内の異なるサイズ（例：m7i.large、m7i.xlargeなど）のインスタンスが起動可能になります。

![ec2-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/b11933ec-eeb6-437a-920e-92be248bf5bd.png)

専有ホスト上で起動可能なインスタンス数は、ホストの物理コア数とインスタンスタイプによって決まります。たとえば、m7i ホストは、ソケット数2×物理コア96が上限となります。各専有ホストで実行可能な上限のインスタンス数は[こちら](https://aws.amazon.com/jp/ec2/dedicated-hosts/pricing/#host-configuration)にも記載があります。

![ec2-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/8b079110-ff59-4367-849e-1f9798e54902.png)

## インスタンスの自動配置

専有ホストでEC2インスタンスを起動する際には、インスタンス作成画面で以下の2つの設定方法があります。下記のターゲットホストの箇所です。

* 専有ホストIDを指定する
* ホストリソースグループを指定する

![ec2-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/84312700-86f6-4bc2-ade8-3e601fcab50a.png)

「インスタンス自動配置の有効化」を有効にすると、以下の動作になります。

* ホストリソースグループ内の任意のホストで起動が可能になります。
* 空きがない場合、自動的に新しい専用ホストが割り当てられます。

![ec2-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/63ef8c65-a1ba-47ca-8ae4-8e20bfc0780b.png)

## ホストの復旧

物理ホストに障害が発生した際、自動復旧を有効にしておくとインスタンスの自動復旧がされます。[こちら](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/dedicated-hosts-recovery-basics.html)には下記の様なパターンが記載されています。

* ネットワーク接続の喪失
* システム電源の喪失
* 物理ホストのハードウェアまたはソフトウェアの問題

動作としては新規に専用ホストが割り当てられてインスタンスが移動します。

![ec2-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/ff477414-4e06-4cb1-9d23-738b02d11d16.png)

:::note info
m7iインスタンスタイプは、2025年5月13日時点では[自動復旧の対象外](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/dedicated-hosts-recovery.html#dedicated-hosts-recovery-instances)です。
:::


## ホストメンテナンス
専有ホストでパフォーマンスの低下が検出された場合、追加ホストが割り当てられます。ホストが割り当てられると、インスタンスに応じてライブ移行ホストメンテナンスまたは再起動ベースのホストメンテナンスを使用してインスタンスが移行されます。

* ライブ移行（24時間以内に自動的に移行）
* 再起動を伴うメンテナンス（スケジュールされた時間に再起動にて移行）



![ec2-08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/ba73e13e-a63a-4e76-a1ca-70bbcd7584c4.png)
【2日目】プロジェクトはどう進む？5つのプロセス群【PMBOKを1日10分、半年で！】

# ✅【2日目】プロジェクトはどう進む？5つのプロセス群

このドキュメントでは、PMBOKにおける「プロジェクトの流れ＝5つのプロセス群」について解説します。プロジェクトをうまく管理するには、全体の流れをしっかりと理解することが重要です。

## 🧭 5つのプロセス群とは？

PMBOKでは、プロジェクトの全体の流れを以下の5つのプロセス群に分けて考える。

|  | プロセス群       | 概要（かんたん説明）                     |
|------|------------------|------------------------------------------|
| ①   | 立上げ（Initiating） | プロジェクトを正式に始める準備をする       |
| ②   | 計画（Planning）    | 目標を達成するための計画を立てる           |
| ③   | 実行（Executing）   | 計画どおりに作業を進めて成果を出す         |
| ④   | 監視・コントロール（Monitoring & Controlling） | 進捗をチェックし、ズレを修正する |
| ⑤   | 終結（Closing）     | 成果物を納品し、プロジェクトを締めくくる   |

## 🔁 プロジェクトの流れのイメージ
立上げ → 計画 → 実行 →（監視しながら）→ 終結
　　　　↑─────↓
　　監視・コントロール

- 計画と実行は並行していて、ずっと監視・コントロールが横で動く。
- 監視は「間違った方向に行ってない？」と確認する役割。

## 🔍 各プロセス群のポイント

### ① 立上げ（Initiating）
- プロジェクトを正式にスタートさせる
- 「目的は何か？」「誰が責任者か？」を決める
- 主な成果物：プロジェクト憲章（チャーター）

### ② 計画（Planning）
- 予算、スケジュール、リスクなど全体計画を立てる
- 「いつ何をどうやる？」を明確にする
- 最もボリュームの大きいプロセス群

### ③ 実行（Executing）
- 計画に従って作業を進める
- メンバーやチーム、ベンダーを動かす

### ④ 監視・コントロール（Monitoring & Controlling）
- 「計画とズレてないか？」を常にチェック
- 問題があれば対処する（例：遅れていたらスケジュール見直し）

### ⑤ 終結（Closing）
- 成果を納品し、プロジェクトを終える
- 振り返り（レトロスペクティブ）やナレッジ共有も行う

## ✅ 今日のまとめ

- プロジェクトは「5つのプロセス群」で構成される
- 進める順番は「立上げ → 計画 → 実行 → 監視 → 終結」
- 成功のカギは、「監視・コントロール」でズレをすぐに修正できるか

## 🔜 次回予定

次回は「10の知識エリア」について学びます。  
これは「計画」「実行」などで使う専門分野（例：スコープ管理、コスト管理、リスク管理など）を表します。
新人エンジニア向け、システム開発時に気を付けること

# はじめに
これまで数社渡り歩いて来た自分の経験を基に、新人エンジニアとしてIT業界に入った方に向けて、システム開発時に特に注意してほしいポイントをまとめました。
プログラムを組む際には、これらの点に注意を払ってもらると少しはトラブルが回避できるかも。

# データの不整合
この子のカテゴリ、どの親のカテゴリにも属していないんだけど・・・
上記のような場合は全然軽いほう。
本当にまずいのはユーザー絡みのお金（ポイント）周り
・ユーザーが商品を購入したけど、ポイントが減算されていない。
・ユーザーにポイントを加算したけど、別のユーザーに付与されている。
・実際の金額より多く（少なく）減算されている。
等々、ユーザー（会社）に実害が出るパターン。
こうなった場合サイトを一旦停止して被害が拡大するのを止め、データの復旧を行うことになるのだが
ログ等がなく復旧不可となると・・・・考えただけでも恐ろしい。
トランザクションを張る、ログを取り何かあっても復旧可能な状態にする、様々なパターンのテストを行う等お金絡みの箇所は注意深く開発してほしい。

# セキュリティの脆弱性
・SQLインジェクションやXSS等セキュリティの脆弱性があるままリリースしてしまい
ユーザーデータが外部に漏らしてしまう。
・また商品購入やポイント加算APIを誰でも叩ける状態で設置してしまう。
このような状態だと悪意のある第3者による不正ができる状態になってしまい、
またやっかいなことに早期の発見がなかなか難しい。
最初はプログラムを動かすことに精いっぱいで、中々気が回らないかもしれないが、チーム内でのポリシーやルールがあるはずなので必ず相談＆レビューしてもらおう。

# サービスを止めてしまう
どこかの1ページがバグで見れなくなってしまった。
上記はまだ影響が少ないが、サイト全体が止まるようなバグはまずい。
参照箇所が多い基本的な共通機能を開発、修正するときは特に細心の注意を払って開発、テストしよう。
また特定の日付になると動作する機能をリリースし、その日がきたらバグでサービスがとまってしまったパターン。
深夜の0時開始とかだと対応者が限られていたり、対応にも時間がかかると思われるため最悪。
これもテストをしっかり行っていれば防げるはずだが、可能であれば依頼者に昼の12:00開始でも問題ないかあらかじめ打診しておき、リスクを軽減しておくのも手。

# エラーに気づかない
・エラーが発生してもエラーを握りつぶしてどこにもエラーが吐かれない。
・エラーが発生してもサーバーのログに残るだけでなかなか気づけない。
最悪どこかのページが表示されないぐらいならまだいいが、商品購入など決済等のお金周り、外部に提供しているサービス等のエラーはすぐに察知する必要がある。
これもチーム内でのポリシーやルールがあると思うが、なにかあったらメール、slack等にエラーを発報してすぐに気づける体制を構築しておく。

# サイトを重くしてしまう
よくあるのが、最初は問題なく動作していたが徐々に動作が重くなりついにはサービスが停止してしまうとうパターン。
大体がデータベースのデータ件数を考慮しないでシステムを組んでしまい、データが増えることによりデータベースに負荷がかかったことに起因している。
データが徐々に増えているような機能を組むときは、データベースのインデックスをしっかり設定した上で、必ず想定される最大のテストデータを用意してテストを行おう。

# バッチが正常に終了しているか
ある程度の規模のシステムならバッチが必ずあると思うが
何件のデータを処理して、何件成功したか等ログに残すようにしよう。
自社のシステム起因でなくても、外部からのデータの取り込み等、外部システムの不具合で
データが送信されていないことがあり、正常に終了しているが実際には何も処理されていないこともあり得る。
またバッチの性質上、大量のデータを処理することがあり、メモリエラーで落ちることがある。
前述のとおりバッチもエラーに気づかないことがないようにしよう。

# ログは極力残す
例えば
・ユーザーにポイントを加算するとき、単純にポイントを+1するのではなく
〇〇を利用したとこにより〇〇ポイントを付与した。
・外部サービスを叩いたとき結果だけ受け取るのではなく、リクエスト時のパラメーター、先方からのレスポンスをログに残す。
等後から何か起こったとき、その時の状態がわかり、原因が究明できるように極力ログは残すようにしたい。
DBのパフォーマンスに影響があるため片っ端から残せばいいわけではないが、お金絡みのログは最低でも残しておきたい。

# DB設計はかならずレビューしてもらう
リリースした後にテーブル構造を変更することは、大抵工数がかかる＆サイトを一時的にとめないと変更できないことが多い。
後から変更したくなっても前述のとおり容易に変更することが難しいため、必ずチーム内でレビューを受けよう。

# データの物理削除
チームのポリシーによるが、基本的にデータベースの物理削除はバックアップ処理以外では頻繁に行われないはず。
一般的には論理削除が主流だと思われるので、自分のコードに物理削除があるときは一度チーム内で相談しよう。

# チームのルール、ポリシーに従う
基本的なことだけど一応。具体的なドキュメントやルールがなくてもコードを見て察することも大事。
あからさまにおかしいと思っても何かしら理由があるかもしれないので、自分ひとりで突っ走ることはせず必ずチーム内で相談、提案しよう。

# 最後に
何かあったときに重大インシデントに繋がりそうな箇所をあげてみました。
※これ以外にもまだたくさんありますが。
またインシデントが起こったときに早期に発見し、リカバリーできるように設計しておくのも大事。
高速・無料の画像アップロードサービス「img.remit.ee」ー シンプルで信頼できる画像共有プラットフォーム

Webサイトやブログ、SNSでの情報発信に欠かせないのが「画像の外部リンク」です。そんな中、誰でも手軽に使える無料の画像ホスティングサービス「img.remit.ee」が登場しました。

https://img.remit.ee

の特徴
img.remit.ee は、高速・安定・無料 をコンセプトにした公共の画像アップローダーで、以下のような利点があります：

✅ 完全無料：アカウント登録なしで、何度でも画像をアップロード可能。

🚀 CDNによる高速表示：世界中どこからでも、画像がサクサク表示されます。

🔗 自動で外部リンクを生成：アップロード後すぐに画像URLが生成され、Markdown・HTML形式にも対応。

🔒 安全・安定運用：画像は自動圧縮され、サーバーの負荷を軽減しつつ、長期保存に対応。

📂 複数画像の一括アップロード：まとめてアップロードして、リンクを一括取得できます。

さまざまな用途に対応
ブログ記事、技術ドキュメント、SNS投稿、フォーラムでのやり取り、eコマース商品ページなど、あらゆるシーンで活用可能。開発者やブロガー、マーケターはもちろん、個人ユーザーにも最適です。

使い方は簡単3ステップ

https://img.remit.ee

を開く

アップロードしたい画像を選択 or ドラッグ＆ドロップ

表示されたリンクをコピーして貼り付けるだけ！

今すぐ使ってみよう！
img.remit.ee は、誰でも今すぐ使える便利な無料画像アップロードツールです。安定性と高速性を兼ね備えた当サービスで、あなたのコンテンツ配信をもっと快適にしましょう。今すぐ img.remit.ee をチェック！