OmniAICreator/Qiita-1.07M huggingface dataset:
0から始めるC/C++をVSCodeで使用するための環境構築

# ステップ１
パイソンばかり触っていた私がC環境をVSCODEで構築するための記事です。

まず大事なのがコンパイラMinGW（ミン・ジー・ダブリュー）といって、CのコードをWindows上で実行できるようにするため必要なものを用意しないといけません。

インストーラーが色々とネットにありますが、
手動でフォルダを回答してプログラムフォルだに放り込んだほうがいいでしょう。

下記のGITHUBのURLから64bitの圧縮ファイルをダウンロードして解凍しましょう。

https://github.com/niXman/mingw-builds-binaries/releases


# ステップ２

指定の場所に移動したらその中のGCCという実行ファイルを実行できるように環境変数でパスを通します。

環境と検索にいれると出てきますので、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193429/6cec9559-69c2-14f5-c297-c5b566ad31c1.png)
その中のパスを編集して、MinGWのbinフォルダを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193429/f26199f9-5c18-cf21-03f8-cad35ca134a1.png)


実際に環境変数が通っているか確かめてみます。
コマンドプロンプトを開いて、gcc -vと入力してちゃんと実行されればとりあえずOKです。

VSCODEでも環境変数通りように再起動しておきましょう。


# ステップ３
再起動後、VSCODEを開く拡張機能をインストール後、
Cのプログラムを書きます。

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

void main(void) {
    printf("Hello World");
}
```
ここで、vscodeフォルダ内にあるsettings.jsonファイルの内にも実行ファイルのパスを入れておかないと警告がでますので、


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193429/8d021650-a058-1999-559e-4414fb953b0e.png)

追加しておきます。

```
    "C_Cpp.default.compilerPath": "c:\\Program Files (x86)\\mingw64\\bin\\gcc.exe"
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193429/88882c8d-192e-a337-a276-1c9b7cbe3b83.png)

実行するとハローワールドがターミナルに現れました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193429/558db9de-493e-4d1b-8fe1-46e587aa5f74.png)

# まとめ
パイソンと違って、インストーラーみたいなのがあまり信用性なく、
直接MinGWを解凍してそのフォルダのbinフォルダにパスを通したあと、
なおかsettings.jsonにもgccのパスを追加しないといけないという点がポイントだと思います。
GitHubに公開してるvfd.macの使い方

フロッピーディスクのイメージファイルを作るNASM用のマクロをGitHubに公開してるんだが、ソースを読んでも使い方がよく分からないかも知れないので、使い方を簡単に書いておく。

[https://github.com/himaprog/vfd.mac](https://github.com/himaprog/vfd.mac)

```nasm:hello.asm
; ***** メッセージ「Hello.」を表示する（1.44MB FD用）

%define VFD_DISKSIZE 1440
%define VFD_DISKLABEL_OEM "HELLO"
%define VFD_DISKLABEL_VOL "HELLO"

%include "..\_nasm_include\vfd.mac"


VFD_MBR_BEGIN

start:
	xor	ax, ax
	mov	ds, ax
	;mov	es, ax
	mov	ss, ax
	mov	sp, VFD_MBR_HEAD

	; カーソル位置の属性と文字の取得
	xor	bx, bx
	mov	ah, 8
	int	0x10

	; 文字列の表示
	mov	bp, Msg
	mov	cx, MsgLen
	xor	dx, dx
	xor	bh, bh
	mov	bl, ah
	mov	ax, 0x1301
	int	0x10

	cli
	hlt


dataArea:
; データ
	Msg	db "Hello.", 0Dh, 0Ah
	MsgLen	equ $ - Msg

VFD_MBR_END


VFD_BLANK_DISK
```

ディスク情報などの煩雑な物をマクロに任せて、殆どが目的の処理内容のコードだけで書くことが出来る。
また、VFD_の各種マクロ定義は、必要な物だけ使えば良い。例えば、VFD_DISKLABEL_VOLをソースに書かなければ、標準的な物として"NO LABEL"というボリューム名が付くようになってる。

マクロのインクルードの場所は、使う環境に合わせて適当な物にしてほしい。

以上、簡単な説明。
毎回パスワードを入力せずにsudoを使う方法

サーバーなどでrootユーザーを使うことが推奨されていないので、新しいsudoユーザーを作った。だが新しいユーザーにsudo権限を与えても、ログインする際に毎回初めてsudoを使うとパスワードが問われる。それが嫌なので、毎回パスワードを入力しなくてsudo使えるようになる設定を調べた。

複数のソースによると`/etc/sudoers`というファイルをrootとして以下のように編集すると設定できる：
visudoというコマンドがsudoersファイルを編集させてくれる。sudo権限いるけどどこからも実行できる
```sudo visudo```
そしてこの一行を追加する。どこにも追加してもよさそうが自分は`root ALL=(ALL)`の下にした
`${ユーザー名} ALL=(ALL) NOPASSWD: ALL`

これで解決できた人が結構いるらしいけど、自分の場合ではうまく行かなかった。更に以下の手順をする必要があった。
`sudoers`ファイルと同じディレクトリにある`sudoers.d`というディレクトリに新しいファイルを作成して同じ一行を書いておく。なおファイル名はユーザ名と同じにすること。元々このファイルなかったことを確認した。READMEしかなかった。

nanoで開く
`sudo nano /etc/sudoers.d/${ユーザー名}`
同じ一行を入れる
`${ユーザー名} ALL=(ALL:ALL) NOPASSWD: ALL`


これでパスワードいらなくなった！楽

パスワードいらないけど、sshでしかログインできないので安全なはず
DB設計について

## 1.概要

データベースの設計を行ったので、その内容をまとめます。

## 2.使用ツール

データベース設計には、Notionを使用しました。

## 3.事前に考えたほうがいいもの

データベースを設計するためには、まず要件を明確にすることが重要です。要件が明確だと構造や具体的なテーブル名やカラム名を決めやすくなります。

例:扱うか情報を具体的にあげる

例えば、ユーザー情報を管理する場合、以下の項目を考慮します。

- ユーザーid
- ユーザー名
- パスワード

## 4.設計

具体的な構造や名称を決めていきます。

設計には下記テーブルを使用しました。

| 　カラム名   | 型   |  初期値 |  NULL許容 |  上限値 | 外部キー  |
|------------|------|--------|----------|--------|----------|
| id         | int  | -      | NO       | NO     | NO       |

---

### 1.カラム名

カラム名は、SQLで推奨されているスネーク記法(例: user_id)で記入したほうがいいです。
また、英語かつ簡潔で分かりやすいものにしたほうが他の開発者にも分かりやすいです。

規則の例

- 時間を表す場合は、末尾に_atを付ける（例: create_at, update_atなど）
- フラブを表す場合は、頭にis_を付ける (例: is_deletedなど)

---

### 2.データ型

データベースで使用される主なデータ型を説明します。

- string : 短い文字列
- text : 長い文字列
- integer : 整数
- float : 浮動小数
- decimal : 精度の高い小数
- datetime : 日時
- timestamp : タイムスタンプ
- time : 時間(年、月、日は変更できないデフォルト値)
- date : 日付
- binary : バイナリデータ(0,1)
- boolean : 真偽値　true,false
- object : JSON形式のデータや配列など、複雑な構造を持つデータを格納可能

---

### 3.初期値

初期値は、あらかじめ設定しておくとで空白を防ぐことができます。

例: boolean型でfalseを初期値で設定

SQL構文の例:
``` SQL
DEFAULT デフォルト値
```
---
### 4.null許容

NULL許容は、空白を許すかどうかの設定です。
データが必須の場合は、NULLを許容しない設定にすることによって、必ずデータが入力させれようにします。

例: パスワードなど

SQL構文の例:

- 作成時
```sql
NOT NULL
```

- 追加時
```sql
AFTER TABLE テーブル名 MODFY カラム名 SET NOT NULL
```

---

### 5.制限値

制限値を設けることで、想定外のデータを防ぎます。
例えば、文字列の長さや数値を制限することで、不正なデータが入力されるのを防ぎます。

この設定は通常、バックエンド側でバリデーション(Validation）によって制限します。

---

### 6.外部キー

外部キーは、あるテーブルのカラムが別のテーブルの主キーを参照することによりテーブル間の関連性を構築する。これによりデータの整合性を取ることができます。

例:社員と部署のデータ

- 社員テーブルにある「部署カラム」は、部署テーブルを参照する
- 外部キーを設定することで、「部署コード」が部署テーブルに存在するものだけ登録可能になります

SQL構文の例:

```sql
FOREGIN KEY (部署カラム)　REFERENCES 部署テーブル
```

## 5.最後に

今回の設計で、６つの事項を考慮しましたが、データベースの規模や複雑さに応じて柔軟に対応する必要があります。
適切な設計を行うことで、効率的で堅牢なデータベースを構築できます。
ExcelVBAで「人によってファイルパスが違う問題」の解決法

# 事例
複数人で使用するExcelツールを作る場面でたまに遭遇するのが、
共有フォルダにある「example.txt」をExcelツールから参照したいが、PCによってファイルパスが異なるというケース。

（例）PC1: 　C:\Folder1\example.txt
　　　PC2: 　D:\AnotherFolder\example.txt

# 対応策
Windowsの「環境変数」の設定をつかう方法がある。

### (1)事前設定
各PCで参照するフォルダ（C:\Folder1やD:\AnotherFolder）に対して、共通の環境変数名を設定する。

【手順】
Windowsの「環境変数」を開く。
変数名を「MyTools」などに設定し、フォルダパスを登録する。
（このあたりの設定方法は「パスを通す」などで検索すると詳しい解説あり）

:::note info
小規模の部署であれば、個別にデスクを回って設定させてもらうのがよいと思います
:::

### (2)ExcelVBAでのファイル参照方法
`Environ("環境変数名")`で、事前設定したフォルダパスを取得できる。
```
Sub sample()
    Dim folderPath As String
    Dim fullPath As String

    ' 環境変数「MyTools」からフォルダパスを取得
    folderPath = Environ("MyTools")

    ' フルパスを作成
    fullPath = folderPath & "\example.txt"
End Sub

```

# 補足
OneDriveのフォルダはあらかじめ環境変数に設定されているので、事前設定せずに`Environ("OneDrive")`で参照できる。
［ServiceNow］バージョンを確認する：stats.do

※この記事はServiceNow初心者が学習用のために記載した記事です。内容について誤っている場合がございます。不足点などございましたらコメントいただけますと幸いです。


# バージョンを確認するタイミング
- 新しい機能やプラグインを利用したい場合
- カスタマイズや開発作業を行う前
- インスタンスのアップグレードを計画するとき
- トラブルシューティング時
- サポートやドキュメント参照時
- インテグレーションや外部システムとの連携設定時
- セキュリティパッチの適用状況を確認する場合

# 確認方法
- Filter navigatorで「stats.do」と記載してEnter
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3624279/9f82219f-eb5e-12f1-61c0-0bc131c9d2e2.png)

- バージョンが表示されます
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3624279/eb267b2a-4ef8-e96e-bd1d-c1fb1f97fd96.png)

