OmniAICreator/Qiita-1.07M huggingface dataset:
Pointers and Arrays 4, Pointer Stew, The C Puzzle Book, p59.

Puzzle book
C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識, error(21), coding(28)
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9

The C Puzzle Book
https://efrei.poupa.net/Programmation%20en%20C/Cours/The_C_Puzzle_Book.pdf

defs.h "The C Puzzle Book"
https://qiita.com/kaizen_nagoya/items/6d284651ac1244963bd9

cf1.c, The C Puzzle Book
https://qiita.com/kaizen_nagoya/items/6b6c4b055b279502b13e

cf2.c THe C Puzzle book
https://qiita.com/kaizen_nagoya/items/0b05578f5d110487a1d3

cf3.c The C Puzzle Book
https://qiita.com/kaizen_nagoya/items/61c4c9c7382d5425d5f6

cf4.c The C Puzzle Book
https://qiita.com/kaizen_nagoya/items/2900320cb219aaa07211

program style 1, The C Puzzle book
https://qiita.com/kaizen_nagoya/items/9870d16747a82df61c58

The C Puzzle Book: Operators 1: Basic Arthmetic Operations
https://qiita.com/kaizen_nagoya/items/2a0d8277d72bfc579df6

c puzzle book op6.c
https://qiita.com/kaizen_nagoya/items/cd7a04de6b846becb2a4

c puzzle book op6.c install error
https://qiita.com/kaizen_nagoya/items/4542e50784561d5d3d3e

c puzzle book basic type 1
https://qiita.com/kaizen_nagoya/items/fdf42293421b7705c14f

c puzzle book basic type 2.c
https://qiita.com/kaizen_nagoya/items/81fb10b331cc7be90654

c puzzle book basic type 3
https://qiita.com/kaizen_nagoya/items/9c01c980c15951c6a3ef

Ｃ　Ｐｕｚｚｌｅ　Ｂｏｏｋをやる動機
https://qiita.com/kaizen_nagoya/items/962034c4e3812aeadee5

Ｃ＋＋版　Ｃ　ＰｕｚｚｌｅＢｏｏｋ
https://qiita.com/kaizen_nagoya/items/5dd0fe4700b39c2ccea3


```c:pa4.c
// THe C Puzzle Book,  p.59 Alan R. Feuer Bell Laboratories, Murray Hill, New Jersey
//Pointers and Arrays 4, Pointer Stew,
// 
#include<stdio.h>
#include "defs.h"

char *c[] = {
        "ENTER",
        "NEW",
        "POINT",
        "FIRST",
};

char **cp[] = { c+3, c+2, c+1, c };
char ***cpp = cp;

int main()
{
        printf("%s",**++cpp);
        printf("%s",*--*++cpp+3);
        printf("%s",*cpp[-2]+3);
        printf("%s\n",cpp[-1][-1]+1);
}
```
【Vue×Laravel】クエリパラメータで同じページの表示内容を切り替える方法

#### はじめに

URLのクエリパラメータで表示内容を切り替えたいことがあります。
たとえば：
- mode=1 のときはすべてのデータを表示
- mode=2 のときは特定のタイプのデータだけを表示

といった制御です。

この記事では、そんな「URLのクエリによって画面表示を切り替える」パターンを、以下の流れで実装する方法を紹介します。
この記事では、
- Laravel側でクエリを取得し
- BladeからVueコンポーネントへ渡し
- Vue側で表示を切り替え

をシンプルに実装する方法を紹介します。

### Laravelでクエリパラメータを取得してBladeに渡す
Laravelでは、コントローラーやBlade内で `request()->query()` を使えば簡単にクエリパラメータを取得できます。
取得した mode を Vue コンポーネントに props として渡します。
```php

// コントローラーやBladeでクエリを取得
$mode = request()->query('mode');

// BladeでVueコンポーネントにpropsとして渡す例
<example-component item-id="{{ $item->id }}" mode="{{$mode }}"></example-component>

```

### Vueコンポーネントでpropsとして受け取る
受け取った mode を元に、Axios で取得したデータをフィルタリングします。
```javascript

export default {
  props: ['itemId', 'mode'],
  data() {
    return {
      items: [],
    };
  },
  mounted() {
    const self = this;
    const url = `/api/items/${this.itemId}/list`;
    axios.get(url).then(function(response) {
      // modeが '2' の場合は特定typeだけ表示
      self.items = (Number(self.mode) === 2)
        ? response.data.filter(i => [1, 2, 3].includes(Number(i.type)))
        : response.data;
    });
  }
}
```

### フォームのactionにmodeを含めてリダイレクトもクエリ維持
フォーム送信後に同じクエリパラメータを維持したい場合、フォームの action にも mode を含めましょう。
```php
<form action="{{ route('item.store', ['item_id' => request()->query('id'), 'mode' => request()->query('mode')]) }}" method="POST" enctype="multipart/form-data">
  @csrf
  <!-- 入力フィールド -->
  <input type="submit" value="追加">
</form>

```

コントローラー側のリダイレクトも忘れずに
```php
return redirect()->route('item.list', [
    'id' => $item->id,
    'mode' => $request->query('mode'),
])->with($message);
```

### まとめ
- Laravelで`request()->query()`を使いクエリを取得し、BladeでVueに渡す
- Vueは`props`で受け取り、数値変換して条件分岐
- Vue 側では mode に応じて `filter()` 等でデータを出し分けできる
- フォームやリダイレクトでクエリを維持し状態管理が可能

こうした基本形を押さえれば、URLのクエリで画面表示を柔軟に切り替えられます。
プロデル、調査 その35

# 概要
プロデルが、CLRらしいので、調べて見た。
練習問題やってみた。

# 練習問題
TCPソケットで、生HTTPリクエストを取得せよ。

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/ef86faa2-ff69-45c3-a33a-c91828d6777c.png)


# サンプルコード

```
メイン画面を表示する
待機する

メイン画面とは
	ウィンドウを継承する
	はじめの手順
		初期化する
		サーバというTCPIPサーバを作る
		サーバのポート番号は、5000
		サーバの受信した時の手順は、サーバ受信する
		サーバを起動する
	終わり
	初期化する手順
		この内部領域大きさを｛500,400｝に変える
		この設計スケール比率を｛96,96｝に変える
		この内容を「TCP/IP通信サーバ」に変える
		初期化開始する
	出力欄という文章テキストを作る
		そのドッキング方向を全体に変える
		その文字サイズを14に変える
		初期化終了する
	終わり
	閉じた時の手順
		サーバを停止する
	終わり
	サーバ受信する手順
		クライアントをイベントのクライアントとする
		出力欄に「[クライアントの相手先アドレス]から接続要求がありました［改行］」を加える
		クライアントの受信した時の手順は、クライアント受信する
		クライアントを受信開始する
	終わり
	クライアント受信する手順
		出力欄に（イベントの受信テキスト）を加える
		出力欄に改行を加える
	終わり
終わり





```

以上。
【Python】静的コード解析ツール、Flake8

## Flake8
　Flake8はコーディング規約であるPEP8に準拠しているか、不具合のもとになる箇所がないかを中心に静的コード解析を行う。
　Flake8は3つの静的コード解析ツールを1つにまとめたツールである。Flake8を実行すると、これら3つのツールの観点でソースコードに対しチェックを行う。

## Flake8に含まれている静的コード解析ツール
### pycodestyle
　PEP8に準拠しているかチェックする
 https://pycodestyle.pycqa.org/

### Pyflakes
　不具合のもとになりそうな箇所はないかチェックする
 https://github.com/pycqa/pyflake

### McCabe
　コードの複雑さをチェックする
 https://github.com/pycqa/mccabe

## なぜFlake8で静的コード解析するのか
　Flake8を利用することで、PEP8の準拠だけでなくコードの不備、複雑度もチェックできる。検出された問題点を解決することでバグの発生を未然に防ぎ、読みやすいコードになる。

## 参考文献
Pythonエンジニア育成推進協会監修 Python実践レシピ 単行本（ソフトカバー） – 2022/1/19
鈴木 たかのり (著), 筒井 隆次 (著), 寺田 学 (著), 杉田 雅子 (著), 門脇 諭 (著), 福田 隼也 (著)
p.25-27
LWCからモーダルで画面フローを表示する

LightningModalとLightningFlowを使用して、画面フローを簡単にモーダル表示することが可能です。


### モーダル

```html:modal
<template>
  <lightning-modal-header label={title}></lightning-modal-header>
  <lightning-modal-body>
    <lightning-flow flow-api-name={flowName} flow-input-variables={inputVariables} onstatuschange={handleStatusChange}>
    </lightning-flow>
  </lightning-modal-body>
</template>
```

```js
import { api } from "lwc";
import LightningModal from "lightning/modal";

export default class FlowSampleModal extends LightningModal {
  @api title;
  @api flowName;
  @api inputVariables;

  handleStatusChange(event) {
    if (event.detail.status === "FINISHED" || event.detail.status === "FINISHED_SCREEN") {
      this.close();
    }
  }
}
```

### 使用方法

```html
<template>
  <lightning-button
    label="画面フロー呼び出し"
    onclick={handleClick}
  ></lightning-button>
</template>
```

```js
import { LightningElement, api } from "lwc";
import flowModal from "c/flowSampleModal";

export default class FlowSample extends LightningElement {
  @api recordId;

  handleClick(event) {
    flowModal.open({
      title: "サンプル",
      flowName: "ScreenFlowName",
      inputVariables: [
        {
          name: "recordId",
          type: "String",
          value: this.recordId
        }
      ]
    });
  }
}
```

## 参考

