OmniAICreator/Qiita-1.07M huggingface dataset:
画像とセンサー処理

# センサーから画像を取得する方法
![image-sensor-structure-1-768x508.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2652099/bdd8bedb-987a-44d1-afe3-f71f18e253f1.png)
[参考ソニー]https://semi-journal.jp/basics/device/image-sensor/use.html

# イメージセンサーの電気信号取得の流れ
* イメージセンサーで像が結像するように焦点を調整する目的としてレンズを設計。センサー感度の工場。
* カラーフィルターで色を分類する。フォトダイオードは光の強弱しか判別できず、光の波長は検出できないので、カラーフィルターを通してフォトダイオードに出力することで色を判別できるようにする。
* フォトダイオードで光の強弱を電気信号に変換
* 配線を通じで電気信号を取り出す。

# CCD方式とCMOS方式
![CCD-CMOS-768x374.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2652099/131e438a-9bc3-41e4-8561-f96bdbd4cf02.png)

## CCD
* バスっぽい考え方。フォトダイオードで生成された電荷を垂直伝送路を通じて増幅器まで送る。増幅器で電圧に変換される。フォトダイオードに光が照射されて電荷を蓄積。その後ゲートを開くことで電荷を伝送路に流す。**ゲートの電圧を制御して画素一つ分だけ垂直に移動させる。一部が水平伝送路に流れる。水平伝送路のゲート電圧を制御して、電荷を1画素ずつ読み出す。**(こんな電荷制御できるのか。すごい。詳細はぶれるからいつか調べる)

## CMOS方式
* 画素一つ一つに対し増幅器がついている。カラム選択、画素選択スイッチを選択してどの画素を増幅するか決めることができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2652099/8c7d49ac-83e4-4d1a-9600-5eac39f49290.png)

感度とか画質とかの良し悪しは今回は省略。

#### アンプとかの動きも今回は省略。(アナログ苦手だからちょっと後回しに。。。)

# まとめ
センサーから取得したのちに、電荷をアナログ電圧値に変換してその後デジタル変換。デジタル値を画像に落とし込む
学習メモ : Amazon SageMaker

:::note info
本記事は ChatGPT o3 と筆者の編集で作成しました。
:::

# Amazon SageMaker

## 概要
- **Amazon SageMaker** は、機械学習モデルの開発・学習・デプロイをワンストップで提供する AWS のフルマネージド ML プラットフォームです。統合 IDE「SageMaker Studio」を中心に、データ準備から MLOps まで幅広い機能を備えています。

## 特徴
- **SageMaker Studio** により、ノートブック、実験管理、パイプライン、デバッグを単一 UI で完結。
- **JumpStart** が Foundation Model の微調整テンプレートや事前構築済みソリューションを提供し、生成 AI 活用を迅速化。
- **Feature Store / Lineage** など MLOps 向け機能で特徴量管理と系統追跡を一元化。
- 2025 年には NVIDIA 最新 GPU（B200）を搭載したインスタンスがトレーニングオプションに追加され、高速化とコスト効率を両立。

## メリット
- **フルマネージド**：インフラ運用が不要でスケーラブル、監視・自動バックアップを標準装備。
- **最新 GPU & Spot** により、高速学習とコスト削減が可能。
- **AWS サービス連携**：S3、Glue、Redshift などと IAM だけで安全に統合。

## デメリット
- 大規模ジョブや長時間ノートブック利用では **コストが高騰** するリスクがある。
- 既成イメージを超える **高度なカスタマイズ** では独自コンテナ構築が必要。
- 機能が広範なため **学習コストが高い**（権限設計や CI/CD 構築など多岐）。

## 類似サービスとの比較
- **Google Vertex AI**：AutoML と LLM カスタマイズが強み。BigQuery との統合が容易だが、AWS との親和性は低い。
- **Azure Machine Learning**：AzureAD や Synapse 連携でエンタープライズ機能が豊富。Windows 系との統合がしやすい。
- **SageMaker** は AWS ネイティブ連携と GPU オプションの豊富さで差別化。

## 利用する際の選定理由
- **既に AWS を基盤** として採用しており、ネットワーク・IAM ガバナンスを統一したい。
- **MLOps をゼロから構築** する工数を抑え、短期間で本番投入まで進めたい。
- **生成 AI・大規模学習** に対応する最新 GPU をオンデマンドで使い、コスト最適化したい。

## 活用事例
- **竹内製菓**：コンベア異音検知モデルで予知保全を実現し、ライン停止を低減。
- **デンソー**：画像アノテーション効率化のため Ground Truth と SageMaker を活用。
- **KDDI スマートドローン**：ドローン映像の夜間監視モデルを SageMaker で学習・推論し、監視業務を自動化。

## 難しい用語解説
- **MLOps**：ML 開発〜運用を CI/CD 的に自動化し、品質と再現性を担保する手法。
- **Feature Store**：モデルで使う特徴量をカタログ化し、再利用とバージョン管理を行う仕組み。
- **Foundation Model（FM）**：大量データで事前学習した汎用モデル。タスク特化の微調整で高精度を実現。
- **Lineage**：データやモデルの生成過程を追跡し、再現性とコンプライアンスを保証する情報。
- **JumpStart**：事前構築テンプレートでソリューションやモデルを数クリックで導入できる機能。

## 参考URL
https://aws.amazon.com/jp/sagemaker-ai/studio/
https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-fine-tuning.html
https://aws.amazon.com/about-aws/whats-new/2023/05/amazon-sagemaker-jumpstart-fine-tuning-foundation-models-domain-adaptation/
https://aws.amazon.com/nvidia/
https://aws.amazon.com/jp/solutions/case-studies/takeuchi-case-study/
https://aws.amazon.com/solutions/case-studies/denso-corporation/
https://aws.amazon.com/jp/blogs/news/kddi-smart-drone-usecases-sagemaker-human-detection/
https://cloud.google.com/vertex-ai/docs/start/introduction-unified-platform
https://learn.microsoft.com/en-us/azure/machine-learning/overview-what-is-azure-machine-learning?view=azureml-api-2
はじめてのバージョン管理：開発を始めるための準備ガイド【Mac用】

# 対象読者
* プログラミングや開発を始めたばかりの人
* 「git？GitHub？聞いたことあるけどよくわからない…」という人

# これから出てくる用語の解説

まずはこのガイドでよく出てくる3つの言葉を、超ざっくり簡単に紹介しておきます。

## gitとは？

「git（ギット）」は、プログラムの作業履歴を記録してくれるツールです。
たとえば、間違ってコードを消してしまっても、「前の状態」に戻すことができます。
ゲームでいう「セーブ機能」のようなものです。

## GitHubとは？

「GitHub（ギットハブ）」は、gitのデータをインターネット上で保存・共有できるサービスです。
チームで開発したり、自分のコードをバックアップしたりできます。

## GitHub Desktopとは？

「GitHub Desktop」は、GitHubをもっとカンタンに使えるようにするためのアプリです。
ふだんは難しいコマンドを使わないといけないgitも、ボタン操作だけで使えるようになります。


# 環境構築をしよう

ここからは、開発を始めるための準備（＝環境構築）をしていきます。

## 1. GitHubのアカウントを作ろう

