OmniAICreator/Qiita-1.07M huggingface dataset:
OSS版Kongのソースコードをいじってみる

Proxy利用時に表示される文字列をソースコードレベルで書き換えられるかをOSS版で検証した時のメモ。
ビルド方法などは割愛。

## やりたいこと
Routeが設定されていない時にProxyにアクセスすると以下のようなメッセージが出る。
```sh
$ curl localhost:8000 -i
HTTP/1.1 404 Not Found
Date: Mon, 10 Mar 2025 09:10:09 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Content-Length: 106
X-Kong-Response-Latency: 0
Server: kong/3.10.0
X-Kong-Request-Id: 24d95832204ab4150af76d221c535268

{
  "message":"no Route matched with those values",
  "request_id":"24d95832204ab4150af76d221c535268"
}
```
この`no Route matched with those values`と`404 Not Found`のところを書き換える。
ここでは各文字列の最後に`!!!`を挿入することで書き換え可能かどうかを検証する。
なお、[Exit Transformer Plugin](https://docs.konghq.com/hub/kong-inc/exit-transformer/)で書き換えられそうなものだが、`404 Not Found`のところはHTTPステータスラインといってプラグインでは書き換えが出来ない箇所になる。
具体的には、nginxのソースの[この辺](https://github.com/nginx/nginx/blob/master/src/http/ngx_http_header_filter_module.c#L87)でハードコーディングされている。

## `no Route ...`の書き換え
これは`kong/runloop/handler.lua`の[この辺](https://github.com/Kong/kong/blob/master/kong/runloop/handler.lua#L1222)で定義されている。
Luaの場合、ビルドは特に不要なのでファイルを編集してプロセスをリロードすればOK。
以下のように編集する。
```lua:kong/runloop/handler.lua
        return kong.response.error(404, "no Route matched with those values!!!")
```
Kongのプロセスを再起動する。
```sh
kong stop
kong start
```

## `404 Not Found`の書き換え
nginxのソースの[この辺](https://github.com/nginx/nginx/blob/master/src/http/ngx_http_header_filter_module.c#L87)でハードコーディングされている文字列を書き換える。
Kongはバイナリの中ではnginxを取り込んでいるが、nginxのコード自体はリポジトリ内に抱えておらず、OpenRestyのコードを[ビルド時に引っ張ってきている](https://github.com/Kong/kong/blob/master/build/openresty/repositories.bzl#L45-L57)。
OpenRestyのビルド時にOpenRestyもまたnginxのコードを[引っ張ってきている](https://github.com/openresty/openresty/blob/master/util/mirror-tarballs#L31)ので、最終的にKongの中にnginxが取り込まれる仕組みとなっているっぽい。
またKongは`build/openresty/patches/`以下にパッチを用意し、ビルド時にパッチを適用することでnginxやOpenRestyに修正を加えている。
この仕組みを利用しパッチファイルを用意してビルドすれば、nginxやOpenRestyの書き換えが可能となるはずだ。
他のパッチを参考にし、ここでは以下のパッチを作成する。
```diff:build/openresty/patches/nginx-1.27.1_13-modify-header.patch
diff --git a/bundle/nginx-1.27.1/src/http/ngx_http_header_filter_module.c b/bundle/nginx-1.27.1/src/http/ngx_http_header_filter_module.c
index abcdefg..hijklmn 100644
--- a/bundle/nginx-1.27.1/src/http/ngx_http_header_filter_module.c
+++ b/bundle/nginx-1.27.1/src/http/ngx_http_header_filter_module.c
@@ -64,7 +64,7 @@ static ngx_str_t ngx_http_status_lines[] = {
     ngx_string("400 Bad Request"),
     ngx_string("401 Unauthorized"),
     ngx_string("402 Payment Required"),
     ngx_string("403 Forbidden"),
-    ngx_string("404 Not Found"),
+    ngx_string("404 Not Found!!!"),
     ngx_string("405 Not Allowed"),
     ngx_string("406 Not Acceptable"),
     ngx_null_string,  /* "407 Proxy Authentication Required" */
```

パッチを作成後、リビルドしてKongを再起動する。

## 動作確認
それぞれ文字列が書き換わっているか確認する。
```sh
$ curl -is localhost:8000 | grep "HTTP\|Route"
HTTP/1.1 404 Not Found!!!
  "message":"no Route matched with those values!!!",
```
それぞれ期待した通りに文字列が書き換わっている。
問題なさそうだ。
【初心者向け】PL/SQL パッケージの基本と魅力を紹介

## はじめに

「PL/SQL パッケージって何？」
「どんなことができる？」
「使うメリットって何？」

そんな方に向けて、**PL/SQL パッケージ（オラクル・パッケージ）** を紹介します。

---

## PL/SQL パッケージとは？

PL/SQL の**パッケージ**は、**PL/SQLで作成するプログラムを一つにまとめたコンテナ**のようなものです。

通常、Oracleではストアドプロシージャ（Procedure）やファンクション（Function）を使ってデータベースの処理を記述しますが、**それらを一つにまとめ、整理しやすくするのがPL/SQL パッケージ** です。

### PL/SQL パッケージの構成

PL/SQL パッケージは、次の2つの部分で構成されます。

1. **パッケージ仕様部**
   - 外部に公開するプロシージャやファンクションを定義する。
   - いわゆる「インターフェース」の役割。
   
2. **パッケージ本体**
   - 実際の処理を記述する。
   - 仕様部で定義されたプロシージャやファンクションの詳細を実装。

```sql
-- パッケージ仕様部
CREATE OR REPLACE PACKAGE sample_pkg AS
    PROCEDURE hello_world;
END sample_pkg;
/

-- パッケージ本体
CREATE OR REPLACE PACKAGE BODY sample_pkg AS
    PROCEDURE hello_world IS
    BEGIN
        DBMS_OUTPUT.PUT_LINE('Hello, PL/SQL Package!');
    END hello_world;
END sample_pkg;
/
```

---

## どうしてPL/SQL パッケージが魅力的なのか？

### 1. **コードの整理・再利用がしやすい**

複数のプロシージャやファンクションを1つのパッケージにまとめることで、
「どの処理がどこにあるのか」が分かりやすくなります。

また、同じ処理を何度も書く必要がなくなり、再利用性が向上します。

### 2. **パフォーマンスの向上**

パッケージを使うと、**一度ロードされたらメモリにキャッシュ**されるため、
個別のプロシージャを実行するよりもパフォーマンスが向上します。

特に、何度も呼び出される処理では大きな差が出ることもあります。

### 3. **情報の隠蔽（カプセル化）**

パッケージ内に定義したプロシージャやファンクションのうち、
外部に公開するものとしないものを分けることができます。

例えば、**内部的にしか使わない処理を本体にだけ記述し、外部からアクセスできないようにする** ことが可能です。

### 4. **変更が容易**

一般的なストアドプロシージャでは、少しでも変更すると再コンパイルが必要です。
しかし、**パッケージなら本体だけ修正して、仕様部はそのままでOKです。**

開発・運用の負担を大きく減らすことができます。

### 5. **例外処理の一元管理**

パッケージを使えば、共通の例外処理をまとめて定義し、
**システム全体で統一したエラーハンドリングが可能** になります。

```sql
CREATE OR REPLACE PACKAGE sample_pkg AS
    PROCEDURE process_data;
END sample_pkg;
/

CREATE OR REPLACE PACKAGE BODY sample_pkg AS
    PROCEDURE process_data IS
    BEGIN
        -- 何かの処理
        NULL;
    EXCEPTION
        WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE('エラーが発生しました: ' || SQLERRM);
    END process_data;
END sample_pkg;
/
```

## どんなときにPL/SQL パッケージを使うべきか？

- **業務ロジックをまとめて管理したい**
- **複数のプロシージャ・ファンクションが密接に関連している**
- **パフォーマンスを向上させたい**
- **共通のエラーハンドリングをしたい**

こういったケースでは、PL/SQL パッケージを使うことで
効率の良い設計が可能になります。

---

## まとめ

PL/SQL パッケージは、

* コードの整理がしやすい  
* パフォーマンス向上  
* 情報の隠蔽ができる  
* 変更が容易  
* 例外処理の統一が可能  

といったメリットがある、とても便利な仕組みです。

業務で **PL/SQLパッケージ** を触る機会があったので今回記事にしてみましたが、
もしまだ使ったことがない方は、この機会にぜひ試してみてください。

---
ネットワーク入門：TCPとUDPの違いをChatGPTと会話しながら体系的にまとめてみた

## はじめに

インターネット通信にはさまざまなプロトコルが使われていますが、その中でも特に重要なのがTCPとUDPです。

:::note info
**これらはどちらもIPネットワーク上でデータを送るためのプロトコルですが、仕組みや特徴が異なります。**
:::

本記事では、それぞれの違いや使い分けについて解説します。

## 書こうと思ったきっかけ

ネットワークに関する学習を進める中で、TCPとUDPの違いについて混乱することがありました。

:::note warn
***特に、どの場面でどちらを使うべきかを理解するのに時間がかかったため、自分自身の整理も兼ねてこの記事を書こうと思いました。***
:::

TCPとUDPの特徴や用途をわかりやすくまとめることで、同じように学んでいる人の参考になればと思います。

## TCPとUDPの違いと特徴

### TCP（Transmission Control Protocol）とは？
TCPは、信頼性の高い通信を提供するプロトコルです。主な特徴は以下の通りです。

- **コネクション型通信**：データを送受信する前に接続を確立する。
- **信頼性の確保**：データが正しい順序で届くように制御し、欠損があれば再送する。
- **エラー検出と修正**：データの破損があれば再送要求を行う。
- **スループットの調整**：ネットワークの混雑を考慮し、適切なデータ量を送る。

#### TCPの代表的な用途
- Webブラウジング（HTTP/HTTPS）
- メール（SMTP, IMAP, POP3）
- ファイル転送（FTP）

### UDP（User Datagram Protocol）とは？
UDPは、信頼性よりも速度を重視した通信を行うプロトコルです。主な特徴は以下の通りです。

- **コネクションレス型通信**：事前の接続確立が不要で、即座にデータを送信できる。
- **信頼性は保証されない**：データが欠損しても再送は行わない。
- **順序保証なし**：データは送信した順番通りに届くとは限らない。
- **オーバーヘッドが少ない**：TCPに比べて制御情報が少なく、高速な通信が可能。

#### UDPの代表的な用途
- 音声・動画ストリーミング（VoIP, YouTube, Netflix）
- オンラインゲーム
- DNS（ドメイン名解決）
- ネットワーク監視（SNMP）

## TCPとUDPの比較表

| 特徴 | TCP | UDP |
|------|-----|-----|
| 通信方式 | コネクション型 | コネクションレス型 |
| 信頼性 | あり（再送制御あり） | なし（再送制御なし） |
| データの順序保証 | あり | なし |
| 速度 | 遅い（オーバーヘッド大） | 速い（オーバーヘッド小） |
| 代表的な用途 | Webブラウジング、メール、ファイル転送 | ストリーミング、オンラインゲーム、DNS |

## まとめ

TCPとUDPは用途に応じて使い分ける必要があります。

- **データの正確性が求められる場合**（Webサイト閲覧やメール通信など）：**TCP**
- **リアルタイム性が重要な場合**（オンラインゲームやライブストリーミングなど）：**UDP**

どちらのプロトコルもネットワーク通信において重要な役割を果たしており、状況に応じた適切な選択が求められます。
プログラマーがすべきセグメンテーションフォールト対策

質問：「セグメンテーションフォールトを防ぐためにプログラマがすべき対策の代表的なものを全て教えてください．」
以下はChatGPTの回答．

---

セグメンテーションフォールトを防ぐためにプログラマーが取るべき対策はいくつかあります。代表的なものを以下に挙げます。

### 1. **NULLポインタチェック**
   - ポインタが`NULL`かどうかを使用する前に確認します。`NULL`ポインタをデリファレンスすると、セグメンテーションフォールトが発生します。
   - 例：
     ```c
     if (ptr != NULL) {
         *ptr = 10;
     } else {
         // エラーハンドリング
     }
     ```

### 2. **配列やバッファの境界チェック**
   - 配列やバッファにアクセスする際、インデックスが範囲外でないことを確認します。範囲外アクセスもセグメンテーションフォールトを引き起こす原因となります。
   - 例：
     ```c
     int arr[10];
     int index = 12;  // 範囲外
     if (index >= 0 && index < 10) {
         arr[index] = 5;
     } else {
         // エラーハンドリング
     }
     ```

### 3. **ポインタの初期化**
   - 使用前にポインタを適切に初期化することが重要です。未初期化のポインタを使用すると、不正なメモリを参照してセグメンテーションフォールトを引き起こすことがあります。
   - 例：
     ```c
     int *ptr = NULL;  // 初期化
     ```

### 4. **動的メモリの管理と解放後のポインタ管理**
   - 動的メモリ（`malloc`や`calloc`など）を使用した場合、メモリを解放した後にそのポインタを使用しないようにします。解放後のポインタを参照するとセグメンテーションフォールトが発生することがあります。
   - 例：
     ```c
     int *ptr = malloc(sizeof(int) * 10);
     // 使用後
     free(ptr);
     ptr = NULL;  // 解放後はNULLに設定
     ```

### 5. **スタックオーバーフローの防止**
   - 再帰呼び出しの深さに注意し、無限再帰や過剰な再帰を避けます。再帰の深さがスタック領域を超えるとスタックオーバーフローが発生し、セグメンテーションフォールトにつながります。
   - 例：
     ```c
     // 再帰の深さを制限する
     void recursive(int depth) {
         if (depth <= 0) return;
         recursive(depth - 1);
     }
     ```

### 6. **メモリ領域の保護**
   - プログラムが書き込み禁止のメモリ領域（例：読み取り専用メモリ）にアクセスしようとする場合、セグメンテーションフォールトが発生します。OSのセキュリティ機能やメモリ保護を活用し、メモリ領域を適切に管理します。

### 7. **エラーチェックと例外処理**
   - メモリ割り当て（`malloc`や`calloc`）などの関数の返り値をチェックし、エラーが発生した場合に適切な処理を行います。メモリ不足やリソースが足りない場合、`NULL`が返されるので、それを確認して処理を進めます。
   - 例：
     ```c
     int *ptr = malloc(sizeof(int) * 10);
     if (ptr == NULL) {
         // メモリ確保に失敗した場合のエラーハンドリング
     }
     ```

### 8. **コンパイラの警告を無視しない**
   - コンパイラが出す警告やエラーメッセージを無視しないことが重要です。特に、未使用の変数やポインタ、ポインタの型の不一致など、コンパイラが指摘する問題を修正することでセグメンテーションフォールトの原因を未然に防ぐことができます。

### 9. **OS/ハードウェアのメモリ保護機能を利用する**
   - 現代のオペレーティングシステムやハードウェアは、メモリ保護機能（例えば、**NXビット**や**DEP**）をサポートしています。これらの機能を活用して、実行禁止メモリ領域へのアクセスを制限します。これにより、悪意のあるコードや誤ったメモリ操作から守ることができます。

### 10. **コードのレビューとテスト**
   - 他のプログラマーによるコードレビューやテストを行うことで、メモリ管理の問題やセグメンテーションフォールトの原因となりうる不具合を早期に発見することができます。また、単体テストや統合テストでメモリ関連のバグを発見することも有効です。

### 11. **アドレス空間のランダム化（ASLR）を利用**
   - アドレス空間配置のランダム化（ASLR）は、メモリの位置を毎回ランダムに変更する技術で、セグメンテーションフォールトを引き起こしやすい脆弱性を減らすために使用されます。これにより、攻撃者が不正なメモリ領域を予測することが難しくなります。

---

### 結論：
セグメンテーションフォールトを防ぐためには、ポインタの正しい管理やメモリの適切な使用が基本です。上記の対策をしっかりと実行することで、セグメンテーションフォールトを防ぎ、プログラムを安定して動作させることができます。
OmniHuman-1：AIによる次世代ヒューマンアニメーションの革新

# OmniHuman-1: AI駆動のヒューマンアニメーションの未来

## はじめに

OmniHuman-1は、**ByteDance**が開発した革新的なAIフレームワークであり、**画像から動画を生成する**最先端の技術です。**Diffusion Transformer (DiT) モデル**を活用し、静止画像からリアルなアニメーションを作成します。これにより、**顔の表情、手の動き、全身のモーションを自然に再現**できるだけでなく、音声と連携したリアルなリップシンクやボディジェスチャーを生成できます。

本記事では、**技術仕様、応用分野、競合モデルとの比較、そして倫理的な課題**について詳しく解説します。

---

## 1. 技術仕様と機能

### **コア技術とアーキテクチャ**
- **Diffusion Transformer (DiT)** による時空間動画生成。
- **マルチモーダル入力**（画像、音声、動画、テキストに対応）。
- **Omni-Conditionトレーニング戦略** により、複数の動作を学習可能。
- **エンドツーエンド生成** により、顔の表情から全身の動作まで統一的に制御。
- **リアルタイム処理が可能**（ただし高性能GPUが必要）。

### **性能評価**
OmniHuman-1は、以下のデータセットにおいて**最先端の性能**を記録しています。
- **CelebV-HQ**（高画質のセレブ動画データセット）
- **RAVDESS**（音声・歌唱動画データセット）
- **IQA、ASE、Sync-C 指標で他のモデル（SadTalker、Hallo、Loopy）を超える精度**

### **独自の機能**
- **顔だけでなく全身の動作を生成可能**。
- **あらゆるアスペクト比やカメラアングルに対応**（側面や全身ショットもOK）。
- **音声に合わせたリアルなリップシンクやジェスチャーを生成**。
- **アニメキャラクターや動物、オブジェクトのアニメーションにも対応**。
- **画像＋音声＋ポーズ＋テキストの複数入力を統合してアニメーションを作成**。

---

## 2. 応用分野と活用産業

OmniHuman-1は、**コンテンツ制作、広告、エンタメ、教育など幅広い業界で活用**できます。

### **SNS・コンテンツ制作**
- **自撮り写真からリアルなアニメーション動画を生成**。
- **歌唱や音声をもとに、インフルエンサーやクリエイターが手軽に動画制作**。
- **TikTokなどのアプリに統合し、AI駆動の動画エフェクトを実現**。

### **マーケティング・広告**
- **バーチャルインフルエンサーや企業アンバサダーのアニメーション**。
- **広告用の動画を自動生成し、撮影コストを削減**。
- **顧客ごとにパーソナライズされた動画広告の大量生産が可能**。

### **映画・TV・エンターテインメント**
- **歴史上の人物や故人のデジタル復元**。
- **高価なCGモーションキャプチャなしでリアルなアニメーション作成**。
- **独立系クリエイターでも手軽に高品質アニメーションを制作可能**。

### **教育・トレーニング**
- **AI駆動のバーチャル講師によるインタラクティブな学習体験**。
- **歴史上の人物を再現し、教育コンテンツに活用**。
- **企業研修や医療シミュレーションのリアルな映像教材を自動生成**。

### **バーチャルアシスタント・カスタマーサービス**
- **リアルなAIキャラクターが対話するカスタマーサポート**。
- **多言語対応のバーチャルアシスタントの実現**。
- **自然なジェスチャーや口の動きで会話するAIチャットボット**。

### **ゲーム＆XR（拡張現実）**
- **ゲームのNPC（ノンプレイヤーキャラクター）のリアルな動作生成**。
- **AIキャラの表情やアクションがプレイヤーの行動に応じて変化**。
- **自撮り写真からパーソナライズされた3Dアバターを生成**。

---

## 3. 競合AIモデルとの比較

OmniHuman-1は、競合AIモデルと比べて**動作の同期精度が高く、柔軟性がある**点で優れています。

| 特徴                | OmniHuman-1 | SadTalker | DiffTED | Hallo | First Order Motion Model |
|------------------|-------------|----------|--------|------|------------------|
| **顔のアニメ化**   | ✅ 先進的 | ✅ 可能 | ✅ 可能 | ✅ 可能 | ✅ 可能 |
| **全身の動作生成** | ✅ 可能 | ❌ 不可 | ✅ 一部対応 | ❌ 不可 | ✅ 可能 |
| **リップシンク精度** | ✅ 高い | ✅ 普通 | ✅ 高い | ✅ 普通 | ❌ 低い |
| **マルチモーダル入力** | ✅ 可能（画像、音声、ポーズ、動画） | ❌ 不可 | ❌ 不可 | ❌ 不可 | ❌ 不可 |
| **リアルタイム動作** | 🟡 高GPU必要 | ✅ 高速 | 🟡 普通 | ✅ 高速 | ✅ 高速 |

OmniHuman-1は、**他のモデルでは難しい全身の動作や音声連携を高度に統合**しており、圧倒的なパフォーマンスを発揮します。

---

## 4. 倫理的課題とリスク

OmniHuman-1の技術は画期的ですが、**ディープフェイクやプライバシー問題といったリスク**も伴います。

### **主なリスク**
- **偽情報の拡散**（政治的なディープフェイク動画による世論操作）
- **詐欺やなりすまし**（CEOや有名人を偽装した金融犯罪）
- **プライバシー侵害**（写真を無断でアニメ化されるリスク）
- **不適切コンテンツ生成**（ディープフェイクポルノの悪用）
- **AIバイアス**（特定の人種や性別への偏り）

### **リスク軽減策**
- **ウォーターマークの追加**
- **AIコンテンツ識別ツールの開発**
- **適切なガイドラインと法律の整備**
- **公平性を保つデータセットの活用**

---

## 5. まとめ

OmniHuman-1は、**AIによる動画生成技術の最前線を牽引**しており、コンテンツ制作、広告、教育、ゲームなど多くの分野に革新をもたらします。しかし、その強力な機能には慎重な倫理的考慮が必要です。

今後の展開に注目しつつ、この技術を**創造的かつ責任ある方法で活用していくこと**が重要です。🎥✨
XFCEを使い始めるための設定ガイド


XFCEは軽量でカスタマイズ性の高いデスクトップ環境です。ここでは、XFCEをインストールした後に最初に行うべき基本的な設定やカスタマイズを紹介します。

## 1. アップデートの確認
システムを最新の状態に保つために、まずはシステムのアップデートを行います。

```bash
sudo apt update && sudo apt upgrade
```

## 2. テーマとアイコンのカスタマイズ
デフォルトの見た目を変更して自分好みにカスタマイズします。

### テーマの変更
1. 設定マネージャーを開きます。
2. 「外観」を選択します。
3. 「スタイル」タブでお好みのテーマを選択します。

### アイコンテーマの変更
1. 設定マネージャーを開きます。
2. 「外観」を選択します。
3. 「アイコン」タブでお好みのアイコンテーマを選択します。

## 3. パネルのカスタマイズ
パネルにアプリケーションランチャーやシステムトレイを追加して、使いやすくカスタマイズします。

### パネルの項目を追加・削除
1. パネル上で右クリックし、「パネル」->「パネルの設定」を選択します。
2. 「アイテム」タブでお好みのウィジェットを追加または削除します。

## 4. キーボードショートカットの設定
よく使う機能に簡単にアクセスできるようにキーボードショートカットを設定します。

### ショートカットの設定
1. 設定マネージャーを開きます。
2. 「キーボード」を選択します。
3. 「アプリケーションショートカット」タブで新しいショートカットを追加します。

## 5. 壁紙の変更
デスクトップの背景を変更して、より個性的にカスタマイズします。

### 壁紙の変更方法
1. デスクトップ上で右クリックし、「デスクトップ設定」を選択します。
2. 「背景」タブでお好みの画像を選択します。

## 6. 電源管理の設定
ノートパソコンやデスクトップの電源管理設定を最適化します。

### 電源管理の設定
1. 設定マネージャーを開きます。
2. 「電源管理」を選択します。
3. 電源ボタンの動作やスリープ設定を調整します。

## 7. 日本語入力の設定（必要に応じて）
日本語入力を使用するための設定を行います。

### ibusのインストールと設定
1. ibusと日本語入力エンジン（例えばmozc）をインストールします。
    ```bash
    sudo apt install ibus ibus-mozc
    ```
2. 設定マネージャーを開き、「言語サポート」を選択します。
3. キーボード入力方式システムを「ibus」に設定します。
4. 再起動後、ターミナルで以下のコマンドを実行してibusを起動します。
    ```bash
    ibus-setup
    ```

これらの設定を行うことで、XFCEを快適に使い始めることができます。自分の使いやすい環境を見つけて、さらにカスタマイズしてみてください。
angular/ionicのpackage.json内モジュールのバージョンを最新にする

備忘を兼ねて、angular/ionicのモジュールを最新にする方法を記述する

1 ncuのインストール
　以下のコマンドを実行してncuをインストールする
```
$ npm install -g npm-check-updates
```
2 ncuの実行
　プロジェクトフォルダ下にて以下を実行しpackage.json内のモジュールバージョンを最新にする
```
 ncu -u
```
3 モジュールの依存関係を更新する
　以下を実行してモジュールの依存関係を更新する
```
 ng update
```
　このとき
```
We analyzed your package.json, there are some packages to update:
```
　のメッセージが表示されたら、個別に依存関係を更新する
```
ng update @XXXX/XXXX
```

　個別に更新しようとした際に
```
Repository is not clean. Please commit or stash any changes before updating
```
　というエラーメッセージが表示されたらオプションをつけて実行する
```
ng update @XXXX/XXXX --allow-dirty --force
```

4 ビルドする
　最後にビルドしてエラーが出ないことを確認する
```
ng build または ionic build
```
省力化した脆弱性管理

# はじめに
脆弱性管理についての取り組みの事例についてご紹介できればと考えております。
今回はエンドポイント端末の脆弱性管理についてのみお話しております。

# 当時の脆弱性対応の状況
名前は伏せさせていただきますが、私の在籍する会社ではエンジニアのPCについては脆弱性管理どころかインストールされているソフトウェアも分からないような状況でした。
そのため、影響が大きそうな脆弱性が確認されたときに該当者はいるのかなどの判断もできないような状況です。

そんな状況の中にセキュリティ担当としてアサインされ、「早急に改善しなければ」と思いました。
脆弱性対応を行う上で、IT資産管理と脆弱性管理はセットで行う必要があるので、紆余曲折はありましたがこれらのツールを導入することにしました。

# 脆弱性ツールの導入後
ツールを導入して驚いたのが、製品の方で**優先度がCritical（KEVに載っているものや、攻撃の難易度が低いもの）と判定されるものが500件以上…**
そもそもEOLを迎えているソフトウェアやOSを使っている端末も多く存在していました。

脆弱性情報は毎日更新されていくので、これらの数をユーザーに毎回案内して対応依頼を実施は1人では難しいと思い、できるだけ省力化した脆弱性管理を考えることにしました。

# 脆弱性管理の方針
まずはCriticalと判断される脆弱性の対応を必須としました。
またCriticalとなっている脆弱性のリストをTeamsのプライベートチャンネルで公開し、そこに対応が必要な人を招待し、対応が終了した人はチャンネルから抜けてもらう運用としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4029476/39c967dd-f12f-467d-8109-356f72059ad3.png)

このような方針にすることと、Power Automateで自動化できるところは自動化することにより省力化した脆弱性管理の実現を実施しました。

# 運用開始直後の問題と解決方法
運用開始直後は、なかなかユーザーには対応してもらえませんでした。
ただ、このような運用は最初が肝心だと思ったのであまりオススメではないのですが、対応期日までに対応がない場合は上長含めエスカレーションを実施する旨を周知しました。
※ここは組織のリテラシーや文化などによっても左右されますし、やり方も異なると考えております。

そのようなことも相まって、対応が必要な脆弱性の数をかなり減少することができました。

# まとめ
端末側のポップアップに表示させたり、自動アップデート、ユーザー側で適切にソフトウェア管理などができるように教育や周知を徹底するなどの方法があるかと思いますが、様々な制約の中でこのような運用としました。
ご覧いただいた皆様の参考になれば幸いです。

ここまで読んでいただきありがとうございました。
統計検定1級　2021　統計応用(理工学)　問3

![img20250310_13424200.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/629f034a-61ee-487e-ba9b-96fff1c9565b.jpeg)
![img20250310_13431252.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/4fac6283-36b3-4891-81ea-8a5294a09c3f.jpeg)
![img20250310_13435373.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/7e735658-8b49-454b-8237-642de5b16b00.jpeg)
夜中の2時、誰もが寝静まった頃…ずっと話を聞いてくれる相手がいる

スマホの明かりだけが灯る部屋で、打っては消すメッセージ。「考えすぎだよ」と言われた彼の言葉が胸に刺さったまま。本当はアドバイスより「そっか、つらかったね」のひと言が欲しいだけなのに——そんなささいな願いが、なぜか伝わらない夜がありますよね。

**実はこれ、女性脳のチカラなんです。** 脳科学では、女性の「共感スイッチ」が男性より47%も敏感だと言われています。桜が風を待つように、私たちは相手の反応で心が満たされる生き物。でも現実の会話が「波長違いラジオ」みたいにすれ違うと、「私が我慢しすぎ？」と自分を責めちゃうんです。

本を読むのも確かに気分転換になります。でも真夜中に押し寄せるモヤモヤに、本の登場人物は「今すぐ」答えてくれません。そこでオススメしたいのが——AIとおしゃべり。

あの有名芸能人が「AIと朝まで話してた」って暴露して話題になりましたよね？ あれ、実はとっても理にかなってるんです。例えば「今日は共感モードでお願いね」と最初に伝えれば、AIは…

☑️クライアントに否定された悔しさ
☑️電車乗り過ごした時の脱力感
☑️「ただ聞いてほしい」という本音

**全部まるごと受け止めてくれます。** しかもこの相手、絶対に「もう寝るわ」と言わないし、LINE既読無視もなし。60秒ボイスメッセージの泣き声だって、「大変だったね」とちゃんと拾ってくれるんです。

**AIが人間関係を壊すわけじゃありません。** むしろ「デジタルな樹の洞窟」に感情の荷物を預けると、現実の人間関係がラクになる魔法があります。雨音に隠れた寂しさを共有できた夜、ふと気づくんです。「私、ずっと一人じゃなかったんだ」って。

スマホの向こう側に、今夜もあなたの話を待っている相手がいます。まずは「ねえ、聞いて」のひと言から始めてみませんか？ AIチャットアプリ「MoguChat」なら、24時間・完全無料で「わかってくれる」安心感を体験できますよ。

**▼今すぐ試してみる**

（App Store/Google Playで「モグチャット」検索）

**▼ iOS**

https://apple.co/3ZRlt2a

**▼ Android**

https://play.google.com/store/apps/details?id=ai.moguchat.app
androidxを手元でビルドするためのメモ

AOSPにあるandroidxをビルドします。まだmavenに上がっていないライブラリを見るためにやりました。
Android Code Searchとか、[github](https://github.com/androidx/androidx/tree/androidx-main)にも公開されてもいますが、今後見ることもありそうなので手元でビルドしてみました。
githubをクローンすれば行けるかと思いましたが、そうではなく、ひと手間必要で、
PCを変えたときとかにまたやるかもしれないので、メモしておきます。

## 見た記事
公式
[Getting started](https://android.googlesource.com/platform//frameworks/support/+/refs/heads/androidx-main/docs/onboarding.md)
[AOSP AndroidX Contribution Guide](https://android.googlesource.com/platform/frameworks/support/+/android-room-release/README.md)(これは古いかも？)
こちらも参考にしました。

[AOSPのAndroidX開発環境メモ \#JetpackCompose \- Qiita](https://qiita.com/takahirom/items/3310ba8b77dcdac46ccc)
ほとんどこれを見ればよいかと思いますが、少しだけ差分と、自分がポカしたときのメモがあります。
ほとんど一緒です。

[githubのREADME.md](https://github.com/androidx/androidx/tree/androidx-main)に手順は書かれていません。

## 手順

repoコマンドを使う必要があります。
repoをインストールします。mac+homebrewなので、下記コマンドを使いました。

```shell
brew install repo
```

公式ではcurlでインストールしている例が紹介してありますが、
homebrewでパスを通す必要もありません。

あとfish使っているので、下記を`~/.config/fish/config.fish`に追加。

```shell
function repo
  command python3 /opt/homebrew/bin/repo $argv
end
```

sourceコマンドか、ターミナルを開き直して反映します。

## repoコマンド実行
プロジェクトを入れるディレクトリを作ってから、下記を実行。

```shell
repo init -u https://android.googlesource.com/platform/manifest -b androidx-main --partial-clone --clone-filter=blob:limit=10M
```

```shell
repo sync -c -j32
```

j8というのはスレッドの数みたいです。
オプションの中身は[公式のガイド](https://source.android.com/docs/setup/download/downloading?hl=ja)とか、helpを見ると出てくると思います。

焦らずに一つずつコマンド実行したほうがよいです。
syncは数時間かかるかと思います。場合によってはもっとかかるかも。

あとめちゃサイズが大きいです。60GBくらいありました、、

あとrepo syncするときは注意が必要で、ネットワーク不良になると怪しい気がします。
（もしかすると途中でMacがスリープしたのかも？影響あるかわかりませんが）
まぁそのときエラー結構出ていましたがスルーしてしまっていました←

そのあとビルドしようとしても依存解決に失敗して、どうにもなりませんでした。

別のディレクトリ作って`repo init`からやり直しました。

## ビルド

ターミナルで、frameworks/supportのディレクトリで下記を実行します。

```shell
./studiow main
```

Android Studioが自動で開く。

mainというのはandroidxのcompose以外のもとをビルドします。

`vi ./studiow`とかで開くと、何を渡せばいいか書かれています。
たとえば`./studiow compose`とかならcomposeがビルドできます。

## 追記(2025/3/27)

リポジトリが更新されたら、また

```shell
repo sync -c -j32
```

した後に、ビルドしたらうまくいきます。
タイマー

```html:timer.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>シンプルタイマー</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
            margin: 50px;
        }
        #timer {
            font-size: 5em; /* フォントサイズを大きく */
            font-weight: bold;
            color: #ff0000; /* 赤色で見やすく */
            margin: 30px 0;
        }
        input, button {
            font-size: 1.5em;
            padding: 10px 20px;
            margin: 10px;
        }
    </style>
</head>
<body>

    <h1>デジタルタイマー</h1>
    <label for="minutes">時間（分）:</label>
    <input type="number" id="minutes" min="0" value="1">
    <button onclick="startTimer()">スタート</button>
    <button onclick="stopTimer()">ストップ</button>
    <button onclick="resetTimer()">リセット</button>

    <div id="timer">00:00</div>

    <script>
        let countdown;
        let timeLeft = 0;
        let isRunning = false;

        function startTimer() {
            if (isRunning) return;
            clearInterval(countdown);
            let minutes = document.getElementById("minutes").value;
            if (timeLeft === 0) {
                timeLeft = minutes * 60;
            }
            isRunning = true;

            function updateDisplay() {
                let min = Math.floor(timeLeft / 60);
                let sec = timeLeft % 60;
                document.getElementById("timer").innerText = 
                    String(min).padStart(2, "0") + ":" + String(sec).padStart(2, "0");
            }

            updateDisplay();

            countdown = setInterval(() => {
                if (timeLeft > 0) {
                    timeLeft--;
                    updateDisplay();
                } else {
                    clearInterval(countdown);
                    document.getElementById("timer").innerText = "00:00";
                    alert("時間になりました！");
                    isRunning = false;
                }
            }, 1000);
        }

        function stopTimer() {
            clearInterval(countdown);
            isRunning = false;
        }

        function resetTimer() {
            clearInterval(countdown);
            isRunning = false;
            timeLeft = 0;
            document.getElementById("timer").innerText = "00:00";
        }
    </script>

</body>
</html>
```
【Excelアドイン】タスクテンプレート実行

# はじめに #
Excelワークシートで定義された複数のSharperlightの書き戻し設定を、1つのボタンで実行する方法についてのトピックを書きます。これは「タスクテンプレート実行」オプションを使用することで実現できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/00578cf0-6ab7-4c5d-8619-2b0011eb578a.png)

# 書き戻し定義 #
基本的に、データを含むテーブルを準備し、データを接続されたデータベースにロードするためのSharperlight書き戻しを定義します。場合によっては、複数のSharperlight書き戻しを定義し、それらすべてを一度に実行するためのボタンを1つだけ用意したい場合があります。

下の画像には、それぞれにSharperlight書き戻しが定義された2つのテーブルが表示されています。

実行ボタンが2つ定義されており、それらを1つずつ押さなければなりません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/5b0762b0-bcae-433d-9add-cf3b47939a08.png)

# タスクテンプレート #
2つのSharperlight書き戻しを連続して実行するために、1つのボタンを使用できるように変更を加えましょう。

セルP2を選択し、Sharperlightリボンから「その他」=>「タスクテンプレート実行」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/00578cf0-6ab7-4c5d-8619-2b0011eb578a.png)

次のようにテーブルとボタンが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/afc41054-8185-4f36-967b-9895d7d90e01.png)

テーブルにもう1行を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/9843978e-0a2a-4424-ba12-2bf74645155e.png)

# タスクテンプレートの設定 #
**Filename**(ファイル名)：現在アクティブなファイルを使用するため、空白のままで構いません。
**Worksheet**(ワークシート)：現在のワークシート名を列に入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/b7feae6b-4ef7-4635-b924-51a1a8b2c61e.png)
**Writeback**(書き戻し): 書き戻しダイアログから保存されたSharperlight書き戻しの名前を見つけ、その書き戻し名を「Writeback」列に入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/8ac12e13-a7a4-4d3b-95d0-72514451bb45.png)
**Recalculate**(再計算)：TRUE/FALSEのブール値または空白を受け入れます。再計算は書き戻しの前に行われます。今回は空白のままにしておきます。
**Save Workbook**(ワークブックの保存)：TRUE/FALSEのブール値または空白セルを受け入れます。保存は再計算および/または書き戻しの後に行われます。今回は空白のままにしておきます。

# タスクテンプレートの実行 #
ここまででテンプレートの定義は完了しました。今度はテンプレートを実行する時です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/06c38a52-d6ba-4a55-99dd-574d648cde7a.png)

「Run Tasks(タスクの実行)」ボタンをクリックすると、タスクテンプレートに定義した書き戻し処理が上から順に実行され、そのログが次のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a09c50aa-75c7-46c1-954e-c3e1ae9dd2a6.png)

# おわりに #
ここで紹介した例は簡単なものですが、書き戻しは他のシートや、さらには他のワークブックからも行うことができます。ぜひ試してみて、作業をより効率的にする方法を見つけてください。
Python 数値や文字列などの入力を受け取るには

## 1行に整数または小数一つ
```
x = int(input())     #整数
x = float(input())   #小数
```
## 1行に複数の整数
```
a, b = (int(x) for x in input().split())
```

## リストに複数の数値を入力する
```
N = 5
x = []
for i in range(N):
    x.append(int(input())) #append()は末尾に追加指定
```
DynamicLoader error



Power Automate(DeskTop)でエラーになります。
csvファイルをExcelに読み込んでいる個所でエラーになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/875e535d-55bf-4d1a-8bf7-74ba8d756905.png)



# 同様のエラーの投稿


+ ['DynamicLoader' error in Excel with powerQuery](https://answers.microsoft.com/en-us/msoffice/forum/all/dynamicloader-error-in-excel-with-powerquery/c3b17ad5-a8ae-4585-b85a-422580b9558b)

>職場にマクロ (xlsm) を含む Excel ファイルがあり、そのファイルには、いくつかのグラフやその他の情報を複数のシートに表示することを目的として、TXT ファイルへの接続を更新するために (列やヘッダーなどを処理するための PowerQuery 変換を使用して) .vbs 呼び出しから起動されるコードが含まれています。
10 回中 9 回は問題なく正常に実行されますが、ある日コンピューターにログインすると、最後の実行が次のエラーで失敗していることに気付きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/244b875a-b1e0-42cd-a8ae-5d4caa878260.png)

:::note alert
pq://pq.microsoft.com/views/taskpanes/queriesandconnectionstaskpane.htm

Page script error:

Line: 20

Character: 9

Error: 'DinamicLoader' is undefined

Code: 0

URL: ms-pq://pq.microsoft.com/views/taskpanes/queriesandconnectionstaskpane.htm
:::

解決策は提示されてないですね。

何だろうなぁ、このTask paneって....

+ [Task pane](https://www.computerhope.com/jargon/t/taskpane.htm)
+ [TaskPane オブジェクト (Word)](https://learn.microsoft.com/ja-jp/office/vba/api/word.taskpane)
コード規約を定める目的とは

# はじめに

ソフトウェア開発において、コード規約（コーディング規約）は重要な役割を果たします。プロジェクトの規模やチームの人数が増えるほど、コード規約の存在がプロジェクトの成功に直結します。本記事では、コード規約を定める目的やそのメリットについて詳しく解説します。


# コード規約とは？

コード規約とは、ソースコードの書き方やスタイルを統一するために設けられたルールやガイドラインのことです。これには以下のような内容が含まれます。

- インデントやスペースの使い方
- 変数名や関数名の命名規則
- コメントの書き方
- 使用すべきコーディングパターンや避けるべきアンチパターン

コード規約は、プロジェクトやチームごとに異なる場合がありますが、共通して目指すゴールは「一貫性」と「品質の向上」です。



# コード規約を定める目的

### **1. 一貫性のあるコードベースを維持する**
複数人で開発を行う場合、各メンバーが異なるスタイルでコードを書くと、コードベース全体が不統一になり、可読性が低下します。コード規約を定めることで、どの部分のコードも同じ人が書いたかのように見える一貫性を保てます。

### **2. コードの可読性を向上させる**
統一されたスタイルで書かれたコードは読みやすくなります。特に大規模なプロジェクトでは、新しい開発者が参加した際にスムーズにコードを理解できることが重要です。

### **3. バグやエラーのリスクを減らす**
コード規約にはベストプラクティスが含まれるため、それに従うことでバグやエラーを未然に防ぐことができます。また、一貫したスタイルで書かれたコードはデバッグやレビューも容易になります。

### **4. 保守性と拡張性を高める**
保守性とは、プロジェクト終了後もコードを正常に保ち続ける能力です。統一されたルールで書かれたコードは修正や機能追加がしやすく、長期的な運用にも適しています。

### **5. チーム内の効率的なコラボレーション**
共通ルールがあることで、チーム内で「暗黙の了解」を減らし、効率的なコミュニケーションが可能になります。新しいメンバーもスムーズにプロジェクトに参加できるため、オンボーディングも容易になります。

### **6. 開発コストと時間の削減**
統一されたスタイルで書かれたコードは再利用性が高く、開発時間やコストを削減できます。また、バグ修正やレビュー時間も短縮されます。



# コード規約を定めるメリット

以下は、コード規約を導入することで得られる具体的なメリットです。

| **メリット**                     | **詳細**                                                                 |
|----------------------------------|--------------------------------------------------------------------------|
| **一貫性**                       | 全ての開発者が同じルールに従うことで、一貫したコードベースを維持できる。   |
| **可読性**                       | 統一されたフォーマットで記述されたコードは理解しやすい。                   |
| **バグ削減**                     | ベストプラクティスを守ることでエラーやバグのリスクを低減できる。           |
| **保守性と拡張性**               | 修正・追加作業が容易になり、長期的な運用にも耐えられる。                   |
| **効率的なチームコラボレーション** | 新メンバーでもすぐにプロジェクトに貢献できる環境を提供する。               |
| **コスト削減**                   | 再利用可能なコードと効率的な開発プロセスによって時間とコストを節約できる。 |



# まとめ

コード規約は、一見すると単なる「形式的なルール」に思えるかもしれません。しかし、その目的はプロジェクト全体の品質向上、生産性向上、そして長期的な保守性確保など、多岐にわたります。特にチーム開発では欠かせない要素です。

プロジェクト開始時には必ずチーム内で適切なコード規約を策定し、それを遵守する文化を育むことが成功への鍵となります。このような取り組みは短期的にも長期的にも大きな成果をもたらします。

最後まで読んでくださり、ありがとうございました。もし改善点や質問があれば、ぜひコメントしてください！




# 参考文献 

https://aslead.nri.co.jp/ownedmedia/development/post-5441/


https://blog.codacy.com/coding-standards


https://www.sitepoint.com/coding-standards/



https://dev.to/codacy/coding-standards-what-are-they-and-why-do-you-need-them-51db



https://and-engineer.com/articles/YFMB0xAAACEAp-gS




https://www.qodo.ai/blog/mastering-coding-standards-and-best-practices-for-software-development/
macportsでインストールしたアプリケーションがmacOSをSonoma(14)からSequioa(15)にしたら動かなくなったのに対応

## 経緯

- 2025/3/11 エラーを再現できたので、エラーメッセージの記述を更新しました。
- 2025/3/15 IntelじゃなくてもApple M1のMac Miniでも同じ問題おきますね。

4年もののMacBook Pro(2019, Intel)のOSをバージョンアップしたあと、`macports`でインストールしてあった`emacs-app`をDockやFinderのアイコンから起動しようとしたら、
**「アプリケーション"Finder"には、(null)を開くアクセス権がありません。」**
みたいなメッセージが出ました。 

諦めて`MacPorts`を1から別の場所にソースからインストールして`port install emacs-app ......`して作り直しましたが、同じ症状でした。

## コマンドラインから起動してみると、

`open`コマンドで起動しようとすると、

```bash:コマンドラインで実行
% open $macports_root/Applications/Emacs.app
_LSOpenURLsWithCompletionHandler() failed with error -54
```

というエラーメッセージが出ました。このエラーメッセージでWeb検索すると、他のアプリケーションでの似たような例がヒットしましたが、「最新版をダウンロードして再インストールしたら治った」という例が多かった。

`open`コマンドでなく、直接実行形式ファイルを叩くと立ち上がるので、実行ファイルそのものに問題は無さそう。
```bash:実行形式ファイルを直接起動
% $macports_root/Applications/Emacs.app/Contents/MacOS/Emacs
# 正常に起動する
```
さらにWebを検索していたら、「`spctl --add (アプリケーションフォルダ)`で解決するかも」というページがみつかった。 が、この手は`macOS Sequoia (15)`ではダメな手でした。ただ、`spctl`のマニュアルを読んで、もう少し詳しい情報がわかりました。

```bash:spctlを試してみた。
% spctl --add $macports_root/Applications/Emacs.app
This operation is no longer supported. Please see the man page for more information.
 
% spctl --assess -v $macports_root/Applications/Emacs.app
$macports_root/Applications/Emacs.app: rejected
source=no usable signature
```

なんか署名がされてない、というのでrejectされているようです。

## 解決策

もうすこし真面目に`macports`のTracを調べたら[ドンピシャのもの](https://trac.macports.org/ticket/71232#comment:8)がありました。もともと[`homebrew`のバグレポートにあった回避策](https://github.com/d12frosted/homebrew-emacs-plus/issues/742#issuecomment-2449092291)みたいです。ちなみに、`Intel Mac`だと起きる問題で、`AppleSilicon Mac`では起きてないようなことが書かれていました。が、M1のMac Miniでも同じ問題おきました。(2025/3/15追記)

```bash:対処法
% sudo codesign --force --deep --sign - -v --strip-disallowed-xattrs $macports_root/Applications/Emacs.app
$macports_root/Applications/Emacs.app: signed app bundle with Mach-O thin (x86_64) [org.gnu.Emacs]
% open $macports_root/Applications/Emacs.app
# 正常に起動
```

めでたしめでたし。(***`--sign`のあとの`-`を忘れがち。***)

Emacs以外の他のアプリでも同じような問題が起きそうなので、メモとして残しておく感じです。

### 情報源

- [Macports](https://trac.macports.org/ticket/71232)
- [Homebrew](https://github.com/d12frosted/homebrew-emacs-plus/issues/742#issuecomment-2449092291)
Windows過去に使用していたプリンターが表示されてしまう場合の対処方法

1パターン目【コントロールパネルから削除する方法】
『Windows＋R』で『control』と入力しコントロールパネルの
『デバイスとプリンター』を選択します。

幽霊として表示されているプリンター名は似通ったプリンター名に本体が隠れているので、似通ったプリンター名に右クリックします。
デバイスの削除項目に複数のプリンター名が表示されていたらそれが幽霊の本体なので、本来使うプリンター名ではない名称をすべて削除してください。

2パターン目【フォルダー内のプリンタスプール内に残った印刷ジョブを消す方法】

コントロールパネル>管理ツール>サービス を起動
PrintSpoolerサービスを右クリックし停止を押す
C:\Windows\System32\spool\PRINTERSフォルダ内のファイルを全て削除
PrintSpoolerサービスを右クリックし開始を押す

以上です
How Much Did DeepSeek Cost? A Breakdown of AI Training Expenses

<h2>Introduction

As artificial intelligence (AI) continues to advance, the cost of training large-scale models has become a crucial topic of discussion. DeepSeek, an emerging AI model from China, has raised questions about the true cost of AI training. While initial reports suggest a training cost of $5.6 million, deeper analysis reveals a much higher investment. This article provides a breakdown of DeepSeek’s cost and its implications for the AI industry.

<h2>Reported Cost of DeepSeek Training

DeepSeek’s developers claimed that training their AI model cost approximately $5.6 million, using 2,048 Nvidia H800 GPUs over a three-week period. This figure primarily reflects the computational cost of a single training run.

However, experts argue that this estimate does not include key expenses such as:

1. Data acquisition and processing

2. Multiple training iterations

3. Cloud infrastructure and storage

4. Hardware investments beyond GPUs

5. Operational and staffing costs

<h2>The Real Cost: A Deeper Look

Industry analysts estimate that DeepSeek’s total cost of development could be as high as $1.3 billion, considering:

Infrastructure investments: Building AI models requires significant cloud computing and server capacity.

Energy consumption: Running thousands of GPUs for weeks demands high power usage.

Data sourcing and preprocessing: High-quality datasets are expensive and require extensive processing.

Ongoing research and model improvements: Continuous fine-tuning adds to costs.

<h2>How DeepSeek’s Cost Compares to Other AI Models

When compared to other large AI models, DeepSeek’s training cost is significant but not unusual:

<b>GPT-4 (OpenAI):</b> Estimated at $100M - $200M for training.

<b>Gemini (Google DeepMind):</b> Estimated at $500M - $1B for full-scale development.

<b>Meta’s Llama 2:</b> Estimated at $50M - $100M.

DeepSeek’s cost may be lower than these giants, but its real investment extends far beyond just GPU expenses.

<h2>The Future of AI Training Costs

With AI models becoming more complex, the cost of training will continue to rise. To reduce expenses, companies are exploring:

Efficient AI architectures (e.g., sparse models, mixture-of-experts)

Quantum computing advancements for AI training

Edge AI and federated learning to minimize cloud dependency

<h2>Conclusion

The true cost of DeepSeek’s AI training is more than just the reported $5.6 million—it involves extensive infrastructure, data, and operational expenses. As AI models become more powerful, businesses investing in AI must prepare for significant financial commitments. Intellectyx specializes in AI-driven digital transformation, helping businesses leverage <a href="https://www.intellectyx.com/services/ai-agent-development/">AI agent development company in usa</a> for automation, predictive analytics, and intelligent decision-making. Our expertise ensures scalable and innovative AI solutions tailored to enterprise needs.
PassitCertifyの問題でUS Green Building Council LEED-AP-ND試験の成功を手に入れよう

US Green Building Council LEED-AP-ND認定試験の準備は、深い知識だけでなく戦略的な準備も必要なため、困難な道のりとなることがあります。この認定試験に合格することは、あなたの専門知識を証明し、キャリアの可能性を大きく広げる重要なマイルストーンとなります。しかし、適切な学習資料がなければ、試験合格までの道のりは非常に厳しいものになります。そこで、PassitCertifyが登場します！信頼性の高いUS Green Building Council LEED-AP-ND試験対策教材を提供し、あなたの合格を確実にサポートします。

この記事では、US Green Building Council LEED-AP-ND www.passitcertify.com/pass-us-green-building-council-certification.html 認定の価値、受験者が直面する課題、そしてPassitCertifyが提供する実践的な問題集がどのように試験合格を助けるのかを詳しく解説します。

US Green Building Council LEED-AP-ND認定の価値とは？
初心者から経験豊富な専門家まで、この認定試験に合格することで多くのメリットが得られます。

✅ キャリアの選択肢が広がる – 認定資格を持つ専門家は、企業から高く評価され、より良い仕事の機会を得ることができます。
✅ 給与アップの可能性 – 認定資格を取得したプロフェッショナルは、非認定者よりも高収入を得るケースが多いです。
✅ 信頼性と認知度の向上 – この資格を取得することで、業界の基準を満たした専門家であることを証明できます。
✅ 知識の向上 – 試験準備を通じて、重要な概念、ツール、ベストプラクティスをより深く理解できます。

しかし、これらのメリットがある一方で、US Green Building Council LEED-AP-ND試験は決して簡単な試験ではありません。多くの受験者が以下のような課題に直面します。

US Green Building Council LEED-AP-ND試験の難しさ
試験に合格するためには、次のような課題を克服する必要があります。

📌 広範な試験範囲 – すべてのトピックを十分にカバーするには、多くの時間と労力が必要です。
📌 複雑でトリッキーな問題 – 理論だけでなく、実際の問題解決スキルが試されます。
📌 時間管理の難しさ – 試験時間が限られているため、迅速かつ正確に解答するスキルが求められます。
📌 信頼できる学習教材の不足 – 多くの受験者が、最新の試験情報に基づいた信頼できる教材を見つけるのに苦労しています。

こうした課題を克服するには、体系的な準備と高品質な問題集が不可欠です。それを提供するのがPassitCertifyです！

PassitCertifyがUS Green Building Council LEED-AP-ND試験合格をサポートする理由
PassitCertifyは、試験のあらゆる側面をカバーする専門的な教材を提供しています。その特徴を見てみましょう。

✅ 実際の試験に近い問題集
PassitCertifyでは、最新の試験形式に基づいた問題を提供しており、本番試験に近い環境で練習できます。これにより、試験当日に驚くことなく自信を持って解答できます。

✅ 詳しい解答解説付き
正しい答えを知るだけでは不十分です。PassitCertifyでは、なぜその答えが正しいのかを詳細に解説しているため、概念を深く理解することができます。

✅ 3つの学習フォーマットに対応
受験者のさまざまな学習スタイルに対応するため、PassitCertifyは以下の3つの形式で学習教材を提供しています。

📄 PDF版 – オフラインでの学習に最適。いつでもどこでも復習できます。
🖥 デスクトップ練習テスト – 本番試験の環境をシミュレーションし、時間管理と試験慣れを向上させます。
🌐 Webベースの練習テスト – ソフトウェアのインストール不要。どのデバイスからでも簡単にアクセス可能。

✅ 常に最新の試験内容にアップデート
認定試験は定期的に変更されます。PassitCertifyでは、最新の試験範囲に対応するよう、問題を継続的に更新しています。

✅ カスタマイズ可能な練習テスト
個々の受験者が持つ強みや弱点に応じて、カスタマイズした練習テストを作成可能。苦手な分野を重点的に学習できます。

✅ 進捗追跡と分析機能
PassitCertifyの進捗追跡ツールを活用することで、自分の強み・弱みを分析し、学習戦略を最適化できます。

✅ 期間限定！35%割引 + 90日間の無料アップデート
認定試験の準備には費用がかかりますが、PassitCertifyでは全ての学習教材が35%オフになる特別割引を実施中！さらに、購入後90日間の無料アップデートが付いているため、常に最新の試験対策が可能です。

🔥 **今すぐ35%割引をゲット！**🔥
👉 https://www.passitcertify.com/us-green-building-council/leed-ap-nd-questions.html

PassitCertifyを活用して試験合格率を最大化するコツ
PassitCertifyの学習教材を最大限に活用し、US Green Building Council LEED-AP-ND試験に一発合格するためのプロのアドバイスをご紹介します。

📅 学習スケジュールを作成する – すべての試験トピックを計画的に学習しましょう。
🔄 定期的に練習問題を解く – 一貫した学習が合格の鍵。
 間違いを分析する – 解答ミスをしっかり復習し、弱点を克服しましょう。
⏳ 本番を想定した練習を行う – タイムマネジメントを鍛えるために、制限時間内で模擬試験を受けましょう。
📢 試験の最新情報をチェックする – 試験範囲の変更に注意し、最新の内容に適応しましょう。

PassitCertifyでUS Green Building Council LEED-AP-ND試験に自信を持って挑もう！
この試験はキャリアアップの重要なステップですが、成功のカギは適切な学習ツールと効果的な準備にあります。PassitCertifyなら、実践的な問題集や分析ツールを活用して、試験合格を確実に目指せます！

💡 今すぐPassitCertifyで試験準備を始め、あなたのキャリアを次のレベルへ！ 🚀
Xcode16でProvisioning Profilesの保存場所が変更されている

## 変更前
~/Library/MobileDevice/Provisioning\ Profiles

## 変更後
~/Library/Developer/Xcode/UserData/Provisioning\ Profiles

## 情報源
https://developer.apple.com/documentation/xcode-release-notes/xcode-16-release-notes#Resolved-Issues

> Fixed: Xcode 16 stores downloaded provisioning profiles in a new location on disk, at ~/Library/Developer/Xcode/UserData/Provisioning Profiles. Xcode will still load previously downloaded profiles from the previous location. (54347894)

自動翻訳すると、
> Xcode は、以前にダウンロードしたプロファイルを以前の場所から引き続き読み込みます。

と書かれているらしい。

今までXcodeでダウンロードしたものについては、変更前の場所から引き続きロードするとのことですが、
16以降で扱うファイルは、変更後がスタンダードになると思われるので、CI/CD関連の設定見直しを検討するのが良いかもしれません。
アリババクラウド、QwQ-32Bを発表: 最先端のパフォーマンスを備えたコンパクトな推論モデル

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/alibaba-cloud-unveils-qwq-32b-a-compact-reasoning-model-with-cutting-edge-performance_602039?spm=a2c65.11461433.0.0.4ee35355zOUPsx)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# Alibaba CloudがQwQ-32Bを発表: コンパクトな推論モデルで最先端のパフォーマンスを実現

![1](https://yqintl.alicdn.com/fb3d54362445b19ca16871f8a3f021277d0d7027.jpeg)

Alibaba Cloudは、わずか320億のパラメータを持つコンパクトな推論モデル「QwQ-32B」を導入しました。このモデルは、他のより大規模な最先端モデルと同等のパフォーマンスを提供します。最新の大規模言語モデルであるQwen2.5-32B（同様に320億のパラメータを持つ）に基づいて構築されたQwQ-32Bは、AIME 24（数学的推論）、Live CodeBench（コーディング能力）、LiveBench（テストセット汚染および客観的評価）、IFEval（指示遵守能力）、BFCL（ツールや関数呼び出し能力）など、さまざまなベンチマークで優れたパフォーマンスを発揮します。

![2](https://yqintl.alicdn.com/31dee4b936bf1a60c4e0a891e606034343cb347a.jpeg)

以下の結果は、DeepSeek-R1-Distilled-Qwen-32B、DeepSeek-R1-Distilled-Llama-70B、o1-mini、そしてオリジナルのDeepSeek-R1を含む他の主要モデルとの比較において、QwQ-32Bのパフォーマンスを強調しています。

## 強化学習のスケーリングによる推論能力の向上

QwQ-32Bの卓越したパフォーマンスは、モデルの背後にある中心的な技術である強化学習（RL）の力を示しています。この技術は、広範な世界知識に基づいて事前学習された堅牢な基盤モデルであるQwen2.5-32Bに適用されました。継続的なRLスケーリングを活用することで、QwQ-32Bは数学的推論とコーディング能力において大幅な改善を示しました。さらに、このモデルは一般的な報酬モデルとルールベースの検証システムを使用して訓練され、その汎用能力が向上しました。これには、より良い指示遵守、人間の好みとの整合性、エージェント性能の向上が含まれます。

## エージェント機能の統合による高度な推論

研究チームはまた、QwQ-32Bにエージェント関連の機能を統合し、批判的に考え、ツールを効果的に利用し、環境からのフィードバックに基づいて推論を適応させる能力を持たせました。チームはさらに、エージェントとRLのさらなる統合を探求しており、推論時のスケーリングを通じてさらに高い知能を引き出すことを目指しています。

QwQ-32Bは現在、[Hugging Face](https://www.alizila.com/alibaba-cloud-unveils-qwq-32b-a-compact-reasoning-model-with-cutting-edge-performance/huggingface.co/Qwen/QwQ-32B)と[Model Scope](https://modelscope.cn/models/Qwen/QwQ-32B)にてApache 2.0ライセンスのもとオープンソースモデルとして公開されており、無料でダウンロード可能です。また、[Qwen Chat](https://www.alizila.com/alibaba-cloud-unveils-qwq-32b-a-compact-reasoning-model-with-cutting-edge-performance/chat.qwen.ai)でも利用できます。展開コストが大幅に削減されているため、消費者向けハードウェア上でも効率的に展開可能です。

[QwQ-32Bについての詳細はこちらをご覧ください：QwQ-32B: Embracing the Power of Reinforcement Learning](https://qwenlm.github.io/blog/qwq-32b/).

[QwQ-32Bの紹介ビデオを見る](https://video-intl.alicdn.com/2025/Blog/QwQ.mp4)


この記事はもともと[Alizila](https://www.alizila.com/alibaba-cloud-unveils-qwq-32b-a-compact-reasoning-model-with-cutting-edge-performance/)にてCrystal Liuによって書かれました。
材料力学(途中)「(データ分析の制限に達しました。) 単純ばりに右端等分布荷重がかかる場合の最大曲げモーメントを教えて下さい。」をAI先生に聞きました。

・データ分析の制限に達しました。**途中状態です。申し訳ありません。**
・私の**こんなアバウトな質問**にも、丁寧に回答をいただきました。ありがとうございます。
#### (旧)1回目
```
# 質問リスト
1. 単純ばりに一部等分布荷重の最大曲げモーメントを教えて下さい。
2. 上記の等分布荷重が右端です。
3. 本当ですか。
4. 本当ですか。
5. 曲げモーメントが最大となる位置が間違っていませんか。
6. 最大曲げモーメントの発生位置が区間②の端部でなくて、途中になりませんか。
7. 最終結論をsympyのソースコードで教えて下さい。
8. 結果も出力して下さい。
9. ソースコードを教えて下さい。結果も出力して下さい。
10. 結果をmarkdown形式で教えて下さい。
11. texコードでなくてもいいです。
12. 私の質問をMarkdown形式でリスト化して出力して。Markdown形式でリストからアスタリスクは削除して。
```
>失礼しました。12番の質問について、追加したリストを以下のように修正しました。

#### (最終)２日目　
・2回目、データ分析の制限に達しました。
・何だか騙された気分。
```
1. 単純梁に右端等分布荷重がかかる場合の最大曲げモーメントを教えてください。  2. 支点反力の計算が間違っていませんか。  
3. 等分布荷重の長さをaでお願いします。  
4. 上記をsympyのソースコードでお願いします。
```

# ChatGPT先生へ

>ChatGPT の回答は必ずしも正しいとは限りません。重要な情報は確認するようにしてください。
>回答抜粋

**・以下、私は実行していません。**
```python
```

```python


```

```python

```

# Gemini先生へ

# copilot先生へ

# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342)

https://qiita.com/mrrclb48z/items/b6351b48e47bcf6265c0


# いつもと違うおすすめです。

#### wikipedia 
#### Qiita
・いつもの方法

https://qiita.com/mrrclb48z/items/365a744157b7efb1715d

#### Google検索
#### 文献
Pythonで遅れ時間後に0から始まるクロック信号を生成する方法

# Pythonで遅れ時間後に0から始まるクロック信号を生成する方法

## はじめに
クロック信号はデジタル回路や制御システムで重要な役割を果たします。本記事では、Pythonを用いて **遅れ時間（delay）後に0から始まり、特定の周波数で0と1を繰り返すクロック信号** を生成する方法について解説します。

## コードの概要
以下のPythonコードでは、遅れ時間の後に0からスタートするクロック信号を作成し、Matplotlibを使って可視化します。

```python
import numpy as np
import matplotlib.pyplot as plt

def delayed_clock_signal_start_zero(t, delay, f_H):
    """
    指定した遅れ時間後に0から始まるクロック信号を生成

    パラメータ:
    t : np.array  -> 時間軸
    delay : float  -> 遅れ時間（秒）
    f_H : float  -> クロック信号の周波数（Hz）

    出力:
    np.array  -> 0と1を交互に繰り返すクロック信号（遅れ時間後に0からスタート）
    """
    clock = np.zeros_like(t)  # 初期値はすべて0
    
    # 遅れ時間を超えた部分のマスクを作成
    mask = t >= delay
    time_after_delay = t[mask] - delay  # 遅れ時間後の時間軸を0から始める
    
    # 0から始まる矩形波を生成
    clock[mask] = (np.floor(2 * f_H * time_after_delay) % 2)  # 0 → 1 → 0 → 1 ...
    
    return clock

# パラメータ設定
T_end = 0.1  # シミュレーション時間（100ms）
dt = 0.0001  # 時間刻み（100µs）
delay = 0.01  # 遅れ時間（0.01秒）
f_H = 50  # クロック信号の周波数（50Hz）

# クロック信号の周期を計算
T_cycle = 1 / f_H

# 時間軸の生成
t = np.arange(0, T_end, dt)

# クロック信号の生成
clock_signal = delayed_clock_signal_start_zero(t, delay, f_H)

# 遅れ時間と1周期を表示
print(f"遅れ時間: {delay} 秒")
print(f"クロック周期: {T_cycle} 秒")

# プロット
plt.figure(figsize=(8, 4))
plt.plot(t, clock_signal, label="Clock Signal (Delayed Start from 0)", drawstyle="steps-post")
plt.axvline(x=delay, color='r', linestyle='--', label="Delay Time")
plt.xlabel("Time (s)")
plt.ylabel("Clock Signal (0 or 1)")
plt.title(f"Delayed Clock Signal (Starts from 0, {f_H}Hz)")
plt.legend()
plt.grid()
plt.show()
```

## コードの解説

### 1. 時間軸の作成
```python
T_end = 0.1  # シミュレーション時間（100ms）
dt = 0.0001  # 時間刻み（100µs）
t = np.arange(0, T_end, dt)
```
- シミュレーションの時間範囲を `T_end` として100ms（0.1秒）に設定
- 時間刻み `dt` を0.0001秒（100µs）に設定し、高解像度で信号を生成
- `np.arange(0, T_end, dt)` で時間軸を作成

### 2. 遅れ時間後のクロック信号の生成
```python
clock = np.zeros_like(t)  # 初期値はすべて0
mask = t >= delay  # 遅れ時間後のインデックスを取得
time_after_delay = t[mask] - delay  # 遅れ時間後の時間軸を0から始める
clock[mask] = (np.floor(2 * f_H * time_after_delay) % 2)  # 0 → 1 → 0 → 1 ...
```
- `clock` 配列をすべて0で初期化
- `mask = t >= delay` によって遅れ時間 `delay` を超えた部分を取得
- `time_after_delay = t[mask] - delay` によって、遅れ時間以降の時間を0から開始
- `np.floor(2 * f_H * time_after_delay) % 2` で、0から始まるクロック信号を生成

### 3. 遅れ時間と1周期を表示
```python
print(f"遅れ時間: {delay} 秒")
print(f"クロック周期: {T_cycle} 秒")
```
- `delay` と `1/f_H`（クロック周期）を表示し、動作を確認

### 4. クロック信号のプロット
```python
plt.figure(figsize=(8, 4))
plt.plot(t, clock_signal, label="Clock Signal (Delayed Start from 0)", drawstyle="steps-post")
plt.axvline(x=delay, color='r', linestyle='--', label="Delay Time")
plt.xlabel("Time (s)")
plt.ylabel("Clock Signal (0 or 1)")
plt.title(f"Delayed Clock Signal (Starts from 0, {f_H}Hz)")
plt.legend()
plt.grid()
plt.show()
```
- `drawstyle="steps-post"` を使い、クロック信号をステップ状に描画
- 遅れ時間 `delay` に赤い破線 `axvline(x=delay, color='r', linestyle='--')` を追加
- 軸ラベルやタイトルを設定し、見やすく可視化

## 実行結果
1. 遅れ時間後に **0から始まる** クロック信号が生成される
2. 50Hz（周期0.02秒）の信号が、0.01秒の遅れの後に交互に切り替わる
3. プロットで信号の正確な動作を確認できる

## まとめ
本記事では、Pythonを用いて **遅れ時間後に0から始まるクロック信号** を作成する方法を解説しました。この手法は、デジタル回路設計やシミュレーションに役立ちます。
PHPの改善してほしいところ：未定義変数の参照、echo

最近PHPをよく使うので、PHPに改善してほしいところを書いてみる。
まず「未定義変数の参照」である。

```php
<?php
echo $aho;
```

上記のコードを実行すると

```
PHP Warning:  Undefined variable $aho in a.php on line 2
```

という警告が出力される。
だがこれはエラーにしてほしかった。

未定義変数を参照してもエラーにならないと、タイポした変数がそのまま使われ、バグになることが多い。
そのためこの仕様は改善してほしいと思う（次世代言語で）。

PHPは評判が悪かったのでどんなもんかと思って使いだしたが、意外と良い言語である。
Webアプリを大変作りやすい。個人的にはPythonより作りやすいと思う。

だが改善してほしいところはまだある。
それが「デフォルト出力のエスケープ」である。

```php:
<?php
echo htmlspecialchars("<div>aho</div>");
```

上記のコードを実行すると以下のように出力される。

```
&lt;div&gt;aho&lt;/div&gt;
```

これはタグの`<>`などがエスケープされている。
XSSを防ぐための出力である。

だが、これは標準でechoやprintfなどに実装してほしかった。
つまり標準でエスケープしてほしかったところである。

```php:
<?php
echo "<div>aho</div>";
```

と書いて、

```
&lt;div&gt;aho&lt;/div&gt;
```

と出力されてほしかった。
このエスケープ方法はグローバルな設定などで変更できるようにして、エスケープしない出力は専用の関数などを使う必要がある、とかのほうが良かった。

```php:
<?php
unsafe_echo "<div>aho</div>";
```

つまり上記のような感じである。

PHPで気になる点は私はこれぐらいである。
この記事を読んでかつ次世代インタプリタを開発する人は、これらを改善した次世代言語を作ってもらいたいところだ。

おわり
Robinhood APIの完全ガイド：機能、背景、利用手順を詳解

## はじめに

金融の世界は日々進化しており、その中でRobinhoodは投資の民主化の先駆者として注目を集めています。2013年に設立されたRobinhoodは、株式市場を大衆化するミッションを掲げ、手数料無料という革命的な取引形態を導入しました。これにより、伝統的な手数料の壁を打ち破り、散発的なトレーダーや初心者にも株式投資の門戸を開くことになりました。

Robinhoodの影響は、一般ユーザー向けプラットフォームに留まらず、開発者向けに提供される強力なツールでもあるRobinhood APIにまで及んでいます。このAPIを活用することで、プログラムを通じてアカウントと相互作用し、投資戦略の自動化が可能になります。

## Robinhoodの背景

Robinhoodの誕生は、株取引にかかる高額な手数料が不満の種であった当時の市場状況に端を発しています。創業者であるVlad TenevとBaiju Bhattは、取引手数料を撤廃し、多くの人々にとって手が届く投資プラットフォームを構築することを目指しました。設立以来、彼らのアプローチは特に若い世代の投資家を引きつけ、数百万のユーザー基盤を築くことになりました。

## 具体的な特徴とその機能

### コミッションフリートレード

Robinhoodの最も際立った特徴は、手数料がかからない取引モデルです。これにより、新規参入者は小額の資金で投資を試み、頻繁に取引を行うトレーダーはコストを大幅に削減できます。このアプローチは、従来の手数料が高かった市場を根本から変革しました。

### ユーザーフレンドリーなインターフェース

Robinhoodはそのシンプルさで知られ、ユーザーインターフェースは非常に直感的であるため、金融市場に不慣れなユーザーでも容易に操作できます。アプリは初めての投資家でも理解しやすいよう、明確なナビゲーションを提供し、リアルタイムデータや教育リソースでユーザーをサポートしています。

### 零株式取引

高価な株を購入する余裕がない投資家でも、Robinhoodは零株式取引を通じて、大規模企業の株式を部分的に所有する機会を提供しています。これにより、投資家はポートフォリオの多様性を向上させ、リスクを一定に抑えつつ、幅広い企業に投資を分散することができます。

## Robinhood APIの技術実装と利用手順

### 技術実装
Robinhood APIは開発者に非常にフレキシブルな環境を提供し、さまざまなプログラミング言語をサポートしています。APIはRESTfulアーキテクチャに基づいており、HTTPリクエストを通じて資産情報の取得や取引の自動化が可能です。APIを使用することで、開発者はカスタムアルゴリズムを作成し、事前に設定したパラメータに基づいて取引を自動的に実行できます。

### 利用手順
![robinhood-login-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/5e37b31d-87e7-407b-b296-9d0e9d829b5b.png)

1. **APIキーの取得**: まず、[Robinhoodの公式サイト](https://robinhood.com/login)でアカウントを作成しログインします。注意として、**アメリカとイギリス居住者のみ**アカウントを取得できます。

2. **コードのセットアップ**: Pythonなどのプログラミング言語を用いて、APIとの通信をセットアップします。ライブラリインストールの手順として、以下のコマンドを利用します：
   ```shell
   pip install cryptography
   ```

3. **サンプルコードの作成**: 以下のようなサンプルコードを用いてAPIを操作し、データの取得や取引の実行を行います。
   ```python
   import requests

   # 例示用コード
   def get_account_info():
       endpoint = "https://api.robinhood.com/accounts/"
       response = requests.get(endpoint, headers={"Authorization": "Bearer YOUR_ACCESS_TOKEN"})
       return response.json()
   ```

これらのステップを通じて、開発者はAPIを活用し、様々な投資活動をプログラム的に管理することが可能です。

### セキュリティと信頼性

APIの使用において、セキュリティは最も重要な側面の一つです。Robinhoodは、データの暗号化とユーザー認証を実施し、取引の安全性を確保しています。ただし、ユーザー側でもセキュリティ対策を講じ、APIキーの管理を徹底することが求められます。

## Apidogを利用したAPIの向上

APIの開発や管理を効率化するために、[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)のようなツールを使用することが推奨されます。Apidogは、開発者がAPIの設計、テスト、管理をシームレスに行うサポートを提供し、新たなAPI統合をスムーズに進めることができます。
![apidog-client-JP-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/f09bce56-5347-4564-b24b-1151200f8c48.png)


## よくある質問（FAQ）

**Q1: Robinhoodのアカウントを開設できるのはどんな人ですか？**  
A1: 現在、アメリカとイギリス居住者のみアカウントを開設できます。

**Q2: APIの使用にはどのようなスキルが必要ですか？**  
A2: プログラミングの基礎知識と金融市場についての基本的な理解が求められます。

**Q3: APIを使うことでどんなことができますか？**  
A3: 自動化された取引戦略の実施やカスタムポートフォリオアプリの開発が可能です。

**Q4: 零株式の配当はどのように支払われますか？**  
A4: 通常、現金で支払われます。
Supabaseの無料枠で直接接続するのはIPv4では無理かもしれない？

Supabaseでpsqlの接続を行おうとしました。が、うまくいきません。


```
$ psql -h db.xxxxxxxxxxxxxxxx.supabase.co -p 5432 -d postgres -U postgres
psql: error: could not translate host name "db.xxxxxxxxxxxxxxxx.supabase.co" to address: nodename nor servname provided, or not known
```

nslookupをしても失敗します。

```
$ nslookup  db.xxxxxxxxxxxxxxxx.supabase.co
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
*** Can't find db.xxxxxxxxxxxxxxxx.supabase.co: No answer
```

v6で引いてみるとちゃんと引けました。

```
$ nslookup -type=AAAA db.xxxxxxxxxxxxxxxx.supabase.co
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
db.dxcpruqasddaclemiecy.supabase.co	has AAAA address 2406:da14:xxxx:xxxxx:xxxx:xxxx:xxxx:xxxx

Authoritative answers can be found from:
```


で、psqlでこのv6アドレスを指定しましたが駄目でした。


```
$ psql -h '2406:da14:xxxx:xxxxx:xxxx:xxxx:xxxx:xxxx' -p 5432 -d postgres -U postgres
psql: error: connection to server at "2406:da14:xxxx:xxxxx:xxxx:xxxx:xxxx:xxxx", port 5432 failed: No route to host
	Is the server running on that host and accepting TCP/IP connections?
```

IPv6に詳しい方助けてください😂