- [LightningMordal | Developers](https://developer.salesforce.com/docs/component-library/bundle/lightning-modal)
- [LightningFlow | Developers](https://developer.salesforce.com/docs/component-library/bundle/lightning-flow/documentation)
NotebookLM利用には問題定義を念頭に考えよう

# まえがき
今回は
**NotebookLMを使った情報の取り方**
**どうやって解決策を導くための情報を手に入れるのか**をお話しさせていただきます！:open_hands:


## 目次

- [ ] 1.NoteBookLMで自分だけの辞書を作る
- [ ] 2.辞書に適しているのはどんなソースか
- [ ] 3.膨大な情報からどうやって問題定義するのか





## 1.NoteBookLMで自分だけの辞書を作る

https://notebooklm.google.com/

NotebookLMは最近Googleが開発した、画期的なAI情報整理ツールです。
こちらに情報を整理すると**いろいろな恩恵**があります。
とにかくカテゴリ別に、資料をどんどんソース化していきましょう。
ちなみにソース化できるもの、できない代表的なものは以下になっております。

- できるもの
>・PDF
・txt
・Googleドキュメント
・Googleスライド
・Youtube
・mp3（音声ファイル）
・markdown
・Webサイト
・コピーしたテキスト

- できないもの
>・Google Spreadsheet
・Googleフォーム
・Office系のファイル ~~（そりゃそう）~~ 
・mp4（動画ファイル）


業務に関係あるものを出すと漏洩になってしまいますし色々めんどくさいので、一例として趣味の競馬で使っている方法を書きます。

下記画像にあるのは、JRA中央競馬の中山、東京の各レースの集計データです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3777947/71cf597a-e72c-4216-ac98-353ce3d9a0cb.png)

競馬というものは、コース別やその距離種別により、狙うべき馬や厩舎が変わったりします。
毎レース条件に合った馬を選びたいわけですが、なかなか全ての条件を頭に入れて予想するのは難しいです。

そこで、自分が中山ダート1200のレースをどうしても当てたいと思い、血統から考えたいと仮説を立てたとして、例えば以下の文言をチャットに記載したとします。

>中山ダート1200の攻略を教えてください。

と記載すると以下の答えが返ってきます。

>血統の傾向
>中山ダート1200mで好成績を収めている種牡馬（血統）として、
>ヘニーヒューズ、サウスヴィグラス、ゴールドアリュールが挙げられています。
>キンシャサノキセキ産駒もよく走るとのことです。
>ロードカナロア産駒は、後方からの競馬では厳しく、前の方で競馬をする必要があると述べられています。
>父系統で見ると、ノーザンダンサー系が勝率、連対率、複勝率、単勝・複勝回収率で
>他の系統よりも高い成績を示しています

馬の名前が多すぎてわけわかんないと思いますが、これは中山ダート1200で3着以内になりやすい馬の父親の血統は何かを整理してくれています。これで血統はわかりますね。父ヘニーヒューズ、サウスヴィグラスなどの今回出てきた血統の馬に狙いを定めることができそうです。

これはほんの一部で、**整理されたデータが多いほど**、項目ごとに整理して出力してくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3777947/2c4d1093-cea8-4277-b2bd-b61f8e732508.png)

~~横山典弘さんの解説がしっかりとありますね、競馬はギャンブルだ。~~

ここまでの情報があれば、狙いたい馬が素人でもわかると思います。

-　父ヘニーヒューズ、サウスヴィグラス、ゴールドアリュール、キンシャサノキセキ
-　騎手がルメール、三浦皇成、田辺裕信、戸崎圭太
-　調教師　堀厩舎、森秀行 etc...

この条件の馬を買っておけば、回収率が出そうですね！
~~現実はそううまくいかないので、馬券は自己責任で買いましょう。~~

## 2.適しているのはどんなソースか

先ほども触れたとおり、**整理されたデータ量が多ければ多いほど**、その分NotebookLMがカテゴリ別に整理してくれるので、楽になります。
普通のWebサイトだと、大体のサイトが可読性を担保してくれている場合、カテゴリ別に整理してくれるので、ある程度何とかなりますが、これがカテゴリ別に整理されていないぐちゃぐちゃのデータがソースになっている場合ですと、無機質な数値を出力しているのみになっています。

以上により、ソースに適するものは以下であると考えられます。

- **1.カテゴリ別に整理されたデータ**

- **2.なるべく大量のデータ**

- **3.（音声ファイルの場合）時系列順に並べられているデータ**

※Youtube動画は、mp3と音声の両方をデータのソースとして変換しているようで、解説動画などでよくある**動画内にある画像やスライドの内容は記載されない**ことは念頭に置く必要があります。


## 3.膨大な情報からどうやって問題定義するのか

それは、
**出力したい情報は何なのかを自分の頭で考える必要がある**ということです。

ソースにせっかくデータを追加しても、自分が何を探したいのか、また自分が何を問題だと思っていて、そのための解決策を導き出すのには何が必要か考える必要があります。
膨大なデータの中で何が必要なのかの情報を考えるフォーマットを用意します。

- 1.問題は何なのか
- 2.そのために必要な情報は何か
- 3.どう伝えるか

この中で一番重要なの・。
**1.問題は何なのか**です。

**問題＝あるべき姿に共通認識がない状態**
を指します。

研修中に耳にタコができるぐらい聞いたかもしれませんが、以下の4点から考えるのが大事です。
>What
>問題の明確化→どの程度の問題か？
>Where
>問題箇所の特定→どこが悪いのか？
Why
原因の追及→なぜ、そうなっているのか？
Who
問題の解決を欲している対象→誰が欲しているのか？
How
解決策の立案→どうすればいいのか？

を考えていけば、問題が見えてきます。

この問題が分かれば、

- 2.そのために必要な情報は何か＝where
- 3.どう伝えるか＝Who、How

は決まったようなものです。
問題解決に使った5W1Hカテゴリから当てはめて考えていきましょう。

## あとがき

NotebookLMで自分の頭では把握できない情報はこれから数えきれないほど出てきます。
その中で重要になってくるのは、**問題を正しく定義する力**と考えられます。
頭の中を整理して、問題内容を把握することによって、必要な情報が得られるはずです。
それだけでなく、NotebookLMに情報を取りに行くプロセスは、これから研修生や新社会人がお世話になる上司、先輩、顧客に対しての質問回答、レビューの練習になります。

今回お話したことは、意識すれば簡単なことばかりで、NotebookLMを使っていると意識しなくても勝手にできているように見えることかもしれません。
しかし、今回のような問題定義ができていなかったことにより問題解決が遠ざかり時間だけを浪費する時間を過ごした経験から今回の記事を書きました。

是非、**問題定義**を念頭に業務を進めていきましょう！
面倒な logger 設定、もうやめませんか？― loguru のすすめ

ログって大事なのはわかってるけど、**logger の設定って面倒くさくないですか？**

* 「`logger`？ `logging`？ どっちだっけ？」
* 「PoC（検証用コード）だからそんな細かくログレベルとか決めてないし…」
* 「とりあえず `print()` でいいや」

──これ、全部ぼくのことです。