1. GitHubのサイトにアクセス
   　→ [https://github.com/](https://github.com/)
2. 右上の「Sign up（サインアップ）」をクリック
3. メールアドレスやパスワードを入力して、アカウントを作成します
4. 確認メールが届くので、メール内のリンクをクリックして認証します

後に、作成した時の **メールアドレス** と **ユーザー名** を使用します!!

## 2. gitの環境構築

### 【Macの場合】

1. 「ターミナル」アプリを開きます（Launchpadで「ターミナル」と検索）

2. 以下のコマンドを入力して、Enterキーを押します：

   ```
   git --version
   ```

3. もしgitが入っていない場合は、「Command Line Developer Tools をインストールしますか？」というダイアログが表示されます。
   　→ 「インストール」をクリックして完了を待ちます（数分で終わります）

4. 再び以下のコマンドを実行して、バージョンが表示されればOK：

   ```
   git --version
   ```

---

### 【共通：gitの初期設定をしよう】
Gitをインストールしたら、**あなたの名前とメールアドレスを登録する必要**があります。
これは、「誰がそのコードを書いたか」をGitが記録するための設定です。

> 💡ここで使う名前とメールアドレスは、**先ほどGitHubのアカウント作成で登録したものと同じもの**を使いましょう。
> （GitHubと一致させることで、連携がスムーズになります）

以下のコマンドを、コマンドプロンプト（またはMacのターミナル）で入力してください：

```bash
git config --global user.name "あなたのGitHubユーザー名"
git config --global user.email "あなたのGitHubメールアドレス"
```

**例：**

```bash
git config --global user.name "TaroYamada"
git config --global user.email "taro@example.com"
```

設定内容を確認するには、次のコマンドを入力します：

```bash
git config --list
```

表示されたリストに、`user.name` と `user.email` がちゃんと反映されていればOKです！



## 3. GitHub Desktopのインストール

1. GitHub Desktopのページにアクセス
   　→ [https://desktop.github.com/](https://desktop.github.com/)
2. 「Download for Windows（またはmacOS）」をクリックしてダウンロード
3. ダウンロードしたファイルを開き、画面の指示に従ってインストール

インストール後、最初にGitHubアカウントでログインしておくと便利です。

ここまでできたらお疲れ様！！
画像認識高速化できるFPGAを作りたい！

# 画像認識の基礎をまとめる

## まず、モチベーション

画像認識をエッジAIで実装したいのだけど、画像認識のアルゴリズムをそのままマイコンに入れても計算処理が重くて速度を出すことができない。
ラズパイ5とAI拡張ボードを使う手もあるが、電力消費が大きく現実的ではない。
なので、FPGAでAIアクセラレータを作成することを目的としてちょこっと基礎からまとめていく。


### 画像の取得

1. センサーが光情報を受信
1. 受信データをアナログ信号として出力
1. A/Dコンバータでデジタル化
1. ノイズ除去やコントラスト調整など前処理
1. パターン認識やエッジ検出←高速化目的
1. 出力処理
[参考]https://newji.ai/procurement-purchasing/basics-of-image-input-signal-processing-and-applications-to-products-and-latest-image-technologies/

これらについて少しずつ検討していく。

センサーや信号処理方法は今回は深く勉強せず、デジタル処理の部分をとにかく詳しく調べていく予定！！！


## 今後の予定
1. 画像の仕組みとデータ処理について
1. CNNネットワークについて勉強
1. CNNのPCで実装
1. CNNのラズパイ実装
1. FPGAでの計算実装
1. ラズパイのアクセラレータ外装
1. まとめ


大体半年くらいでできるかな？予定では。。。
[OCI資格試験] Eラーニングの動画最短(2時間46分)のDBマイグレーション試験にチャレンジ 1Z0-1194-24

## はじめに
1Z0-1194-24 Oracle Cloud Database Migration Professional にチャレンジする方へむけて、アドバイスや勉強方法を掲載しています。

どのOracle Cloudの試験を受けようか迷っているDBAの方にもおすすめです

[関連資料]
[[Oracle] OCI資格(1Z0-1072-21-JPN) 概要をまとめた](https://qiita.com/nisshii0/items/8c82e93d0294703aa5f6)

## 1Z0-1194-24 Oracle Cloud Database Migration Professional 試験とは？

下の図は2024年度版として提供されているOracle Cloud関連試験の一覧です。大きくIaaS関連試験とPaaS関連試験に分かれています。
PaaS関連はいずれもDatabase関係で3つあります。
・Autonomous Database
・データベース移行
・データベース（Oracleだけでなく、MySQL等他DBも）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2551183/b5478f22-60fd-4b87-b6a2-7a28805deb7a.png)


この中で「データベース移行」の知識を問う試験です。
以下、公式サイトの説明の通り、データベースで一般的なツールのRMANやDataPump以外にも、GoldenGateやZDMが試験範囲に入っているのが特徴です。問題に対する割合も多めです。
またOracleToOracleの移行ではありますが、クラウドへの移行がポイントです。
クラウド環境だからこそ使える機能やポイントを抑えておくのが良いです。

>Oracle Cloud Database Migration Professionalラーニング・パスは、データベースをOracle Cloudに移行するために必要なスキルを学習者に提供するために設計された包括的なトレーニングを提供します。このコースは、データベース移行の計画と実行に関与するITプロフェッショナル、データベース管理者およびシステム・アーキテクトに最適です。

>学習するスキル
>移行シナリオ分析: Oracle Cloudにデータベースを>移行するための様々なシナリオを特定し、評価します。
>ツールの熟達度: RMAN、Data Pump、GoldenGateなどの主要なOracleツールをマスターして、セキュアで効率的な移行を実現します。
>利点と限界評価: さまざまな移行方法の長所と短所を評価します。
>Zero Downtime Migration(ZDM): 移行中のビジネス継続性を確保するための高度な技術を学びます。


## Eラーニングと学習ポイント
[オラクル社のEラーニングサイト](https://mylearn.oracle.com/ou/learning-path/japanese-become-an-oracle-cloud-database-migration-professional-2024-/143546)

他のOracle Cloud関連試験と同様、オラクル社サイトで「無償！」で、Eラーニングが用意されています。

しかもこの試験のEラーニング動画は2時間46分です。
短い。
この短さと、もともとデータベースは良く使っていた（オラクルマスターGold知識あり）ため、この試験にチャレンジしようと思いました。
3時間ぐらい勉強すればいけるかなとと思いましたが、、、世の中、そんな甘いことはありませんでした。

まずEラーニング動画の音声とテキストは英語です。
動画音声は日本語で字幕が表示されます。


・Eラーニング動画をみて、試験範囲を把握
　（音声は英語ですが、日本語字幕で内容は理解できます）
・試験ではテキストの隅にかいてある内容（音声でしゃべってない）も当然試験範囲です。
　英語で苦手な人もいると思いますが、音声以外（テキスト）の内容も理解しておきましょう


 ## 試験範囲（Eラーニングの目次）
以下が目次です。試験内容をイメージしてみてください。
 
1. OCIへのデータベース移行
 　    OCIターゲットデータベースの環境
2. 移行の種類と方法
       移行のタイプと方法（物理移行と論理移行）
       移行の種類と方法（オンラインとオフライン）
3. Oracle DB 移行アドバイザ
 　    OCIソースオプションとターゲットへのオプション
4. ソースデータベースとターゲットデータベースのオプションの理解
5. 自動移行（ダウンタイムなしの移行）
       ゼロダウンタイム移行の概要、構成、アーキテクチャ
       ゼロダウンタイムの移行ワークフロー、ユースケース
6. 自動移行（データベース移行サービス）
6. Database Migration Service概要
       データベースの準備
7. マルチテナントアーキテクチャの移行方法
       マルチテナントの概要
       マルチテナントの移行方法（リモートクローニング）
       マルチテナントの移行方法（アンプラグ、プラグ）
8. その他の移行方法
     Data Pump
       GoldenGate
       RMAN
       Oracle Database CLoud Backup Service
9. UIツールを利用した移行
      データベースツールの使用

## 学習した感想

普段、OracleDBAとして活動をしているため、RMANやDataPump、マルチテナントでの移行（PDB複製等）の章は問題なく対応できました。
また、クラウドへの移行でDMS(Database Migration Service)の概要や、GoldenGateの概要は知っていました。
ユースケースを理解しておくことは必須です。その移行方法を使うための前提条件もみておきましょう。

私は、ZDMを使用したことがなかったため、そこを重点的に学習しました。Eラーニングのスライドをみると、コマンドやオプションの説明までありました。ここまで出るのか？と思いつつ学習しましたが、学習しておいてよかったです。
DataPumpやZDM等コマンドで実行するものは、コマンドやオプションもみておくのが良いと思います。
MOS6502マイコンボード製作プロジェクト

![93025732-e398-4f3b-a604-3489ba4b218c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514807/0fd3627f-82f4-43ef-8511-8b2732a46c43.png)

# はじめに
私が小学生の頃、空前のマイコンブームでZ80を使用したマイコンボードやそのキットなどが数多く発売されていました。このブームはその後のMZ-80やPC-6001などのマイコンに発展していくのですが、他方でマイコンボードを自作するという方向の発展もありました。

マイコンボードの自作というのは、既製品のマイコンとは異なり自分でアーキテクチャを決めることができるので無限の可能性があります。

時間とお小遣いに余裕ができた今、もう一度小学生のあの頃に戻った気分でマイコンボードを製作してみようと考えました。

# ファミコンのカセットを自作する猛者現る
最近はプリント基板を発注すると数週間で届くようなサービスが出てきたり、いろいろなハードウェアプロジェクトを公開できるような海外のサイトなどもあり、インディーズのハードウェア界隈も活況に沸いています。

そんな中、初代のファミコンのカセットを作成しているクリエイターの方もいるようで、cc65などを使用してファミコンのバイナリを作成し、自分でROMに焼いてカセットにしている人がいることを知りました。

**『自分だけのファミコンのカセット』**

とても魅力的です。
ファミコンのハードウェアにはCPUとPPUしか載っていないので、メモリなどはカセット側に持たせることができます。ということはROMやRAMだけでなく、メモリマップドI/Oを使用することでシリアルポートやパラレルポート、ディスクドライブなどもつけることができるんじゃないかと思います。そのひとつがディスクシステムだと思います。

この理屈で行くとSDカードを搭載したカセットを作ることができるんじゃないかということになります。
SDカードを搭載してArduinoと連動したり、OSのようなものを搭載してSDカードから自作のプログラムを読み込んで実行するなどもできそうです。

# 全部作っちゃえばいいじゃん
CPUと入出力はファミコンを借りるのですが、そこまでこだわらなくてもいいんじゃないか。いろいろと思考を繰り返していく中で「全部自分で作ってみたらいいんじゃないか」ということにたどり着き、MOS6502のワンボードマイコンボードを作成することにしました。

MOS6502のワンボードマイコンを製作されている方は海外も含め多くおられるようで、参考となるドキュメントもたくさんあります。未だにMOS6502のCPUも入手できるようなので、部品を集めてチャレンジしてみることにしました。

# クロック発生回路
マイコンボード製作のなかで最初に重要な箇所となるのがクロック発生回路です。マイコンの中でもかなりアナログな部分じゃないかと思うのですがクロック発生回路の仕組みが理解できていなかったために、なかなか手が出せずこの回路を作成するだけで１年間ぐらいかかりました。（ほとんどの時間は考えているだけの時間だったのですが。）

回路図としてはこんな感じです。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514807/c8af930d-3073-4757-8bd7-573c260e0466.png)

ただの1.8234MHzを叩き出すだけの鼓動回路です。これがCPUの鼓動となる心臓の源となるのです。今回はクリスタルと74HDUO4を使うことでクロック周波数を生成しています。

設計上のコンデンサ容量では想定通りのクロックを発信することができずブレッドボードで仮組みしては計測して周波数をあわせました。
![IMG_6962.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514807/3e307356-b7d9-4d83-9afc-4b9add147dfa.jpeg)

一番最初に見えた波形。感動ものです。
![IMG_6961.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514807/bc889650-d8f4-44de-9b87-d87700763be9.jpeg)

実装して外したりを繰り返してやっと完成しました。
![IMG_7092.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514807/4d36906e-addd-478b-be84-26683e3d0fca.jpeg)

アダプタから5Vの電源を取って、電源ランプも追加しました。これで、1.8234MHzが出ているようです。
![IMG_7091.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514807/30550912-6efe-4ab4-8476-f465b789a0e6.jpeg)

あとで知ったのですが、モジュール型のクリスタルというのもあるようで、それだと正確なクロックを取り出すことができるようです。

# 次のステップへ
次は実際にCPUやRAMとROMを実装していきたいと思います。
そして、マイコンボード本体以外にもROMライターなども自作してみたいと思います。

やっとQiitaに記録を残せたので、次のステップへ進むことができます。なかなか、製作過程の写真や文章をまとめるのが億劫で製作してから１ヶ月ぐらい経ってしまいました。

やはり製作→記録を繰り返していかなければ、製作の過程を残すことができません。
製作工程の中で何が難しかったか、その問題をどうやって克服したのかを記録していかなければ、ただマイコンボードを作っただけになってしまうので、これからも製作と記録を繰り返していきたいと思います。
rex0220 計算式プラグイン 売上金額の担当分割

[計算式プラグイン](https://qiita.com/rex0220/items/ae83c6d5ce50ff7a9a73)で、売上金額を２担当者に分割して、グラフ集計してみます。

# 概要

売上金額を担当者別にテーブルへ金額をセットして、グラフ集計（積み上げ）します。
担当毎（AA担当・BB担当）に担当者を指定し、その情報を計算式プラグインでテーブルへのセットします。
※AA担当・BB担当にそれぞれ1名を割り当てとします。
　[rex0220 計算式プラグイン 売上金額の担当分割（複数担当者）](https://qiita.com/rex0220/items/957e0e54a5eaabc0ebf0)

- グラフ集計：　テーブルを担当・区分別に積み上げ表示

![2025-06-14_08h59_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/fd3b620d-59b3-4858-b00f-7579b87ae16e.png)

- 編集画面：　AA担当分とBB担当分をテーブルに自動セット

![2025-06-14_09h08_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/bbc14d53-dabe-4711-baa0-7139f0720035.png)

- 一覧表示

![2025-06-14_08h56_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/11eb7175-6d43-4e64-8272-6e3c12ce0a51.png)

# 計算式プラグイン設定

- AA担当分：CEIL関数で、端数はAA担当分に加算
- BB担当分：売上金額-AA担当分

![2025-06-14_09h11_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/f3838aa2-541e-4212-906e-457898e9bd08.png)

```JavaScript:
OPTION: 

// AA担当分 NUMBER
CEIL(売上金額/2)

// BB担当分 NUMBER
売上金額-AA担当分

// テーブル SUBTABLE
TABLE_DATA(ARRAY(
  DIC(
    "区分","AA担当",
    "担当",SEL_CODE(AA担当,"obj"),
    "金額",AA担当分
  ),
  DIC(
    "区分","BB担当",
    "担当",SEL_CODE(BB担当,"obj"),
    "金額",BB担当分)
))

// テーブル.区分 DROP_DOWN
// テーブル.担当 USER_SELECT
// テーブル.金額 NUMBER
```
IT業界の "やってはいけないあるある" 

IT業界では、技術的な知識やスキルだけでなく、「やってはいけないこと」を知ることも重要です。これを知らずに進めてしまうと、プロジェクトの生産性が下がったり、信頼性を損ねたり、場合によっては致命的な問題につながることもあります。

本記事では、「やってはいけない」けどあるあるな行動についてまとめています。あわせて、その理由と対処法も書いてみました。

---

## ✅ 技術的な選定・設計

### ◎ 車輪の再発明をしない

既に確立されたライブラリやフレームワークがあるにも関わらず、それを使わず一から実装すると、以下のリスクがあります。

- 時間・コストの無駄
- バグの混入リスク増加
- 他者との知識共有が困難になる（属人化）

**対処法：**

- 要件に対して既存のツールやOSSを**事前に調査**する
- 他社の事例や導入実績を確認し、**再利用可能性**を見極める
- 自作する場合は**その理由を明文化**し、チームと共有する

---

### ◎ 巨人の肩に乗らない

業界やコミュニティが積み上げてきた知見を活用しないことは、自分でトラブルを招くことと同義です。

- 同じミスを繰り返すリスク
- 無駄な工数が発生
- 競争力の低下

**対処法：**

- 問題に直面したら「この問題は既に解決されていないか？」と疑う
- Stack Overflow や GitHub、技術ブログなどを活用する
- OSS活用の有無を**技術選定時に評価基準として明示**する

---

### ◯ 技術選定を「なんとなく」で決めない

「知っているから」「流行っているから」といった感覚的な選定は、以下のような問題を引き起こします。

- プロジェクト規模に合わない技術が選ばれる
- 将来的な保守が困難になる
- チームのスキルとマッチせず、生産性が下がる

**対処法：**

- 評価軸（性能、成熟度、学習コストなど）を**事前に設定**
- スパイク（短期調査）やPoCで実地検証する
- 選定理由を**ドキュメントとして記録・共有**

---

## ✅ 品質保証と信頼性の軽視

### ◯ テストを書かないままリリースしない

テストがなければ、システムの信頼性は保証されません。

- バグの混入を検出できない
- 手動テストに依存し、効率が悪くなる
- リファクタリングが怖くてできなくなる

**対処法：**

- 単体・結合・E2Eテストを**CI/CDに組み込む**
- 初期段階からテスト戦略を策定する（例：TDD、BDD）
- バグ修正時には**必ずテストケースを追加**

---

### ◯ セキュリティを後回しにしない

セキュリティ対策が後回しになると、被害が発生したときの代償が非常に大きくなります。

- ユーザー情報の漏洩や法的リスク
- 社会的信用の損失
- 修正コストの爆発（後工程ほどコストが高くなる）

**対処法：**

- OWASP Top 10などの**基本的な脅威リストを理解・対策**
- 認証・権限・入力バリデーションを**標準実装**
- 脆弱性スキャンツール（Snyk, Dependabotなど）をCIに組み込む

---

### ◯ 「とりあえず動いた」で満足しない

初期のコードが動いても、それが将来的な拡張・保守に耐えられるとは限りません。

- リファクタリングができない
- 拡張性・可読性・再利用性が低い
- 属人化や技術的負債を生み出す

**対処法：**

- 実装後にリファクタリング時間を**スケジュールに組み込む**
- PRレビューで**設計レベルの議論**を推奨する
- SOLID原則やKISS、DRYなどの設計原則をチームで共有

プロトタイプ検証であったりPoC環境構築であれば問題ないと思います。AIが発達している今、プロジェクトの推進方法は変わっていくはずで、まずは試作品をぱっと作ってみることが求められつつも、それを完成形にスべきではなく、中身はきちんと精査する必要があります。

---

## ✅ 情報共有と協調

### ◯ ドキュメントを軽視しない

ドキュメントがないと、以下のような負の連鎖が起こります。

- 新規メンバーがキャッチアップできない
- 情報が属人化し、ブラックボックスが増える
- トラブル時の対応に時間がかかる

**対処法：**

- 最低限のドキュメント（構成図、API仕様、導入手順）を整備
- コードと一緒に**バージョン管理**し、PRレビュー対象に含める
- NotionやConfluenceで**検索可能なナレッジベース**を構築

ただし、ドキュメントを作れば良い、という手段の目的化があってはならないのは前提です。AIが発達してきている今、何を残すべきか、きちんと吟味する必要が高まっているように感じます。

個人的には、以下が重要と考えます。
- 構成図やアプリケーションの関係図（図で示す・洗い出す）
- 設計背景や根拠（設定値や結論だけ書かない）

---

## さいごに

「やってはいけないこと」を知ることは、成果を出すための前提条件です。今回紹介した鉄則は、どれも陥りやすく、見過ごされやすいポイントです。

「なぜそれが問題になるのか」「どう対処すればいいか」を論理的に捉え、行動に移すと周囲から見直されるかもしれません。
eclipseでUnhandled event loop exceptionが発生する

1.プラグインの不具合
Eclipse にインストールされているプラグイン（Spring Tools、Mylyn、EGitなど）のバグや相性によってこの例外が出ることがあります。

対策：
Eclipse をセーフモード（eclipse -clean）で起動。

不要なプラグインを無効化またはアンインストール。

2.Java 開発中の例外が UI スレッドに伝播
例えば、View の更新やクリックイベントの処理中に NullPointerException などが発生し、それが catch されないと SWT イベントループが例外を出します。

対策：
Eclipse の .log ファイルを確認してスタックトレースを読む。
場所： workspace/.metadata/.log
```
!ENTRY org.eclipse.ui 4 0 2025-06-13 15:00:01.123
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NullPointerException at com.example.MyHandler.handle(MyHandler.java:42)
```

このログを見れば、例外の原因となった Java ファイルの行番号まで特定できます。

3.JDKのバージョン不整合やEclipseの設定ミス
特に Eclipse で JDK 17 以上を使っていると、一部の古いプラグインや SWT ライブラリとの不整合が起きやすいです。

対策：
Eclipse に設定している JDK を確認（[Preferences] → [Java] → [Installed JREs]）

最新の Eclipse に更新（2024-12 版など）

4.Eclipse のバグ
古い Eclipse バージョンで発生することもあります。

対策：
最新の Eclipse を再インストール（※必要に応じてワークスペースの再作成）

.metadata/.plugins 内をクリーンアップ（※一部設定がリセットされる可能性があるため注意）


📌 まとめ：まずやるべきこと
workspace/.metadata/.log を確認

Eclipse を -clean オプションで起動（eclipse.exe -clean）

不要なプラグインの削除

JDK 設定の見直し

Eclipse のアップデート
C言語 qsort（クイックソート）の使い方


<br>
C言語には配列をソートするための便利な関数 qsort が標準ライブラリ <stdlib.h> に用意されています。
今回はこの qsort の使い方を解説します。
qsort はクイックソート（Quick Sort）アルゴリズムをベースにした汎用的なソート関数です。

```c
void qsort(void *base, size_t nitems, size_t size,
           int (*compar)(const void *, const void *));

```


<br>
使用例1 数字を昇順でソート


```c
#include <stdio.h>
#include <stdlib.h>

int compare_int(const void *a, const void *b) {
    // aとbをint型にキャストして比較
    return (*(int*)a - *(int*)b);
}

int main() {
    int data[] = {5, 2, 9, 1, 3};
    int size = sizeof(data) / sizeof(data[0]);

    qsort(data, size, sizeof(int), compare_int);

    for (int i = 0; i < size; i++) {
        printf("%d ", data[i]);
    }
    printf("\n");

    return 0;
}
```

出力
```c
1 2 3 5 9
```


<br>

使用例2 構造体を構造体の特定の要素(人の年齢)で昇順ソート


```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
    char name[20];
    int age;
} Person;

int compare_by_age(const void *a, const void *b) {
    const Person *pa = (const Person*)a;
    const Person *pb = (const Person*)b;

    return pa->age - pb->age;
}

int main() {
    Person people[] = {
        {"Taro", 25},
        {"Hanako", 22},
        {"Jiro", 30}
    };
    int size = sizeof(people) / sizeof(people[0]);

    qsort(people, size, sizeof(Person), compare_by_age);

    for (int i = 0; i < size; i++) {
        printf("%s (%d)\n", people[i].name, people[i].age);
    }

    return 0;
}

```

出力
```
Hanako (22)
Taro (25)
Jiro (30)
```
ダサいCognito Hosted UIを何とかする。(サンプルコードあり)


AWS Cognitoは、ウェブおよびモバイルアプリケーション向けに設計された、完全にマネージドされたIDプラットフォームです。
Hosted UIを利用する主な利点の一つは、AWSがホスティング、メンテナンス、およびスケーリングを完全に管理することにあります。

しかし、この利点にはトレードオフが存在します。**Hosted UIの「管理されている」という性質は、UIの視覚的および機能的な制御に関して、開発者が利用できるカスタマイズの範囲に固有の制限を課します。** 
したがって、プロジェクトにおいて、迅速なデプロイと運用負担の軽減を優先するか、あるいは高度に具体的で動的なUIデザインの完全な制御を優先するかは、根本的な意思決定ポイントとなります。 

そこで早速ですが、以下のサイトのログイン画面を確認してみてください。
こちらはCognito Hosted UIで作成した画面です。

https://d2or2g1md9lrqv.cloudfront.net/dashboard.html?node_id=b42851cf-3e04-11f0-a736-858b75cd5350

**カスタマイズの難易度が高いHosetd UIですが、ある程度のレベルであれば改善は可能です。**
そして、Hosted UIをカスタマイズすることで、アプリケーションの認証体験を全体的なブランドアイデンティティと一致させることが可能になるのです。


## AWS Cognito Hosted UIで許可されるCSSクラス名

Amazon Cognitoは、開発者がスタイル設定のターゲットとして使用できる、事前に定義された限定的なCSSクラス名セットを提供しています 。これらのクラスは、Hosted UI内の特定の要素に対応しています。   
カスタマイズ可能なクラスの包括的なリストは以下の通りです。
**`-customizable` クラスが設定されていることに、留意しておいてください。**

| クラス名 | UI要素の説明 |
| --- | --- |
| `background-customizable` | ページの背景 |
| `banner-customizable` | バナー領域 |
| `errorMessage-customizable` | エラーメッセージ |
| `idpButton-customizable` | IDプロバイダーボタン (例: Google, Facebook) |
| `idpButton-customizable:hover` | IDプロバイダーボタンのホバー状態 |
| `idpDescription-customizable` | IDプロバイダーの説明テキスト |
| `inputField-customizable` | 入力フィールド |
| `inputField-customizable:focus` | 入力フィールドのフォーカス状態 |
| `label-customizable` | フォームのラベルテキスト |
| `legalText-customizable` | 法的テキスト |
| `logo-customizable` | アップロードされたカスタムロゴ |
| `passwordCheck-valid-customizable` | パスワードチェックの有効状態 |
| `passwordCheck-notValid-customizable` | パスワードチェックの無効状態 |
| `redirect-customizable` | リダイレクトメッセージ |
| `socialButton-customizable` | ソーシャルプロバイダーボタン |
| `submitButton-customizable` | フォーム送信ボタン |
| `submitButton-customizable:hover` | フォーム送信ボタンのホバー状態 |
| `textDescription-customizable` | 一般的な説明テキスト |


## サンプルコード

今回の作成したアプリケーションでのCSSは次のとおりです。

```css
/* 背景のカスタマイズ */
.background-customizable {
    box-shadow: 0px 2px 20px rgba(0, 0, 0, 0.2), 0 0 0 10000px #29243d;
    border-radius: 10px;
    background-color: #312d4b;
    color: #9155fd;
}

/* バナーのスタイル */
.banner-customizable {
    padding: 0;
    background-color: #312d4b;
    /* Googleブルー */
}

/* ロゴのサイズ調整 */
.logo-customizable {
    max-width: 100%;
    max-height: 100%;
}

/* ラベルのスタイル */
.label-customizable {
    font-weight: 600;
    color: #d5d1eb;
}

/* 説明テキストのスタイル */
.textDescription-customizable {
    padding-top: 20px;
    padding-bottom: 10px;
    display: block;
    font-size: 18px;
    color: #ffffff;
}

/* 入力フィールドのスタイル */
.inputField-customizable {
    width: 100%;
    height: 48px;
    color: black;
    background-color: #d5d1eb;
    border: none;
    border-radius: 5px;
    padding: 10px;
    margin-bottom: 20px;
    font-size: 16px;
}

/* サブミットボタンのスタイル */
.submitButton-customizable {
    font-size: 18px;
    font-weight: bold;
    margin: 30px 0;
    height: 48px;
    width: 100%;
    color: #d5d1eb;
    background-color: #9155FD;
}

/* サブミットボタンのホバー時のスタイル */
.submitButton-customizable:hover {
    background-color: #b08cff;
}

.redirect-customizable {
    color: #d5d1eb;
}
```
プロデル、調査 その40

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

# 練習問題
マウスを追いかける、目玉を書け。

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/df8f5ce6-ad54-4619-b2de-3ed1ed97b28c.png)

# サンプルコード

```
//目

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

メイン画面とは
	ウィンドウを継承する
	はじめの手順
		初期化する
	終わり
	初期化する手順
		この実質大きさを｛428, 394｝に変える
		この内容を「目」に変える
		初期化開始する
		キャンバス1というキャンバスを作る
			その位置と大きさを｛0, 0, 428, 394｝に変える
			そのドッキング方向を「全体」に変える
		初期化終了する
		この設計スケール比率を｛144, 144｝に変える
	終わり
	キャンバス1のマウスカーソルが移動した時の手順
		始点は、この時の座標
		angle = atan2(始点の1, 始点の2)
		キャンバス1をクリアする
		キャンバス1へ円を描いて右目とする
			その位置と大きさは、｛70, 70, 50, 50｝
		キャンバス1へ円を描いて右目玉とする
			その位置と大きさは、｛70 + sin(angle) * 20, 70 + cos(angle) * 20, 30, 30｝
			その背景色を黄に変える
			その太さを3に変える
		キャンバス1へ円を描いて左目とする
			その位置と大きさは、｛20, 70, 50, 50｝
		キャンバス1へ円を描いて左目玉とする
			その位置と大きさは、｛20 + sin(angle) * 20, 70 + cos(angle) * 20, 30, 30｝
			その背景色を黄に変える
			その太さを3に変える
	終わり
終わり




```

以上。
Geminiでクジラと遊ぶ魔法少女を描いてみた。

# 概要

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

# 実装

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

```
電撃のクジラと遊ぶ魔法少女を描いてください。
```

![電撃のクジラと遊ぶ魔法少女_20250614.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192024/d60713d6-1d53-4429-ac75-0f241ea90fb8.png)

# まとめ

何かの役に立てばと。
WindowsにOpenSSHサーバーを入れられず悩んだ話

# はじめに
Windows11 ProのPCにSSHでサインインして使うためOpenSSHサーバーをインストールしました。インストールで少し苦労した話です。
# インストールできない？
先達の教えに従って、オプション機能の追加からOpenSSHサーバーを追加を実行したのですが、インストール中のままいつまで経っても終わりません。

https://qiita.com/nujust/items/6d5ccea95e635467c96a
# ヤツのせいだ
あれこれ悩んだのですが、職場のPCはWSUSに<del>支配されている</del>管理されているので上記の手順では余計なものは追加できないらしいと悟りました。
# ならばオフラインで
GitHubからインストーラをダウンロードしてインストールしました。
https://github.com/PowerShell/Win32-OpenSSH/releases

x64用のインストーラー形式のパッケージは OpenSSH-Win64-vx.x.x.x.msi をダウンロードします。これでインストールした場合、インストール後のサービス開始までやってくれました。

あとはファイアウォールでPort 22を開けておしまい。
他のマシンからSSH接続できることを確認してください。
DeskflowでMacをサーバにしたらスリープ復帰でキーボード共有が止まる問題を解決！

## すぐに問題を解決したい方向け（コピペでOK）

### 1. sleepwatcherをインストール

```bash
brew install sleepwatcher
```

### 2. スリープ時にDeskflowを終了するスクリプトを作成

```bash
cat << 'EOF' > ~/.sleep
#!/bin/sh
osascript -e 'quit app "Deskflow"' 2>/dev/null
sleep 5
pkill -9 -x Deskflow 2>/dev/null
EOF
chmod +x ~/.sleep
```

### 3. 復帰時にDeskflowを起動するスクリプトを作成

```bash
cat << 'EOF' > ~/.wakeup
#!/bin/sh
open -a Deskflow
EOF
chmod +x ~/.wakeup
```

### 4. sleepwatcherをHomebrewサービスとして起動

```bash
brew services start sleepwatcher
```

---

## 各ステップの詳細解説

### 1. sleepwatcherとは？

`sleepwatcher` はmacOSのスリープと復帰のイベントを検知して、指定したスクリプトを自動で実行する常駐プログラムです。
これにより、スリープ前後にDeskflowの停止・起動処理を自動化できます。

### 2. スリープ時スクリプト（`~/.sleep`）

```bash
#!/bin/sh
osascript -e 'quit app "Deskflow"' 2>/dev/null
sleep 5
pkill -9 -x Deskflow 2>/dev/null
```

* `osascript -e 'quit app "Deskflow"'` はDeskflowに正常終了を促します。
* `sleep 5` で終了処理が完了するまで待ちます。
* `pkill -9 -x Deskflow` で念のため強制終了します。

### 3. 復帰時スクリプト（`~/.wakeup`）

```bash
#!/bin/sh
open -a Deskflow
```

* `open -a Deskflow` で復帰後にDeskflowを起動し直し、キーボード共有を復活させます。

### 4. Homebrewサービスでの自動起動

```bash
brew services start sleepwatcher
```

* sleepwatcherをmacOSのLaunchAgentとして自動起動・常駐させ、スリープや復帰イベントを監視します。
* Macを再起動しても自動的に動くので設定は一度でOKです。

---

## なぜこの問題が起こるのか？

Macがスリープから復帰すると、Deskflowのキーボード共有機能が停止し、クライアントPCにキーボード入力が送られなくなります。
そのためクライアント側でキーボード操作ができない状態が続きます。（マウスは正常に動作します）

Deskflowは復帰イベントを完全には処理できていないため、この問題が起きています。

---

## まとめ

* sleepwatcherでスリープ前後にDeskflowを停止・起動するスクリプトを実行することで問題を解決
* AppleScriptで正常終了を促し、念のため強制終了も行う安全設計
* Homebrewサービスで自動起動設定すると安定して運用可能

---

## 参考リンク

* [sleepwatcher - Homebrew Formula](https://formulae.brew.sh/formula/sleepwatcher)
* [Deskflow公式サイト](https://www.deskflowapp.com/)

---

https://qiita.com/mu-zilch_321/items/0498734ee869dbd8d801
プロデル、調査 その39

# 概要
プロデルが、CLRらしいので、調べて見た。
マウスで線を描く、見つけたのでやってみた。

# 参考にしたページ

https://produ.irelang.jp/blog/2020/04/1987/

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/2bd4c005-3237-42fb-8a07-94ff5e468df9.png)


# サンプルコード

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

メイン画面とは
	ウィンドウを継承する
	-作業線
	はじめの手順
		初期化する
	終わり
	初期化する手順
		この実質大きさを｛428, 394｝に変える
		この内容を「マウスで線を描く」に変える
		このドラッグドロップを○に変える
		初期化開始する
		キャンバス1というキャンバスを作る
			その位置と大きさを｛0, 0, 428, 394｝に変える
			そのドッキング方向を「全体」に変える
		初期化終了する
		この設計スケール比率を｛144, 144｝に変える
	終わり
	キャンバス1のマウスのボタンが押された時の手順
		キャンバス1へ線を描いて作業線とする
			その始点は、この時の座標
			その線色を赤に変える
			その太さを3に変える
	終わり
	キャンバス1のマウスカーソルが移動した時の手順
		もし作業線が無なら抜け出す
		作業線の終点は、この時の座標
		キャンバス1へ線を描いて作業線とする
			その始点は、この時の座標
			その線色を赤に変える
			その太さを3に変える
	終わり
	キャンバス1のマウスのボタンが離された時の手順
		もし作業線が無なら抜け出す
		作業線の終点は、この時の座標
		作業線は、無
	終わり
終わり



```

以上
学習10日目

# 今日学んだこと
① optional: true
② form_withのurl
③ form.select

## ① optional: true
モデルにbelongs_toのアソシエーションを記述する際、その存在チェックがかかる。
上記存在チェックを回避するための記述。
(例)model/fuga.rb
```
belongs_to :hoge, optional: true
```

ちなみに、hogeの存在チェックに引っかかると、createの際「hoge must exist」というエラー表示となる。

## ② form_withのurl
モデルとルーティングの名称が対応している場合は、model:の記述のみでrails側が自動的に次のアクションを認識してくれるので不要。
しかし、作成中のオリジナルアプリではルーティングを一部ネストさせているため、モデルとルーティングの名称が対応していない。
その場合、url: を記述することで次のアクションを明示する必要がある。
(例)モデル名はhoge、パス名はhoge_fuga_pathの場合
```
<%= form_with model: @hoge, url: hoge_fuga_path do |form| %>
```

## ③ form.select
以前、form.collection_selectでプルダウンを表示させていた。
その時はHoge.allのようにモデルを利用していたが、今回は数個の要素を持つ配列を渡す実装を行おうと考え、form.collection_selectを用いて悪戦苦闘した。
結果引数やキーに関するエラーが次々発生したため、調べたところcollection_selectではなく、selectで実装するものだと判明。

(例)
```
<%= form.select :cagegory, ["hoge","fuga"] %>
```

# 感想
エラー回避のためにoptional: trueを記述したが、私のオリジナルアプリの場合マイグレーションファイルを適切に記述すれば不要ではないかと思った。余裕があれば、後で修正したい。
ルーティングのネストは深くしすぎるとメンテナンスし辛くなるので、1階層に留め、極力回避できる方法を考えるべきだと感じた。
【Python初心者】Unicodeのnormalize（正規化）の意義と使い方

Pythonで文字列を扱っていると、見た目は同じでも内部的に異なる文字列が存在することがあります。  
特に**Unicode（ユニコード）文字**を扱う際には「正規化（normalize）」の知識が重要です。

今回は、`unicodedata` モジュールを使った Unicode 正規化の意義と使い方について、自分の学習のためにまとめてみました。

## なぜ normalize（正規化）が必要なのか？

見た目が同じでも、**内部的には異なる Unicode コードポイント**で構成されている文字列があります。  
たとえば、アルファベットの「é」は次の2通りの表現が可能です。

| 表記方法 | 内容 | コードポイント |
|----------|------|----------------|
| ① 正規形 NFC（合成済み） | `"é"` | U+00E9 |
| ② 正規形 NFD（分解形） | `"e" + "◌́"`（e と アクセント） | U+0065 + U+0301 |

このように、**見た目は同じでも別の文字列として扱われてしまう**ため、比較・検索・保存の場面で問題になります。

### 例（見た目が同じでも比較結果は False）

```python
s1 = "é"  # U+00E9
s2 = "e\u0301"  # U+0065 + U+0301

print(s1 == s2)  # False
```

→ これを解決するのが `normalize()` です。

## normalize() の使い方（unicodedata モジュール）

Python の `unicodedata` モジュールを使います。

```python
import unicodedata

s1 = "é"  # 合成済み
s2 = "e\u0301"  # 分解形

# NFC（合成）で正規化して比較
n1 = unicodedata.normalize("NFC", s1)
n2 = unicodedata.normalize("NFC", s2)

print(n1 == n2)  # True
```

## 正規化形式の種類

| モード | 説明 |
|--------|------|
| `NFC`  | 合成：できるだけ1文字にまとめる（一般的な形式） |
| `NFD`  | 分解：すべて分解する（文字＋記号に分ける） |
| `NFKC` | 合成＋互換：見た目の整合性も考慮して変換（幅なども） |
| `NFKD` | 分解＋互換：分解しつつ、記号や構造も展開する |

### 使用例（NFKCで全角を半角に）

```python
import unicodedata

full_width = "ＡＢＣ１２３"  # 全角
normalized = unicodedata.normalize("NFKC", full_width)

print(normalized)  # ABC123（半角に変換）
```

## normalize はどんな場面で使う？

- **文字列の比較**：ユーザー入力とDB登録情報を比較するときなど
- **検索処理**：同じキーワードでも形式が違うとヒットしない問題を防ぐ
- **データクレンジング**：異体字・互換文字の混入を統一する
- **ファイル名処理（特にMac）**：ファイル名が NFD 形式になるケースがあるため

## まとめ

Unicode の normalize（正規化）は、**「文字の見た目は同じでも内部表現が異なる」問題を解決するための重要な処理**です。  
Python では `unicodedata.normalize()` を使って簡単に変換できます。

特に以下の点を覚えておきたいです：

- 通常の比較には `NFC` を使うことが多い
- 異体字や全角⇔半角の統一には `NFKC` が便利
- 正規化しておかないと、`==` が False になってバグの原因になる

実務や試験でも知っておくと安心な知識なので、今後も使い慣れていきたいです。
8x8を3倍角に変換して遊ぶ(ビット操作



いろいろ、注意
----

- arduinoでの予定は、未定


プログラム
----

オンラインコンパイラ　paiza


```c++




#include <iostream>
using namespace std;

#define b_put(aa) for(int ii=8;ii!=0;ii--){if(aa & 0x80){printf("#");}else{printf(".");}aa=aa<<1;}
#define bit8_put(bb) for(int jj=0;jj<24;jj++){b_put(bb[jj*3]);b_put(bb[jj*3+1]);b_put(bb[jj*3+2]);printf("\n");}

int main(void){
    // Your code here!

    unsigned char font[] = {
        0b00100000, //  #     
        0b01111100, // #####  
        0b00100000, //  #     
        0b01111100, // #####  
        0b10101010, //# # # # 
        0b10110010, //# ##  # 
        0b01100100, // ##  #  
        0b00000000  //
    };  
    
    unsigned char font2[24*3];


    int j = 0; //2倍角出力フォントのカウンター
    for (int i = 0; i < 8; i++) { //フォントの2倍角化ループ

      int al = font[i]; //入力フォントの読み出し
      int s = 0;
      s = s | (0b000000000000000000000001 & al); al = al << 2;
      s = s | (0b000000000000000000001000 & al); al = al << 2;
      s = s | (0b000000000000000001000000 & al); al = al << 2;
      s = s | (0b000000000000001000000000 & al); al = al << 2;
      s = s | (0b000000000001000000000000 & al); al = al << 2;
      s = s | (0b000000001000000000000000 & al); al = al << 2;
      s = s | (0b000001000000000000000000 & al); al = al << 2;
      s = s | (0b001000000000000000000000 & al); 
      s = s | (s << 1) | (s << 2);

      font2[j++] = s >> 16;
      font2[j++] = s >> 8 & 0xff;
      font2[j++] = s & 0xff;
      
      font2[j++] = s >> 16;
      font2[j++] = s >> 8 & 0xff;
      font2[j++] = s & 0xff;

      font2[j++] = s >> 16;
      font2[j++] = s >> 8 & 0xff;
      font2[j++] = s & 0xff;


    }  //for



     bit8_put(font2);

    
}







```

```


......###...............
......###...............
......###...............
...###############......
...###############......
...###############......
......###...............
......###...............
......###...............
...###############......
...###############......
...###############......
###...###...###...###...
###...###...###...###...
###...###...###...###...
###...######......###...
###...######......###...
###...######......###...
...######......###......
...######......###......
...######......###......
........................
........................
........................

```
【Python初心者】f-stringとformat()の違いと書式指定の基本

Pythonでは文字列の中に変数の値を埋め込む方法として、`format()` メソッドと `f-string`（フォーマット済み文字列リテラル）があります。  
どちらも使い方にコツがあり、試験や実務でも頻出なので、今回はその違いや基本的な書式指定の使い方を学習のために整理してみました。


## f-string（フォーマット済み文字列リテラル）

Python 3.6以降で使える新しい書き方です。  
`f"..."` のように文字列の前に `f` をつけ、波かっこ `{}` の中に変数や式を直接書きます。

```python
name = "Alice"
age = 30
print(f"My name is {name} and I'm {age} years old.")
# → My name is Alice and I'm 30 years old.
```

### 特徴
- 読みやすく簡潔
- 変数名をそのまま使える
- 式の埋め込みや関数呼び出しが可能

#### 🔹 式の埋め込み（計算なども可能）

```python
x = 10
print(f"Twice of {x} is {x * 2}")
# → Twice of 10 is 20
```

#### 🔹 関数も使える

```python
def greet(name):
    return f"Hello, {name.upper()}!"

print(greet("python"))  # Hello, PYTHON!
```

---

## format() メソッド

Python 2 からある旧来の方法です。  
文字列内に `{}` を置き、`.format()` で変数を渡します。

```python
name = "Bob"
age = 25
print("My name is {} and I'm {} years old.".format(name, age))
# → My name is Bob and I'm 25 years old.
```

### キーワード引数で書くことも可能

```python
print("My name is {n} and I'm {a} years old.".format(n="Charlie", a=40))
# → My name is Charlie and I'm 40 years old.
```


## f-stringとformat()の比較

| 項目 | f-string | format() |
|------|----------|----------|
| 導入バージョン | Python 3.6〜 | Python 2.6〜 |
| 可読性 | 高い（変数名そのまま使える） | やや低め（位置 or キーワード引数） |
| 式の埋め込み | 可能（式や関数も可） | 基本不可（値のみ） |
| 実行速度 | やや速い | 遅め |
| 推奨度 | Python 3 では推奨 | レガシーコード対応で使用することあり |


## 書式指定の基本（f-string / format 共通）

### 書式の記述位置

フォーマット構文は `{値:書式}` のように書きます。

| 記述例 | 意味 |
|--------|------|
| `:03`     | 3桁でゼロ埋め（例：`005`） |
| `:.2f`    | 小数点以下2桁まで表示（例：`3.14`） |
| `:>5`     | 右寄せ・幅5文字 |
| `:<5`     | 左寄せ・幅5文字 |
| `:^5`     | 中央寄せ・幅5文字 |



### 🔹 整数のゼロ埋め（ゼロパディング）

```python
n = 5
print(f"{n:03}")         # 005
print("{:03}".format(n)) # 005
```

### 🔹 小数点以下の桁数指定（浮動小数点）

```python
pi = 3.14159265
print(f"{pi:.2f}")          # 3.14
print("{:.2f}".format(pi))  # 3.14
```

### 🔹 文字列の幅指定と配置（右寄せ・左寄せ・中央寄せ）

```python
s = "hi"
print(f"[{s:>5}]")   # [   hi]（右寄せ）
print(f"[{s:<5}]")   # [hi   ]（左寄せ）
print(f"[{s:^5}]")   # [ hi  ]（中央寄せ）
```

### 🔹 複数指定の組み合わせも可能

```python
num = 3.14159
print(f"{num:08.2f}")        # 00003.14（ゼロ埋め＋幅8＋小数2桁）
print("{:08.2f}".format(num))# 00003.14
```


## まとめ

書式指定は `f-string` でも `format()` でも共通で使えるので、一度覚えれば両方に応用できます。  
Python 3 以降では f-string の使用が推奨されているため、**今後は基本的に f-string を使う方針で良さそう**です。

試験対策としては、特に以下が頻出です：

- 桁数指定（例：`{num:03}`）
- 小数点以下の桁数（例：`{pi:.2f}`）
- 文字の配置（例：`{text:>10}`）

自分の学習用の整理として、復習の際にも役立てていきたいです。
[UE5]Livedoorの天気APIから天気を取得してみた備忘録

# Livedoorの天気APIから天気予報と最高気温を取得してみた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/c9371c35-8276-44a6-acda-761ab3d17c75.png)

### 環境
・UE5.4
・[VaRestX](https://fab.com/s/8344e3dc543f) (5.1と5.5はプラグイン互換性あり）
・Windows11

# 1.VaRestプラグインをオン
上のVaRestプラグインをFABで追加し、UEでプラグインに追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/4824fa3b-7a3a-4591-b9ab-e3d71c6eac78.png)

# 2.Call URLで対応したページから情報を取得する
https://weather.tsukumijima.net/

このページにあるように都市を指定する

https://weather.tsukumijima.net/api/forecast/city/230010

※名古屋の天気のURL

これをプラグインで追加されたCall URLのURLに入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/d2a45875-d55e-432a-b528-e7ec759884f3.png)

# 3.コールバックを分解する

先ほどのCall URLのCallbackからカスタムイベントを作成し、Get Response ObjectからEncode Jsonをする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/420ed9c1-4fa4-45a2-95c4-3fc4c6765681.png)
こんな内容が出てくる
![スクリーンショット 2025-06-14 014455.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/b850a4b4-1531-4039-b0a3-bc6627fdb1fb.png)

これを分解する

形式としては

・forecasts（天気などの配列）
　　・Index0（今日の天気）
  　｛
 　・data（日付）
      　・telop（天気）
    　  ・temperature（気温など）
       　｛
        　　・min
          　　｛
            　　　・celsius（最低気温）
             　　　 }
        　　・max
          　　｛
            　　　・celsius（最高気温）
             　　 }　

　　・Index1（明日の天気）
  　｛
 　・data（日付）
      　・telop（天気）
    　  ・temperature（気温など）
       　｛
        　　・min
          　｛
            　・celsius（最低気温）
              　　}
            ・max
          　｛
            　・celsius（最高気温）
             　　 }


…


といった形式の入れ子構造になっている


配列はGet Array field
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/53a59caf-7b29-40f7-acd4-13e6cf32019c.png)

単品の値はGet Object FieldやGet String Fieldで取得できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/fea80134-9c15-4cc2-968f-58dbc06b90b2.png)

# 4.テロップと天気と最高気温を取得する
上のを組み合わせてPrintstringしてみる

![BP_FirstPersonPlayerController-EventGraph_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/a07d9eb4-04e8-41d2-9b5e-666d4f4223d3.png)

完成！

Enterを押すと天気が出てくる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/c27988b4-a749-426e-905c-f5de2d74ab11.png)
Windowsのメモ帳でMarkdown書式が可能に！

Windwosのメモ帳で、Markdown書式が利用可能になり、試してみました。
※ ただ、これは、Windows Insider Program 参加者向けのものです。

恥ずかしながら、私は今まで**Windows Insider Program**を知りませんでした。

Windowsのメモ帳で、Markdownが使えるようになったとの記事を見て、私も使ってみたいと思い、調べてみたら、Windows Insider Programに入らなければいけないということを知り、そこで初めてWindows Insider Programを知りました。
<br>

本記事では、
1. Windows Insider Programについてと、
2. 実際にマークアップ書式のメモ帳を使ってみての感想
を書きたいと思います。

- [Windows Insider Program とは](#windows-insider-programとは)
- [実際に使ってみて](#実際に使ってみて)
    - [使い方](#使い方)
    - [結構いいと思う](#結構いいと思う)
        - [使用例➀：ブログのざっくりとした下書き用](#ブログのざっくりとした下書き用)
        - [使用例➁：Notionなどのツールが使えない企業で](#Notionなどのツールが使えない企業で)
- [まとめ](#まとめ)

## Windows Insider Program とは



Windows Insider Program は、マイクロソフトが公式に運営する、一般提供前の Windows をいち早くお試しいただけるプログラムのことです。

[https://www.microsoft.com/ja-jp/windowsinsider/](https://www.microsoft.com/ja-jp/windowsinsider/)

参加は無料で、結構簡単に、Windowsの「設定」から参加できます。

詳しい登録方法は、[こちら](https://qiita.com/Mikiteee/items/1c1c435e0f9761aee030) から。

## 実際に使ってみて
### 使い方

新しいファイルを開いたときには、デフォルトは今まで通りのPlainTextで、マークダウンもオフになっています。

![スクリーンショット 2025-06-14 001134.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3758412/40ef7a9d-b5ae-443b-86c1-9e7189d4eda6.png)



左上の、「表示」タブ →「マークダウン」で、「書式付き」と「構文」を選ぶことができます。

![スクリーンショット 2025-06-13 234548.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3758412/a5fb30d7-4119-4737-9e56-5f3b9a9deb67.png)


「書式付き」では、上のバーから、タイトル～サブセクションまで選ぶことができます。

![スクリーンショット 2025-06-14 014007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3758412/47c286c1-e63f-4f7e-83f6-9773f0e298b2.png)


「構文」では、Qiitaの記事を投稿するときのような、通常のマークダウン形式で記述することができます。

![スクリーンショット 2025-06-14 000405.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3758412/8d9b605a-c80d-4fc9-82cd-1eca9fa27aa0.png)


また、箇条書きのリストや、番号付きのリストも書くことができます。

その他にも、太字、イタリック(斜め字)、リンクなどを挿入することも可能です。

![スクリーンショット 2025-06-14 000246.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3758412/d158060e-70e9-42d1-98b2-177cc3fd8d1e.png)


保存するときは、Ctrl＋Sを押すと、マークダウンとして保存します。と表示され、.md で保存することができます。

![スクリーンショット 2025-06-14 002747.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3758412/c14bb2cd-108c-475c-b254-b37ef42c5f17.png)



画面の半分が「構文」で、画面の半分が「書式付き」のようなスプリットビューはできないようです。



### 結構いいと思う



**個人的には、全然ありだと思います！**





主に、２つの場面で利用されると思います。



#### ➀ブログのざっくりとした下書き用



本記事のような、シンプルなブログを書くときには、「書式付き」モードで自分の好きなように直観的に書いて、

最後に、「構文」モードに変換すると、勝手にマークダウン形式に直してくれます。

なので、それをそのままQiitaに貼ればいいだけなので、とても楽だなと思います。



たださすがに、コードを載せたり、写真を多用するブログなどには向かないとは思います。

あくまで最低限の機能しかないため。



#### ➁Notionなどのツールが使えない企業で



セキュリティの事業などから、Notionが禁止ソフトウェアとなっている会社もあると思います。

かといって、Googleドキュメントを使って見出しをつけようとすると、使いにくく、面倒です。



そこで、メモ帳の「書式付き」モードを使うことで、視覚的にもわかりやすく、

議事録・メモなどを書くことが可能です。



しかし、やはり必要最低限の機能しか備わっていないため、きちんとしたドキュメントを書きたい。となったときには、

使えないなと思ってしまいます。





## まとめ

個人的には、意外といいなあと思いました。ただ、Notionなどの劣化版と言われれば、その通りなのですが、

まあ誰も、Windows標準搭載のメモ帳にそこまでは求めていないと思います。



また、私が伝えきれなかったところもあると思います。なので、Windowsユーザは、ぜひ使ってみましょう！

Windows Insider Progamに入っていない方は、入ってみましょう！
GitHubに単語帳係も兼任させた話;Multilingual Word Display on README.md

英語はまだなんとか時間取れるけど、他の言語を継続するのは本当にしんどい。

というわけで、作りました。

GitHub に毎朝単語を更新してもらうシステム。
しかも、完全自動化。

Githubを開ける限り言語学習から逃れません。
<strong>素晴らしいですね！！！</strong>

このリポジトリでは、README.md の中に「今日の言葉」というセクションを用意していて、
scripts/update_daily_word.py というスクリプトが、その日の単語を更新してくれます。

単語はCSVなどで管理していて、日付に応じて1日1単語ずつ表示される仕組み。
それをGitHub Actionsで毎日自動実行して、コミット＆プッシュまでしてくれます。

```
name: Update Daily Word

on:
  schedule:
    # 毎日 9:00 JST (00:00 UTC) に実行
    - cron: '0 0 * * *'
  workflow_dispatch: 
  push:
    branches: [ main, master ] 

jobs:
  update-message:
    runs-on: ubuntu-latest
    permissions:
      contents: write 
    
    steps:
    - name: Checkout repository
      uses: actions/checkout@v3
      
    - name: Setup Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.9'
        
    - name: Install dependencies
      run: |
        pip install pandas
        
    - name: Update daily word
      run: python scripts/update_daily_word.py
      
    - name: Commit and push changes
      run: |
        git config --local user.email "action@github.com"
        git config --local user.name "GitHub Action"
        git add README.md
        if git diff --staged --quiet; then
          echo "No changes to commit"
        else
          git commit -m "🌟 今日の言葉を更新: $(date '+%Y-%m-%d')"
          git push
        fi
```

言語学習だけじゃなくて「推しの名言」「好きな写真」とかにも応用したいね
GitHub Pagesで単語カレンダー表示も面白い
NotionやObsidianと連携して、学んだ瞬間にcsvへ反映 → 次の日にはREADMEに表示、みたいなループ

怠惰に意識高く生きます！！
Python似ているらしいMojoとは何者か

# はじめに
Qiitaの記事作成で珍しくアイディアが浮かんでこなかったので、Geminiに何かないか聞いてみました
いろいろ質問していくうちに「Pythonについての最新フレームワーク/ライブラリの〇〇を触ってみた！ファーストインプレッションと所感をまとめてみてはいかがでしょう」と提案されました
さらにどんなものがありますかと質問すると「Mojoというものがあります」と言われました

確かになにも知らない聞いたこともないと思ったので、どういったものか、どうやって導入するかを調べてみました

# Mojoとは
> Mojoは、Modular Inc. によって開発されているプロプライエタリなプログラミング言語です。主な設計者は、Swift言語の生みの親であり、LLVMプロジェクトの主要貢献者でもあるクリス・ラットナー（Chris Lattner）氏です。

Geminiさん様様です

正確にいうとPythonのフレームワークではないみたいですね
ただ、Pythonの構文とセマンティクスを多く取り入れているらしいです

そのほかの特徴としてはPythonは速度が遅いで有名だと思いますが、その欠点を補えているそうです(なんとC/C++やRustに匹敵するほど)

速度が速い理由としては以下のようです
- Mojoは[MLIR](https://ja.wikibooks.org/wiki/LLVM/MLIR)を基盤としているため、特定のハードウェアに最適化されたコードを生成しやすくなっている
- Pythonの動的型付けとは異なり、Mojoでは静的型付けを導入している
- Rustと同様にメモリに対して所有権を導入している
- 複数のデータを同時に処理するSIMD命令を簡単に利用できる機能を組み込んでいる
- PythonのGIL（Global Interpreter Lock）のような制約がなく、マルチスレッドや非同期処理を効率的に記述・実行できる設計になっている

## インストール方法
ものは試しでmacbook(Apple M1)にインストールしてみたいと思います

こちらのガイド通りに進めていきます→https://docs.modular.com/max/packages

またHello, Worldを表示するためのサンプルコードも記されていますが、その場合はガイド通り仮想環境を作成した後に、以下資料の2項目から進めるとうまくいくと思います
https://docs.modular.com/mojo/manual/get-started#2-create-a-hello-world-program

(実際にコンパイルしたものを実行するところまで記載されていますね)

## Pythonとの差分
Pythonでは型の宣言がいらないですがMojoでは必要です
`let`もしくは`var`が必要になります
`let`が不変で、`var`が可変です

```
# Mojo: let はイミュータブル (不変) な変数
let x: Int = 10 # 型を明示することも可能
# x = 20 # エラー: 'x' is immutable

# Mojo: var はミュータブル (可変) な変数
var z: Int = 30
print(z)
z = 40          # 再代入可能
print(z)
```

また、関数の宣言にはdefではなくfnを使用します

```
# Mojo: fn を使用
fn greet(name: StringRef) -> String:
    return "Hello, " + name + "!"

print(greet("Mojo"))

# Pythonのようにデフォルト引数も可能
fn add(a: Int, b: Int = 10) -> Int:
    return a + b

print(add(5))
print(add(5, 20))
```

Mojoでは、引数と戻り値の型を明示することが推奨されるそうです、たしかにコンパイルするのであればそういった情報があった方がより実行速度向上に良い影響がありそうな気はします(コンパイル時にチェックされるそうなのでPythonで型ヒントの書き方を学ぶにはちょうど良い気もします)

ちなみにPythonのdefの書き方にも互換性があるようです
ですがパフォーマンスについてはやはりfnの方がメリットが大きいそうなので、fnに書き換えるのが無難ですね

## パフォーマンス比較
気になるPythonとのパフォーマンス性能を確認できればと思います
(Mojoの公式ベンチマークでは、PythonのコードをMojoに書き換えることで、数千倍から数万倍の速度向上を達成した例が示されているそうです)

※Mojoでは「数値計算、並列処理、ハードウェア最適」の領域でメリットが大きいようでCythonなどとの比較だとまた結果は変わるそうです

試しにフィボナッチ数列の計算を行ってみたいと思います

- Python
```py
import time


def fib_py(n: int) -> int:
    if n <= 1:
        return n
    return fib_py(n - 1) + fib_py(n - 2)


start = time.time()
result = fib_py(40)
end = time.time()
print(f"Python fib(40): {result}, Time: {end - start:.4f}s")
```

- Mojo
```
fn fib_mojo(n: Int) -> Int:
    if n <= 1:
        return n
    return fib_mojo(n - 1) + fib_mojo(n - 2)

fn main():
    print(fib_mojo(40))
```


結果としては以下のようになりましたMojoの方がtimeコマンドを使って出したので、それぞれ形式が違いますが、確かにMojoの方が結果がすぐに返ってきていることが確認できました

```
Python fib(40): 102334155, Time: 11.4970s
mojo life.mojo  0.51s user 0.08s system 75% cpu 0.787 total
```

# おわりに
ということでMojoの一部始終でした
計算処理がかなり改善されていたのはとんでもないと思ったのですが、実際にこれをクラウド環境で使えるのかといったところや実際にAPIなど作ることはできるのかまでは調べるところまではいけませんでした

個人的な予想としてはまだまだAPIの作成はFastAPIやDjangoには敵わないのでは？と思っています(使い慣れているだけの可能性も高いと思いますが)

引き続きリファレンスなど読んで活かせる方法を知っていければと思います
【読書感想】人生の壁

ランニングしながらAudibleで聴いた本の感想です。
本のまとめというより、自分が心に残ったことを3つだけ書いてます。
とりあえず思ったことをメモするのが大切と思い、なるべく30分以内で書き上げています。

# 聴いた本
人生の壁
養老 孟司 (著)

セレンディピティを求め（？）普段とは違い、哲学に分類される本を聞いてみました。
が、個人的には、論理が薄く「お年寄りの独り言」みたいになっている部分があるように感じ、ちょっと合わなかったです。。
例えば「貯金なんかしなくて良い、私は生きてきた」という主張がありますが、生存バイアスじゃん・・・と思います。
（個人的満足度１．５／３、一般的なおすすめ度２／３）

# 心に残ったこと

## 「手を加えて良くしよう」「何かをしたから、上手くいく」という考えは危険

「意識的な何かをして、結果が出た」「施策を打ったから良くなった」というように原因→結果を結びつけたくなることが多いですが、このような考え方は本来危険、と言っていました。
**そもそも意識的に社会をコントールしようとして、上手くいくケースなんてほとんどなく**、無意識のうちに上手く行った、というケースもありえます。
このように何かに手を加えたがるのは政治家に多いらしいです
ただ、思い込みが危険なのであって、努力をするのは大切とのことです。

この部分は私も思っており「無意識に任せて上手くいく」というケースもあるので、何でもかんでも原因と結果で考えるのは良くないと考えています。
また、「努力は大切」ということで、結局、謙虚な姿勢が重要なのかなと思いました。

## バカの壁

**何かを信じるあまり、他の意見に聞く耳を持たずシャットアウトするようになり、人間的に成長しなくなってしまうこと**、のようです。
この内容は名著「バカの壁」でも言及されているそうですが、今のSNS時代の「エコーチャンバー」を予言しているなと思いました。
おそらく「耳の痛い意見にも謙虚に耳を傾ける」という行為が必要なのかなと思いました。

## 人生相談のコツ：囚われない、偏らない、拘らない

本書の内容と若干逸れますが、心に残りました。
筆者の方は人生相談をされることが多いらしく、（人生相談といっても話を聞いているだけの時間が多いようですが、、）アドバイスをするとしたら、結局この3つしかしていないそうです。
人生に悩んだら、状況を棚卸しして、この3つで考えてみようかなと思いました。
次世代AIアプリ「SUNIE」のモックをGitHub公開しました！

## はじめに
とうとう、アプリのモックが(ほぼ)完成したので、早速、GitHub公開しました。(https://github.com/moriaki1983s-product/SUNIE)
本件アプリの概要は以下の通りです。

## 本件アプリの構成アイデア・技術的構成要件
①. AIシステム内部の表現形式である普遍概念シミュレーション言語の定義(=sunie-language)。
②. マルチモーダルなパターンの概念コード化(=数式化と命令化)。
③. 概念コードの自然言語テキスト化。
④. 自然言語テキストの概念コード化。
⑤. 概念コードのパターン化。
⑥. 美的・生理的評価に必要な感情・感覚モデル。
⑦. RAGルール(=推論・推測規則)に基づく、演繹的・帰納的なRAGナレッジ処理プロセス。
⑧. ブロックチェーン技術を用いたRAGナレッジとRAGルールの保全と管理。
⑨. AIの自律的改善(=対ユーザー会話中でのリアルタイム学習, RAGナレッジとRAGルールの自動獲得)。
⑩. AIの自律的改善への人間の介入(=human-in-the-loop)(=ユーザーがRAGベースに直接介入すること)。
⑪. クラウド環境上での分散処理・分散学習基盤。
⑫. クラウド環境上での余剰計算資源を用いたRAGナレッジとRAGルールの自由な探索。
⑬. クラウド環境上での複数AIシステム間のRAGナレッジとRAGルールの同期と共有。
⑭. クラウド環境上での複数AIシステム間の合議制決議・意思決定。
⑮. 科学全般のシミュレーションを含むタスクの自律的設計と自律的解決。
⑯. 身体制御・ロボティクス。
⑰. 常識モデル(=世界モデル)。
⑱. 創発活動の制御(=AIアライメント)。
⑲. 法的・倫理的ポリシーに従った不適切なデータ生成と情報提供の防止。
⑳. RAGナレッジ・ルール推論＆意思決定＆自己改善などの情報処理プロセスと、それらの結果のWeb自動開示・公開(=web-docs)。

## 本件アプリで目指すこと＆可能になること
①未知の科学法則を観測データから自動で導出する。
②創薬・材料工学等での化学合成シミュレーション。
③ビジネス・マーケティング全般の支援。
④工業・意匠・建築などの設計・デザインの支援。
⑤メンタルヘルス管理のための心理カウンセリング。
⑥試験や資格取得のための学習最適化・個別学習プラン提供。
Etc...

## もっとも強調・アピールしたい点
私の構想する次世代AIの技術的構成要件は、全部で20個はあります。 もしも、これらのアイデアが形になったのならば、 長年にわたって議論されてきた「フレーム問題」「ハルシネーション問題」「ブラックボックス問題」「シンボルグラウンディング問題」などが解決されて「人間のように物事を知覚したり 表現できるAI」が実現すると確信しております。

## 最終的な目標
私の構想する次世代AIによって「全世界の福祉に資すること」です。 「誰もが SUNIEを利用することで 即座にアイデアを形にできて 障害のある人でも 自身のアイデアを通じて 様々な社会資源にアクセスできて 誰もがイノベーションを起すことができる」。 そのような未来を夢見ています。

## おわりに
ただ、この構想やアイデアを形にするには、資金面・技術面での多大なご協力が欠かせないと思っています。
ですので、今後は、周知だけでなく、資金的・技術的支援を求める具体的な活動を展開していきたいと思っています。
※ちなみに、2028年のリリースを目指しています！。
それでは、また～。
github使ってみたので備忘録

# githubへ入門した

ほかのサイトにもあるので省略するが、まずgithubのサイトに登録し使用できるよう準備。

remoto repogitoryを作成し、一通り実行したことを備忘録。

~~~
https://github.com/Kenichiro-bit/edge_cnn.git
~~~

まずgit bashにて

~~~
$ mkdir github
$ cd github/
$ mkdir pushtest
$ cd pushtest/
$ git init
Initialized empty Git repository in C:/Users/takig/github/pushtest/.git/
~~~

git init でローカルリポジトリを作成した

~~~
$ touch test.txt
$ git add test.txt
~~~

git add でローカルの中のキャッシュ？に保存
~~~
$ git commit -m test.txt
~~~
これでコミット完了。-mはメッセージを残すことらしい。

~~~
$ git log
~~~

で変更履歴を取得。

~~~
$ git remote add origin https://github.com/Kenichiro-bit/edge_cnn.git
$ git push origin master
~~~

これで、githubのリモートリポジトリの中にpush成功。しかし、mainには反映されていない？？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2652099/2eb1447d-7167-4889-a53b-01314e49f568.png)
masterというブランチで登録されてしまった。。。これでは、きちんとpushできない。。。

なので、mainのブランチを作ってそれをpushする形で対応。

~~~
$ git merge --allow-unrelated-histories origin/main
$ git push origin main
~~~

これで、mainにpushすることができた。

```
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 379 bytes | 189.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote:
remote: Create a pull request for 'testd' on GitHub by visiting:
remote:      https://github.com/Kenichiro-bit/edge_cnn/pull/new/testd
remote:
To https://github.com/Kenichiro-bit/edge_cnn.git
 * [new branch]      testd -> testd

```

こんな感じ。

試しに、dirも作ってそれをpushしてみる。

```
$ git branch testd
$ git checkout testd

$ mkdir test1
$ cd test1/
$ touch gogo.txt
$ cd ../
$ git add test1/

$ git status
On branch testd
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   test1/gogo.txt

$ git commit -m test1/
$ git push origin testd

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2652099/c06a81ea-07ca-4fec-beb7-ee8d39b5bc38.png)


```
$ git checkout main
$ git merge testd main
$ git push origin main

```
これで、mainにtestdを追加して、push成功。。。。

初めてのgithubちょっと難しかったけど便利であることは分かった。ここから開発を始めていきたい
IT初心者 Apache, Nginxs, IIS メモ

# Apache, Nginx, IISとは
Webサイトを後悔するのに必要不可欠なソフトウェア

# 共通点
全てwebサーバソフトウェア
ユーザーがブラウザ（chromeやsafari）でURLにアクセスした際に、そのリクエストを受け取り、HTMLファイルや画像などのコンテンツをブラウザに送り返す。

# Apache 
長年にわたりWebサーバのスタンダードとして君臨
歴史が長く、豊富な情報と実績

### 特徴
・高い信頼性と安全性
・豊富なモジュール
・htaccess
→ディレクトリごとに設定を記述できる
→Webサイトの管理者でもサーバー全体の設定を触らずにりだしレクト等の設定を簡単に行える

### 弱点
・大量の同時アクセスがあるとメモリ消費量が増え、パフォーマンスが低下する

### どんな時に選ばれるのか
・レンタルサーバでの汎用的な利用
・複雑な設定や多くの機能が必要なWebサイト

### Apacheまとめ
Apacheは何でもできる万能で信頼性の高いベテラン

# Nginx
Apacheが抱えていた大量同時接続における問題を解決するために開発された

### 特徴
・高いパフォーマンス
→「イベント駆動」という仕組みにより、少ないメモリで大量の同時アクセスを効率的に処理できる
・静的コンテンツの高速配信
→画像やcss, jsなどの静的ファイル配信が高速
・リバースプロキシ機能
→「リバースプロキシ」や「ロードバランサ」としての機能が協力

### 弱点
・Apacheに比べ、機能の追加や設定の柔軟性で劣る
### どんな時に選ばれるのか
・アクセス数の多い大規模サイト
・静的コンテンツが多いサイト
### まとめ
Nginxは速さと高速/高効率を追求した高性能なエース

# IIS
Microsoftが開発しているWindowsサーバ専用のWebサーバ

### 特徴
・Windowsとの親和性
・OSとの一体感が高い
・GUIでの簡単設定
・NETFramworkとの連携
・Microsoftが開発したプログラミング環境ASP.NETなどで作られたWebアプリを動かすのに最適化されてる

### 弱点
・基本Windows Serverでしか動作しないためLinuxが主流のWeb業界では利用シーンが限られる

### どんな時選ばれるのか
・社内システムがWindows Serverで統一されている環境
・ASP.NETで開発されたアプリを公開するとき

### まとめ
IISはWindowsという特定のフィールドで高いパフォーマンスを発揮する