# statsの語源
- 「stats」の語源は、英語の「statistics（統計）」に由来します。この言葉は、ラテン語の「status（状態）」から派生した言葉で、元々は「状況や状態を数値で示すもの」を指す
- ServiceNowで「stats.do」は、インスタンスの現在の「システム状態」を統計的に表示する機能を指す
    - 語源的に「状態を数値やデータで示す」という元の意味に即す
効果検証の手法と概要


データ分析や効果検証の世界では、「観察的手法」という言葉がよく使われます。これは、直接実験を行わずに、既存のデータや自然な状況を観察して、原因と結果の関係を分析する方法です。この記事では、代表的な観察的手法を初心者の方にも分かりやすく解説します。
※この記事は、ChatGPTの出力を基に作成しています。

---

## 観察的手法とは？

この記事では、効果検証の中でも観察的手法に絞って、その特徴や具体例を分かりやすく説明します。

観察的手法は、実験のように対象を操作するのではなく、既存のデータや自然に発生する出来事をもとに効果を検証する方法です。

例えば、「広告を出した回数が売上にどう影響するのか？」を調べたい場合、過去の広告の記録と売上データを使って分析します。このように、「自然な状況を観察して、原因と結果の関係を考える」ことが観察的手法の特徴です。

---

## 観察的手法の代表例

### 1. 回帰分析

#### **概要**
回帰分析は、「原因」と「結果」の関係性を数学的に分析する手法です。

#### **例**
- 広告を10回出したときの売上、20回出したときの売上、といったデータを使い、「広告の回数が売上にどれくらい影響を与えているか」を調べます。

#### **メリット**
- 過去のデータを使うだけで関係性を明らかにできる。
- 比較的簡単に実施可能。

#### **デメリット**
- 因果関係ではなく、相関関係しかわからない場合がある。

---

### 2. 差分の差分法 (Difference-in-Differences, DID)

#### **概要**
「特別なこと（介入）」が起きたグループと、そうでないグループを比較して、その変化の差を見る方法です。

#### **例**
- 店舗Aで新しい接客システムを導入（介入）。店舗Bでは導入しない。両店舗の売上の変化を比べて「接客システムの効果」を分析します。

#### **メリット**
- 自然実験のように効果を検証できる。

#### **デメリット**
- 外部要因（例：天候や経済状況）の影響を完全に排除するのが難しい。

---

### 3. 傾向スコアマッチング (Propensity Score Matching, PSM)

#### **概要**
「条件が似ている」グループを作り、その違いを比較する方法です。

#### **例**
- 広告を見たAさん（30代、男性、会社員）と、広告を見ていないBさん（30代、男性、会社員）を比較。条件が似ているので、広告の効果を測りやすくなります。

#### **メリット**
- 実験ができない場合でもデータを使って分析可能。

#### **デメリット**
- 観測されない違い（例：性格や行動の違い）を完全に除外できない。

---

### 4. 中断時系列解析 (Interrupted Time Series, ITS)

#### **概要**
「介入が行われた時点」を基準に、その前後の変化を分析する方法です。

#### **例**
- 商品の価格を値下げした日を基準に、値下げ前と値下げ後の売上を比較。「値下げが売上に影響を与えたか」を調べます。

#### **メリット**
- 長期間のデータを使って分析できる。

#### **デメリット**
- 他の外部要因（例：季節変動）の影響を排除するのが難しい。

---

## 観察的手法を使うときのポイント

観察的手法は、直接実験を行うことが難しい場合に非常に役立ちますが、注意が必要です。
- **因果関係と相関関係を混同しない**こと。
- 外部要因やバイアスを可能な限り排除する工夫をすること。

複数の手法を組み合わせることで、より信頼性の高い分析が可能になります。

---

## まとめ

観察的手法は、「自然な状況を観察して、原因と結果を考える」ための強力なツールです。初心者の方でも、基本的な考え方を理解すれば、データを活用してさまざまな効果検証ができるようになります。
久しぶりにReactで学習記録アプリの作成を作ってみた

# はじめに
久しぶりにReact単体で学習記録アプリを作ってみたので、
復習できたなと思ったところや感じた事などをまとめて書いていきたいと思います。

# よかったこと
・Reactフックの学習になったので、少しだけ言語化できるようになった
・chatGPTを使わずできたのもあり、とにかく自分でモノを作ったという実感が湧いた
・作業ボリュームはそこまでないので楽しくやれた

# ちょっとだけ時間がかかった箇所
作業時間を合計値の状態として保持する際にjavascript特有のメソッドを使ったが、
少しだけ、時間がかかった
5分もかからずだったけど、新たに調べなくてはいけない部分が多く楽しかった

# おわりに
技術をキャッチアップするときは、座学だけでやっていることが多かったが
手を動かすことで、より理解を深められたんじゃないかなって思いました。
また、実際に作ることで楽しさや成果に対する達成感も得られますし、
AIを使わずに自分でモノを作ったという実績が自分はやれるんだって思わせてくれます。

今後もとにかく手を動かして学習を進めたいと思います。


# JISOUのメンバー募集中！
プログラミングコーチングJISOUでは、新たなメンバーを募集しています。
日本一のアウトプットコミュニティでキャリアアップしませんか？
興味のある方は、ぜひホームページをのぞいてみてください！
▼▼▼

https://projisou.jp
就活が終わったので、卒業までの目標をリスト化してみる

現在、大学3年生のりゅーです。
Web系の企業から内定をいただき、前々から始めたいと思っていたQiitaを始めることにしました。

まずは、書きやすいことからということで、卒業までの1年の間にやりたいことをリスト化してみたいと思います。

## マストでやりたいこと
1. 基本情報技術者試験の合格
1. ハッカソンへの参加(3回以上)
1. Qiitaで記事を、月一回以上投稿
1. 技術書を10冊を読む
1. Web,モバイルアプリの個人開発でマネタイズ(1円でも)

## 言語,フレームワーク
1. Vue.js
1. Go言語
1. HTML, CSS, TypeScript
1. Tailwind

## 時間があれば取り組みたいこと
1. Unityでゲームを作る
1. Figma
1. 競技プログラミング
1. AWS

## アプリに組み込んでみたいもの
1. LLM
1. nfcタグ
1. 音声認識
1. QRコード

-------
特に、ハッカソンとアプリのマネタイズは、時間に余裕のある学生時代が一番行いやすいと思いますので、特に頑張っていきたいです！

実際に、1年後の卒業時にどの程度できたかを記事としてあげたいと思っているので、楽しみにしてください～
アーキテクチャ選定とサポート期間の関係


# サポート期間は長いとうれしい
アーキテクチャを選定する立場としては、採用する技術の賞味期限、つまりはサポート期間は大変重要な要素になります。
当然のことながら、なるべくならサポート期間が長い方が好ましいケースが多いです。大規模なプロジェクトでソースをゴリゴリ書いている真っ最中でサポート期限が来てしまうと変更点の洗い出し、動作確認、ソースや設定の見直し、規約やガイドラインの更新＆開発メンバーへの周知、と本来はやらなくてよい（将来いずれ発生してしまうのだが）追加作業がてんこ盛りで発生してしまいます。
1年に2回更新が必要なシステムより、2年に1回更新すればよいシステムのほうが対応コストが安いと説明しやすいというメリット？もあります。

# 長いサポート期間は常に正義なのか
では、常に最長のサポート期間が見込めるバージョン・プロダクトを選定するべきなのでしょうか？
ここでコードの製造からリリースまでの期間が半年程度のプロジェクトを想定してみます。

## サポート期間が半年のケース
遅くともリリースから3～5ヶ月程度でバージョンアップが発生すると想定されます。この時期であれば、初期のバグ対応や細かいエンハンスなどでリリースも活発と想定されるので、バージョンアップに対応できるリソース（人、対象プロダクトへの知識、テスト環境など）がまだ生きているので対応は容易いと思われます。
もちろん、ある程度バグの発生が落ち着いていることが前提条件ではありますがw

## サポート期間が2年のケース
1～1.5年後にバージョンアップが発生することが想定されます。定期的なメンテナンスが行える体制が維持されていればよいのですが、構築メンバーの離散、プロジェクト資料の散逸（資料の陳腐化もよくある問題ですね）などが起きていることもしばしばあります。バージョンアップまでの期間が長いということは、対応しなければならない差分もまた多くなることを意味します。そのとき、アーキテクトが残ってくれていればよいのですが、一般的なシステムインテグレーションプロジェクトでは難しいでしょう。
そのため、バージョンアップが発生するまでの期間、アーキテクチャを理解してるメンバーを如何にして維持していくのか、あるいは維持しやすい枯れたシンプルなアーキテクチャを選択するなど、ヒト・モノ・カネの観点でプロジェクト開始当初（アーキテクチャを決める段階）に対策を検討しておく必要があります。