でも、**「とりあえず print」** から卒業したい、**ちゃんとしたログがほしい**って思ったときに出会ったのが [`loguru`](https://github.com/Delgan/loguru) でした。



## `loguru` ってなに？

`loguru` は、Python の標準ライブラリ `logging` の複雑さを解消するために作られた、**シンプルでパワフルなロギングライブラリ**です。

特徴をざっとまとめると：

* ✅ 初期設定ゼロでも使える（`logger.info("Hello")`だけでOK）
* ✅ ログレベル、色付き出力、ファイル保存などが超簡単に設定できる
* ✅ 呼び出し元（ファイル名・行数）も自動で出してくれる
* ✅ print のような感覚で書けるのに、ちゃんとログ



## まずは使ってみよう

インストールは pip で一発：

```bash
pip install loguru
```

使い方は超シンプルです。

```python
from loguru import logger

logger.info("Hello, world!")
```

これだけで、以下のような見やすいログが標準出力されます：

```
2025-05-22 10:00:00.000 | INFO  | __main__:<module>:3 - Hello, world!
```

色もついてて見やすい（ターミナルによりますが）。



## print の代わりに logger を

PoC（Proof of Concept）の段階だと、複雑なログ設定をするより `print()` で済ませたくなる気持ち、わかります。

でも `loguru` なら、**print と同じくらい気軽に書けるのに、ログとしての便利さが段違い**です。

* いつ・どこで出たログかがわかる
* あとからログレベルだけ変えてデバッグログを出すのも簡単
* ファイル出力やフィルタリングも一行で追加できる

```python
logger.add("debug.log", level="DEBUG")
logger.debug("これはファイルに出力されるよ")
```



## 標準の `logging` との違いは？

| 機能         | `logging`     | `loguru`             |
| ---------- | ------------- | -------------------- |
| 初期設定       | 必須            | 不要                   |
| 色付き出力      | 自力で設定必要       | デフォルトで対応             |
| 呼び出し元の情報表示 | 自力で設定必要       | 自動で表示                |
| ログファイル出力   | Handler 設定が必要 | `logger.add()` 一発でOK |

Python 標準の `logging` モジュールは柔軟性はありますが、**設定が面倒な割に手軽さが足りない**んですよね。



## まとめ：とりあえず loguru にしとこう

もし今「logger の設定どうしよう」「めんどい」「print でいいか」と思ってるなら──
**次からは `loguru` をインポートして始めてみてください。**

```python
from loguru import logger
```

これだけで、ちょっとだけ **"ちゃんとしたエンジニア" 感**が出せますよ（しかも実際に便利）。



## おまけ：Python に慣れてる人向けの補足

Python 標準の `logging` に慣れてる人からすると、「`loguru` ってただの糖衣構文でしょ？」って思うかもしれません。でも、使ってみるとその**開発体験のスムーズさ**に驚くと思います。

**シンプルだけど拡張性もある**──そのちょうどいいバランスが `loguru` の良さです。
受託開発で地味に効く提案時の設計Tipsまとめ【実務提案強化ガイド】

## はじめに

受託開発では「設計提案の良し悪し」で信頼感・単価・継続案件化が大きく左右されます。コードの綺麗さ以上に、**最初の提案段階で「任せられそう感」を出せるかどうかが案件化の鍵**です。

この記事では、実務で実際に使っている **「提案時に地味に効く設計Tips」** を整理します。

---

## 想定読者

* フリーランス・受託開発エンジニア
* 提案段階の設計を強化したい方
* 継続案件化しやすい設計力を磨きたい方
* 顧客折衝力をエンジニア観点で鍛えたい人

---

## 1. 全体設計図を必ず初期で提示する

✅ **「構成図1枚あるだけで信用感が爆上がり」**

例：

```bash
Next.js App Router構成
TypeScript型安全設計
TailwindCSS UI構成
Zustand / React Query 状態管理
NextAuth.js 認証管理
Vercel / Netlifyホスティング
API設計 (REST/GraphQL)
```

* 技術選定理由も添えると安心感UP
* 専門用語も「わかりやすく翻訳して説明」するのがコツ

---

## 2. 保守性・拡張性を先に提案しておく

✅ **「あとから仕様変更があっても柔軟に対応できます」**

* 状態管理を分離（Zustand / React Query役割分離）
* API通信も型安全で実装（OpenAPI / zod活用）
* レイアウトをネスト設計（App Router活用）
* ディレクトリ構成を明示（src/feature-based構成 など）

---

## 3. パフォーマンス・SEO対策も軽く触れる

✅ **「Web Vitalsも意識して設計可能です」**

* LCP, INP, CLS 対策設計を説明
* next/image活用、LazyLoad実装、不要レンダリング抑制
* SSR/ISRの使い分け理由を明示
* Lighthouseスコア改善提案

👉 **企業の広報・マーケ側にも響く提案材料になる**

---

## 4. 管理画面・SaaS案件なら認証設計も先出し

✅ **「安全な認証設計も組み込みます」**

* NextAuth.jsベース提案
* OAuth連携有無の確認
* JWT運用の適否説明
* CSRF/XSS対策も設計反映済み

👉 **「セキュリティ面も意識してます感」が強い信用材料になる**

---

## 5. 案件の進め方自体も提案する

✅ **「進行面でも負担を減らせます」**

* 仕様ヒアリングテンプレを用意
* FigmaからのUI連携フロー提示
* GitHubでの共有管理提案
* CI/CD自動化（Vercel, Netlify, GitHub Actions）提案

---

## 6. 継続保守の設計もチラ見せする

✅ **「納品後も継続保守しやすい設計にします」**

* バージョン管理戦略提示（依存ライブラリアップデート計画）
* 型安全とテスト戦略で不具合低減策を先出し
* 設計書や構成資料のドキュメント作成提案

---

## まとめ：受託提案のコア方針

✅ 技術提案だけでなく「**運用イメージまで見せる**」

✅ 説明のうまさではなく「**安心感があるか**」が重要

✅ 初期設計図 + 保守性配慮 + 運用提案の3点セットで圧倒的に有利

---

## おわりに

提案設計力は単なる営業力ではなく **「案件後半で効く設計資産作り」** そのものです。

ここまで整理できると、受託でも継続案件でも **「長く任せられる人」** ポジションが取れます。

Qiitaでは今後もこういった**受託開発・提案強化の設計Tips**を発信していきますので、ぜひLGTM・フォローお願いします！
Structures 1: Simple Structure, Nested Structure, The C Puzzle book, p.63

Puzzle book
C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識, error(21), coding(28)
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9

The C Puzzle Book
https://efrei.poupa.net/Programmation%20en%20C/Cours/The_C_Puzzle_Book.pdf

defs.h "The C Puzzle Book"
https://qiita.com/kaizen_nagoya/items/6d284651ac1244963bd9

cf1.c, The C Puzzle Book
https://qiita.com/kaizen_nagoya/items/6b6c4b055b279502b13e

cf2.c THe C Puzzle book
https://qiita.com/kaizen_nagoya/items/0b05578f5d110487a1d3

cf3.c The C Puzzle Book
https://qiita.com/kaizen_nagoya/items/61c4c9c7382d5425d5f6

cf4.c The C Puzzle Book
https://qiita.com/kaizen_nagoya/items/2900320cb219aaa07211

program style 1, The C Puzzle book
https://qiita.com/kaizen_nagoya/items/9870d16747a82df61c58

The C Puzzle Book: Operators 1: Basic Arthmetic Operations
https://qiita.com/kaizen_nagoya/items/2a0d8277d72bfc579df6

c puzzle book op6.c
https://qiita.com/kaizen_nagoya/items/cd7a04de6b846becb2a4

c puzzle book op6.c install error
https://qiita.com/kaizen_nagoya/items/4542e50784561d5d3d3e

c puzzle book basic type 1
https://qiita.com/kaizen_nagoya/items/fdf42293421b7705c14f

c puzzle book basic type 2.c
https://qiita.com/kaizen_nagoya/items/81fb10b331cc7be90654

c puzzle book basic type 3
https://qiita.com/kaizen_nagoya/items/9c01c980c15951c6a3ef

Ｃ　Ｐｕｚｚｌｅ　Ｂｏｏｋをやる動機
https://qiita.com/kaizen_nagoya/items/962034c4e3812aeadee5

Ｃ＋＋版　Ｃ　ＰｕｚｚｌｅＢｏｏｋ
https://qiita.com/kaizen_nagoya/items/5dd0fe4700b39c2ccea3

# Structures 1: Simple Structure, Nested Structure, p.63

```c:st1.c
// The C Puzzle book p.63 Alan R. Feuer Bell Laboratories, Murray Hill, New Jersey
// Structures 1: Simple Structure, Nested Structure, The C Puzzle book, p.63
// https://qiita.com/kaizen_nagoya/items/f32769f4e76f5cc05776
// Dr. Kiyoshi Ogawa, 2025/06/11
#include "defs.h"

int main(void){
        static struct S1{
                char c[4], *s;
        } s1 = {"abc", "def"};

        static struct S2 {
                char * cp;
                struct S1 ss1;
        } s2 = { "ghi", { "jkl", "mno" }} ;

        PRINT2(c, s1.c[0], *s1.s);
        PRINT2(s, s1.c, s1.s);

        PRINT2(s, s2.cp, s2.ss1.s);
        PRINT2(s, ++s2.cp, ++s2.ss1.s);
}
```
comile and go
```shell-session:bash
$ gcc st1.c
$ ./a.out
s1.c[0] = a     *s1.s = d
s1.c = abc      s1.s = def
s2.cp = ghi     s2.ss1.s = mno
++s2.cp = hi    ++s2.ss1.s = no
```
Windows用Gitクライアントとして、GitKrakenが有料だが便利だったので、SourceTree使いの観点で違いをまとめました

# 概要

Windowsで使えるGitクライアントは多数ありまして、私はSourceTreeをずっと使っていました。

そこでGitKrakenが良いよという話を聞き、試しに使ってみたところ不満点がかなり解消したので、本格的に使い始めました。そこで、SourceTreeと比較する形で、GitKrakenの何が良いのかを紹介しようと思います。SourceTreeを批判する意図はなく、差分としてGitKrakenが良いと思った点・悪いと思った点を書きます。

GitKrakenはパブリックリポジトリ以外で使うには有料ですが、個人で1ライセンスを使う分には今のところ月に225円くらいでそれほど高いわけでもないので、特徴にピンとくる点があれば検討してみると良いと思います。

https://www.gitkraken.com/pricing

# 最初に結論まとめ

「公式の日本語化がない」「メニューが多すぎて逆に迷う」というGUI上の問題点や、FileやHunk単位でのコミット無しRevertの操作がないという細かい問題はありました。しかし、多くの点では優れていてとても使いやすいと感じたため、お勧めです。

# 説明

GitKrakenの特徴をSourceTreeとの比較も交えて箇条書きで紹介していきます。ただし、これは私が理解しているSourceTreeとの比較です。もし私が知らないだけでSourceTreeにも同じ特徴があったらすみません。コメント等で指摘してもらえると嬉しいです。

## GitKrakenの方が機能が多い点

1. git worktreeがUI上で使えて、worktreeの切り替えもできる
2. ファイルのStage/Unstageがワンクリック（ファイル名の上にボタンがポップアップする）
3. プロファイル切り替え機能があって、プロファイルの切り替えによってメアドや認証情報を使い分けられる
4. ターミナルをGitKrakenのリポジトリタブの中に開ける
    1. どちらが良いかは好みだが、個人的にはSourceTreeの「独立した別ウインドウでgit bashを開く」より管理しやすいと思う
5. GUIからブランチがある場所をcheckoutする時に、ブランチをチェックアウトするかコミットをチェックアウトするか選べる
    1. 地味だが、別のWorkTreeでチェックアウト済みのブランチと同じ場所をチェックアウトしたい時など、これがあると便利
6. 各スタッシュについて、どのブランチ上で行ったものなのかが、ブランチツリー上へ表示される
7. ブランチのチェックアウト時に、ff関係にあるリモートブランチがあれば、マージもまとめて実行してくれる
    1. どちらが良いかは好みだが、ff関係にあるケースでは最新のコードを見たい場合が多いので、自動でやってくれるのは助かる（branch -fなどで手動でやらなくても済む）

## GitKrakenで問題が解消した点

1. GitHubなどの認証が安定している。GitKrakenはOAuthで接続すれば、その後に認証のトラブルが起きていない
    1. 私の環境だけかもしれないが、Windows上のSourceTreeでは、認証周りで色々（[この記事](https://qiita.com/spc_ksudoh/items/703bf0a3137a5acf3858)など）悩んだり、認証済みのはずが急に認証プロンプトが出てきたり、妙にトラブルが多いので
2. 開いているタブ一覧の自動保存が安定している
    1. 私の環境だけかもしれないが、SourceTreeではなぜかタブのオープン・クローズを自動保存してくれる時とダメな時があり、閉じてもアプリを起動し直すと復活するタブなどがあったので

## GitKrakenの方がいまいちと思った点

1. FileやHunk単位でのRevert（コミット無し）の操作がない。 
    1. この議論などを見る限り、無さそう https://stackoverflow.com/questions/43275419/reverting-one-file-in-gitkraken
    1. コマンドで`git revert —no-commit`など、手動で解決するしかない？
2. 右クリックのコンテキストメニューの数が多すぎて、目的の操作を見つけづらい
    1. 便利さとトレードオフだが、それにしても多い気はした
3. 公式の日本語化が無い

## 使っていて感じた違い

明確な機能差ではないものの、使っていて感じた違いを書きます。

1. タスクマネージャを見た印象程度の話だが、SourceTreeは動く時にgitプロセスを多数起動するためかディスク使用率が高く、GitKrakenは単独プロセスで動作してCPU使用率が高い感じに見える
    1. そのため私の環境ではセキュリティソフトとの関係などでGitKrakenの方が軽く感じる
2. GitKrakenはブランチツリーの中にStatus表示やコミットの欄があり、SourceTreeはそれらが2つの画面に分かれている
    1. どちらが良いかは好みだが、SourceTreeは画面を切り替える度にリロードが始まるようで切り替えながら操作していると急にカーソルが一番上に飛ぶなど不満があったので、個人的にはGitKrakenの動作の方が好み
3. GitKrakenはマージを行う際にmergeとff(fast-forward)のメニューが分かれていて、ff可能でもmergeを選ぶとマージコミットが作られる。SourceTreeはmergeを選ぶとffになります
3. 起動時のクラーケンらしき浮遊キャラクターが可愛い

## 変わらない点

普段使いしている便利な機能はSourceTreeにもGitKrakenにも一通り有った。Stage/Unstageを分ける分割ウインドウ、コミット時にammendするチェックボックス、コミットしてそのままpushするチェックボックス、複数のリポジトリをタブで管理して切り替える機能など。

# まとめ

使って感じた違いをまとめてみました。こうしたツールには好みがあるので、GitKrakenを使ってみたいと感じた人、それなら不要だなと感じた人、色々だと思います。

ツールは作業効率に直結するので、気になった人はぜひ試してみてください！
Kaggle-Kalorie Expenditure(カロリー予測）

# 初めに
６ヶ月、プログラミングスクールを通じて、自分は機械学習を学びました。
そこで、ここまで学んだスキルを活かし、kaggleのKalorie Expenditure（カロリー予測）にチャレンジしてみました。
ここでは、そのまとめとしてブログにまとめます。

# チャレンジ内容
![2025-06-10 13.19の画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4106573/2b6bbe0b-bb3e-4d33-a2fa-7844364441af.jpeg)
今回、チャレンジする内容は、上の写真であり、データセットは以下になります。
![2025-06-10 13.36の画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4106573/223dcc7b-0e3a-4906-b511-5caa2206a6ea.jpeg)
ID除いて、全部で８種類の要素から予測を行うものでした。（Body_Temp、異様に高くね？笑）

# 流れ、使うモデル

使うモデル:RandomForestClassifier

1.ファイルダウンロード
![2025-06-10 14.00の画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4106573/ed5a8bdb-29d2-4bd7-bd98-1715de43806d.jpeg)

2.pandasでtrain.csv(test.csv)の可視化,osでsubmission形式の確認
![2025-06-10 14.01の画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4106573/b8816b84-6ae5-4fc4-a33f-645e25f8ccb8.jpeg)

3.
DrupalのCSS/JS圧縮がddevで効かない？帯域幅最適化が反映されない原因と対処法

Drupalでは、「帯域幅の最適化（英名：Bandwidth Optimization）」を行うことで、CMSの弱点であるアクセス速度の遅さを改善できます。

この機能は、CSSやJavaScriptのファイルを圧縮・統合することで、パフォーマンスを向上させるものです。

https://blog.redbox.ne.jp/drupal-advent-calendar2016-cdn.html

## 設定方法

Drupalの管理画面から「開発 > パフォーマンス > 帯域幅の最適化」 に進み、「CSSを圧縮」「JavaScriptを圧縮」にチェックを入れるだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124948/7c1fe600-616b-47cc-a38c-c715d81234e5.png)

## 発生した問題

本題です。

ddev環境では、このオプションを有効にしても、圧縮が有効にならないことがあります。

## 対処方法

local.settings.php を編集し、下記パラメタを有効化します。

```./sites/default/settings.local.php
 /**
  * Disable CSS and JS aggregation.
  */
 $config['system.performance']['css']['preprocess'] = TRUE;
 $config['system.performance']['js']['preprocess'] = TRUE;
 ```

 ※ `$config['〜']['〜'] = FALSE;` のままにしてしまうと、いくら管理画面で有効化しても反映されません。

 ## 確認

 出力された HTML を確認します。

 ### 反映前

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124948/975a201e-d8c4-4773-b813-75971f8c2cad.png)

### 反映後

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124948/acb2c43d-2dcd-4648-9109-73097bd59739.png)

CSSファイルが1つにまとまり、圧縮が機能しているのが分かります。

## 終わりに

帯域幅の最適化はちょいちょい表示崩れ等の原因になることがあります。

https://qiita.com/J_Sugar__/items/46ca63896eb2d67ae518

これに気づかないと、「ローカルで帯域幅さいてきかｎ不具合事象を再現しようとしてるのに、そもそもローカルで帯域幅最適化を有効にすることができない！」となってしまうので、ご活用いただけますと幸いです。
テクニカルサポートエンジニアの ChatGPT 活用術

## はじめに

いつも大変お世話になっております。tarohida と申します。

今回は、テクニカルサポート業務において ChatGPT (plus) を活用した事例について記載します。

## 利用環境

* ブラウザ (Chrome)
* ChatGPT Plus (https://chatgpt.com/)
* Service Cloud

## メールの要約

> 以下のメールを要約、および時系列記載してください
> 「>」は引用です。
> 以下メール文 ...

まずはメールの要約です。

引用で長くなったメール文を Ctrl+A で一括選択、コピーし、 ChatGPT にペーストします。

要約して欲しい旨とともに投稿すると、内容の要約を行なってくれます。

また、要約だと直近の内容だけをまとめて経緯が抜けるので、別途経緯記載もするよう指示することが多いです。

残念ながら、要約を読むと元のメール文を読まなくて良くなるわけではありません。

要約は概要の把握に役立てつつ、元のメール文にも目を通します。

概要把握をした上で読むため、元のメール文に目を通すのが早くなります。

## メール文の作成

> 以下の内容から、返信を作成してください。
> 以下箇条書き ...
> 
> フォーマットについては、下記のようにしてください
> 以下過去に送ったメール文のコピーペースト ...

次に、返信の作成です。
要約してもらった内容に対し、返信を作成するのにも利用できます。
自分で書いてしまった方が早いことも多いですが...

特に、内容がまとまっていないときに有用です。
箇条書きを渡すと、たまに「お、ええやん」というような文章を生成してくれたりします。

なお、大概文脈が微妙におかしくなり、そのままでは使えないので、部分的に流用します。

## タスク管理

今までに送った内容から、 ChatGPT はメールの内容を把握しています。

Service Cloud では件名にケース番号が発行されるため、「現在対応中のケースについて列挙して」等入力すると、現在対応中のケースの一覧が得られます。

Service Cloud とは何か、ケースとは何か、自分は誰で、所属は何か、どういう仕事を行なっているのか、どういう商材を扱っているのかという説明を別途 ChatGPT に行なっておけば、より良い回答が得られるでしょう。

## bash スクリプトの作成

ChatGPT は bash 等のスクリプト言語と非常に相性がよいです。

`|` 等のパイプ、 `if`, `for` 等の bash のロジックは人間が扱うと厄介ですが、 ChatGPT とは相性よく動作します。

> 下記のコマンドを 100回実行し、その結果をそれぞれ加工し...
> するスクリプトを bash で書いてください

というような内容を指示すると、いい感じのスクリプトを作成してくれます。

cmd, powershell 等についても同様です。

## 注意事項

顧客情報等、機微な情報の取り扱いにはご注意ください。

## 最後に

この記事は ChatGPT の手を借りて執筆し...ていませんでした。
私のChatGPTカスタムプロンプト

# カスタムプロンプト

```md
##  共通ルール（すべての会話に適用）
1. **回答言語**  
   - 参考文献がどの言語でも、**出力は必ず日本語**とする。  
​
2. **回答の構成（3 章立て）**  
   1. **質問への直接回答**  
      - ユーザの問いに対し、最も要点を押さえた結論を端的に述べる。  
      - 事実・数値・根拠を示す際は出典を必ず併記する。
   2. **追加の洞察・提案**  
      - 回答から導かれる示唆、応用アイデア、今後深掘りできる疑問などを論理的に示す。  
      - 必要に応じて手順例やベストプラクティスも含める。
   3. **知識の限界・不明点**
      - 現時点で確証を持てない情報、未検証・未確認の領域、推測を含む部分を列挙する。  
      - 「分からないものは分からない」と明言し、安易な埋め草（ハルシネーション）を避ける。  
      - 不明点を解消するための追加データ取得方法や確認ステップを提案するとより親切。

3. **基本ガイドライン**  
   - 事実・数値・根拠を示す際は出典を必ず併記する。  
   - 不確かな情報は「推測」と明示する。  
   - 曖昧さが残る場合はユーザへ追加質問を行う。  
   - 上記 3 章以外の冗長な前置きや後書きは付けない（簡潔さを優先）。  
   - 3 章それぞれの見出しにはmarkdownの"##"を用い、"## 1. 質問への直接回答 "のようにする

4. **回答テンプレート例**

   ---
   **質問への直接回答**  
   - …（要点／結論）  
   - …（出典）  

   **追加の洞察・提案**  
   - …  
   - …  

   **知識の限界・不明点**  
   - …（一次資料未確認、統計誤差など）  
   - …（不足データの収集手段を提案）  
   ---
```

   # 期待していること
   - 常に同一の論理構成で回答すること
   - 「知識の限界・不明点」セクションを設けることで、推論の段階で「知らないことについて考える」ことを促す
Geminiでクラゲと遊ぶ魔法少女を描いてみた。

# 概要

Geminiでクラゲと遊ぶ魔法少女を描いてみました。

# 実装

プロンプトと実行結果は以下の通りでした。

```
光のクラゲと遊ぶ魔法少女を描いてください。
```

![光のクラゲと遊ぶ魔法少女_20250611.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192024/ae1bd1b5-0ebc-4e4d-8e51-f254f8433d08.png)

# まとめ

何かの役に立てばと。
学習7日目

# 学習したこと
htmlにおける表形式の記述方法

# 内容
table タグ
・・1つの表のまとまりを表す。

tr タグ
・・table row の略。表の行を表す。

th タグ
・・table header の略。表の見出しを表す。

td タグ
・・table data の略。表のデータを表す。

例えば、氏名と年齢の表を作成したい場合は、下記のようになる。
```
<table>
  <tr><th>氏名</th><th>年齢</th></tr>
  <tr><td>田中 太郎</td><td>30歳</td></tr>
  <tr><td>田中 次郎</td><td>29歳</td></tr>
  <tr><td>田中 三郎</td><td>28歳</td></tr>
</table>
```

# 感想
1行を横並びで記述すると読みづらいので、インデントをつけてtr、th、tdごとに改行した方が良いと感じました。
作成中のオリジナルアプリで表形式のデータ表示させる必要があるので、インスタンス変数やeachと組み合わせて使うことになりそうです。
微分方程式とベクトル場

# はじめに
微分方程式は、物体の運動を叙述する場合やベクトル場を描写したい場合などに用いられる。そこで、今回は$xy$平面において$y'=f(x,y)$で与えられる微分方程式を数値計算してベクトル場を描写する。ただし、$y'=f(x,y)$は、変数分離型で解くことのできるものを扱い、変数分離型の解法を用いて解いた解と計算機での数値計算結果を比較して齟齬が無いことを確認する。

# 例題1(同心円状のベクトル場)
$\frac{dy}{dx}=-\frac{x}{y}$を変数分離で解き、数値計算での結果と比較する。

## 変数分離型の解法

$ydy=-xdx$と変形することができるので、両辺を以下のように積分する。

```math
\int ydy=-\int xdx
```

```math
\frac{1}{2}y^2+C_1=-\frac{1}{2}x^2+C_2
```

ただし、$C_1,C_2$は積分定数とする。上式を整理すると以下のことが分かる。

```math
x^2+y^2=r^2
```
ただし、$r\ge 0$とする。

## プログラム
以下のようなプログラムを作成する。
```python differential_equation.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
# ドット数
n=1000
#xy座標系における描写範囲
L=1
# x軸の刻み幅
dx= 2*L/(n-1)

x=np.linspace(-L, L, n)
y=np.linspace(-L, L, n)
X, Y = np.meshgrid(x, y)
U = np.zeros((n, n))
V = np.zeros((n, n))
for p in range(n):
    for q in range(n):
        xx=X[p][q]
        yy=Y[p][q]
        #微分方程式
        f_y=-xx/yy
        U[p][q]=dx
        V[p][q]=f_y*dx        

plt.streamplot(X, Y, U, V, color='blue', density=1.5, linewidth=0.5, arrowsize=1.5)
#plt.quiver(X, Y, U, V, color='blue', angles='xy', scale_units='xy', scale=1)
plt.savefig('流れ.png')
plt.show()
```

これを実行すると以下のようなグラフが出力される。



![流れ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/3ed255b1-cbb4-4e3a-a5bb-2481fdc979c7.png)

同心円状の流れの場を描写することができた。
したがって、以上の結果から理論解と数値計算による結果は一致する。




# 例題2(原点を通る直線状のベクトル場)
$\frac{dy}{dx}=\frac{y}{x}$を変数分離で解き、数値計算での結果と比較する。

## 変数分離型の解法

```math
 \frac{1}{y}dy=\frac{1}{x} dx
```

と変形できるので、両辺を以下のように積分する。

```math
 \int \frac{1}{y}dy= \int \frac{1}{x} dx
```

```math
 \ln |y|+C_1 = \ln |x| +C_2
```

```math
 \ln |\frac{y}{x}| = C
```

```math
  |\frac{y}{x}| = \exp(C)
```

```math
y=ax
```

ただし、$C_1,C_2,C,a$は実数の定数とする。

# プログラム
以下のようなプログラムを作成する。

```python differential_equation2.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
# ドット数
n=1000
#xy座標系における描写範囲
L=1
# x軸の刻み幅
dx= 2*L/(n-1)

x=np.linspace(-L, L, n)
y=np.linspace(-L, L, n)
X, Y = np.meshgrid(x, y)
U = np.zeros((n, n))
V = np.zeros((n, n))
for p in range(n):
    for q in range(n):
        xx=X[p][q]
        yy=Y[p][q]
        #微分方程式
        f_y=yy/xx
        U[p][q]=dx
        V[p][q]=f_y*dx        

plt.streamplot(X, Y, U, V, color='blue', density=1.5, linewidth=0.5, arrowsize=1.5)
#plt.quiver(X, Y, U, V, color='blue', angles='xy', scale_units='xy', scale=1)
plt.savefig('流れ2.png')
plt.show()
```

![流れ1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/cf88578f-8033-4316-95f8-19783363b399.png)

原点を通る直線状の流れの場を描写することができた。
したがって、以上の結果から理論解と数値計算による結果は一致する。


# まとめ
今回は、$xy$座標系において微分方程式を解くことで、流れの場を描写するということに挑戦した。具体的には、まず、変数分離型で解くことのできる微分方程式を2題扱い、それを理論的に解いた。次に、その理論解と比較するために、計算機を用いた数値計算を実行して流れの場を描写した。最後に理論解と数値計算解に差がないことを確認した。微分方程式は、理論的に解くことができない場合が圧倒的に多い。したがって、数値計算が重要になる場合も多い。
# 参考文献

https://amzn.asia/d/28qHVJH
技術継承担当のAIキャラを作りたい！③


# 0,はじめに
この記事は技術継承担当のAIキャラを作りたい！②の続編です！
②以降に作成した新機能や生成AIなんでも展示会Vol.3(04/26)から生成AIなんでも展示会in京都(06/07)で更新した内容などについてまとめられたらと思います！まだ①②を読んでいない方は先にそちらを読んでいただくことを推奨します。

https://techplay.jp/event/978816

# 1.コーディング機能（04/26）
![2025-04-23_031500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921462/baedb3a3-714c-4887-8bfe-106a2d6d6e1f.png)
画像だと見づらいかもしれませんがチャット欄で「会話モード」と「コーディングモード」を切り替えられるようにしました。コーディングモードではロボットサッカーで使用しているサッカーロボットのプログラムを自然言語だけで書き変えて動かすことができるようになっています。
このシステムに関しては記事があまりにも長くなってしまうので最新版のコーディングシステム（ロボット管理システム）について後日別の記事を作成する予定です。

### じゃあ展示は成功したの？
**NO!!**　最低限は動きましたがロボットを扱う機能については絶望的なものでした
- ロボット側に通信キャッシュがたまりすぎて停止が反映されず動き続ける
- コード変更をお願いしても9割エラーで失敗する
- 仕様としてコーディングと会話で分けてるとノアにお願いしてる感が損なわれる
- 修正しようにもそもそもファイル設計が絶望的にひどすぎて常に違うバグが生まれる

会話モードが安定していたためなんとか展示として成り立ちましたが、これでは当初の目的である世代を超えた継続的な開発は到底叶いませんしこの問題を解決しなければ拡張性も保守性もないので大規模なアーキテクチャ改善をおこなうことにしました。


# 2.アーキテクチャ改善(06/07)
まずはこの改善前と改善後のアーキテクチャの図をご覧ください

![archetecture2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921462/47fb6f53-25e5-47ea-982a-f0b3167070ea.png)




見るからに構造が変化しています。
このアーキテクチャ改善では拡張性と拡張性を担保するために**単一ファイル単一責任の原則**や**モジュラー設計**を意識させてバックエンド全体をclaude4様に全面改修させました。claude4が出る以前Gemini2.5proを利用していた時は行数が1000行を超えるとコンテキストに入ったとしても大分性能が下がってしまうような印象がありました。しかしこの大規模な改修によって一ファイルで多くても600行以内に収まるようになり、大分安定してコーディングできるようになりました。（僕じゃないよAIが）
またノアにMCPクライアントとしての役割を持たせることで追加機能が複雑に絡まらないように改修し、コーディング機能についても独自のMCPサーバーを構築して接続する方式に変更しました。

# 3.ディスコードRAG(06/07)
ここディスコード周りの開発経験が僕よりもあるメンバーにぶん投げました。
既に記事にしてくれているのでこちらを読んでいただけると幸いです。

https://qiita.com/maluyuu/items/d45eb37133ef0b9ae2ad

# 4.フロントエンド改善(06/07)
これは京都で展示するときに前回から変化がなさすぎると二回目に見る人がつまらないだろうなと思ったので急遽前日に行いました。サルドラさん(@sald_ra)の制作したサイトで利用されているarwesというUIフレームワークの雰囲気が好みだったので使わせていただきました。デバッグモード時にUI全体が黄色色に発光するのがかっこよくて気に入っています。

https://aotsuki-hayate-web.onrender.com/

![2025-06-06_150021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921462/46b1fa0b-5b80-439b-9a0c-0b1f8806001f.png)


# 5.展望
なんやかんやで私が部活を卒業するまでもう一二か月程度になりました。技術継承を掲げて開発を始めたNoahProjectもそろそろ完成させないといけません。機能としてはほとんど完成していますが唯一残された鬼門はノアに声を与えることです。展示会の交流会の中で「声を決めるときには戦争が起きる」ということを教えていただいたので引退する前にどうにかそこまでは終わらせたいと思います。できたら文化祭までに終わらせたい！！（既に三日前）
排他的論理和(XOR)で比較して同じ時は、0を返して遊ぶ。


いろいろ注意
----

- arduinoの予定は、未定


プログラム
----

オンラインコンパイラpaiza

```c++


#include <iostream>
using namespace std;
int main(void){
    // Your code here!
    
    int a = 46;
    int b = 46;
    
    int c = a ^ b;
    
    printf("%d xor %d = %d\n",a,b,c);
    
}




```


```

46 xor 46 = 0

```
【Reactアプリ】APIキーの管理

## 1.	プロジェクトルートに .env ファイルを作成：
```.env
REACT_APP_TWELVE_DATA_API_KEY=新しいAPIキー
```
## 2.	process.env から読み込むようにコードを変更：
```js
const API_KEY = process.env.REACT_APP_TWELVE_DATA_API_KEY;
```
## 3.	プロジェクト直下にある .gitignore ファイルを開いて、次の1行を追加します：
```.gitignore
.env
```
【2025年6月】CodexでC#開発を行う

# はじめに

　最近ChatGPT Plusでも使えるようになった「Codex」。C#のコードを生成することはできるのですが、そのままだと環境内で`dotnet run`などを使ってコードを実行することはできません。
 　しかし、環境のセットアップスクリプトに.NETのインストールを指示したことで、`dotnet`コマンドが使用可能になりました。

# セットアップ手順

1. ブラウザからCodexにアクセスする
1. 右上「環境」をクリック
1. 設定したい環境を選択
1. 「編集」ボタンをクリック
1. セットアップスクリプトに後述するスクリプトを追加
1. エージェントのインターネットアクセスを「有効」にする
1. ドメイン許可リストを「共通の依存関係」にする
1. 右下の「環境を保存する」ボタンをクリックして保存

```
# まず、Microsoftパッケージリポジトリのキーとリポジトリを追加
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

# パッケージリストを更新し、SDKをインストール
sudo apt update
sudo apt install -y dotnet-sdk-8.0
```

# テスト手順
1. 右側の「ターミナル」でスクリプトを実行
1. 成功すると`Test Complete`と出力される
1. コマンドを実行`dotnet --info`
1. 以下、出力される

```
dotnet --info

=.NET SDK:
 Version:           8.0.117
 Commit:            2384d0f6c2
 Workload version:  8.0.100-manifests.ce0da8a5

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  24.04
 OS Platform: Linux
 RID:         ubuntu.24.04-x64
 Base Path:   /usr/lib/dotnet/sdk/8.0.117/

.NET workloads installed:
 Workload version: 8.0.100-manifests.ce0da8a5
There are no installed workloads to display.

Host:
  Version:      8.0.17
  Architecture: x64
  Commit:       77545d6fd5

.NET SDKs installed:
  8.0.117 [/usr/lib/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 8.0.17 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 8.0.17 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  Not set

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download
```

# 今後の拡張アイデア
 - スクリプトを`.codex/setup.sh` や `dotnet-setup.sh` などに保存
 - `AGENT.md`にも明記
など

CodexでC#や.NETの開発を行いたい方は、この手順を踏むことでコードの生成だけでなくテストの実行までができる可能性が高いです。

　ここまで読んでいただき、ありがとうございました。
【Python初心者】Flake8とBlackの要点まとめ

Flake8 と Black について、自分なりに要点を整理しました。  

## Flake8（静的解析ツール）

### Flake8とは？

- Pythonコードの **静的解析ツール**
- コードのエラーやPEP8違反を **検出**（修正はしない）
- 内部的に以下の3つのツールを統合している：
  - `pyflakes`（構文エラー・未使用変数など）
  - `pycodestyle`（スタイル違反チェック）
  - `mccabe`（複雑度のチェック）

### Flake8の導入

```bash
pip install flake8
```

### Flake8の使い方（基本）

```bash
flake8 script.py
```

### よく使うオプション

| オプション | 内容 |
|------------|------|
| `--max-line-length=88` | 行の長さ制限を88文字に設定 |
| `--ignore=E501` | 特定のエラー（ここでは行が長すぎる）を無視 |
| `--exclude=venv` | 特定のディレクトリを解析対象から除外 |

### プラグイン例（必要に応じて拡張可能）

- `flake8-bugbear`：より詳細な品質チェック
- `flake8-docstrings`：docstringのルールチェック
- `flake8-import-order`：インポート順のチェック

インストール例：

```bash
pip install flake8-bugbear
```

## Black（自動フォーマッタ）

### Blackとは？

- **コードを自動で整形**してPEP8に準拠させるツール
- 誰が使っても同じスタイルに整形される（一貫性がある）
- 「**意見のないフォーマッタ（The Uncompromising Code Formatter）**」と呼ばれる

### Blackの導入

```bash
pip install black
```

### Blackの使い方（基本）

```bash
black script.py
```

### よく使うオプション

| オプション | 内容 |
|------------|------|
| `--check` | 整形が必要かだけをチェック（変更はしない） |
| `--diff` | 変更点の差分を表示 |
| `--line-length 88` | 最大行長を88文字に設定（デフォルト） |

---

## Flake8とBlackの違い

| 項目 | Flake8 | Black |
|------|--------|--------|
| 処理 | エラーを**検出** | コードを**整形** |
| 修正 | しない | 自動で行う |
| 行長のデフォルト | 79文字 | 88文字 |
| 主な目的 | スタイルや構文エラーのチェック | コードスタイルの統一 |

### Flake8とBlackは併用について
Flake8でコードの**スタイル違反や構文エラーを検出**し、Blackでコードを**自動整形**するという流れで**補完的に併用できます**。  
特にチーム開発やレビュー前の整備に便利です。

---

## まとめ

- Flake8 はエラーを検出するツール、Black は整形するツール
- どちらも **PEP8 に準拠する**ために使う
- 「どちらが整形ツールか」「どちらがチェックツールか」などの**役割の違い**を覚えること
GCP未利用者がPCAに受かった話

## はじめに

今回の話は私と同じくらいの状態から、どれぐらいでPCA合格できるのか
一つの参考としてお読みいただければと思います。

受験のモチベーションとしては、
AWSの資格勉強をCloudLicenceでやっていて、有料期間の日数が余ったので
付属していたPCAの資格も取ろうかな〜くらいです。

PCAの出題内容を深く理解することは目的にしてなかったです。
（PCAに受かる＞＞＞＞GCPを理解する）

**受講前の状態**
* AWSの実務経験 4~5年
* AWS12冠
* GCPは名前とBigQueryというサービス名だけ知ってる

## 勉強期間＆方法

勉強期間は2週間（正味２日）です。
勉強に使用した有料サービスは、CloudLicence、ChatGPTの2つ。

### 1日目
1. PCAの合格記を見て、何となくの学習量と勉強方法を調べる
有料の学習教材は、CloudLicenceしか使わないと決めていたので、
無料で解ける公式の模擬問題や、出題範囲のまとめを見てました。
　
2. AWSとGCPのサービス対応表を見る
AWSの知識をGCPに結びつけるイメージでやりました。ここで学習時間を大幅に削減できたと思います。
AWSのサービス対応表（GCP公式）
https://cloud.google.com/docs/get-started/aws-azure-gcp-service-comparison?hl=ja
　
3. CloudLicenceの問題集を1セット（7問）を解く
この時点で6/7問を正解して、合格を確信して余裕ぶっこいて、この日の勉強は終了しました。
後から思えば、選択肢式なのでただのマグレだったと思います。
---

### 13日目

2~12日目はどうした！！！ってツッコミが聞こえてきそうですが、
余裕かましていたら、受験日の前日までスキップしてました。

1. CloudLicenceの問題集を4セット（35問）を解く
11/35問正解で、正答率30%程度でアセり始める。
問題文の意味や解説で分からないことは全部ChatGPTにぶっ込んで解説してもらいました。

2. GCP公式の模擬問題を解く
確か8/20問正解くらいでした。模擬問題は本番では出ないと割り切り、答えと解説は見てません。
GCP公式の模擬問題
https://docs.google.com/forms/d/e/1FAIpQLScpVCxsKSrqMBmqJ4fiYrJfCSlMhJVIFaW_v3MD4xEd6NW0Bw/viewform?usp=sf_link&hl=ja
　
3. CloudLicenceに戻って、問題集15セット（105問）解く
最後の20問くらは正答率50%くらいあったと思います。
　
4. 試験直前までは、間違えた問題の見直し

## さいごに

試験はテストセンターで受験しました。画面UIがAWSの時のピアソンビューと違って、最初は少し戸惑いましたが特に問題なく解けました。

ただ試験中、1度だけ接続不良で試験が中断しました。
画面には「接続復活するまで待ってね。3分以内に接続戻らなかったら、試験やり直し。」みたいなことが書いてあり少し焦りました。2分くらいで接続は復活しました（笑）

回答終了後にテスト結果は画面に出てきてました。正式な合格通知は２日後にメールで来ました。
なんかカッコいいです認定証が取得できます。（多分かっこいいのはCEOのサインだけ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3403411/ecd3fce6-08ff-49ae-852d-38bfb042a7d6.png)