例えば一つの手段として、式年遷宮のようにメンバーや記憶が散逸する前に伝えていくために、比較的短いサポート期間を利用して定期的にアップデートのイベントを発生させるというのも現実的な手段として検討してもよいのではないかと思います。

上記の話は、システムインテグレーションプロジェクトを想定としていますが、自社サービス・プロダクトにおいても同じような課題は発生するでしょう。

# サポート期間が長いからと油断は禁物
突如としてセキュリティホールが見つかり、対応に右往左往するのは稀によくあることなので、やっぱり体制の維持コストはプロジェクト初めにネゴっておきましょう。

# まとめ
- サポート期間は技術選定における要素の一つ
- 基本的には長期のサポート期間をもつ製品、バージョンを選択する
- プロジェクト完了後の保守体制を考慮した選定が必要となる
TypeScriptのカスタム型 Spread で複雑な型をフラット化！

# はじめに
TypeScriptでは、型の操作を簡略化するためにユーティリティ型が多く活用されます。今回紹介するカスタム型 `Spread` は、ホバー時に表示される型情報を確認する際に便利な型です。本記事では、`Spread` がどんなもので、どう使うのかを分かりやすく説明します。

## Spread の定義
まずは、`Spread` の定義を見てみましょう。
```ts
export type Spread<T> = {
  [K in keyof T]: T[K];
};
```
一見、何もしていないように見えますよね。でも実は、`Spread` は 型を再構築して、よりシンプルに見せたり、**型推論を改善したりする** 機能を持っています。

:::note info
この型は、マッピング型 と呼ばれる構文を使用しており、以下の動作をします
:::
- 型 `T` のすべてのキー（`keyof T`）をループ
- 各キーに対応する型 `T[K]` をそのまま新しい型に再割り当て
- 結果として、元の型 `T` をそのまま複製した新しい型が作られます

## いつ Spread を使うの？
変数にマウスカーソルをホバーした際に表示される型情報（名称がわかりません..）で、交差型（`&`）が使用されている場合、型が冗長に見えたり、必要な情報が隠れてしまうことがあります。`Spread` を使うことで、それらの問題が解決できます。

#### 例: 型が複雑な場合
```ts
type Profile = { name: string, age: number }
type Address = { prefecture: string, city: string }
type User = Profile & Address
type Simplified = Spread<User>;

// ホバー時の型情報:
// User: Profile & Address
// Simplified: { name: string, age: number, prefecture: string, city: string }
```
`Spread` を使うことで、複数の型を結合した結果でも「フラット」な形に見えるようになります。これで型の読みやすさがぐっと上がりますね。

## 注意点
1. パフォーマンスへの影響
型が複雑すぎる場合は、TypeScript のコンパイラが型計算に時間を要することがあります。`Spread` を使うと計算量が増える場合があるので注意が必要です。
2. すべての場面で必要なわけではない
型が十分にシンプルな場合は、`Spread` を使わなくても問題ありません。必要なときだけ使いましょう。

## まとめ
`Spread`型は、TypeScriptで型の読みやすさや改善するために役立つ便利な型です！
ぜひ活用して、よりシンプルでメンテナンスしやすいコードを目指してみてください😊
PowerShell 7.5.0 の CLR error 問題

いつの間にかリリースされていた PowerShell 7.5.0 ですが、起動しようとするとクラッシュします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531208/34af805f-a51b-9a75-5f1f-5f06f160b1a8.png)

Preview 版から存在する問題のようです。
https://github.com/PowerShell/PowerShell/issues/24435#issuecomment-2481436820

原因は Sentinel One が濃厚みたいですが、いつ修正されるかは不明。

しばらくは 7.4.7 を利用するのがよさそうです。
Powershell 7.4.7 は以下のリンクから取得できます

https://learn.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.5#installing-the-msi-package


Winget 経由で導入するとすでに 7.5.0 になっているので注意。
Javaで「テキストフィールドの編集可能/不可の切り替えおよび有効/無効の切り替え」の動作を確認してみた。

# 概要

Javaで「テキストフィールドの編集可能/不可の切り替えおよび有効/無効の切り替え」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/tutorial/jtextfield/index12.html

# 実装

以下のファイルを作成しました。

```JSample12_1.java
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.Container;
import java.awt.BorderLayout;

class JSample12_1 extends JFrame{
  public static void main(String args[]){
    JSample12_1 frame = new JSample12_1("MyTitle");
    frame.setVisible(true);
  }

  JSample12_1(String title){
    setTitle(title);
    setBounds(100, 100, 600, 400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTextField text1 = new JTextField("Sunday", 40);
    JTextField text2 = new JTextField("Sunday", 40);
    text2.setEditable(false);
    JTextField text3 = new JTextField("Sunday", 40);
    text3.setEnabled(false);

    JPanel p = new JPanel();
    p.add(text1);
    p.add(text2);
    p.add(text3);

    Container contentPane = getContentPane();
    contentPane.add(p, BorderLayout.CENTER);
  }
}
```

以下のコマンドを実行しました。

```
$ javac JSample12_1.java 
$ java JSample12_1 
```

実行結果は以下の通りでした。

![Screenshot from 2025-01-27 19-21-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192024/f29ba649-a18f-6290-6fcb-4eefa06b573c.png)

# まとめ

何かの役に立てばと。
Obsidian インデックス式Markdownファイルフォルダー管理法をご紹介。

皆さん,Obsidianは使っておられますでしょうか？MarkdownエディタとしてもMDドキュメント管理ツールとしても優秀なソフトです。今回はMDドキュメント管理ツールとしての一つの使い方をご紹介します。

まず、Obisidianでのドキュメント管理方法は,
+ タグ管理
+ wikiやスパイダーウェブ的な記事同士のリンク
+ 強力な検索機能
+ フォルダー分け管理
の4つの手段を組合わせてドキュメント管理を行っていきます。

特にObsidianでは、記事同士のリンクやタグ管理でフォルダー階層を浅くして、管理するがベストプラアクティスとして紹介されがちです。

フォルダー階層が深い記事管理方法のデメリットは、
+ どこに何があるのかわからなくなる
+ ファイルにアクセスしづらい
+ クリック回数が多くなる
+ ファイル同士の比較がやりづらい
があり、避けられているようです。

ですが、細かいフォルダ分けは、カテゴリーごとに分けて管理でき、情報アーキテクチャの設計がやりやすいというメリットもあります。

今回僕が紹介するのは、まず思いっきりフォルダーの階層を深く設計します。
情報アーキテクチャの設計をがっつりやります。

そしてフォルダの直下にindexを作成します。
![index.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990962/c34dd08f-2897-6566-87d8-afdf94efe7c1.png)

index → カテゴリーindex → ドキュメント　という風にリンクを貼ります。
indexを作成することで記事の網羅性・回遊性などが向上します。

![キャプチャ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3990962/fcc6797e-ab35-2310-b04a-62ed88a75c0f.png)
白色の文字はフォルダを　紫色のリンクはMarkdownファイルを表しています。
細かく手作業で作るはぶっちゃけめんどちぃですが、利便性は間違いなく向上すると思います。

## 使用プラグイン紹介
index作成の補助で使っているプラグインを紹介
+ Advanced Tables(めんどくさいテーブル作成を楽ちんにしてくれる)
+ editing-toolbar (便利)
+ various-complements (タイピングを減らしてくれる)

何か質問やわかりづらい表現の指摘などがあれば、お気軽にどうぞ