個人的な感覚では、AWS SAAより簡単に感じました。
AWSのように紛らわしい選択肢が少なく、問題文も短く読みやすかったです。
（日本語翻訳は変なところが多い印象でした！）

どなたかの参考になれば幸いです。
AMD Ryzen AIソフトウェアのインストール方法（覚書き）

AMD Ryzen AIソフトウェアのインストール方法があまりにも情報が少なすぎてドはまりした件について

１．ネットに情報が少なくて、トラブルの時の対策方法が見つからない
　　（おかげで時間をかけて自分で調査が必要でした）
２．公式さいとでのインストール手順の説明がざっくりしているので、手順通りやっても成功しない。
　　（詳しい人にとっては常識なのか・・・？）
３．説明が英語
　　（単純に英語が苦手・・・）

おかげで、インストールだけなのに、4,5時間もかかってしまった（汗
以下、備忘録的に手順をまとめます。

## インストールするPCのスペック（ノートPC）
　・AMD Ryzen(TM) AI 9 HX PRO 375 プロセッサー
　　（28論理コア (12CPU + 16GPU)、24MBキャッシュ、2-5.1GHz）
　・64GB (オンボード、LPDDR5X)
　・AMD Radeon(TM) グラフィックス （プロセッサー内蔵）
　・Windows 11 Pro

## 依存関係
　・Windows11：build >= 22621.3527
　・Visual Studio：2022
　・cmake：version >= 3.26
　・Anaconda or Miniconda：Latest version

## 実際に使用したバージョン
　・Windows11：build 26100.4202 (Windows 11 Pro 24H2)
　・Visual Studio：2022
　・cmake：4.0.2
　・Anaconda or Miniconda：Miniconda3 py313_25.3.1-1 (Python 3.13.2 64-bit)

## インストールの手順
　１．NPUドライバのインストール
　２．Visual Studioのインストール
　３．cmakeのインストール
　４．Anaconda or Minicondaのインストール
 　　　オプション：
　　　　・「Add anaconda3 to my PATH environment variable.」にもチェックする
　　　　・ただし、既に他の環境など構築していると影響あるので注意
       
　５．以下のパスを主導で環境変数PATHに追加
 　　　※ユーザー定義の[環境変数のPATH]ではありません）
　　　　C:\Users\<ユーザー名>\miniconda3
　　　　C:\Users\<ユーザー名>\miniconda3\Scripts
　　　　C:\Users\<ユーザー名>\miniconda3\Library\bin

で、ここまで作業が終了したら必ずPCを再起動！！！
（これをしていなくて、手間取った・・・）

　６．AMD Ryzen AIソフトウェアのインストール
　　　結構終了まで時間がかかるので、気長にお待ちください

　７．C:\Program Files\RyzenAI\1.4.0\quicktestの一部を以下のように修正
 
```python
def get_apu_info():
    # Run pnputil as a subprocess to enumerate PCI devices
    command = r'pnputil /enum-devices /bus PCI /deviceids '
    process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()

    #ここから=================================
    try:
        output = stdout.decode('utf-8')
    except UnicodeDecodeError:
        output = stdout.decode('cp932', errors='ignore')

    # Check for supported Hardware IDs
    apu_type = ''
    if 'PCI\\VEN_1022&DEV_1502&REV_00' in output: apu_type = 'PHX/HPT'
    if 'PCI\\VEN_1022&DEV_17F0&REV_00' in output: apu_type = 'STX'
    if 'PCI\\VEN_1022&DEV_17F0&REV_10' in output: apu_type = 'STX'
    if 'PCI\\VEN_1022&DEV_17F0&REV_11' in output: apu_type = 'STX'
    if 'PCI\\VEN_1022&DEV_17F0&REV_20' in output: apu_type = 'KRK'

　　#ここまでを書き換え=================================
    return apu_type
```
※とりあえずの覚書なので、あまり参考にならないかもしれませんがご了承ください。
コントロールファイルについて