## 僕が書いたobsidianの紹介記事です。
[痒い所に手が届く孫の手的なMDソフトウェアobsidianを是非紹介させて欲しい！](https://qiita.com/tatsuoNakano/items/64a406a7d09130b025bc)
【AWS】Amazon Q Business pro 月額20$ポッキリじゃないの!?

## :beginner: 対象購読者
- AWSコストでやらかしてしまった同志が欲しい方
- Amazon Q businessが定額月額ポッキリ料金だと思ってる方
- AWSのコストに興味がある方


## :innocent: やっちまった･･･
amazon Q Businessというサービスで気がづいたら月のコストが100$越えてた話

## :beginner: amazon Q を触ってみた
https://aws.amazon.com/jp/q/business/pricing/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2933489/796a5e66-6606-9a15-c9ee-a6e744e72c02.png)

ふむふむlite版が３USDか。pro版はちょっとお高くなって20USDか...  
20USDかかるけどpro版で色々試してみるか！と軽い気持ちで触ってみました…:fist:
まさかこれが ディズニー1回分 の代償になるとは、この時は思いもしませんでした…






## :eye: 100$超の料金発生!!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2933489/e1b54700-649e-b1a6-3912-5b56759756f7.png)
数週間後、何気なくAWSの請求画面を見てみると… 
### Amazon Q : 100.46 USD

「えっ？えっ？これ何？新手のドッキリ？」と3度見:eye::eye::eye:
原因を探るべく公式ドキュメントを開くとまさかの事実発覚:angel:


## :moneybag: 実は…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2933489/a97ab566-5912-ca9f-ec39-5d46b4b63122.png)
原因はユーザ料金とは別にインデックスの料金というものが発生するようです。
ベクトルデータベースの使用料というところでしょうか…

:::note warn
料金は 1 ユニットあたり 0.140 USD/時 (アプリケーションごとに 5 ユニットまで)
:::
:::note warn
【1ユーザでproプラン1ユニットの1ヶ月の使用量】
　20$ + 0.14USD × 24時間 × 30日 = 120USD/月
:::
そりゃ100ドル超えますわな…

## :eyes: コストを抑える何か良い方法はないか？
### 【イデックスを消してみる】
「夜だけ停止して節約！」なんて甘い考えでインデックス削除を試みるも、
データソースまで一緒に消滅:sob:(そりゃそうだ)

### 【インデックスなしで使う】
 ただの一般回答しか返ってこない…プライベートデータの有用性ゼロ:frowning2:

### 【プラグイン/カスタムプラグインだけ使う】
カスタムプラグインは意外と使えそう！これは少し可能性ありかも？:point_up:

## :bow_tone1: 反省
### 【ポチポチスタイル】
公式ドキュメントをしっかり読まずに「ポチポチするの楽しい！」
と思った結果がこれです。


### 【コストを確認せず放置プレイ】
新サービスを試したらまずコスト確認!!これは絶対ですね…


### 【インデックスに対する理解】
kendraも OpensearchServerlessをはじめ他の類似サービス（ベクトルデータベースを使用する）はある程度のコストがかかります。そのあたりを意識すれば3$で収まるわけないのでは？と気づきがあったかもしれません:joy:


## :ramen: 締め
「Lite版は3USDぽっきり！Pro版は20USDぽっきり！」と信じ込んでいた私…実際は 携帯の基本料金＋通信料 みたいなトラップ構造でした。しかもドキュメントも読まず「インデックス？なにそれ、おいしいの？」状態で突き進んだ結果…100USDの請求書が爆誕💣
これには文句も言えず ただただ 「自業自得」という4文字を噛み締めるばかり…:kissing:
これからは 「ポチポチ前に公式ガイドを読む」 を心に刻みます:innocent:

<font color="Gray">あーーー...100USDあったらディズニー1回行けたなー</font>:stars::stars::stars:

戒めとしてAmazon Q Businessについてもっと理解してアウトプットしたいと思います:sob:
［ServiceNow］キャッシュをクリアする：cache.do


※この記事はServiceNow初心者が学習用のために記載した記事です。内容について誤っている場合がございます。不足点などございましたらコメントいただけますと幸いです。

# キャッシュをクリアするタイミング
- カスタマイズや設定変更後
- UIポリシー、ビジネスルール、クライアントスクリプト、テーブル設定などの変更が、即座に反映されない場合。
- スクリプトやコードを更新した後
- UIやポータル関連の修正時
- ページが正常に読み込まれない、動作が遅い、エラーが発生するなどの不具合が見られる場合。
- 新しいプラグインや機能を有効化した後
- データ更新が即座に反映されない場合

# キャッシュの削除方法
- Filter navigatorで「cache.do」と記載してEnter
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3624279/34220b3e-57a5-91d0-d85a-e4269a8312bb.png)
- 自動でキャッシュがクリアされます
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3624279/e60dbfd2-596e-f521-94af-8aa125ad2926.png)
SupabaseでNOT NULL設定時のエラー解決方法

Supabaseでカラムに`NOT NULL`をテーブルのカラム内で設定しようとした際に以下のエラーが発生しました。

![スクリーンショット 2025-01-26 12.20.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977506/8f97f288-dad0-884b-92f5-458ced995675.png)



## エラー内容
```text
failed to update pg.columns with the given ID: invalid input syntax for type integer: "non-null"
```
![スクリーンショット 2025-01-26 12.15.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977506/3ef22b0e-f6e8-f4d0-8a54-b60a03ca4daa.png)
## 原因
SupabaseのGUIで「`NOT NULL`」を設定する際に、**`Is Nullable`のチェックを外さずに値や設定を変更**していたためエラーが発生しました。

`Is Nullable`が有効な場合（チェックが付いている状態）、NULLが許可されるため、設定に矛盾が生じていたようです

### 解決までの手順
1. Supabaseのテーブル編集画面で該当カラムの**設定アイコン（⚙️）**をクリック。
2. **`Is Nullable`のチェックを外す**。
3. 変更を保存。
![スクリーンショット 2025-01-26 12.26.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977506/1e7ccf34-9dfe-2acc-7912-9f28dbdc5574.png)


これで、該当カラムに`NOT NULL`制約が適用され、NULL値を許可しないようになりました。
GETリクエストが失敗したのでCORS設定に`Access-Control-Allow-Origin`を追加した

# はじめに
現在　**Rails API×Next.js**で簡単なSNSアプリを作成しています。
**API連携にはaxiosを使用**しています。
CORS設定にはまったので簡単に解消法をまとめます。
# 問題
**GETリクエスト**が失敗していました。
```
GET http://localhost:3000/api/v1/posts net::ERR_FAILED 2001
```
# 原因

**CORS（Cross-Origin Resource Sharing）のAccess-Control-Allow-Origin ヘッダーが設定されていない**ため、クライアント側でエラーが発生しているようです。

### Access-Control-Allow-Originとは
その名の通り、**許可されたオリジンからのリソースをクライアントが受け取ることができる**ものになります。
**こちらを設定していないので、リクエストが拒否されていました**。

https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

Google検証ツールでネットワークタブを開いて確認しましょう。
**レスポンスヘッダーにAccess-Control-Allow-Originが存在していません**。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3675500/5c0f292c-fac9-dc57-19f7-42102af11bae.png)

仮にAccess-Control-Allow-Origin ヘッダーが設定されていれば、下記のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3675500/50414685-7f9b-5a62-52cc-0e2bbaddb75d.png)


# 解決方法
**設定ファイルに`Access-Control-Allow-Origin`を追記**しました。

```rb:cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins ENV['FRONTEND_URL'] || 'http://localhost:3001'

    resource "*",
      headers: :any,
      methods: [:get, :post, :put, :patch, :delete, :options, :head],
      expose: ['Access-Control-Allow-Origin']
  end
end
```

# おわりに

`No 'Access-Control-Allow-Origin'`のエラーが出なかったため、解消に時間がかかりました。
他にもいろいろな要因があるようなので疑ってみたほうが良いかもしれません。
CORS設定は沼にはまっている人が多そうですね。。

https://qiita.com/yusuke5/items/27443c69f9c37ba53e7c

# 参考

https://qiita.com/naogify/items/e1f28a00741ba628c186
PMOレベル(主観)

# はじめに

プロジェクトマネジメントオフィス（PMO）は、プロジェクト運営の質を向上させ、組織全体でのプロジェクト成功率を高めるために重要な役割を果たします。しかし、PMOは一様ではなく、業務範囲や成熟度によってさまざまなレベルに分けられます。本記事では、PMOのレベル分けについて解説し、それぞれの特徴と役割を整理していきます。

## PMOとは？

PMOとは、**Project Management Office**の略で、プロジェクトを横断的に支援・管理する組織や部署のことを指します。PMOの役割は以下のように多岐にわたります。

- プロジェクト管理手法の標準化
- プロジェクトの進捗状況のモニタリング
- リソースや予算の最適化
- プロジェクトマネージャーの支援・教育

PMOが存在することで、プロジェクトの成功率を高め、組織全体の効率性や透明性を向上させることが期待されます。

---

## PMOのレベル分け

PMOの役割や成熟度を把握するために、レベル分けの概念が活用されます。以下では、一般的なPMOのレベル分けモデルを紹介します。

### **レベル1: サポート型PMO**

この段階のPMOは、主に個々のプロジェクトマネージャーをサポートすることが目的です。

#### 特徴
- **役割**: プロジェクト管理ツールやテンプレートの提供
- **影響力**: 限定的（プロジェクト単位）
- **主な業務**: ドキュメント管理や進捗報告書の作成補助

#### メリット
- プロジェクトマネージャーの負担軽減
- プロジェクト管理の基礎を組織に浸透させる

#### 課題
- 組織全体への影響力が弱い
- 個々のプロジェクトに依存しやすい

---

### **レベル2: コントロール型PMO**

コントロール型PMOは、プロジェクト管理プロセスの標準化を目指します。

#### 特徴
- **役割**: プロセスやガバナンスの整備
- **影響力**: 複数プロジェクトやプログラムに及ぶ
- **主な業務**:
  - プロジェクトの進捗モニタリング
  - 組織内でのプロジェクト管理手法の統一

#### メリット
- プロジェクト管理の一貫性向上
- リスクの早期発見が可能

#### 課題
- 各プロジェクトチームの柔軟性が低下する可能性
- プロジェクトマネージャーとの調整が増加

---

### **レベル3: 戦略型PMO**

戦略型PMOは、組織全体の戦略目標を実現するためにプロジェクトを統合・最適化する役割を果たします。

#### 特徴
- **役割**: 組織全体のポートフォリオ管理
- **影響力**: 経営層を含む組織全体
- **主な業務**:
  - プロジェクトと戦略目標の整合性を担保
  - リソースの全体最適化
  - KPIの定義と成果の測定

#### メリット
- 組織全体の目標達成に直結
- リソースの効果的な活用

#### 課題
- 専門性の高い人材が必要
- 初期導入コストが高い

---

## PMOレベル分けの活用方法

PMOのレベル分けは、以下の目的で活用できます。

1. **現状分析**: 現在のPMOの成熟度を把握する。
2. **課題の特定**: PMOが抱える課題や改善点を明確化する。
3. **成長計画の策定**: レベルアップのための具体的なアクションを設定する。

たとえば、サポート型PMOに留まっている場合は、プロセスの標準化を進めてコントロール型への移行を目指すことができます。

---

## まとめ

PMOのレベル分けは、組織におけるPMOの位置づけや課題を理解する上で非常に有用なフレームワークです。自社のPMOがどのレベルに該当するのかを評価し、次のステップを計画することで、プロジェクト運営の質を向上させることが可能です。

この記事を参考に、皆さんの組織のPMOがより高いレベルで活躍できることを願っています！
Microsoft Copilot in Azureが動かないのでトラブルシューティングした話