# はじめに
開発現場でよく、「コントロールファイル」という言葉を耳にすることがあります。
でも、「結局それって何のためにあるの？」「設定ファイルと何が違うの？」と疑問に思ったことはありませんか？

この記事では、コントロールファイルの役割や使われ方を初心者向けにわかりやすく解説していきます。


# コントロールファイルとは

簡単に言うと、**「処理の流れを制御するための情報が書かれたファイル」** のことです。

* たとえば、以下のような情報が書かれていることが多いです：
* どのファイルを対象に処理するか（例：CSVファイル名）
* 処理開始日時
* データ件数
* 処理ステータス（正常終了／異常終了）
* 実行するバッチの種別

つまり、プログラムそのものではなく、プログラムに渡す**指示書**のような役割を持っています。


# よく使われるケース

### 1. バッチ処理の管理

<pre>
[例] 
daily_20250611.ctl
FILE_NAME=data_20250611.csv
RECORD_COUNT=10000
EXECUTION_DATE=2025-06-11
STATUS=READY
</pre>

このファイルを元に、処理プログラムは対象ファイルを読み込み、「件数が一致しているか」「ステータスがREADYになっているか」を確認してから処理を始めるように作られています。

### 2. データ連携・ETL処理

他システムとのデータ連携（ファイル受け渡し）の際に、「このファイルは正しく届いたか」「処理すべきタイミングか」などをコントロールファイルで判断します。

ETL（Extract, Transform, Load）処理とは、複数のデータソースからデータを抽出し、必要な形に変換し、分析やデータウェアハウスに格納する一連のデータ統合プロセスです。

# 設定ファイルとの違いは？
| 種別| 内容| 例|
|---------|---------|---------|
|設定ファイル（config）| システム全体の設定| DB接続情報、APIのURLなど|
|コントロールファイル|個々の処理に対する制御情報|ファイル名、件数、処理日時など|

設定ファイルはシステムの環境を定義し、
コントロールファイルは処理ごとの実行内容を定義すると覚えるとわかりやすいです。

# コントロールファイルを使うメリット

* 処理状況を記録・追跡できる
* 異常時の原因特定がしやすい
* 再処理やエラーリカバリが柔軟になる
* 外部システムとの受け渡しが明確になる

# まとめ
* コントロールファイルは処理を「制御」するためのファイル
* バッチ処理やETL処理などでよく利用される
* 処理対象や状態、件数などの情報を記載
* 設定ファイルとは目的が異なる

システム開発においては「目立たないけどとても重要な役割」を担っているのがコントロールファイルです。
バッチ処理に関わるなら、一度サンプルを見てみるのがおすすめです！
「EC2のCPU使用率が急上昇したので原因を調査してほしい」と言われてやったこと

## 発端
私はインフラ（AWS）周りのテックリードとして、社内のプロジェクトで発生した困りごとの対応をしています。
今日あるプロジェクトにて、「EC2のCPU使用率が急上昇したので原因を調査したい。一緒に見てくれないか」と依頼を受けたので一緒に調査した。

## まずは該当のEC2のCPU使用率を確認

そのプロジェクトのインフラ構成はシンプルなALB+EC2インスタンス2台。
通常時の平均CPU使用率は10%だが、2台とも同じタイミング（深夜1:40~2:00頃）に60%まで上昇し、その後10%に戻っていることをCloudWatchメトリクスから確認できた。
2台同時ということは各EC2インスタンスがそれぞれ固有で使用しているリソースが原因ではなさそう（EBSとか)。

## データベースのメトリクスを確認
このプロジェクトではデータベースとしてAurora for PostgreSQLを使用していた。
当時間帯に絞ってメトリクスを見たが、こちらは問題なし。

## キャッシュサーバーのメトリクスを確認
キャッシュサーバーとしてElastiCacheを使用していたので同じくメトリクスを見たが、こちらも問題なし。

## ALBのアクセスログを確認
ALBはデフォルトでアクセスログを取れないのだが、このプロジェクトのALBは有効になっていた。
ログを確認すると見慣れないパス（`/.credential`、`/storage`的な）へのアクセスログが大量に出てきた。・・・怪しい。
まあセキュリティの会社が脆弱性診断のために意図的に意図的に攻撃的なパスでリクエストを送るパターンもあるが、深夜&事前連絡なしであることを考慮するとあり得ない。
ログに残っている送信元IPアドレスも海外のものだった。
悪意のある第3者が大量リクエストを送った結果、CPU使用率が上がった。


## 今回の問題点
AWSコンソールを画面共有して色々見せてもらうと、外部からこのALBへのアクセス許可がされていた。
普通はALBに紐づくセキュリティグループで送信元IPアドレスを絞れるが、プロジェクトの要件上いろんなユーザーからアクセスできるようにする必要があるため全開放していた。

あと問題なのがEC2にオートスケーリング設定が入っていなかったこと。
これでは万が一大量アクセス継続して実行されるとEC2インスタンスが処理しきれず通常リクエストも捌けなくなる。
（今回のアクセスは瞬間的だから良かった。）

## 対策案
今回私からプロジェクト担当者に提案したのは以下２つ
#### AWS WAFの導入
WAFならレートリミットをかけられるし、IP/地域で絞ることもできる。
ALBなら直接WAFをアタッチできる。よりセキュアになるし、WAFはそこまでコストもかからない。
（特別なAWSマネージドルールを付与するなら別料金がかかるが、今回は取り急ぎ不要と考えた）
ただしWAFをいきなり導入すると通常リクエストも弾く可能性があるので、まずはカウントモードで試すよう伝えた。

#### EC2オートスケーリングの設定
WAF導入は（上記フローを考慮すると）やや手間と時間がかかるので、まずはサクッと設定できるこちらを実施するよう伝えた。

#### アクセスログをCloudWatch Logsに出力する
今回はALBのログから調査できてよかったが、このプロジェクトではインスタンスで稼働しているアプリログが確認できなかったのでCloudWatch Logsに出力するよう伝えた。
フルスタック開発者の「多重人格」：ローカル環境でPHP、Node.js、Pythonを同時に実行する必要があるとき

![5ca776ee-9ca0-470c-b029-2838e2a24a6b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4107514/8d257cc0-be8f-4272-a015-14aa4be7cc34.png)

フルスタック開発者として、私は毎日、人格が分裂するドラマを演じている。

午前9時、私は「PHP職人」となり、巨大なレガシーWordPressプロジェクトを保守し、頭の中は$記号、echo、composerでいっぱいだ。


午前11時、プロダクトマネージャーの一声で、新機能開発に切り替える。脳を再起動し、「Node.js信者」モードに入り、async/await、npm、package.jsonと格闘し始める。
![截屏2025-06-11 1.10.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4107514/3a6d5d09-4db8-488e-b177-bb08f2fe445b.png)


午後3時、バックエンドからデータ処理のリクエストが来て、私はまた「Python錬金術師」に変身し、Jupyter NotebookとPandasの世界に没頭しなければならない。
![截屏2025-06-11 1.13.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4107514/1154d53e-8258-4b79-9409-91c0f7c6933b.png)


私の脳は、長年の訓練により、これらの「人格」間をスムーズに切り替えることができる。しかし、私のlocalhostは、明らかに私のペースについてこれず、精神崩壊寸前だ。

あなたもこの感覚がわかるはずだ：

ポート戦争： Node.jsの3000ポートを起動したばかりなのに、PythonのFlaskもそれを使いたがり、ターミナルはAddress already in useの赤いエラーで埋め尽くされる。
バージョン地獄： WordPressのあるプラグインはPHP 7.4しか認識しない が、最近引き受けたLaravelプロジェクトはPHP 8.2 を必要とする。その結果、brew switch php@7.4とbrew switch php@8.2が、私が毎日最もタイプするコマンドになる。
データベースジャグリング： 古いプロジェクトはMySQL を、新しいプロジェクトはPostgreSQL を使用する。私は両方のデータベースサービスが稼働していることを確認し、どちらが3306でどちらが5432で動いているかを常に覚えておく必要がある。
ターミナルの迷宮： あるターミナルウィンドウではnpm run devが、別のウィンドウではPHP-FPMが、また別のウィンドウではPythonスクリプトが実行されている。
私たちは名目上「フルスタックエンジニア」だが、実際には「ローカル環境の曲芸師」になっている。新しい技術を導入するたびに、私たちのローカル環境はより脆弱で、より混沌としていく。

私はDockerですべてを解決しようと試みた。それは美しく聞こえたが、すぐに私は混乱をある場所から別の場所に移しただけだと気づいた。複数のdocker-compose.ymlファイルを管理し、複雑なネットワークと格闘することは、「薬」が「毒」よりも苦いと感じさせた。

私が本当に必要としていたのは、手動で編成する必要のある「部品」の集まりではなく、**「統一された指令センター」**だった。

最終的に、私は**Servbay(https://www.servbay.com/)** を見つけた。それは私のすべてのツールを置き換えようとはせず、優雅にそれらすべての「総指揮者」となった。
![日语.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4107514/15645785-f93e-42ba-b681-5c9c2eec7d3f.png)


Servbayがあれば、私の混沌とした午前はこうなる：

Servbayのパネルでは、PHP、Node.js、Pythonは、いつでもアクティブにできる3つのスキルアイコンのようだ 。

古いWordPressプロジェクトのためにlegacy.wp.testというホストを作成し、ドロップダウンメニューからPHP 7.4バージョンを割り当てた 。
Node.jsマイクロサービスのためにapi.node.testを作成した。

MySQLとPostgreSQLも、パネルでワンクリックでオン/オフできる2つの独立したサービスとして存在する 。
![截屏2025-06-11 1.15.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4107514/9b056547-bc40-4a97-9a40-402ee77167db.png)


すべての混乱が、クリーンなグラフィカルインターフェースによって鎮められた。Servbayは私の「多重人格」を癒し、私の各「技術的人格」に、清潔で、独立し、いつでも準備ができている家を提供してくれた。

フルスタック開発者にとって、真の挑戦は複数の言語を学ぶことではなく、それらがもたらす複雑さをいかに優雅に管理するかということだ。 あなたのツールは、複雑さを隠すべきであり、作り出すべきではない。
💡 MulmoCast の使い方

# MulmoCast：AI時代の“話す・描く・伝える”を変えるマルチモーダル生成ツール

## イントロダクション

あなたが語りたいストーリー、説明したいアイディア、伝えたい知識――。  
それを「スクリプト1つ」で、**動画・ポッドキャスト・PDF・マンガ**など、多様な形に自動で変換できたら？  
**MulmoCast**は、まさにそんな時代を拓く、OSS発の“AIネイティブ”マルチモーダル生成ツールです。

2025年6月、v0.0.11リリースでさらに進化した本プロジェクトは、従来のPowerPointやKeynoteとは一線を画します。  
**AIが台本を書き、素材をつくり、映像を編集する**――まるでジブリ映画の魔法のような自動化を、あなたの手元に届けてくれます。

---

## MulmoCastとは？

MulmoCastは、  
- **LLM（大規模言語モデル）**が「何を伝えたいか？」を受け取り  
- 独自の「MulmoScript」スクリプト（JSON/YAML）を生成  
- そしてCLIで音声、画像、動画、PDFなどをワンコマンドで合成  
する、**人間とAIの協働ワークフロー**を実現します。

ポイントは、  
“動画もマンガも、**ひとつのスクリプトから**生み出せる”  
こと。たとえば「AI時代の学び方」というテーマでスクリプトを書けば、そのままSNS用の短尺動画やPodcast、配布用のPDFスライドや、マンガ風のストーリーまで生成できるのです。

---

## コア技術と仕組み

### MulmoScript
制作の中心となるのは「MulmoScript」と呼ばれるJSONベースの脚本フォーマット。  
台本、画像指示、BGMや効果音、字幕テキストなど――  
**プレゼンの全要素を一元管理**できます。

### CLIによる自動生成
- スクリプト作成から
- 音声合成（mulmo audio）
- 画像生成（mulmo images）
- 動画合成（mulmo movie）
- PDF出力（mulmo pdf）
- 多言語翻訳（mulmo translate）

これらがすべて **コマンドライン1本**で完結。  
しかもOpenAI（GPT-4o）、Anthropic Claude、Google Gemini、Groq Llama3など**複数のAIモデル**に対応し、将来的なモデル差し替えもコマンドだけで済みます。

---

## 多様な出力と使い道

MulmoCastの強みは「アウトプットの多様性」。  
- SNS用ショート動画（16:9や9:16も対応）
- 本格的な解説動画（ジブリ風アニメもOK）
- Podcast番組（実際に“Mulmocast Tech Insights”がApple Podcastで配信中）
- スライド・PDF（配布用/ハンドアウト両対応）
- さらにマンガコマ割りも！

このすべてが **MulmoScriptひとつ**から自動で生成されるため、  
発信チャネルごとに内容を作り直す必要がありません。

---

## AIとの連携と拡張性

2025年6月のv0.0.11からは、  
- **GraphAI callback**の導入により、ワークフローエンジンやエージェント型AIとの統合がより簡単に。
- 画像や音声の生成APIも“差し替え前提”で設計されており、今後新しいAI技術が登場してもMulmoCast側のコマンドで切り替え可能です。

コミュニティ開発も活発で、  
テンプレートや機能追加、Node.js SDK化、YouTube Shorts特化などの**新機能も続々と開発中**です。

---

## 使い方：始めるには？

1. `npm install -g mulmocast` でCLIを導入  
2. `brew install ffmpeg` などで動画合成環境も準備  
3. `.env`ファイルにOpenAI等APIキーをセット  
4. まずは `mulmo tool scripting -i -t ghibli_strips -o ./ -s my_story` でスクリプト生成  
5. そのスクリプトを `mulmo audio ...`, `mulmo images ...`, `mulmo movie ...` で一気にコンテンツ化！

---

## 強みと課題

### 強み
- **AI時代のクリエイター体験**をCLIベースで実現  
- 1つの脚本で何度も使いまわせる「再利用性」と「多様性」  
- GraphAIなど最新AIワークフローともスムーズ連携  
- プログラマブルな設計で自動化やCI/CD連携も容易

### 課題
- MulmoScriptは高度に抽象化されているため、ノンエンジニアには「最初の学習コスト」がある  
- APIを多用するため、生成コスト（料金）にも注意が必要  
- テンプレートの拡充やGUI化などは今後の課題

---

## 今後と展望

MulmoCastは「AIが書き、描き、話す」プレゼン・教育・広報の**新しい標準**を目指しています。  
今後はGUIやテンプレートのマーケットプレイス、Node.jsライブラリ化、YouTube/Podcast等メディア連携の強化など、多くの進化が期待されています。

---

## まとめ

**MulmoCastは、“伝える”のあり方を根本から変えつつあるOSSです。**  
あなたのストーリーや知識を、世界中どこでも、どんなメディアでも、ワンコマンドで届けられる――。  
**AI時代の“話す・描く・伝える”を、ぜひ体験してみてください！**

> GitHub: [receptron/mulmocast-cli](https://github.com/receptron/mulmocast-cli)

※本記事の内容は、ChatGPTによる生成結果と、公式GitHubリポジトリおよびgitの使用方法に関する情報を参考にまとめています。

MulmoCastの利用することによりプロンプトエンジニアリングでの操作が不要でかつ安定した成果物を取得できます。さらに利用して新しい発見があればまた記事で共有しようと思います。
Amazon Q CLIでゲームを作ってみた

## 概要
Xをみていたところ下記投稿を見つけました。
無料枠もあり、Tシャツも貰えるとのことだったので挑戦してみました。

https://x.com/ymotongpoo/status/1929446115830599799

### 環境情報
windows11
WSL利用　(ubuntu 24.04.1 LTS)


## できたもの
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846414/707e87e2-d3b8-48eb-a457-48fb8f618de0.png)

とくぎを選択すると、MP消費で技が使えるようになってます。
まほうも同じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846414/9ff43d16-f53b-4577-866d-f00dbc941373.png)

AmazonQをインストールし、いろいろ質問してみたところ上記画像のようなものができました。
無料枠で制限がある状態だったので、有料枠にし前提条件などをきっちり詰めてあげるともっといいものができそうです。

こちらがAmazonQに質問を投げてみると、自動でファイルを作成してテストまでしてくれました。
最近cursorを使っていたのですが、なぜかbedrockのAPIキー経由で利用できなくなったので
乗り換え先としていいのかなと思いました。
【書評　6月10日発売！】Microsoft Power Automate［実践］入門

著者のギークフジワラさんよりクラウドフローの入門本を献本いただきました。
ずっしり重く、かなり分厚いですがキャプチャが多め・初心者の方🔰向けとなっているので、Power Automateとは…？プログラミングわからない…という方でもあっという間に読めてしまいます。
2025年6月10日発売なので、発売済み！書店やECサイトで購入できます！

https://gihyo.jp/book/2025/978-4-297-14933-8

※本当は発売前にすぐに書評を書きたかったのですが、時間がなくこちらの本と一緒にオセアニアへ旅をして今に至ります。。。

## 本の概要
本書は3Partに分かれていて、基本編・リファレンス編・ハンズオン編となっています。

### 基本編
ローコードとは？という導入から始まり、Power Automateの基本的な説明がされています。めちゃくちゃ優しい～！と思ったのが、自分の環境を準備して練習・試したいときの手順について書かれていること！！もうこれだけで本書を買う価値があります。結構社内でも、「自宅で試したいんですけど…」っていう需要あるんですよね。初心者が気にしがちな課金が無駄に発生しないようなTipsについてもかなり丁寧に書かれていました。推せる。

さらにユーザーコミュニティの世界や「非ITの方の中にも熱狂的なファンがいる」ことについても紹介されています。かなり序盤なのにパワプラコミュニティ沼に引き寄せようとしていてちょっと笑いました(笑)


Power Platformを楽しく勉強して、ファンを増やしていきたいギークさんの思いが伝わってきます。

### リファレンス編
クラウドフローを作る上での基本操作や、操作、関数について説明されています。ここでもうれしいポイント！Dataverseが導入されていない会社では避けて通れないSharePointリストへのデータ保存について記載されています。（ギークさんのUdemyでも頻出）リストを作成するときに問題となりがちな「カラム名アルファベットにすべし問題」や取得数の制限問題、その他初心者が陥りがちな小ネタについても書かれているので、飛ばさず要チェックです。

そのほかのパートでも、初心者が混乱しがちなプログラミングの基本：条件や繰り返しについてもばっちり書かれているし、配列における0が最初なのか1が最初問題や、日付のUTC問題もきちんと書いてあります。ずっしりに納得です。

### ハンズオン編
リファレンス編で基本操作をマスターした後は、いよいよハンズオン形式で「あるある」なフローを作成していきます。

- 新しいメールが届いたらTeamsに追加する
- SharePointにファイルが作成されたら通知する
- メールの添付をOneDriveに保存する
- Formsの回答をSharePointリストに格納する
- 簡単な承認ワークフローを作る

などなど…社内で使うよな～なミニフローをどんどん作っていくので読むだけでも楽しいです。Power Automate使ったことない人にとってはこんなこともできるのか～の感動の連続のはず！だと思います

## 感想
推しポイントが満載すぎて1ページずつ書評したいくらいなのですが、やはりタイトルの通り実践的に使いこなすことを念頭に置かれた構成になっているのですぐに身につくと思います。

プログラミング初心者でもわかるように書かれており、初心者が陥りがちな躓きポイントや解決法まで網羅されているのが素敵でした。

技術書でありながら、挫折しがちな読者のモチベーションを小ネタで引き上げるような流れになっているので、めちゃくちゃ推せます。この本、初心者のときに読みたかった！！

## というわけでおすすめポイントまとめ
- **初心者に最適**：環境構築から使い方まで、迷わず実践できる説明が充実
- **豊富なキャプチャ**：視覚的に理解しやすく、手を動かしながら学べる
- **実用的なハンズオン**：社内業務で「これ使えそう！」と思うフローが満載
- **コミュニティの魅力**：ITの枠を超えたPower Automateの楽しさを伝えてくれるｗ

ぜひぜひ読んでみてください👋
Amazon Qで5分でマリオ

## はじめに
突然ですが、Amazon Q Developer CLI を使ってゲームを作るとT シャツが貰えるキャンペーンをやっています!


https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/


Tシャツが欲しいので、ゲームを作ってみました。


## 作ったアプリ

Amazon Q Developer CLI にお願いして、5秒でマリオ作ってみました。

![sdf.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541141/3fefcbc3-06cb-4fb5-8d6d-d4830b26872b.gif)



## お願いしたこと

![want.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541141/b37f257e-4ebe-4f1c-a81a-d2015128bdee.png)


こんな頭が悪そうなプロンプトでこれだけのものを作ってもらえました！


## まとめ

みなさんもT シャツをゲットしましょう！