# はじめに
カスタマーサクセスチームでカスタマーサクセスアカウントマネージャーとして働いているとお客様にアップデートを定期的に紹介する機会があります。今回はMicrosoft Copilot in Azureで想定外のエラーがあったのでこちらで共有しようと思います。

##### ※この記事は個人の考えをまとめたものであり、所属組織の公式見解ではありません。プレビュー機能は日々アップデートされますので実際の表示画面と異なる場合があります。



## そもそもMicrosoft Copilot in Azureとは
Microsoft Copilot in Azureは、Azureの管理や運用をサポートするAIツールです。簡単に説明すると、例えば以下のようなことに利用できます。

#### 自然言語での操作:
専門的なコマンドを覚える必要がなく、「新しい仮想マシンを作成して」といった自然な言葉で指示を出すことができます。
#### タスクの自動化:
日常的な管理タスク（例：リソースの監視、アラート設定、コスト管理など）を自動化し、手間を減らします。
#### 情報の取得: 
予算やセキュリティ要件に応じた最適な構成の確認、トラブル時の原因や解決策の提供など、必要な情報を迅速に取得できます。
#### ナビゲーション支援: 
開きたいサービスの正式名称がわからない場合でも、候補を示し、詳細を説明します。

具体的にできること一覧についてはこちらをご覧ください。
[Microsoft Copilot in Azure (プレビュー) のドキュメント](https://learn.microsoft.com/ja-jp/azure/copilot/)

## でてきた問題とトラブルシューティング

現在のプレビュー版だと英語で質問すれば応答が返ってくるのですが、アプデ情報を見て打ち合わせ中にお客さまが試してみたところまさかの使えないという状態でした。有識者に確認したところこれはただ英語で質問すればよいというわけではなくAzureの言語設定そのものを変更しないといけないようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/96e59396-ceb3-68e8-3a0c-9897450b9c86.png)

そのためポータル右上の歯車アイコンを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/967594d9-5244-3bbd-41ae-d6c902692d97.png)

[言語と地域]を選択し言語をEnglishに変えて[適用]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/44a7ce03-5865-f045-7667-45ffbbc4e4b7.png)

再度Copilotを開いたところ無事英語で返答を返すようになりました。Azureのプレビュー版は日本語が対応するまでこのように利用すれば問題なく使えそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/5ae010c8-e6ff-e77b-494c-24f8ad900151.png)

# おわりに
今回は今後構築と運用で使えそうなMicrosoft Copilot in Azureの使い方について調べてトラブルシューティングと紹介をしてみました。Azureは様々な機能が日々テストされながらプレビューとして実装が始まり正式機能となり、さらに便利になっていきます。今後も運用面でアップデート機能の定期的な発信ができたらと思います。
プロジェクトマネージャーレベル（主観）

# はじめに

プロジェクトマネージャー（PM）は、プロジェクトの成功を左右する重要な役割を担っています。しかし、プロジェクトマネージャーと一言で言っても、そのスキルや経験、担当するプロジェクトの規模や複雑さに応じて求められる能力は異なります。本記事では、プロジェクトマネージャーのレベル分けについて解説し、それぞれのレベルで必要なスキルや役割を具体的に説明します。

## なぜこのテーマを選んだのか

プロジェクトマネジメントは、あらゆる業界で重要なスキルとして注目されています。しかし、多くの人にとって、プロジェクトマネージャーの役割やその成長過程は漠然としていることが少なくありません。特に、どのようなスキルが求められるのか、キャリアパスをどう描けばよいのかについて具体的な情報を得るのは難しいと感じる人もいるでしょう。

この記事では、プロジェクトマネージャーの役割を明確にし、読者が自身のスキルを評価したり、次のステップに向けて行動を起こすための参考となる情報を提供することを目的としています。

## レベル分けの目的

プロジェクトマネージャーのレベル分けは以下のような目的で行われます：

1. **スキルセットの可視化**: PMの能力を客観的に把握するため。
2. **キャリアパスの明確化**: 成長のための指針を示すため。
3. **適材適所の配置**: プロジェクトの規模や複雑さに応じた最適な人材配置を行うため。

以下では、レベル分けの一例として「ジュニア」「ミッド」「シニア」「エグゼクティブ」の4段階で説明します。

---

## レベル1: ジュニアプロジェクトマネージャー

### 特徴
- **経験年数**: 1〜3年程度
- **担当プロジェクト**: 小規模でリスクの低いプロジェクト
- **主な役割**:
  - タスクの進捗管理
  - チームメンバーのサポート
  - 上位PMの指示に従って業務を遂行

### 必要なスキル
- 基本的なプロジェクト管理ツール（例: Trello, Asana）の使用経験
- コミュニケーションスキル
- タイムマネジメント能力

### チャレンジ
- 初めて責任を持つ役割に取り組むため、失敗から学ぶ姿勢が求められる。

---

## レベル2: ミッドレベルプロジェクトマネージャー

### 特徴
- **経験年数**: 3〜5年程度
- **担当プロジェクト**: 中規模である程度のリスクを伴うプロジェクト
- **主な役割**:
  - プロジェクト計画の立案
  - ステークホルダーとの調整
  - チームのモチベーション管理

### 必要なスキル
- リスク管理能力
- プロジェクトマネジメント手法（例: Agile, Waterfall）への理解と実践経験
- 問題解決能力

### チャレンジ
- 複数の利害関係者の間で合意を形成し、進捗を管理する。

---

## レベル3: シニアプロジェクトマネージャー

### 特徴
- **経験年数**: 5〜10年程度
- **担当プロジェクト**: 大規模かつ高リスクのプロジェクト
- **主な役割**:
  - プロジェクト全体の戦略策定
  - 予算およびリソース管理
  - チーム全体のリーダーシップ

### 必要なスキル
- ビジネススキル（例: ROI分析、予算管理）
- 高度なリーダーシップと意思決定力
- コンフリクトマネジメント

### チャレンジ
- 複雑なプロジェクト環境で成功を収めるため、高度な調整力が必要。

---

## レベル4: エグゼクティブプロジェクトマネージャー

### 特徴
- **経験年数**: 10年以上
- **担当プロジェクト**: 組織全体に影響を与える戦略的プロジェクト
- **主な役割**:
  - ポートフォリオマネジメント
  - 経営層への報告と提言
  - 長期的な戦略の策定と実行

### 必要なスキル
- 組織全体のビジョンを共有する力
- グローバル規模のプロジェクトマネジメント経験
- 優れたプレゼンテーション能力と交渉力

### チャレンジ
- 組織の目標とプロジェクト成果を一致させるための高度な戦略的思考が求められる。

---

## まとめ

プロジェクトマネージャーのレベル分けは、それぞれの役割に応じたスキルや経験を明確にし、キャリアの方向性を示す重要な手段です。自身の現在のレベルを把握し、次のステップに向けてスキルを磨いていくことが、プロジェクトマネージャーとしての成功につながります。

皆さんも、自分のキャリアパスを見直しながら、次のステージを目指していきましょう！
Unityで鏡（Render Texture）を作る方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750491/eb4b33a9-a0b5-faf8-ef19-9ff69a385da0.png)

Unityで３Dのゲームアプリを作る際に、鏡のようなものを作る方法の一つを紹介します。
この方法では、カメラの映像をPlane（板状のオブジェクト）に映し出す仕組みを使います。
鏡だけでなく、監視カメラ風のモニターにも応用可能です。


仕組み
・鏡用に、サブのカメラを正面に設置する
・そのカメラで映した映像を、Plane（板みたいなオブジェクト）に表示する。

手順
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750491/8b900898-1f21-6413-c0b4-16b7ed83bdd9.png)

1）カメラをHierarchyに設置
・カメラのAudio Listenerコンポーネントは削除します。
　（残しておくと実行時に警告が出ます）
2）カメラの前にPlaneを配置
・カメラに映った映像が、手前にあるPlaneに映るように設定していきます。

3）Render Textureを新規作成
・Create→Renderingの中に、Render Textureがあるので作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750491/860c7746-55dc-5b8d-1d65-a010e58823a3.png)

4）Materialを新規作成
・Materialを作ります。
・今回は、MaterialのShaderを「Unity/Texture」にしました。
 （URP,Built-inなどで変わるので状況に合わせて設定）

5）MaterialのBase欄にRender Textureをアタッチ
・MaterialのBase欄にTextureをセットできるので、先ほどのRender Textureをセットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750491/b5bfc75d-1786-e49e-04d0-235556d2c98b.png)

6）MaterialのBase欄にセットした「Render Texture」をカメラのCameraコンポーネント「Terget Texture」にセットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750491/0260e889-d4f5-1692-940c-bfa3cc841f65.png)


これで、カメラに映った映像が、Planeに映し出されます。

7）反転した画像の修正
・映る画面が鏡のように鏡像ではなく左右が逆になってしまいます。
・そのため、MaterialのTilingをX = -1 に設定して反転させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750491/2a5f45df-bcd5-5df5-97c7-8020ada9cac4.png)

これで、鏡写しの様にPlaneに映るスクリーンができました。
カメラの位置と、Planeの位置を別の場所にすれば監視カメラのように使うこともできます。
Difyをプロキシ利用環境に構築した際にモデル追加でSSL証明書のエラーが表示された場合の対策

# 概要

- Difyをプロキシ利用環境構築時に、モデル（OpenAIやAzure Open AI（AOAI））の設定を試みた場合に、設定できないことがあります。
    - ログを見ると、SSL証明書の検証に失敗するというエラー`SSL: CERTIFICATE_VERIFY_FAILED`が表示されている場合の対策になります。
    - プロキシで独自のSSL証明書を設定する必要がある場合に発生します。
- 対策を何通りか示します。

:::note warn
別途投稿した[別手順](https://qiita.com/tfukumori/items/1ba638831e6067120929#3-api%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6ssl%E8%A8%BC%E6%98%8E%E6%9B%B8%E8%A8%AD%E5%AE%9A)の方がより確実かと思いますので、ご参照をお勧めします。
:::

# 現象

モデルの追加時にエラーが表示され、ログを確認すると次が表示されている。

```
 httpcore.ConnectError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)
```

# 前提

- Dockerに対する「証明書以外」のプロキシの設定（プロキシのURL）は設定済みとします。
- ホスト環境（Windows）でもプロキシURLに加え証明書を設定する必要がある環境が対象です。

# 原因

- APIを呼び出すコンテナ（NAMESに`docker-api-1`および`docker-worker-1`が設定されているコンテナ）のPython環境の証明書に、独自のSSL証明書が含まれていないため、外部API呼び出し時にSSL証明書の検証に失敗することが原因です。

# 対処

- 対処概要としては、プロキシを実行しているDocker内のPython環境（venv）に独自証明書を追加すれば良いということになります

## 対処１

https://github.com/langgenius/dify/discussions/4600#discussioncomment-9965360

上記手順に従い、`docker-compose.yaml`の編集と独自証明書の配置を行い、コンテナ作成時に自動的に証明書が追加されるようにします。

## 対処２

既に構築済みの環境に手作業で配置します。
ただしこの方法はdocker起動時に毎回設定する必要があるので対処１が最終的な対処方法です
原因調査としての利用に限ります。

dockerのIMAGEが`langgenius/dify-api:0.15.0`のものが対象です。

1. docker psでNAMESが`docker-api-1`および`docker-worker-1`のCONTAINER IDを調べます。
1. 前項で調べたDockerの中に入ります（bashを起動）。
    ```bash
    docker container exec -it <CONTAINER ID> bash
    ```
1. venvの証明書のフォルダーに移動します（Pythonのバージョンは変わることがあります）
    ```bash
    cd /app/api/.venv/lib/python3.12/site-packages/certifi/
    ```
1. viがインストールされていない場合はインストールします
    ```bash
    apt-get update
    apt-get install -y vim
    ```
1. viで証明書の内容を最後に追記します（貼り付けます）。
    ```bash
    vi cacert.pem
    ```
    - `SHIFT+G`で最後に移動
    - `i`で編集モード
    - 最後に改行を入れてから貼り付け
    - `ESC`キーでコマンドモードに戻ってから、`:wq`で保存して閉じる
1. 証明書の反映に再起動などは不要です。
分割代入を使ってオブジェクトから必要なプロパティだけを取り出す



## はじめに

- **axios** のレスポンスは多くのプロパティを持つオブジェクトを返しますが、全てを使うわけではない(例: `config` や `headers` が不要なケース）
 
- 実際に使うのは、`data` や `status` などの一部のプロパティだけの場合が多い

- 不要な部分を省いてコードを簡潔にし、読みやすくしたい

そこで、JavaScriptの**分割代入**（Destructuring Assignment） を使って不要な部分を省き、コードをシンプルに保つ方法を備忘録としてまとめました。

## 分割代入を使う理由
- **コードの簡潔化:**  必要な部分だけにフォーカスできる。
- **可読性の向上:**  他の開発者がコードを見たとき、どのプロパティを使用しているかすぐに理解できる。
- **リネーム:** プロパティの名前を変更して取り扱いやすくする。
## 実践例: 分割代入で必要なプロパティを抽出

### 1.こんな`response`が帰ってきていたとする:
```javascript:qiita.rb

const response = {
  config: {
      adapter: (3) ['xhr', 'http', 'fetch'] 
      data: undefined
      env: {FormData: ƒ, Blob: ƒ}
  },
  data: ['Task 1', 'Task 2', 'Task 3'],                
  headers: { contentType: 'application/json' },
  request: XMLHttpRequest {
      status: 200,
      statusText: "OK"
  }
};
```

### 2.分割代入で必要なプロパティを抽出
```javascript:qiita.rb
const { data, status } = response;

console.log(data);   // ['Task 1', 'Task 2', 'Task 3']
console.log(status); // 200
```

### 3. プロパティの名前を変更して取り出す
分割代入を使って、プロパティ名を変更することも可能です。
```javascript:qiita.rb
const { data: tasks, status: httpStatus } = response;

console.log(tasks);      // ['Task 1', 'Task 2', 'Task 3']
console.log(httpStatus); // 200
```

## 参考
https://zenn.dev/gakkie555/articles/8fa9abd696458f


https://zenn.dev/rabee/articles/guide-to-javascript-destructuring

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
Db2 ALTER TABLEした後に起きたエラー　SQLCODE=-668, SQLSTATE=57007, SQLERRMC=7　

## エラー内容
ALTER TABLE　コマンドでテーブルの構造を変更した。そのあと、そのテーブルを参照しているSQLを実行すると以下のエラーが発生。
`SQLCODE=-668, SQLSTATE=57007, SQLERRMC=7`

## 原因
このエラーは操作対象のテーブルがREORGペンディング状態であることを示しているそうで、
REORGペンディング状態とは、テーブルの構造変更など、再編成が必要な操作を行った後に、まだ再編成が完了していない状態のこと。

## 一般的な解決方法で、解決しなかった。。
`REORG TABLE table_name;`を実行する

しかし、実行エラー
```
An unexpected token "TABLE" was found following "REORG ". Expected tokens may include: "JOIN <joined_table>" SQLCODE=-104, SQLSTATE=42601
```
コマンド構文が正しくないようだ。
どうすればいいかわからなかったけど、社内の先輩に助けていただき、
プロシージャモードというので実行したら、REORGペンディング状態が解決できた。
コマンド
`CALL SYSPROC.ADMIN_CMD ('REORG TABLE table_name');`

先輩、ありがとうございました。。。！！
Db2 LUW 12.1 関連情報


# はじめに
Db2 LUW (Db2 for Linux, UNIX and Windows) の新しいバージョンである「Db2 12.1」が2024年11月よりGAになっています。Db2 12.1に関連する一連の情報をまとめます。


# Db2 LUW 12.1 発表レターやお知らせ情報

- 発表レター
[IBM introduces Db2 12.1, the next generation enterprise database, powered by AI](https://www.ibm.com/docs/en/announcements/delivers-db2-121-next-generation-enterprise-database-powered-by-ai)

- IBM ソリューションブログ
[Db2 12.1とIBM Database Assistantの提供開始](https://www.ibm.com/blogs/solutions/jp-ja/db2-12-1-ibm-database-assistant/)

- Db2 LUW のテクニカル・フラッシュ
[Db2 V12.1 公開のお知らせ](https://www.ibm.com/support/pages/node/7177438)


以前より"AIを組み込んでいく"というメッセージは、Db2含めてIBMソフトウェア全体の方向性となっています。

Db2 12.1 GA時点のIBMソリューションブログでは、Db2-AI関連はおおきく２つのカテゴリで語られています。

1)AIを活用したQuery Optimization
Db2ソフトウェア内の機能であるため、ソフトウェア/IaaS/SaaS含めた全Db2に含まれます。

2)IBM Database Assistant
Chat GUIによるヘルプ機能ですが、こちらはまずSaaSのDb2 Warehouse on Cloudで英語版での提供となっています。今後他のデプロイメント方式や言語にも拡張していく予定と言われています。


# Db2 LUW 12.1 インストールに関する記事
- [無料で利用できる Db2 Community Edition for Linux インストールガイド Db2 12.1対応版](https://portablecode.info/2024/11/17/db2-community-edition-linux-install-guide/)
著）下佐粉 昭さん

- [Db2 12.1 Community EditionをWSLで動かす記事](https://qiita.com/kayokok/items/87843a7c1ac00b9e9f9b)　
著）@kayokokさん


# サポート発Technote
- Db2 Technote
[Db2 12.1 Linux 版の統合クラスター・マネージャーは TSA MP から Pacemaker に置き換わりました
](https://www.ibm.com/support/pages/node/7181235)

クラスタソフトウェアであるTSA(Tivoli System Automation）に関しては、Linux用のTSAはDb2 11.5.8より非推奨となっていましたが、Db2 Linux 12.1から同梱ソフトウェアではなくなりました。Linux版では同梱のPacemakerがDb2の統合クラスター・マネージャー・ソフトとなります。
注：Db2 12.1 AIX 版には従来通り TSAが同梱されます。

# 技術文書

- [【SIL】【IM】Db2 for LUW データベース物理設計ガイド](https://www.ibm.com/support/pages/node/7180307)

Db2 LUW 12.1を前提として物理設計ガイドが更新されています。
この1冊を開けば設計において必要なトピックが探せる、百科事典のように活用できるガイドになっています。

また、巻末の「Appendix.物理設計に関するHints&Tips」だけでなく、各所必要に応じて、Hints＆Tipsとして、Db2スペシャリストのノウハウも追記されています。
著）ISE(日本アイ・ビー・エム システムズ・エンジニアリング株式会社)


#  Db2 12.1 マニュアルのトップページ
- 日本語
    - https://www.ibm.com/docs/ja/db2/12.1
- 英語
    - https://www.ibm.com/docs/en/db2/12.1
    - 最新情報は英語で更新されていますので英語で確認するのがお薦めです

# Db2 12.1 システム要件
稼働環境の前提要件等の確認はこちらです（英語）
- [System requirements for IBM Db2 for Linux, UNIX, and Windows](
https://www.ibm.com/support/pages/system-requirements-ibm-db2-linux-unix-and-windows)
letを使う時の注意

```rb
let(:user) { @user = build(:user, name: "Joe") }
  describe "newアクション" do
    
    puts user
    before(:example) do
      get "new"
    end
    it "hogehoge" do
    
```
### exampleグループ内ではletは使用不可
>Failure/Error: puts user

`user`はexampleグループ（つまり `describe`、`context`ブロック）上では使用不能です。example内（つまり`it`ブロック）からまたはexampleのスコープ(つまり`before`、`let`)内で実行する構成からのみ使用可能です。
 > `user` is not available on an example group (e.g. a `describe` or `context` block). It is only available from within individual examples (e.g. `it` blocks) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc).

```rb
let(:user) do
    @user = build(:user, name: "Joe")
    p @user
  end
  describe "newアクション" do

    before(:example) do
      get "new"
      p user
```
```
  newアクション
#<User id: nil, name: "Joe",....
#<User id: nil, name: "Joe",.... # 二回ずつ行われている
    hogehoge
#<User id: nil, name: "Joe",....
#<User id: nil, name: "Joe",....
```
`p user`とすると　letで定義した処理が呼び出される

RSpecは二つのスコープを持っています
>RSpec has two scopes:

### exampleグループの子クラスで評価される
Exampleグループ：exampleグループはファイルが読み込まれたら評価される`dexcribe`または`context`によって定義される。`RSpec::Core::ExampleGroup`のサブクラスの`context`またはそれらを入れ子にしたとき親のexampleグループの子クラスで評価される

>Example Group: Example groups are defined by a describe or context block, which is eagerly evaluated when the spec file is loaded. The block is evaluated in the context of a subclass of RSpec::Core::ExampleGroup, or a subclass of the parent example group when you're nesting them.

###  セマンティックを持っていると`context`で評価される
例　`it`ブロックによって典型的に定義されます。そして`before(:example)`フックのような各exampleのセマンティック付きのその他ブロックはexampleが属するexampleグループクラスのインスタンスの`context`で評価される。specファイルが読み込まれた際exampleは実行されない。その代わりRSpecはすべてのspecファイルが読み込まれるまでexample実行を待ちます。読み込まれた時点で ランダム化、フィルターなどの処理を行えます。

>Example: Examples -- typically defined by an it block -- and any other blocks with per-example semantics -- such as a before(:example) hook -- are evaluated in the context of an instance of the example group class to which the example belongs. Examples are not executed when the spec file is loaded; instead, RSpec waits to run any examples until all spec files have been loaded, at which point it can apply filtering, randomization, etc.

https://rspec.info/documentation/3.13/rspec-core/#:~:text=RSpec%20has%20two,filtering%2C%20randomization%2C%20etc

### letはit、before内では使えない
```rb
Failure/Error:
       let(:user) do
         @user = build(:user, name: "Joe")
         p @user
       end
```
`let`はexample(つまり`it`ブロック)から利用不可またはexampleのスコープ(つまり`before`、`let`など)で実行される構成物からも利用不可です。それはexampleグループ(つまり`context`か`describe`ブロック）だけでしか利用できません。
>`let` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).
統計検定1級　統計数理　2024　問5　解説

(2)(4)(5)は解法に自信がありません。
![T5-P1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/662bc8e5-0cfc-de5f-0da0-b2d462331006.jpeg)
![T5-P2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/5e7f4263-c0f1-0617-50cf-a53b3696dea1.jpeg)
![T5-P3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/5e434295-3061-3c9d-43b4-18517fbef0b9.jpeg)
![T5-P4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/7cfe3e60-60e4-cdd4-d071-ac1210ff20bd.jpeg)
Pythonコードの任意の場所で関数呼び出しの履歴を表示するには

Pythonコードの任意の場所で、現在行での関数呼び出しの履歴を表示する方法: 
下記のコードを任意の場所に入れておきます。
```python:Console
print("DEBUG: FUNC-CALL")
import inspect
for s_i in inspect.stack(): print(f"{s_i.lineno:5d}L, {s_i.function} @ {s_i.filename}")
```

出力結果の例は、
```:結果
DEBUG: FUNC-CALL
    8L, test_function2 @ C:\...\test.py
   10L, test_function1 @ C:\...\test.py
   13L, <module> @ C:\...\test.py
```

サンプルコード全体は、
```python:Console
def test_function2():
    print("DEBUG: FUNC-CALL")
    import inspect
    for s_i in inspect.stack(): print(f"{s_i.lineno:5d}L, {s_i.function} @ {s_i.filename}")

def test_function1():
    test_function2()

# メイン処理
if __name__ == "__main__":
    test_function1()
```

関連情報: 

https://qiita.com/dl_from_scratch/items/c4f292abbd7a017e6104
IBM i 駆け出し日記：Db2 for IBM i のNotebook機能を使う

# はじめに
VS Codeの拡張機能のDb2 for IBM i のNotebook機能を触ってみましたので、メモを残します。

# Notebook機能とは
IBM i システム上での対話型のデータ分析やプログラミングに使用されるツールです。
Notebookを利用することで、データの取得、処理、可視化を直感的に行うことが可能です。

Notebookの大きな特徴として、一つのドキュメントでSQL/CLの実行、実行結果、グラフの挿入、コードを記述できるためストーリー性を持たせて内容を共有できます。
本当にノートみたいにいろんなものをごちゃ混ぜにして持って置けるイメージ、一つのプラットフォームで管理できるので楽です。

# Notebookの使い方
## 前提条件
- [Code for IBM iの設定は完了させておく](https://qiita.com/koga39chan/items/20e9f468f3079c62472a)
- [Db2 for IBM iでのSQLジョブは走らせておく](https://qiita.com/KOINULIB/items/7e3527ea864e042586cc)
## DB2 for IBM iからアクセスする
DB2 for IBM i を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/d62325c4-55b3-0910-6894-70f5af0c1952.png)

各種サイドバーについて簡単に説明すると
- SCHEMA BROWSER
処理をしたいDBライブラリーやスキーマを追加ができる

- STATEMENT HISTORY
SQLステートメントの実行履歴が表示される。
再実行の時に便利

- SQL JOB MANAGER
IBM i 接続時に投入したSQLの実行ジョブ履歴が表示される

- EXAMPLES
様々なSQLの例文が表示
DDL/DML/Notebook/IBM i Services

EXAMPLESの中にNotebook機能があります！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/1819ccea-65f1-a8d1-909c-c5115f446a53.png)

## SQLの実行
例として、User Storageを選択します。
クリックすると、ユーザー別のストレージ利用率を棒グラフで示すSQL文が表示されます。
これを実行するとこのようにグラフが出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/ccd351d4-da23-025e-b36d-749b81944075.png)

## CLとMarkdownの実行
Code for IBM i のNotebookではCL,SQL,Markdownが記述できます。
例でOSバージョンを確認するためのCLをNotebookに書いてみました。
＋コードから新しくコード記述の箱を作って書いています。
文字を書きたかったら＋マークダウンで書きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/1477a4d5-665b-8301-a105-cd8d18c5819f.png)

CLの実行内容の確認もできます。こんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/9eb23815-7ac9-9157-9c8e-eb9f76a4953c.png)


### 実際の活用事例とイメージ
あくまで私の例ですが、システム状況の確認SQLやCLたちを一つのNotebookにまとめてローカルに保存しています。(こんな感じ)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/93f71007-a5ca-e5ca-2dd6-6ecd1a6f01d7.png)
こんなふうに新人が大事なSQLやCLをメモ書きみたいに持っておくのもよし。
またシステム会社さんだったら、お客様先のシステム設定をこのNotebookにまとめて書いて、それをお客様に手渡できるようにとか、後任の方に渡せるようしておくとか。そういう活用法も考えられます。

あっちこっち行かなくても、これ一つでSQLとCLでやりたいことがすぐできるNotebookをぜひ活用していただきたいです！

参考：[youtubeにどんなふうに動くかデモがありました！](https://youtu.be/hPd43MEwAV0?si=LXbuy7UB0AMGv97I)
Godot4 Test Width,Test Hightの設定

備忘録です。

【環境】
Windows
Godot4（日本語化）

Godot3のドット絵ゲーム開発記事などで目にする"Test Width,Test Hight"の設定が見当たらなかったので調べました。
Godot4では「ウィンドウのオーバーライド」という名前に変わっているとのこと。

![スクリーンショット 2025-01-25 233241.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3995018/48c937b5-1fa5-739e-6ab4-4c2338ff954e.png)


[プロジェクト]>[プロジェクト設定]を開き、[一般]タブ>[表示]>[ウィンドウ]
右上の[高度な設定]をオンにしたらサイズ項目の下の方に「ウィンドウ広さ(高さ)のオーバーライド」が表示されます。

スクショには映っていないけど、同じくウィンドウの設定からストレッチ項目>[モード]を[viewport]にするとビューポートの設定より大きな画面サイズに引き延ばすことができます。

## 余談
この状態でプロジェクトを走らせるとビューポート設定の見た目のまま画面サイズが変更されていることがわかるはず。

なぜわざわざオーバーライド設定をするかというと、ドット絵をモニターと同じ縮尺で表示させると小さすぎるから。
ドット絵のかわいいドット感を残しつつ、大きな画面でゲームを動作させたい人はちゃんとオーバーライド設定とストレッチ設定をしよう。

【まとめ】
ビューポート設定:ドット絵素材に合わせて設定する。
オーバーライド設定：ゲームのウィンドウサイズを設定する。
AI活用してますか？(2024年AI活用の振り返りと今後の展望)

## 背景
弊社ではタスクフォースという形式で、特定の課題に対する改善プロジェクトを実施しています。その一環として、AI活用を進める「AIタスクフォース」に私も参加しています。本記事では、2024年に試したAIツールの成果と課題を振り返り、備忘録としてまとめました。

---

## おすすめ（今後も使い続けていきたいもの）

### 1. Slack AI
https://slack.com/intl/ja-jp/features/ai
#### 良かった点
- **情報収集の効率化:**
  - リモート中心の弊社において、Slackは情報の宝庫
  - 「OOというエラー」「課題番号 XXXについてまとめて」など、シンプルなプロンプトで多様な情報を整理できる
  - オンボーディングにも活用可能

#### 改善点
- 結果表示が見づらく、複数の検索結果を横断する際に手間がかかる

### 2. GitHub Copilot Free
https://github.com/features/copilot
#### 良かった点
- **コード予測/補完が強力:**
  - 1行書くと、それを基に数行を補完できる
  - リファクタリング作業で特に威力を発揮しました
  - 一部言語やフレームワーク（PHP/Laravelなど）では非常に優秀な印象
  - コミットタイトルも考えてくれるなど、VSCodeとの連携も十分

#### 課題と限界
- コードレビューやエラー対応には弱い
    - 有料プランはコードレビューにも使いやすそう？
- マイナーなフレームワークや古い言語（例: Angular）では誤りが多い
- 安易に使用するとリスクも伴う
  - **例:** 人間が意識せずに危険なコードを書き込む可能性

### 3. NoteBookLM
https://support.google.com/notebooklm/answer/15724458?hl=ja&ref_topic=15677005&sjid=4112323662690382616-AP
#### 良かった点
- **独自ドキュメント生成:**
  - PDFやYouTube、Webサイトの内容を学習用ドキュメントとして再構築可能
  - 英語の公式ドキュメントも分かりやすく翻訳・整理
- **有効なユースケース:**
  - 試験勉強や体系的な知識の習得
#### 改善点
- まだまだベータ版という感じでドキュメントが見づらかったり、ちゃんとした製品ページが無い点

### 4. Perplexity
https://www.perplexity.ai/ja/hub/faq/what-is-perplexity
#### 良かった点
- **手軽な情報検索:**
  - ざっくりとした情報収集に便利
  - SoftBankユーザー向けのプランも広告を見かけるなど、Chat-GPT以上に浸透する可能性もありそう

#### 改善点
- 結果が見づらいと感じる
  - 日本語対応の問題も影響している可能性

---

## 今後は他の手段を探すべきもの

### 1. Dify
https://dify.ai/jp
#### 良かった点
- ノーコードでAIを組み込める手軽さ
- **おすすめ用途:**
  - AIを試しに作りたい人

#### 課題
- プロンプト設計が難しく、効果的な活用には工夫が必要
- 実際にAIを製品に落とし込むには課題が多いという点に、早く気付けた点は良かった

### 2. TaqTic
https://tactiq.io/
#### 良かった点
- 議事録ツールとしての基礎的な機能は良好

#### 課題
- 要約結果が不十分で、正確性に欠ける
- 録画可能な他ツール（例: tl;dv）の方が優勢

---

## 改善案と次のステップ
ただ闇雲に試しているだけだといつになっても業務の改善にはならないため、下記のような進め方も必要な印象です。

### ツール評価基準の精緻化
- 導入したAIツールを定量的・定性的に評価する基準を策定し全社的に導入できそうな製品を探す
  - **例:** 情報収集効率、エラー削減効果、ユーザビリティ、トライアルしてもらってFB会を設けるなど

### 社内トレーニングの強化
- GitHub CopilotやSlack AIなどのツール活用スキルを向上させるための研修を実施
  - 特にプロンプト設計や注意点の共有
  - 活用事例の勉強会などもしたい

### ツール間連携の強化
- 既存ツールを補完し合う形で組み合わせることを検討
  - 例: PerplexityとNoteBookLMの活用で検索と学習をシームレスに

---

## 最後に
2024年はAI活用が大きな進展を遂げた年でしたが、まだ多くの課題も残っています。本記事を通じて、同様の課題に取り組む企業や個人に役立つ情報が提供できれば幸いです。引き続き試行錯誤を重ね、より良い活用方法を模索していきます。
Dataverse で Power Apps キャンバスアプリから一括更新する際はまった


以前以下のような記事を書きましたが、Dataverse の場合、少し違う (変わった?) ため、備忘のため記事を書いておこうと思います。

https://qiita.com/Takashi_Masumori/items/c1fca69ac5adffa34e4e

とりあえず、ギャラリーに以下のように Dataverse のテーブルを一覧表示して変更できるようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/161ae5d8-9629-7660-94b8-df6929583c4b.png)

まず、以下のように書くとエラーになりました。ThisItem はレコードなんだけど。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/cd48efe7-753e-5f1d-1054-e53510774c21.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/cabef780-4256-32b4-2dcb-92d3a0e3599a.png)

では、LookUp に変えてみます。同じエラーで失敗します。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/19ea803e-bb66-9819-46ad-3849f050c7f7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/de83cd0f-70c4-88da-6b7e-1d58af70fbc9.png)

結果的に以下でうまくいきました。一旦 As で別名つけてあげる必要がありました。SharePoint リストの場合、ThisRecord のままで行けたんだけど、、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8a06c9bd-d4f6-4272-f985-b2a039750849.png)

```
ForAll(
    Gallery1.AllItems As Item,
    Patch(
        TrainingRequest,
        Item,
        {ParticipantName: Item.TextInput1.Text}
    )
)
```

なお、Dataverse の場合、以下でも行けました。わざわざ LookUp するのは少し効率悪いので、上記の方がいいですかね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0fa9eb6b-aec1-595a-1d08-84ec174b3b10.png)

```
ForAll(
    Gallery1.AllItems As Item,
    Patch(
        TrainingRequest,
        LookUp(
            TrainingRequest,
            TrainingRequest = Item.TrainingRequest
        ),
        {ParticipantName: Item.TextInput1.Text}
    )
)
```

以上、Dataverse の場合、SharePoint リストの時と一括更新時の書き方が少し違ったので、少し注意が必要かと思います。
SQLである期間内の日付を全て列挙する

動機としては、ある期間内の日付を全て列挙し、日付で`GROUP BY`した調査対象のtableに`OUTER JOIN`をかけることで、ある日付が集計結果で抜けることなくちゃんと0件であることを出そうとしていて見つけました。


## 1. 再帰 CTE

`RECURSIVE`って正直使ったことなかったんですが、便利ですね。

```sql
WITH RECURSIVE date_series AS (
  SELECT DATE('2025-01-01') AS date_  -- 開始日
  UNION ALL
  SELECT DATE_ADD(date_, INTERVAL 1 DAY)
  FROM date_series
  WHERE date_ < DATE('2025-01-31') -- 終了日
)
SELECT date_ FROM date_series
ORDER BY date_;
```


### Reference

https://cloud.google.com/bigquery/docs/recursive-ctes?hl=ja 


## 2. `GENERATE_DATE_ARRAY()`
うーん、まあ関数が用意されているならこちらでいいかな…

```sql
SELECT GENERATE_DATE_ARRAY('2025-01-01', '2025-01-31') AS example;
```

### Reference
https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions#generate_date_array
Windows 11でのPower BI サインイン や SharePoint / Teams を接続しようとしてエラーの対処方法

Windows 11, 2022 Server ではTLS 1.3がサポートされている影響でWindows 11の最新、Power BI Desktop最新ではTLS 1.3が接続できずエラーとなることが判明しました。現時点（2025/1/27）でWindows 11の最新版(24H2)、Power BI Desktopの最新版（ストアアプリ、ダウンロード版64ビット・32ビットいずれも）で認証機能が動作しない不具合の確認ができています。物理的なPC、Azure VMとWindows 11では再現性100％だったため解決に苦労しました。Windows 10や2019 Serverでは発生しておりません。2022 Serverでの試験はしておりませんがおそらく同様の事象が発生しえるものと考えております。
　
エラーが判明しているところは以下の箇所です：
１．Power BI Desktopのソフトウェアのサインイン（ログイン）
２．SharePoint Online等のWeb接続（SharePointからやってもWebからやっても同じ結果）でMicrosoft認証（組織アカウント）を使用する場合

本来であればMicrosoftWeb認証のポップアップが表示されるはずなのにTLS 1.3が有効になっていると（デフォルト）何も表示されません。これを無理やりレジストリを追加して無効化したところ動作できました。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client
ここにDWORDで
Enabled
を
0
にする必要があります。

0にすると他のTLS 1.3通信アプリに影響がでますが（当方では使用しておりません）、それ以外に本事案を解決する方法は現時点でありませんでした。

昨年2024年12月頃は問題がなかったため、
2025年に入ってからOSの仕様、Power BI Desktopの仕様が重なりエラー発生開始してしまった様子です。
ーーーーーーーーーーーーーーーーーーーーーーーーー
Power BI のオプションメニューでトレースをONにすると
次のようなログが記録されます。
DataMashup.Trace Error: 24579 : {"Start":"2025-01-27T06:28:51.5883944Z","Action":"HttpService/HttpService: WebExceptionStatus = SendFailure, HttpStatusCode =  Exception:System.Net.WebException
・・・
System.IO.IOException:
・・・
System.Net.Sockets.SocketException:
・・・
System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
・・・
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   \u5834\u6240 Microsoft.PowerBI.Common.Http.HttpService.<ExecuteAndHandleException>d__6`1.MoveNext()
ーーーーーーーーーーーーーーーーーーーーーーーーー
類似事案として次のような投稿がありましたので参考にしました。
最新環境にすると特に通信、セキュリティ関係で
予期せぬトラブルが発生し得ますので注意しましょう。

https://community.fabric.microsoft.com/t5/Desktop/Unable-to-sign-in-in-Power-BI-Desktop-password-dialog-box-not/td-p/1191968

https://community.fabric.microsoft.com/t5/Desktop/Power-Bi-sign-in-disappears-after-I-press-continue/td-p/3131569

https://community.fabric.microsoft.com/t5/Translated-Spanish-Desktop/El-inicio-de-sesi%C3%B3n-de-Power-Bi-desaparece-despu%C3%A9s-de-presionar/m-p/3131575