OmniAICreator/Qiita-1.07M huggingface dataset:
【ChatGPT】英会話練習を学ぶためのPrompt集のご紹介です。


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

　今回は、英会話練習を学ぶためのPromptのご紹介です。

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

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

***
***（ChatGPT翻訳）***
Canvasのアップデート: 本日、ChatGPTのCanvasにいくつかの要望の多かった機能を追加しました。

✅ CanvasがOpenAI o1に対応しました。モデル選択メニューでo1を選び、ツールボックスアイコンまたは「/canvas」コマンドを使用してください。

✅ CanvasでHTMLとReactコードのレンダリングが可能になりました。

✅ ChatGPTデスクトップアプリ（macOS版）で、すべてのプランにCanvasを完全展開しました。

**利用可能範囲：**  
- o1対応のCanvasは、Pro、Plus、Teamユーザーが利用可能です。  
- React/HTMLコードのレンダリングは、Pro、Plus、Team、Freeユーザーが利用可能です。

これらのアップデートは、数週間以内にEnterpriseおよびEduユーザーにも展開予定です。
***

　順次、開放されていくようです。

***
　ではさっそく、【本題】です。

　今回は、
　　英会話練習を学ぶための
　　　Prompt集のご紹介です。

　こちらの記事を
　　ChatGPTにまとめてもらいました。
　　　[対面英会話より手っ取り早くて安い…スタンフォード博士直伝｢無料･独学｣で上達するChatGPT必勝プロンプト](https://president.jp/articles/-/90194?page=2)

***
***（ChatGPT）***
### ChatGPTを活用した英会話練習のためのプロンプト集

英会話を効果的に練習するためには、具体的な場面や目的に合わせたプロンプトを活用することが重要です。以下では、ChatGPTを利用した英会話練習用のプロンプトを場面ごとに整理して紹介します。


#### **1. 初期設定のプロンプト**
英会話練習を始める前に、ChatGPTに自分の目的やルールを設定します。

- **英会話初心者向け設定**
  > 「私は英会話の初心者です。今日はあなたと英会話の練習をさせてください。まず初めは、英語で挨拶しますのでその後、自然に会話を続けてください。会話を終えたいときは私のほうから『終わり！』と言いますね。」


#### **2. 会話テーマ別プロンプト**

**日常会話**
- **レストラン**
  > 「レストランでの会話を試したいので、あなたがウェイター、私がお客さんの設定で話してください。」
- **ショッピングモール**
  > 「ショッピングモールでの買い物の会話を練習したいです。あなたが販売員、私が顧客の設定で話してください。」
- **店舗でのクレーム**
  > 「店舗でのクレーム対応の会話を練習したいです。あなたが店員、私がクレームを言う顧客の設定で話してください。」

**旅行関連**
- **空港**
  > 「空港での会話を練習したいです。あなたが空港スタッフ、私が旅行者の設定で話してください。」
- **ホテルのチェックイン／チェックアウト**
  > 「ホテルのチェックインの会話を練習したいです。あなたがフロント係、私が宿泊客の設定で話してください。」
- **レンタカー**
  > 「レンタカーの会話を練習したいです。あなたがレンタカー会社のスタッフ、私が顧客の設定で話してください。」

**特定の状況**
- **病院での予約**
  > 「病院の予約の会話を練習したいです。あなたが受付係、私が患者の設定で話してください。」
- **道案内**
  > 「道案内の会話を練習したいです。あなたが道を尋ねる人、私が道を教える人の設定で話してください。」


#### **3. 目標達成型のプロンプト**

- **TOEIC試験対策**
  > 「TOEICスピーキングテストを想定した練習をしたいです。試験形式に沿って会話を行ってください。」
- **プレゼンテーション練習**
  > 「英語でのプレゼンテーションを練習したいです。私が話した内容に対してフィードバックをお願いします。」
- **交渉スキル**
  > 「交渉スキルを磨きたいです。あなたが商品を売りたい側、私が顧客の設定で価格交渉をしてください。」


#### **4. フィードバックを得るプロンプト**
練習後に自分の改善点を把握するためのプロンプトです。

- **フィードバック依頼**
  > 「今の英会話で、私の良かったところと改善するべきところを教えてください。」
- **発音のチェック**
  > 「発音を重視したいので、発音が不自然だった場合に必ず指摘してください。そして、正しい発音を教えてください。」


#### **5. 文化的背景を学ぶプロンプト**
- **アメリカの文化や表現**
  > 「アメリカでよく使われる表現や文化的な背景も教えてください。」


### **まとめ**
これらのプロンプトを使うことで、ChatGPTを自分専用の英会話パートナーとして活用できます。具体的な場面や目的に合わせた設定を行うことで、効果的かつ楽しい英会話練習が可能になります。時間や費用をかけずに学習を進めたい方は、ぜひこれらのプロンプトを試してみてください。
***

　英会話に限りませんが、
　　他言語習得は大変です。

　ですが、今は
　　生成AIがあります。

　上の記事のPromptを使わずとも、
　　英会話が可能です。
　　　レッスンもできるでしょう。
　　　　この記事は必要か？って
　　　　　話になりますけど😅
　　　　　　そこはそれってことでw

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

　今回は、ここまで。
dnsレコードの設定で少し手こずったのでメモ

ドメインを取得してサーバーにリダイレクトさせるときにまずやる作業と言えばdns設定。

大体のdns設定はエントリ名、タイプ、データ（内容）、TTLの4つの設定を行う。このときさくらのドメインのゾーン情報の設定でCNAMEでwwwでのアクセスをドメインにリダイレクトさせると設定が反映されなかったので、なんでだろと思ったらどうやらエントリ名「@」でタイプAを選択してipアドレスを指定するとwwwのリダイレクトもタイプAのipアドレス経由じゃなきゃいけないらしい。

冗長になったが例えばwww.google.comへのリダイレクトはgoogle.comへのリダイレクトではなく直接サーバーのipアドレスを参照させろってこと。もしかすると常識かもしれない。![スクリーンショット 2025-01-25 125240.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985421/5ae19c99-c456-b72b-0814-f094cdc05c27.png)

NG
↓
エントリ名 www.google.com, タイプ CNAME データ google.com

OK
↓
エントリ名 www.google.com, タイプ A データ サーバーのIPアドレス

やだ恥ずかしっ！ぱっお花🌸

追記
これも絶対忘れるので
自分が設定したドメインの名前解決ができてるか確認するコマンド

```
ipconfig /flushdns //windowsの場合のキャッシュのクリア
nslookup 任意のドメイン
```
Power　BI学習（モデリング・メジャー・ビジュアライズ）




# 前回の内容
 Power Query

 
# 今回の内容
 データモデリング、メジャー作成、ビジュアライズのハンズオンになります。

## データモデリング
 


 ### リレーションの設定
　Salesテーブルの日付とDatetblのDateをリレーション

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/267fb688-6fa4-30cc-a1b5-1beda1c49950.png)


 ### 日付テーブルとしてマーク
 　日付テーブルとしｔ


 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/6b4159ea-54e9-8d12-6eb8-16a8dc464f1c.png)
 

https://learn.microsoft.com/ja-jp/power-bi/transform-model/desktop-date-tables#set-your-own-date-table



 ### １対多のスタースキーマになっていることを確認


 ### ファクトテーブルの項目を全て非表示
　Salesテーブルについては、メジャー


 #### 暗黙のメジャーとは



 

 
   

 ### 列の並び替えの設定
 
 ### ディメンジョンテーブルで使用しない項目を非表示
　

## メジャーの作成

 ### 合計金額・合計数量の計算式作成
　合計金額を例
```php
 合計金額 =  sum('Sales'[金額])
```

　
 #### 補足 数量×単価で金額を計算する場合

```php
   合計金額 = sumx('Sales','Sales'[単価] * 'Sales'[数量] )
```

 ### 日の平均売上金額・数量の計算式作成
　
   日の平均
   ```php 
   日平均金額 =  AVERAGEX( values('Datetbl'[Date]),[合計金額])
   ```

 ### 累計（TOTALMTD,TOTALYTD)の関数
　
   #### 月の累計

```php
月累計金額 = TOTALMTD([合計金額],'Datetbl'[Date])
```
   #### 年の累計

```php
年累計金額 = TOTALYTD([合計金額],'Datetbl'[Date],"3/31")
```
   

 ### 前年・前月
```php
 前月売上 = CALCULATE([合計金額],PREVIOUSMONTH('Datetbl'[Date]))
```
## ビジュアライズ部分

 ### テーマの設定

 ### グラフ作成・書式設定

 ### 数値のカンマ表示、表示単位について

 ### 視覚的な計算(visual calculations)
　


 

 


## レポートの発行
【ServiceNow】javascript参照修飾子の使い方メモ

:::note
バージョンはVancouverです。
:::
### 要件
インシデントの「アサイン先グループ」項目を選択するときに「会社」項目で選択した会社に所属するグループだけを表示したい。
### 前提
インシデントの「アサイン先グループ」項目にはOOTBで「タイプが空」または「タイプがitil」をフィルタ条件で指定されています。
OOTBの条件に要件の条件を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931295/c7ae782b-51fd-6566-d461-593cb73abce0.png)
### うまく動かなかった実装
1. Advancedに切り替える
フィルタ条件のクエリが自動で詳細参照修飾子に変換されて表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931295/0800ed64-14a7-de8d-6f8e-597859800a91.png)
2. 以下のドキュメントを参考にjavascript参照修飾子を追加（後半部分）
参考：[参照修飾子](https://www.servicenow.com/docs/ja-JP/bundle/vancouver-platform-administration/page/script/server-scripting/concept/c_ReferenceQualifiers.html)
```javascript:失敗
type=null^ORtype=1cb8ab9bff500200158bffffffffff62^ANDjavascript:'u_company='+current.u_company;
```
### 原因
javascriptでクエリを作成するときは**エンコードされたクエリ文字列**を使います。
OOTBのタイプのクエリをエンコードされたクエリ文字列に変換する必要がありました。
参考：[エンコードされたクエリ文字列](https://www.servicenow.com/docs/ja-JP/bundle/vancouver-platform-user-interface/page/use/using-lists/concept/c_EncodedQueryStrings.html)
### 修正
1. エンコードされたクエリ文字列をリスト画面から取得する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931295/71e21ad1-1aca-ca69-d041-eb10aff5af74.png)
2. コピーしたクエリを使ってjavascript参照修飾子を修正
```javascript:成功
javascript:'typeISEMPTY^ORtypeLIKE1cb8ab9bff500200158bffffffffff62^u_company='+current.u_company;
```
VESTAの問題が解決した

計算結果の可視化に[VESTA](https://jp-minerals.org/vesta/jp/)を愛用しています。特にXCrySDenがMac上で使えたり使えなかったりすることがあるとVESTAへの依存度が高くなります。

ところがMacOSをアップデートする過程のあるところでVESTAでvolumeric dataの2次元スライスが表示されないという問題が生じました。誰に聞いてもそんな問題は起こっておらず、自分だけの問題で、色々と困っていました。今日その問題を思い出しVESTAのマニュアルを眺めていて``~/Library/Application Support/VESTA``というディレクトリがあることに気付きました。試しにこのディレクトリを削除してVESTAを起動したところその問題が一気に解決しました！！！

またVESTAのウィンドウを手動で大きくしたり、別のディスプレイに移動させると画面が真っ黒になるという問題もありましたが、もしかするとその問題も解決できているかもしれません。少なくともウィンドウを大小させても画面が黒くなるということはなくなりました。後はVESTAの画面を別のディスプレイに写したらどうなるか。結果が楽しみです。

### 追記
VESTAのウィンドウを別ディスプレイに移動させましたが、VESTAの原子構造を表示するウィンドウ内部が黒くなることも無くなりました！
ESETで、特定のアプリケーションの通信を許可する（Mac）

## 結論

- Finderでアプリケーションフォルダを開く
- アプリアイコンを右クリック ⇒ ESET...（略）してすべての接続を許可

## 環境

- M4 Macbook Sequoia
- ESET HOME エッセンシャル


## なぜ書いたか

仕事用に使っていた Intel Macbookがそろそろ性能的にキツイなと思ったので、新しく M4 Macbookを購入した。

「仕事にはセキュリティソフトが必要かな」って思ったので、前にも使ったことのあるESETを入れた。

入れたんだけど。

PHPStormのGitが使えたり使えなかったり、昔はあったはずの「一時的に無効」機能がなくなっていたり、コンテンツフィルターを無効にしても結局動作しなかったり、Macの権限から削除してようやく動作したり、ドキュメントが類似製品だったり古かったりWindows版メインだったり。

控えめに言って「クソでは？」ってなった。

ただでさえ面倒なm1系への移行作業に何でおかわり用意してくるんや。
何か問題にぶち当たるたび「ESETが悪さしてるのでは？」って考えが頭をよぎって全然集中できんかったわ。

で、別件でアプリケーションフォルダを見ていたら今回の「すべての接続を許可」するやり方に気づいた。
ちゃんと Git等も動くようになっていた。

お前、そういうのはもっと分かりやすいとこに書いとけ！！
設定でいじったり追加したり（機能しないことも）みたいな分かりにくいことばっか書いてんじゃないよ！！！

ってことで、公式が書かないので自分で書いとくことにした。
……もし再起動とかのタイミングでまたGitが動かなくなったりしたらどうしようね。
ケンの挑戦！Amazon Workmailで会社のメールアドレスを作れ！


## プロローグ：夢のスタートアップ

ケンは中学生だけど、家族で始めた小さな会社「ケン・ソリューションズ」を手伝うのが大好き。最近、会社に「info@ken-solutions.com」というカッコいいメールアドレスが必要だと気づきました。

> 「ちゃんとしたメールアドレスがあれば、取引先に信頼されるはずだよね！」  

ケンは意気込んで、Amazon WorkMailを使ってメールアドレスを設定することにしました。

---

## 問題発生！メールが送れない？

ドメイン「ken-solutions.com」をWorkMailに登録してみたケン。でも、「Verification failed（検証失敗）」というメッセージが画面に表示され、メールが使えません。  

「何がいけないんだろう…？」と悩むケンに、お母さんがやってきました。

> 「ケン、DNS設定が正しくできてないのかもね。一緒に確認してみよう！」

---

## DNSって何？ドメインの秘密を解明！

お母さんはケンにDNSのしくみを説明しました。

> 「DNSは、インターネットの住所録みたいなものよ。『ken-solutions.com』っていう名前をIPアドレスに変換してくれるの。」  
> 「それだけじゃなくて、メールの送信先や、ドメインの所有者を証明する情報も登録できるの。これをDNSレコードって呼ぶのよ。」

ケンはメモ帳を取り出してメモし始めました。

> **ケン**: 「じゃあ、DNSレコードってどんな種類があるの？」  
> **お母さん**:  
> - **TXTレコード**: ドメインの所有権を証明したり、なりすましメールを防ぐための情報を登録するよ。  
> - **MXレコード**: メールをどのサーバーに送るべきかを指定するんだ。  
> - **CNAMEレコード**: 別のドメイン名を参照するエイリアスを作るためのもの。  
> - **SPF/DMARCレコード**: メールの送信元を確認して、不正メールを防ぐための仕組みだよ。

「なるほど！まずはTXTレコードが大事なんだね！」とケンは納得。

---

## DNS設定の冒険

ケンとお母さんはAmazon Route 53のコンソールを開きました。ここで、WorkMailが提供してくれたDNSレコードを入力していきます。

1. **TXTレコード**  
   - 「これはドメインの所有者を証明するためのレコードね」とお母さん。  
   ケンは指示通りに入力しました。

2. **MXレコード**  
   - 「これがないとメールが届かないよ！」とお母さん。  
   しっかり設定を確認して入力。

3. **SPFとDMARCレコード**  
   - 「これでスパムや不正メールも防げるわね。」  
   お母さんのアドバイスを受けながら、ケンは慎重に設定しました。

4. **CNAMEレコード**  
   - 「メールアプリで便利に使えるようになる設定もあるよ！」とお母さん。  

---

## 検証！うまくいくかな？

すべての設定を終えたケンはWorkMailの画面に戻りました。そして「Update verification」をクリック。

でも、画面にはまだ「Verification failed」の文字が…。

> 「がっかりしないで、ケン。DNSの設定がインターネット全体に反映されるには時間がかかるの。数分から数時間、場合によっては72時間待つこともあるわ。」  

ケンはうなずきながら、待つことにしました。

---

## ついに成功！メールアドレスが使えるように

次の日、ケンはWorkMailを開きました。そして画面に「Verified」という緑色の文字が！ついにドメインの検証が完了したのです。  

> 「やった！これで『info@ken-solutions.com』が使えるようになった！」  

---

## エピローグ：未来への一歩

ケンは早速、会社の取引先に新しいメールアドレスを伝えました。そして、法人としての信頼感を少しずつ築いていきました。

---

## 教訓：ケンが学んだこと

- **DNSはインターネットの住所録**。正しく設定しないとメールも使えない。  
- **忍耐強く待つことが大事**。設定後すぐに結果が出なくても焦らない。  
- **失敗から学ぶ勇気**。間違えても、正しく直せばいい！

ケンは新しいメールアドレスを使いながら、会社の仕事をどんどん広げていきました。そして、未来のビジネスチャンスに向けて、さらなる挑戦を続けていくのでした。
ソフトウェアエンジニアがRSGT2025で熱量をもらう話 

[Regional Scrum Gathering Tokyo 2025](https://2025.scrumgatheringtokyo.org/)に参加してきました！  
ちょっと遅れましたが、4日間でたくさん熱量をもらったのでレポートを共有します。  

## 伝えたいこと
- RSGTは知識より熱量をもらう場
- ソフトウェアエンジニアでも得られるものが多い
- ギャザリングは仕組みを利用しよう

## 参加のモチベーション
私は検索エンジンの開発チームでソフトウェアエンジニアとして働いています。  
チームの開発手法はスクラムを採用しており、改善活動にも日々取り組んでいます。 
初めてRSGTに参加したのは2019年、当時はスクラムマスターになったのがきっかけでした。  
アジャイル系のカンファレンスでは具体的な知識より、他組織の体験談を期待しています。  
チームが困難に対峙してもがき苦しみながらも前へ進み続けるドキュメンタリーに勇気をもらいます。
そういったセッションや話を聞く中で

「あのときと同じ状況だけど、別の方法で対応したぞ」
「うちでは何もせずにできているのはなぜだろう？」
  ...
などとチームのことを客観視して考える機会になり、チーム開発のモチベーションが出てくるのです。  
このモチベーションの伝播を「熱量をもらう」と表現するのはすごく的確で、私にとって年始のRSGTが熱源になっています。  

## セッションの感想
見たセッション全部描きたかったですが、取り急ぎ2本だけ！

### Day0. 無理なく楽しむカンファレンス参加術

<script defer class="speakerdeck-embed" data-id="0ab0b98a965e471d92910067033e5109" data-ratio="1.7772511848341233" src="//speakerdeck.com/assets/embed.js"></script>

私は勉強会やカンファレンスに参加するからには「何かを持ち帰らなくてはいけない」とプレッシャーを感じていました。  
でも、ただ情報を持ち帰るだけとなって実践できていないという苦い思い出があります。  
他の現場の話を聞いて、「うちのチームはダメダメだ〜」と落ち込んだこともありました。  
特にアジャイル系のカンファレンスでは得た抽象度の高い知識を自分の現場にすぐ応用できることはほとんどないです。
仕事のために業務外の時間を使ってお金を払って参加しているだけでエライです。  
気張らず無邪気に楽しむ姿勢が大切だと思いました。 

### Day.1 Keynote: The Best Product Engineering Org in the World
「アート・オブ・アジャイル デベロップメント」のMr.James ShoreのKeynote。
世界一のプロダクト開発チームとは？の問に対して6つの観点での回答がされている。  
特に「Internal Quality」に具体的に言及されていてソフトウェアエンジニアとしてはうれしかった。  
プロダクト開発の継続的なAgilityには欠かせない要素であるが、実際外向けに説明するのが難しいため後から時間を取るのは不可能に近いと思う。  
エンジニアとしては毎度の開発で妥協せず内部品質向上に取り組みたい。   


## まとめ
セッションだけではなくてOSTやスポンサーブースでたくさんの方とお話ができて、たくさん熱量をもらいました。  
普段リモートワーク民なので3日間が終わるとつかれてへろへろになってしまいますが、3連休で回復しモチベMAXになります。
この熱量をできる限り維持してチームの自慢がたくさんできるようにがんばろうと思います！
時系列予測におけるMAEとRMSE

# 対象読者
 - データ分析や機械学習の初学者
 - 時系列予測や需要予測を扱っている人
 - 統計学や数式に興味がある人

# 執筆の背景
私は普段の仕事の１つで、機械学習(ML)を使った時系列モデルでの需要予測に取り組んでいます。

時系列予測は奥が深く、目的変数(需要量)の分布や外生要因(新型コロナウイルス感染拡大)などを良く考えて機械学習モデルを構築する必要があります。

仕事の中で、最適化指標(MLトレーニング時の評価関数)の違いによって、予測傾向が大きく変わり、プロジェクトがスムーズに進む場面に遭遇する機会がありました。自戒の意味もこめてMAEとRMSEの違いについて改めて詳しく解説しようと思いました。

# 前提条件
 - MLによる時系列モデルによって商品の需要量を予測する
 - 過去の需要をもとに、先半年間の需要を予測する
 - 日別の需要量を予測して欲しいという要望、ただし、現場では月単位の合計の需要量を生産管理などに活用する

# MAEとRMSEの違いについて
## 平均絶対誤差（MAE: Mean Absolute Error）
MAEは予測値と実測値の差の絶対値の平均を表す指標です。
$$ MAE = (1/n)Σ|y_i - ŷ_i| $$
実測値(yi)と予測値(ŷi)の差分に対して**絶対値をとった後に相加平均をとります。**

MLの最適化指標として使う場合は、目的変数の分布によらず誤差を均一に扱うため、外れ値の影響をあまり受けない予測を出したい時に効果を発揮します。

## 二乗平均平方根誤差（RMSE: Root Mean Square Error）
RMSEは予測値と実測値の差を二乗して平均を取り、その平方根を計算した指標です。
$$ RMSE = √((1/n)Σ(y_i - ŷ_i)²) $$

**二乗誤差の相加平均を計算した後に平方根をとる**のがミソであり、分布の最頻値から離れた値では誤算のペナルティが大きく、最頻値に近い(誤差が比較的小さい)場所にある誤差は大きな誤差の影響に埋もれやすくなります。

正規分布に近い分布や外れ値の影響も含めて予測したいような場合に効果を発揮します。

# MAE→RMSEに最適化指標を変更
改めて今回のプロジェクトの前提条件を確認すると、
「日別の時系列予測モデルを組んで欲しいが、現場の生産管理に使うのは月別の合計予測値」という少し特殊な事情があります。

また、**高価な商品や嗜好品**などの需要予測では良くあることなのですが、目的変数（需要量）の月ごとの分布を分析すると、月末にかなり極端な大きな需要の盛り上がりがありました。

月末に極端な需要の増加があるデータのイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3892095/f88f04fd-3fe5-07d2-2ed5-a901ce5dbf7f.png)



消費者目線に立って考えると予想できるのですが、高価な商品や嗜好品は給料日後や月末のご褒美として購入される方が多いと考えられます。

今回のプロジェクトでは、外れ値の影響を受けにくいようにMAEを最適化指標としてモデルを構築していました。

しかし、月末の盛り上がりによる高い外れ値の影響は無視されやすくなる(厳密には外れ値ではない)ため、過小気味の予測を出してしまうという問題がありました。この状態で月別の予測値を集計すると、常に少し過小気味に予測してしまう現場では使いにくいモデルになっていました。

このケースでは最終的に評価指標をRMSEに変更することで、予測モデルの過小予測傾向がなくなり、予測精度を大幅に改善することができ。

# MAEとRMSEの特徴を踏まえた利用方法
## MAEの特徴
 - 外れ値の影響を受けにくい
 - 誤差の大きさに比例したペナルティ
 - 解釈が直感的で分かりやすい
## RMSEの特徴
 - 大きな誤差に対して二乗のペナルティ
 - 外れ値に敏感
 - 予測精度の改善が必要な箇所の特定に有効
## ビジネス要件に基づく選択
 - 大きな誤差を重点的に改善したい場合：RMSE
 - 全体的な予測精度を均等に評価したい場合：MAE
## データ特性による選択
 - 外れ値が多いデータ：MAE
 - 正規分布に近いデータ：RMSE
## モデルの用途による選択
 - 異常検知：RMSE
 - 一般的な予測タスク：MAE

# 終わりに
今回はMAEとRMSEについて、実際に現場で発生する課題感を踏まえて記事にしました。機械学習を始めると最初に学ぶ最適化指標ですが、数式の意味を踏まえてしっかりと理解して使いこなせば良い予測モデルを構築する手助けとなります。時系列予測はかなり奥が深いので、解説して欲しい内容などあればコメントでいただけると嬉しいです。
（記事中誤った説明をしている部分があれば、コメントでご指摘いただけると幸いです。）
C#  : パラメータ保存・読み込み

# はじめに
変数・パラメータをちょっと保存したいのになぁということありますよね

わざわざ、テキストファイルを保存して、読込して・・・考えただけでだるいですね。

そんなときは`Properties`を使いましょう。

以下の記事がわかりやすいです。

https://so-zou.jp/software/tech/programming/c-sharp/deploying/application-settings.htm

# 使い方
ソリューションエクスプローラーの上から2番目のnamespaceを右クリックして、「プロパティ」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/c44d9ea3-3d39-1996-585c-da2c3895dc3a.png)

下の画面が開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/bbcf28a8-98ca-3829-94af-fe53c2349e89.png)

全般を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/4d291d02-bda2-b29f-ab46-188dea9e0531.png)

青字「アプリケーション設定を作成する/開く」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/9e69a7af-87b2-a2c3-1c73-c07b42104beb.png)

あとは、変数を追加するだけ。

その変数名で

https://so-zou.jp/software/tech/programming/c-sharp/deploying/application-settings.htm

記載のとおりに保存・読み込みをするだけ！
#N/Aの入っているセルだけをフィルターで絞り込めない

# 出来ないこと
googleスプレッドシートの数式が入っているセルのうち、
数式の結果が、#N/A だけのものにGASで絞り込みたい
何故かうまくいかない


# フィルターをかけたいセルに入っているのがこちら
```
match(A2,'シート名'!A:A,0)
```

# 手動でフィルターの設定してみる
#N/A　が選択肢に出てくるので選べば絞り込める

# マクロで記録させてみる
#N/A　以外ものを全部隠そう！という動きで記録されてしまう

```
  var criteria = SpreadsheetApp.newFilterCriteria()
   .setHiddenValues(['2', '3', '4', '5', '6', '7', '8', '9', '10'])
  .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(2, criteria);
```

# 原因はこれかな？？
こちらの記事を読んだところ　#N/A　が文字列ではないのが原因なのかも？？

https://www.relief.jp/docs/excel-na-error-is-not-string.html


# 今回の解決策
#N/A　を絞り込むというのは諦めて、攻め方を変えることにしました。
matchするものがある場合→　1
matchするものがない場合→　0
になるようにして、0を絞り込むことにしました。

```
=if(isna(match(A2,'シート名'!A:A,0)),0,1)
```

フィルターの絞り込みの方法はこちらがとてもわかりやすかったので参考にしました。

https://seifoo.com/filter_text

```
  var criteria = SpreadsheetApp.newFilterCriteria()
   .whenTextEqualTo("0")
  .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(2, criteria);
  ```

ついでにフィルターの絞り込みを解除する機能もつけました。
フィルターの絞り込み解除の方法はこちらがとてもわかりやすかったので参考にしました。

https://seifoo.com/filter_lift
```
spreadsheet.getActiveSheet().getFilter().remove();
```
Javaで「テキストフィールドのキャレットの位置と色を設定する」の動作を確認してみた。

# 概要

Javaで「テキストフィールドのキャレットの位置と色を設定する」の動作を確認してみました。
以下のページを参考にしました。

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

# 実装

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

```JSample8_1.java
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JPanel;
import java.awt.Container;
import java.awt.BorderLayout;

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

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

    JTextField text = new JTextField("Circle", 20);
    text.setCaretPosition(text.getText().length());

    JPanel p = new JPanel();
    p.add(text);

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

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

```
$ javac JSample8_1.java 
$ java JSample8_1
```

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

![Screenshot from 2025-01-25 11-34-37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192024/ccb081e7-0a18-ca69-13fd-ea3c57729ea7.png)

# まとめ

何かの役に立てばと。
o1 + canvasでマトリックスのような雨をふらしてみた


この記事では、HTML の `<canvas>` 要素を使って、いわゆる「マトリックスの雨」のような画面エフェクトを作ってみた話を紹介します。  
といっても、複雑な仕組みは使わず、JavaScript でシンプルなアニメーションを書くだけです。

## 実際の動画

以下の動画（あるいは GIF）で実際の動きをご覧ください。

![](https://storage.googleapis.com/zenn-user-upload/af45272ca659-20250125.gif)



## コード例

シンプルに実装すると、以下のようなコードになります。お好みでカスタマイズしてみてください。

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Matrix Rain Effect</title>
    <style>
        body {
            margin: 0;
            overflow: hidden;
            background: black;
        }
        canvas {
            display: block;
        }
    </style>
</head>
<body>
    <canvas id="matrixCanvas"></canvas>

    <script>
        const canvas = document.getElementById('matrixCanvas');
        const ctx = canvas.getContext('2d');

        canvas.width = window.innerWidth;
        canvas.height = window.innerHeight;

        const fontSize = 16;
        const columns = Math.floor(canvas.width / fontSize);
        const drops = Array(columns).fill(0);

        const characters = 'アカサタナハマヤラワイキシチニヒミリウクスツヌフムユルエケセテネヘメレオコソトノホモヨロ';

        function drawMatrixRain() {
            ctx.fillStyle = 'rgba(0, 0, 0, 0.05)';
            ctx.fillRect(0, 0, canvas.width, canvas.height);

            ctx.fillStyle = '#0F0';
            ctx.font = `${fontSize}px monospace`;

            for (let i = 0; i < drops.length; i++) {
                const text = characters[Math.floor(Math.random() * characters.length)];
                const x = i * fontSize;
                const y = drops[i] * fontSize;

                ctx.fillText(text, x, y);

                if (y > canvas.height && Math.random() > 0.95) {
                    drops[i] = 0;
                }

                drops[i]++;
            }
        }

        setInterval(drawMatrixRain, 50);

        window.addEventListener('resize', () => {
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;
            drops.length = Math.floor(canvas.width / fontSize);
            drops.fill(0);
        });
    </script>
</body>
</html>

```

### ポイント解説

- **characters**: 自由に文字列をアレンジ可能です。日本語、アルファベット、数字、記号など好きに追加してみてください。  
- **残像エフェクト**: `rgba(0, 0, 0, 0.05)` で描画することで、前フレームをわずかに残す「トレイル」感が出ます。  
- **乱数の使い方**: `Math.random() > 0.975` など、確率を使ってランダムにリセットすることで、雨が断続的に降り続けるように演出しています。  

## まとめ

以上、「キャンバスでマトリックスのような雨のエフェクトを作る」簡単な例でした。  
スクリーンショットや動画を Zenn 上に追加するだけでも、記事として見やすくなると思います。  
お好みでフォントサイズや速度を変えたり、色をカスタマイズして遊んでみてください。

---
Windows11上のVirtualBoxでRockyLinux9をインストールしようとしたところE_FAIL (0x80004005)エラー

[Schooの「Linuxサーバー構築」](https://schoo.jp/course/7516 "Schooの「Linuxサーバー構築」")の動画を見ながら
試してみていた時にエラーが出たのでその時のメモ

## 環境：
Windows 11 HOME 23H2
VirtualBox7.0.4

## 手順

#### 1. Virtual Boxのインストーラのダウンロード
virtualbox.orgからインストーラ VirtualBox-7.1.6-167084-Win.exe をダウンロード

#### 2. Virtual Boxをインストール
デフォルトのまま次へ次へ

#### 3. Virtual BoxでVM(仮想マシン)を新規作成
タイプ：Linux
バージョン：Red Hot(64-bit)

#### 4. RockyLinux9のダウンロード
Rocky-9.5-x86_64-minimal.iso

#### 5. VM(仮想マシン)にRockyLinux9をインストール
仮想マシンの仮想光学ドライブにRockyLinux9のイメージファイルを指定して「起動」
エラーが発生して起動しない…

:::note alert
E_FAIL (0x80004005)
:::

ググってヒットしたページによると **「Hyper-V」を無効にする必要がある** とのこと。
そういえば2年前にDockerの勉強をするときにそんな設定を見かけたような…？
と思って確認してみたところ「Hyper-V」がみつからない…。

さらにググる
Windows10では「Hyper-V」
**Windows11では「仮想マシンプラットフォーム」**

:::note info
キーボードの[スタート]ボタン　→　
"Windows 機能" と入力　→　
[Windows 機能のオンとオフを切り替える]  →
[仮想マシンプラットフォーム]のチェックボックスを外す
:::

解決👏👏👏
Google Fitで計測・集約しているデータをダウンロードしてみたメモ

## この記事は
Google Fitに集めている運動データとか睡眠データを自前で分析できるのかな、と思い立ちました。
とりあえずダウンロードするところまではできたので記録しておきます。
日ごとの集計結果のcsvだとか、各データの個別のjsonなどが入手できます。

## やり方

### 以下にアクセス

https://takeout.google.com/

### エクスポートするデータを選ぶ
「選択をすべて解除」してから
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/26769602-ef76-72f7-010a-2a6325e7adc8.png)

Fitの部分にチェックを入れて
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/92548954-7316-8cee-796d-bf5dd0b382e9.png)

一番下の「次のステップ」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/f9844a3e-2acc-f975-9053-2d325c8043ad.png)

### エクスポート方法を選ぶ
定期的にデータ作ってエクスポートみたいなこともできるみたい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/ad1cd8a0-5a3d-1ea3-740c-678dfd5eed86.png)

選んだら、「エクスポートを作成」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/5f57bd6e-4130-45c6-ad74-0b2c95b11c32.png)

データができたらメールで教えてくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/0d49a99f-a982-af02-9f6e-c57f5b65589b.png)

### データのダウンロード
以下のようなメールが来ます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/23d8c227-8c58-d7f8-f4d5-a3f075504681.png)

メール中のリンクをクリックして、リンク先からダウンロードすると、データが入手可能。

### データの例
日ごとの時間グリッドごとの集計結果のcsv
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/18771963-c2a2-eac0-bec8-cf01037a2333.png)

各データの個別のjsonなどが入手できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/9949737d-a247-a6cb-04e2-cc6708f7cbaf.png)

Sleep Cycle経由で統合した睡眠データのサマリーも一応見られます。
こちらは個別アプリ側からエクスポートしたほうが詳しいデータが取れそう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/1c91d634-43cb-ed98-c845-87fd6934765f.png)

## 感想
時間があるときにとりあえずグラフ化するとか、遊べそう。
運動するとよく寝られるのとか、そういうのもみられるかｎ
ポアソン回帰モデルの使い方

# ポアソン回帰
ポアソン回帰は次のように、x軸の値に応じて誤差分布のパラメータが変化するデータをモデル化する際に使います。
![ダウンロード (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957867/dd5ccf54-36dd-bf8d-fdfc-ecf17bb00aa1.png)

このデータの生成プログラム
```
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
```
```python:sample
# 真のパラメータ
true_w0 = 0.3
true_w1 = 0.5

# 人工データ（観測データ）
#乱数生成の初期化をしてからxに代入
rng = np.random.RandomState(1)
x = 10 * rng.rand(50)
#計算した平均値μを持つポアソン分布から乱数を生成し、目的変数yに代入
y = stats.poisson(mu = np.exp(true_w0 + true_w1 * x)).rvs()

plt.scatter(x, y, s=10)
```

# 回帰
リンク関数を対数関数（y=log(x)）（つまり，逆リンク関数を指数関数(y=exp(x))）に設定した場合のポアソン回帰モデルを作ります。
```python:sample.py
# scikit-learnのTweedieRegressorクラスからインスタンスを呼び出す
model = TweedieRegressor(fit_intercept=True, power=1, link='log')

# 過去のデータを最もよく説明する最適なパラメータを探索
# y = w0 + w1x  の w0～w1 を算出
model.fit(x[:, np.newaxis], y)

# モデルが推定したパラメータ値を確認
# 切片(バイアス)　w0
print(model.intercept_)
# 係数パラメータ　w1
print(model.coef_)

# 最適なパラメータを使って出力の予測値を生成
xfit = np.linspace(0, 10, 1000)
yfit = model.predict(xfit[:, np.newaxis])

plt.scatter(x, y, s=10)
plt.plot(xfit, yfit, color='magenta')
```
# 結果
![スクリーンショット 2025-01-25 111434.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957867/23fef29d-7988-898d-3443-1f2e66ed6e2b.png)

![ダウンロード (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957867/230b52a8-ca61-a691-dd7f-81434b6da066.png)

真のパラメータに近い値を出せています。

ここまで読んでくださりありがとうございました！
マイコン部でやるべきだったこと

# はじめに

私は2011年に栃木県立鹿沼東高校を卒業したOBです。在学中、2年生と3年生でマイコン部の部長を務めていました。  
当時、マイコン部のような部活動は珍しく、鹿沼東高校が情報教育の推進を目的に設立された背景が関係していると聞きました。しかし、2025年1月現在、マイコン部は残念ながら廃部となっています。情報教育が注目される今、関連分野の部活動が失われたことを惜しく感じます。

とはいえ、当時を振り返ると廃部の要因も理解できます。指導者が不在で、活動や実績も乏しかったのです。高校生だった私には知識や経験が不足しており、もっと積極的に挑戦できていればと後悔する部分もあります。  

この記事では、もし高校時代に今の知識があったら何をしていただろうか、という視点で活動内容やアイデアをまとめています。

# マイコンとは

そもそも「マイコン」とは何でしょうか？ 私自身、高校時代はその意味をよく理解していませんでした。「マイクロコンピューター」の略語であることは知っていても、具体的な内容は難しい説明ばかりでした。  

簡単に言うと、マイコンは電子レンジや洗濯機など家電製品に組み込まれた小型のコンピューターです。これが各部品（ボタン、センサー、ヒーターなど）を連携させ、家電製品を動かします。例えば電子レンジでは、以下のように役割を果たします：

- **ボタン操作**: ユーザーが設定した情報を読み取り、動作を決定します。  
- **センサー**: 食品の温度を測定し、適切な加熱を行います。  
- **ヒーター制御**: (正確にはマグネトロンですが)マイコンが出力を指示して動作を管理します。  

こうした「考えて指示を出す」役割が、マイコンの本質です。

---

# 活動内容

では、どんな活動をすればよいでしょうか？以下は具体的な提案です。

## 大会への参加

まずは「プログラミング 大会 高校生」などで検索し、参加できる大会を探します。リモートで参加可能なものが望ましいです。大会に出場することで実績を作り、部活動の価値をアピールすることが目的なので、マイコンとは関連がなくても構いません。顧問や担任の先生に協力を仰ぎ、参加を提案してください。

## ハードウェア制御を体験

いきなり「マイコン」と触れ合うのはハードルが高いと思いますので、「マイコン」らしい活動として、ハードウェアを制御する取り組みがおすすめです。例えば、ArduinoやRaspberry Piを使ったプロジェクトを始めると良いでしょう。(前述の大会とは別に)  

### 下準備
- **GitHubアカウントの作成**: 部員全員がGitHubを使えるようにします。
- **開発環境の構築**: 学校のWindows PCにVisual Studio CodeやTortoiseGitをインストールし、gitの基本操作を学びます。もしインストールが禁止されている場合は、顧問の先生に掛け合ってください。
- **シングルボードコンピューターの購入**: 個人で所有するのがおすすめです。microSDカード（32GB, A1/A2推奨）を準備します。

### 調査・アイデア出し
- シングルボードコンピューターで可能なことを調べ、作りたいもののアイデアを出し合います。  
- アイデアはGitHubのIssueにまとめましょう。

### 実装
- 初めはChatGPTなどを活用しながら進めます。作り方を理解したら自力で実装を試みます。  
- 実装した内容はGitHubに適宜Pushして管理します。

## 成果の発表

文化祭や学校のホームページなどを活用して成果を発表しましょう。プロジェクトのリポジトリURLを公開するのも良い方法です。

# 最後に

正直、この記事の情報量だけでは、下準備すらできないと思います。
もし部活動を復活させたいという鹿沼東高校生がいらっしゃれば、技術的な面でのサポートに限っては協力できるかもしれないので、連絡ください。
【Rails】ヘルパーとパーシャル

# はじめに
こんにちは！アメリカで独学でソフトウェアエンジニアを目指している者です。
現在Railsチュートリアルという教材を使用して勉強進めているのですが、ヘルパーとパーシャルはどちらもコードを再利用するための仕組みなので一旦記事にまとめて整理しておこうと思いました


### ヘルパー

ヘルパーは、Rubyのモジュールとして定義され、**ビューで使うロジックを抽象化して再利用可能にするための機構**です。`application_helper.rb`で定義することが一般的で、Railsアプリの**全ビューで使用可能**です。


#### 定義例
```ruby
# app/helpers/application_helper.rb
module ApplicationHelper
  def full_title(page_title ='')
    base_title ="Rubyon RailsTutorial SampleApp"
    if page_title.empty?
      base_title
    else
      "#{page_title}| #{base_title}"
    end
  end
end
```

#### 呼び出し方法
- ビューファイル内で使用
```erb
<!-- app/views/layouts/application.html.erb -->
<title><%= full_title(yield(:title)) %></title>
```

#### 適用範囲
- `application_helper.rb`で定義されたメソッドは、Railsアプリケーション全体のビューで使用可能です。
- 特定のコントローラ用に使いたい場合は、そのコントローラのヘルパーファイルに定義します。

---

### パーシャル

#### 概要
パーシャルは、ビューテンプレートの**HTML/ERBの一部を抽出し、再利用可能にするための機構**です。
- **前置したアンダースコアで定義されるファイル名**（例: `_header.html.erb`）に保存されます。

#### パーシャルが使われる例
- **レイアウト要素の共通化**（ヘッダー、フッター、サイドバーなど）
- **複数ビューで使われる形式化された要素**

#### 定義例
```erb
<!-- app/views/shared/_footer.html.erb -->
<footer>
  <p>© 2025 My Application</p>
</footer>
```

#### 呼び出し方法
- レンダーメソッドを使用して呼び出す
```erb
<!-- app/views/layouts/application.html.erb -->
<%= render 'shared/footer' %>
```

#### 適用範囲
- **ビュー内の任意の場所**から`render`で呼び出せば利用可能です。
- ファイルパスを明示すれば、**別のコントローラのビューからも呼び出し可能**です。

**例:**
```erb
<!-- app/views/static_pages/home.html.erb -->
<%= render 'shared/footer' %>
```

---

### 比較チャート

| 特徴               | ヘルパー                             | パーシャル                             |
|--------------------------|------------------------------------|------------------------------------|
| **適用範囲**     | アプリ全体                           | レンダー時のパス指定次第 |
| **再利用の目的** | Rubyロジックの抽象化            | HTML要素の抽象化            |
| **定義場所**     | `app/helpers/`                      | `app/views/`以下                     |
| **呼び出し方法** | メソッドとして呼ぶ (`<%= helper_method %>`) | レンダーで呼ぶ (`<%= render 'partial' %>`) |

---

### まとめ

Railsのヘルパーとパーシャルは、それぞれ不同な使用目的を持ち、上手く使い分けることで、アプリのメンテナンス性を向上させることができます。
何となく違いは分かっているものを改めて記事にすることで明確に違うことがわかります。
Railsは現在進行形で勉強中なのでまた何かあれば記事にしようと思います。
Project Management Professional (PMP) 受験してわかったベンダー資格と違うところ

こんにちは。Kaneyasuです。
先日、Project Management Professional (PMP) に合格しました。
いやー、受かってよかったです。ホッとしました。

[認定証はこちら](https://www.credly.com/badges/0fc64909-da31-4f44-9271-5870f70bec1b/public_url)

さて、このPMPですが、テストセンターでの選択式試験という点では、ベンダー資格と共通する部分がありますが、ベンダー資格とは違うところがあると感じたので、まとめておきます。

受験の心構えとして、知っておいて損はないと思います。

## 35時間の公式研修の受け方

PMPという資格はいきなり受験することはできません。
以下の2つの条件をクリアする必要があります。
まずこれがベンダー資格と違うところの一つ目です。

- 35時間の公式研修を受けて修了証を得る
- PMIにプロジェクトマネージャーとしての実務経歴を添えて受験申請をして認定される

このうち、35時間の公式研修は「PMP 公式研修」とネット検索すれば見つかる研修機関で受講できます。
私の場合はこちらで受講しました。費用は16万円ぐらいでした。

[研修機関のリンク](https://aitrainingcenter.axis-ing.com/)

オンデマンドで受講でき、動画が細かく分かれていたので、隙間時間に勉強するのに便利でした。

公式研修は英語で受講すれば、もっと安く済ませることができます。
そのあたりは、英語が得意かどうか、資格に何を求めるかで選ぶと良いでしょう。

## 受験申請の際に書く実務経歴について

PMPを受験するには、PMIにプロジェクトマネージャーとしての実務経歴を添えて受験申請をし、認定される必要があります。
これがベンダー資格と違うところの二つ目です。

実務経歴は英語で書く必要がありますが、書き方は多くの情報が公開されているため、それらを参考にすれば問題ありません。
私も問題なく申請できました。

注意点として、たまに経歴を証明するための資料を提出するよう求められることがあるため、実際の経験と乖離しないよう気を付ける必要があります。

## 模擬試験に似た問題は一切出ない

ベンダー資格と違うところの3つ目です。

私が受講した研修機関では300問超の模擬試験問題が用意されていました。
私はそれを正解率90％を超えるまで学習して臨みましたが、本試験では同じ、または似た問題は一切出ませんでした。

これは、私が選んだ研修機関が良くなかったのではなく、PMPが問題の管理を厳重に行っているためだと思われます。

PMPの試験問題は、一瞬で判断できるものが少なく、その多くが考えさせる内容です。
考えさせることが目的なので、少なくとも公式の研修を提供している機関では、同じ問題や類似問題を模擬試験として提供することはないのでしょう。

模擬試験は、求められる知識や考え方を別の角度から問う形で作成されているのだと思います。

---

本ブログはいじょうです。
これからPMPを検討される方の参考になれば幸いです。
【おすすめ】コード×AI本読んだ！マジおすすめ！

# コード×AI本って？
2024/9/19に発売された、GitHub社 Yuki Hattori  さんが書かれた本です！
年末から少しずつ読み進め、めっちゃ内容が良かったのでとりあえず今すぐ買ってください！

https://x.com/yuhattor

https://www.amazon.co.jp/dp/4297144840

めっちゃ面白かったので、感想の整理も兼ねてダイマします！


# いいなと感じたところBest3
## AIとの適切な付き合い方が知れる！！！
言葉があいまいでアレなんですが、AIとの適切？な付き合い方が知れます！
一例ですが、本には「AIに100％の回答を求めてはならない」「プロンプティング→AIの回答を高速にイテレーションせよ」「60～80％の回答を期待し、人の手によって100％の成果物とせよ」といった、AI時代のエンジニアのマインドや態度へのアドバイスが書かれています！
私もこういった視点を持つことは大事だと考えており、この本を読んでさらにその整理ができました。

他にも、
- AIが読みやすいコード・ドキュメント・コメントを書くべし (+ 具体例)
- AIが活躍できるようなチーム・組織体制をとるべし (+ 具体例)

など、AIと協同することが当たり前な時代へ向けた（もうとっくに来てるけど）マインドセットと具体例がとても分かりやすく記載されています！！

## 効果的なプロンプトの例・テクニックが知れる！！！
AIモデルの質の向上により、プロンプトの内容の工夫は少しずつ不要になってきています（出典忘れた）。
しかし、依然プロンプトエンジニアリングが有用であることには変わりがないです。

この本では、そんなプロンプトエンジニアリングの基本や、実際にオープンソースのツールで使用されている効果的なプロンプトの紹介・解説が記載されています！！
よくある「あなたはプロの〇〇〇です」といったものから、「表現を変えて複数回命令する」「AIにプロンプトを生成させ、そのプロンプトを再度AIに投げる」など、知らなったテクニックを知ることができました！

また、プロンプトのテクニック的な工夫だけではなく、プロンプトに何を書くとよいか？というプロンプトエンジニアリングの**本質的な部分**への言及もあり、面白かったです。
情報アーキテクチャなどの概念を知らなかったので、その点も勉強になりました。

## 代表的な設計原則や指標・考え方を知れる！！
この本では、AIにこういう観点で考えさせるとよい・AIの書いたコードをこの観点で評価するとよい、という文脈で、エンジニアリングにおける代表的な設計原則や指標・考え方が紹介されています。
DRY原則（Don't repeat yourself | 重複禁止）やBig-O記法、SOLID原則などを広く知ることができます。
本書の本筋ではないためサッと紹介・解説される程度ですが、こういった、良いコードを書くための代表的な考え方を知れたのは嬉しいです。AIに聞いて詳しく解説してもらいました。

## 開発しよう！と思える！！
この本を読んでたおかげ？せい？で、正月や次の週の土日はずっとCopilot、Claudeと個人開発してました！
AIを駆使する知識はすぐに実践にうつせると思います。本を読み、知ったことをすぐに試せるので、楽しく読書しながら開発できると思います！！
本に書かれているテクニックや考え方をフルに開発で実践できていませんが、色々試してこそだと思うので、これからもちょこちょこ読み返しつつAIと協同できればなーと思います。

# 各章の簡単な紹介と感想
怒られたら消します。

## 1章 生成AIがエンジニアリングの常識を変える
AIとどう協同していくか？が書かれた章です。
エンジニアの仕事が完全になくなる日は未だ遠く、ただ、利用しない手はないので、上手く付き合っていこう！という気持ちになれます。


## 2章 プロンプトで生成AIを操る
ここから実際にどんなプロンプトを投げようか？という話題に入っていきます。テンション上がります。
主に、プロンプトエンジニアリングの本筋？のような部分と、Zero-shotやロールプレイなどの基本的なテクニックについて記載されています。
なんとなく雰囲気で投げていたプロンプトを再度整理でき、良い感じです。

## 3章 プロンプトの実例と分析
実例とある通り、オープンソースツールが内部で利用しているプロンプトから抽出したテクニックが記載されています。
高度なことをしたい場合は参考になるかなーといった感じでした！

## 4章 AIツールに合わせたプロンプト戦略
自動補完型、対話型、エージェント型のAIツールと協同するテクニックについて記載されています。
対話型を中心に使用し、自動補完型・エージェント型については知識不足だったので、細かいテクニックが知れて良かったです。
流行りまくってるClineとかも触ってみたいですね。

## 5章 AIと協働するためのコーディングテクニック
章の名前そのままの内容です！ただ、どれも初見のテクニックだったのでとてもおもしろかったです。
AIにソースを読ませる前提で、コードやソースの内容を上手く伝えるためのテクニックがたくさん載っています！！！
AIが理解・検索しやすい命名にする、コードを適切に分割し小さいコードを保つ、などなど、AIと協同するうえで大事なことを知れます。

## 6章 AIの力を引き出す開発アプローチ
プロンプトのテクニックというより、こういったことをAIに検査させると良い、ということを知れます！
上述したDRYやSOLID原則などです。LLMはその性質上、こういった原則の理解に強いため、確かに！と思いました。
知らない設計原則などもあり、勉強になりました。良いコード書けるようになりたいです。

## 7章 生成AIの力を組織で最大限に引き出す
AIの活用を、組織として推進するにはどうすれば良いのか？が書かれています。
自分の所属している組織とのdiffを考えつつ、5章の内容を振り返ることができる内容でした！！

## 8章 開発におけるAI活用Tips
コーディング以外でのAIの活用方法についてまとめられています。
Mermaid等を利用したデータの引き渡し方などが特に勉強になりました。Mermaid履修しないと・・・。

## 9章 AI時代をリードするために
最後の章です。1章の内容を再度整理しつつ、これからのAI時代を前向きに頑張っていこう的なことが記載されています。
がんばっていこう！！！

# おわりに
再掲しますが、おもしろい本だったのでおすすめです！

https://www.amazon.co.jp/dp/4297144840
useMemoとuseEffect+useStateの挙動の違い

# はじめに
公式ドキュメントを読んでもイマイチuseMemoとuseEffectの違いがわからなかったので少し調べました。

# レンダリング回数が違う
レンダリングに関しては以下のようになるみたい
```
useMemo
- レンダリング中に値が計算されるのでレンダリングは1回
useEffect
- レンダリング後にuseEffectが実行されるのでレンダリングが2回
```

なので例えば以下のような関数があるとする

```jsx
function calc(x) { return x + 1 };
```
この関数の引数に0を入れると初回のレンダリングでは一旦nullが返され、2回目のレンダリングで初めてuseEffectが非同期で実行されて1が返ることになる
```jsx
import { calc } from "foo";

function useCalc(someNumber: number): number | null {
  const [result, setResult] = useState<number | null>(null);

  useEffect(() => {
    setResult(calc(someNumber));
  }, [someNumber]);

  return result;
}
```
useMemoは初回のレンダリングで同期的に値が計算されるので引数に0を入れるとすぐ1が返る
```jsx
import { calc } from "foo";

function useCalc(someNumber: number): number {
    return useMemo(() => {
        return calc(someNumber);
    }, [someNumber]);
};
```

なので非同期処理が必要な場合はuseEffectでそうでない場合はuseMemoということになりそうですが、そもそもuseMemoすら必要かどうかも検討する必要がありそう(?)

# 記事を書きながら浮かんだちょっとした疑問

- udemyのアプリのマイページの画面とかは初回は読み込みでスケルトンが表示されるが、次からはスケルトンなしでコンテンツが表示されるのでそーゆーとこでもメモ化が使われている？
- useEffectでデータフェッチした際に少し遅れて取得されるのは単純にCSRのせいだと思っていたけど、もっというとuseEffectで2回レンダリングされるのが原因？
- もっといいデータ取得方法はある？→SWRというのがあるらしい


# おわりに
アルバイトや個人開発ではNextjsを使うのですが、素のReactの理解をもう少し深めたいと思いました。

# 参考

https://stackoverflow.com/questions/56028913/usememo-vs-useeffect-usestate
n番煎じGithub SSH認証の登録

# 概要

定期的にSSH認証切れちゃうのなんでなんでしょうね？

環境は次の通り。

* Windows 11
* WSL 2
* Ubuntu 24.04.1 LTS
* git version 2.43.0
* gh version 2.65.0 (2025-01-06)

# 手順

## 前処理

GithubへのSSH接続を確認してみます。

```terminal
$ ssh -T git@github.com
git@github.com: Permission denied (publickey).
```

上のコマンドを打って、上のような出力が出たら始まりの合図です。

:::note info
Githubの`SSH Key`は[こちら](https://github.com/settings/keys)から確認できます。僕の場合、keyがすべて削除されてました。そういうポリシーでもあるんですかね？？？
:::


ローカル環境の以前使ってたkeyはいらない子なんでポイしちゃいます。

```terminal
$ ls -lah ~/.ssh
出力をコピーし忘れたんですがconfig, id_rsa, id_rsa.pub, known_hosts, known_hosts.oldがありました。
$ rm -i ~/.ssh/*
```
## keyの作成

さて、keyを作成します。メアドはgithubに登録してる自分のものに書き換えてください。

```terminal
$ ssh-keygen -t ed25519 -C "your_email@example.com"
```

すると、次のように出力が出て、

`> Generating public/private ALGORITHM key pair.`

メアドをラベルにkeyが作成されます。

`> Enter a file in which to save the key`と言われたら、何も考えずEnterを押下

次に、下記のように言われたら、

```
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
```

もう二回何も考えずEnterを押下してください。

:::note info
passphraseはより安全にSSH接続を行うためのパスワードみたいなものらしい。
ここでpassphraseを設定するとセキュリティが強固になる。まあなくてもいい。
:::

## agentへの秘密鍵の追加

まずbackgroundで実行させたいので、次のようにコマンドを打つ。

```terminal
$ eval "$(ssh-agent -s)"
Agent pid ~~
```

次にkeyをagentに渡す。

```terminal
$ ssh-add ~/.ssh/id_ed25519
```

## Githubへの公開鍵の追加

ghを使う。ghでgithubにログインしていない場合は、`gh auth login`を叩いてください。

```terminal
$ gh ssh-key add ~/.ssh/id_ed25519.pub
```

:::note info
ここでハマった。404エラーだとかなんとか…（http使ってるんか）
次を実行すると行けた。
`gh auth refresh -h github.com -s admin:public_key`
:::

## 確認

```terminal
$ ssh -T git@github.com
```

いろいろ言われるが、"Hi ~~! You've successfully authenticated, but GitHub does not provide shell access."と出たら成功。

# 終わりに
こんなの読むより下の参考文献読んだ方がいいと思います（）

# 参考文献

* [SSH 接続をテストする](https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection)
* [既存の SSH キーの確認](https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys?platform=linux)
* [新しい SSH キーを生成して ssh-agent に追加する](https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent?platform=linux)
* [GitHub アカウントへの新しい SSH キーの追加](https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account?platform=linux&tool=cli)
* [【GitHub超初心者向け】SSH keyでGitHubに接続してみる](https://zenn.dev/taki_san/articles/e18613a464e74b)
* [【Git】git cloneをする際に発生するPermissionエラー対処](https://qiita.com/empty948/items/166429e8ec6383a8bb6b)
ESP32からBME280の温度を読み出してみる

## やりたいこと
ESP32で室温などを収集して、データベース化して遊んでみたい。
そのための準備として、まずはESP32でBME280というセンサから温度データを読み出してみた。
以下の記事からの続きです。

https://qiita.com/miler0528/items/b955b03e92185289cb39

## 使ったもの
- ESP32 devkitC

https://www.amazon.co.jp/gp/product/B06XWP81GP/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

- BME280使用 温湿度・気圧センサーモジュールキット

https://akizukidenshi.com/catalog/g/g109421/

パスコン等、周辺部品が実装されているから便利。


- その他ブレッドボード等
    - ブレッドボードは、以下のものを使用。穴数によってはESP32が載らないので注意。

https://akizukidenshi.com/catalog/g/g112366/

## 準備
### BME280キットのはんだ付け。
- 端子をはんだ付け
- J3をショート

### ブレッドボードに実装・配線
|BME280モジュール<br>ピン番号|ESP32ピン名|意味|
|---|---|---|
|1|3V3|3.3V電源|
|2|GND|GND|
|3|-|3.3V接続するとI2Cモード<br>J3ショートすると接続不要|
|4|GPIO 21| I2C SDA|
|5|GND|GND接続すると0x76アドレスに設定|
|6|GPIO 22| I2C SCL|

ESP32の電源はひとまずPCのUSBから供給。
以下の写真のような感じになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/29451f5c-d399-ab69-98d2-8b90aecf13dd.png)


### 必要なライブラリのインストール
Arduino IDEで以下の手順でインストール。

1. Arduino IDEのメニューから「Sketch」→「Include Library」→「Manage Libraries」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/eddf0069-f395-54e8-a063-fbeaba2d20eb.png)



2. 検索窓に「Adafruit BME280」と入力し、検索結果から「Adafruit BME280」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/44252b65-ea6a-4c07-8b18-09f56e9eb881.png)

3. 「Install」ボタンをクリックして、ライブラリをインストール


### コーディング

``` arduino: 
#include <Wire.h>
#include <Adafruit_BME280.h>

Adafruit_BME280 bme;

void setup() {
  Serial.begin(115200);
  Wire.begin();
  if (!bme.begin(0x76)) {
    Serial.println("センサが見つかりません");
    while (1);
  }
}

void loop() {
  // センサーからデータを読み込む
  float temperature = bme.readTemperature();
  float pressure = bme.readPressure() / 100.0F;
  float humidity = bme.readHumidity();

  // 表示
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" degrees C");

  Serial.print("Pressure: ");
  Serial.print(pressure);
  Serial.println(" hPa");

  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.println(" %");

  delay(1000);
}
```

## 動作確認
以下のような感じに、温度、湿度、気圧を出力できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3974913/94f8255d-69f5-e3e4-842b-2fba6b307b18.png)




## 感想
- ICのデータシートをよく読んで、I2C通信のコードを組もうかと思っていたが、ちょっと面倒そうだと思って、AI(Gemini)に聞いたら一発で答え（専用ライブラリあるよー）を教えてくれた
    - ただし、一応githubを斜め読みするとか、自分には必要ない処理をしていたのでその部分は削除するとかのアレンジはした
- スクラッチで作ろうとせず、まず調べるのが大事
- AIの出力を鵜呑みにしないのも大事
- 次は取得したデータをPC上のサーバWifi送信できるようにする
メールで「パスワードを別送する」意味があるのか、改めて調査してみた

こんにちは。

土曜日の朝に、シャワーを浴びていたら、今更ながら「**パスワードがメールで送られてくるのって意味あるのか？**」と気になってしまい、夜しか寝られなくなってしまうので徹底調査してみました。

一応、サイバーセキュリティについては、情報処理安全確保支援士を取得する（現在は失効）くらいには勉強したつもりなのですが、イマイチ意味がわかりませんでした。

そこで、こちらの記事では、セキュリティ向上の一環として、パスワードを2通のメールに分けて送信する方法は本当に効果があるのか？について検証します。

## パスワード別送＝「PPAP』
そもそも、このパスワード別送はPPAPという命名があるそうです（笑）

:::note info
知らんがな（笑）
:::

- P：パスワード（Password）付きzip暗号化ファイルを送付
- P：パスワード（Password）を送付
- A：暗号化（Angoka）
- P：プロトコル（Protocol＝手順）

## パスワード別送の目的
1. **漏洩リスクの分散**
一通のメールが漏洩した場合でも、もう一通が漏洩しなければ完全なパスワードは攻撃者に渡らない

2. **攻撃のハードルを上げる**
攻撃者が二つのメールを同時に入手する必要があるため、情報を守るハードルが高くなる

:::note info
（ふるさと）なるほど。確かに、多少の意義はありそうですな。でも、そもそもメールが漏洩するパターンは何があるんだ？
:::

## メールが漏洩するケース
1. **メールアカウント自体が乗っ取られている場合**
パスワードの漏洩や、何かしらの攻撃によって、メールアカウント自体を乗っ取られた場合、パスワードを別送したとしても意味がありません。

2. **中間者攻撃（Man-in-the-Middle Attack）にあった場合**
中間者攻撃により、メールの中身が漏洩した場合でも、1通目と2通目を両方とも傍受すればいいので、パスワードを別送する意味はないような気がします。ただし、1通目と2通目の時間を3hくらい開けて送付すれば、多少の効果はある気もします。

3. **メールサーバーを乗っ取られる場合**
全メールが傍受されてしまうわけですから、パスワードの別送には意味がありません。

:::note info
（ふるさと）やっぱ意味ないやん。
:::


## 2要素認証
メールを別送することで、いわゆるワンタイムパスワード（**2要素**認証）的な効果があるような気がしますが、それはありえません。ちなみに、**2段階**認証的な意味合いはありそうな気がしますが、よくわかりません。

- メールでファイルを送って、パスワードをLINEで送る
- メールでファイルを送って、パスワードはSMSで送る
- パスワードは、そもそも相手方と共通の何かを事前に話しておく
等のようなパターンなら意味はあります。

メールでファイルを送って、30秒しか使えないパスワードをメールで送るなら、まだ一定の効果はありそうです。


### 5. まとめ
では、最後に私の意見で終わりにします。

:::note info
（ふるさと）意味ない！！！！めんどくさいが勝つ（笑）
:::

異論は認めますので、有識者の方はコメントお待ちしております。
【アジャイル開発・スクラム】Clean Agile 基本に立ち戻れ

【アジャイル開発・スクラム】Clean Agile 基本に立ち戻れ
<iframe width="560" height="315" src="https://www.youtube.com/embed/10lmp_eIP80?si=FMIfBGleFejZ1Txw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
NISQってなんですか？

# NISQとは

NISQ (Noisy Intermediate-Scale Quantum) は、現在の量子コンピュータの発展段階を表す用語です。

NISQの特徴は、量子ビットにノイズ（エラー）が存在し、完全なエラー訂正ができない状態でありながら、特定の問題に対しては古典コンピュータを上回る可能性を持つという点です。この時期は、実用的な量子コンピュータへの過渡期として位置づけられています。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/6322753a-10bd-373c-7c08-693583a23bef.png)

引用：https://www8.cao.go.jp/cstp/ryoshigijutsu/kento_wg/1kai/siryo2.pdf


# 量子コンピュータの進展状況

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/1dda92ff-78c2-a13b-a0a1-8a55b1da6fed.png)

引用：https://www8.cao.go.jp/cstp/ryoshigijutsu/kento_wg/3kai/siryo2.pdf

### NISQの登場背景
- 2010年代前半に初期の量子ビット制御技術の発展小規模な量子回路の実現
- 2016-2017年にIBMが初めて一般ユーザーに量子コンピュータへのクラウドアクセスを提供
    - Googleやその他の企業が50量子ビット以上のプロセッサの開発を開始
- 2018年にPreskill教授がNISQ時代という概念を発表。数十から数百の量子ビットを持つ、エラー訂正なしの量子コンピュータの時代の到来を予測
- 2019年以降 Googleが量子超越性の実証を発表
    - IBMが100量子ビット以上のプロセッサを開発
    - 様々な企業がNISQデバイスの商用化を推進

## まとめ

現在も、より多くの量子ビット数の実現や、ノイズの低減、量子アルゴリズムの開発など、NISQデバイスの改良と応用に向けた研究が世界中で進められています。
マーケティング分析の手法と事例

マーケティング分析は、商業成功に必要不可欠なプロセスの一つです。この記事では、実際の企業事例を使ってマーケティング分析の場面と実践的な分析手法を解説します。
※この記事は、ChatGPTの出力を基に作成しています。

---

## 1. 顧客セグメンテーション

### 目的
顧客を属性や行動に基づいてグループ化し、それぞれのセグメントに適したマーケティング施策を設計します。

### 分析手法
- クラスタリング分析 (K-means、階層型クラスタリングなど)
- RFM分析 (Recency, Frequency, Monetary)
- 主成分分析 (PCA)

### 事例
**ユニクロ (株式会社ファーストリテイリング)**
ユニクロは、顧客ニーズに着目した市場の細分化を行い、「カジュアル/フォーマル」と「トレンド/ベーシック」の流動的な顧客ニーズでセグメンテーションを実施。この分析により、広く長く支持される商品を提供しました。

---

## 2. 広告キャンペーンの効果測定

### 目的
広告のROIを測定し、予算配分や改善案を検討します。

### 分析手法
- A/Bテスト
- 回帰分析 (広告予算と売上の関係性)
- インクリメンタリティ分析 (広告の純増加効果を測定)

### 事例
**スターバックスコーヒージャパン株式会社**
スターバックスは、マーケティングミックス (4P) を活用し、製品、価格、場所、プロモーションの各要素を戦略的に組み合わせました。高級感を感じられる高価格設定や、人が集まる中心街の好立地に出店しました。

---

## 3. 顧客離脱の予測

### 目的
顧客がサービスを離れる前に、離脱を予測し防止施策を課します。

### 分析手法
- 機械学習モデル (ロジスティック回帰、ランダムフォレスト、XGBoost)
- コホート分析
- サバイバル分析

### 事例
**ライフネット生命保険株式会社**
ライフネット生命は、Web特化型の保険で他社との差別化に成功。申し込みが24時間365日可能な便利さや、加入しやすい保険料の安さを強みとして、新規顧客獲得を実現しました。

---

## 4. 商品推薦システムの構築

### 目的
顧客の購入履歴に基づき、購入可能性の高い商品を提案し売上を増加させます。

### 分析手法
- 協調フィルタリング (ユーザーベース、アイテムベース)
- コンテンツベースフィルタリング
- ハイブリッドモデル

### 事例
**Amazon**
Amazonは、顧客の閲覧履歴や購入履歴を基に、協調フィルタリングを活用した商品推薦システムを構築。パーソナライズされた商品提案を行い、売上増加に大きく貢献しました。

---

## 5. ブランド認知の向上施策の評価

### 目的
ブランドキャンペーンが認知度やイメージに与えた影響を測定します。

### 分析手法
- アンケート分析 (テキストマイニング)
- ソーシャルリスニング (SNSやレビューサイトのデータ分析)
- 因子分析 (ブランドイメージの評価)

### 事例
**レッドブル・ジャパン株式会社**
レッドブルは、エナジードリンク市場において、「疲労回復」ではなく、「これから何かを頑張る人」に向けたコンセプトを提供。エクストリームスポーツへのスポンサー契約などを通じてブランド認知向上に成功しました。

### 参考URL
- https://koujitsu.co.jp/blogs/marketing_strategy/
- https://the-marke.com/media/marketing-success-story/

---

マーケティング分析を活用することで、企業は効率的かつ効果的に顧客ニーズを把握し、競争力を高めることができます。これらの事例を参考に、自社の状況に合わせた分析手法を選択し、実践してみてください。
Pythonの「__init__」とは？ロボットに例えて解説！

Pythonでクラスを学ぶと、必ず出てくるのが **「\_\_init__」** という不思議なメソッド。

「これって何をしているの？」
「何のために必要なの？」

そんな疑問を解決するために、今回はロボットを例にしながら、やさしく解説していきます！

## 🤔 「\_\_init__」ってそもそも何？
Pythonの「\_\_init__」は、クラスから ロボット（オブジェクト）を作ったときに、**最初に実行される特別な関数（メソッド）** です。

:::note info
**「初期化メソッド」** とも呼ばれ、ロボットが生まれた瞬間に、
名前や型番をセットしたり、動くための準備をするのが役目です。
:::

### 🦾 クラスをロボット工場に例えてみよう！
Pythonのクラスは、ロボットを作る 工場 だと考えてみてください。

- クラス → ロボットの設計図（どんな機能を持つか決める）
- オブジェクト → 実際に工場で製造されたロボット
- 「\_\_init__」 → ロボットを組み立てる作業（名前や機能を設定する）

:::note warn
つまり、「\_\_init__」がないと、ロボットが 何も設定されていない状態 になってしまうのです。
:::


### ✍ ロボットの設計図（クラス）を作ってみよう！
``` python
class Robot:
    def __init__(self, name, model):
        self.name = name  # ロボットの名前
        self.model = model  # ロボットの型番

    def introduce(self):
        print(f"こんにちは！私はロボット「{self.name}」、型番「{self.model}」です！")
```

コード中のselfについてわからない方は、以下の記事を参考にしてください。

https://qiita.com/masaya8028/items/58e8eb123be77068643b

## 🏭 ロボットを作ってみよう！
さあ、工場からロボットを製造してみます。

``` python
robot1 = Robot("アイボ", "AIBO-1000")  
robot2 = Robot("ペッパー", "PEPPER-2000")  

robot1.introduce()  
# → こんにちは！私はロボット「アイボ」、型番「AIBO-1000」です！

robot2.introduce()  
# → こんにちは！私はロボット「ペッパー」、型番「PEPPER-2000」です！
```
### 💡 「\_\_init__」がやっていること
1. ロボットが 作られた瞬間 に、自動で「名前」と「型番」を設定。
2. 各ロボットが、異なる情報を持てる ようになる。
3. 作ったあとに手動で設定する手間を省ける！

###  「\_\_init__」がないとどうなるの？
もし、「\_\_init__」がなかったら、ロボットは工場から出てきても 空っぽの状態 になります。

``` python
class Robot:
    def introduce(self):
        print(f"こんにちは！私はロボット「{self.name}」、型番「{self.model}」です！")
```
これを実行すると…

``` python
robot = Robot()
robot.name = "ソフィア"
robot.model = "SOPHIA-3000"

robot.introduce()  
# → こんにちは！私はロボット「ソフィア」、型番「SOPHIA-3000」です！
```
:::note warn
⚠️ 手動で設定しないと使えないので不便！
ロボット工場なのに、製品が**未完成のまま出荷されてしまう**ことになります。
:::

### 🎯 「\_\_init\_\_」の3つの役割
1. **ロボットの初期設定を自動で行う**
名前や型番をすぐ設定できる！
2. **コードのミスを減らす**
毎回手動でデータを入れなくてもOK！
3. **プログラムをシンプルにする**
ロボットの設計がスッキリして分かりやすい！

### 🛠 デフォルト値を設定してみよう！
時には、ロボットの名前や型番に デフォルト値 を設定したいこともありますよね？
それも「\_\_init__」で解決できます！

``` python
class Robot:
    def __init__(self, name="ノーネーム", model="UNKNOWN"):
        self.name = name
        self.model = model

    def introduce(self):
        print(f"こんにちは！私はロボット「{self.name}」、型番「{self.model}」です！")
```
#### 🦾 デフォルト値を試してみよう！
``` python
robot1 = Robot()  
robot2 = Robot("ターミネーター", "T-800")  

robot1.introduce()  
# → こんにちは！私はロボット「ノーネーム」、型番「UNKNOWN」です！

robot2.introduce()  
# → こんにちは！私はロボット「ターミネーター」、型番「T-800」です！
```
 
### 💡 ポイント
:::note info
引数なしでロボットを作ると、デフォルトの値が入る！
必要な時だけ名前や型番を指定できる！
:::


### 🚀 「\_\_init__」を使いこなそう！
「\_\_init__」があれば、
たくさんのロボットを効率よく `生産＆管理`できます！

プログラムの規模が大きくなっても、オブジェクト（ロボット）をしっかり整理できるのが魅力です。

## まとめ：\_\_init__ のポイント
1. クラスを使ってロボットを作ると、 最初に実行される特別な関数！
2. オブジェクトの 名前や型番などを自動で設定できる！
3. デフォルト値を使えば、 省略可能なデータも管理しやすい！

これで「\_\_init__」がロボットの組み立てにどれだけ役立つのか、
しっかり理解できましたね！Pythonを使って、
自分だけのロボットをどんどん作ってみてくださいね！🚀
UnrealEngine Widgetメモ

# ScreenSize
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/cffcf2a4-a966-2ae7-1b49-4d1c7c114f1c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/0e9be2f4-ffe4-79d9-39d0-2bbe65803fad.png)
Desired on Screen 部品を作る時

FillScreen Add to Viewportをするときはこの設定

# 部品を作る時

## 基本こうぞう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/2d4a8cd5-08d0-883d-5791-125d6910d611.png)

SizeBox＋Canvas Panel

### SizeBox
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/8ded4b5a-08d7-0e55-21e6-a2e3c9b79914.png)
サイズを設定する

### SizeBoxいっぱいに設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/3b8febd9-e287-ca2a-5846-9ac7e3713b2f.png)

## フレーム画像設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/8ed95dfd-4b6d-2e11-32bc-5c8763eb407f.png)

Brush->DrawAsをBoxに設定
Marginを枠画像に合わせた設定に変更する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/f85ae213-33eb-38ce-00dd-3496075fd25d.png)
デフォルトのままだとこんな感じ

## 配置する時
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/a5abdf3c-676b-cb39-8307-9d2fd8ae927c.png)

SizeBoxのサイズに合わせる
もしくはSize To Contentにチェックを入れる


## 上に重ねるた時のクリック判定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/2bec4ebd-f99f-9af2-9954-92819095e9ab.png)

Non Hit-Testableでクリックしない
クリックさせたい場合はVisibleに設定
【Azure】Azure AppServiceでSQLiteを動かす方法


## はじめに

Azure SQL Database ではサブスクリプションごとに１つ無料で SQL Server を作成することができます。学習のため個人開発していたプロジェクトで使用していたのですが、この度完成し次のプロジェクトに取り掛かる際に接続先 DB を SQLite に変更しました。

その際に Azure App Service 上で SQLite を動作させることに苦労したため方法をまとめました。

EFCore でのプロパイダー変更方法については下記記事にまとめました。読んでくださると幸いです。

https://qiita.com/KM_20005/items/8f5340afdf0b52bda049

## 環境

- Windows11
- .Net8
- ASP.Net Core
- SQLite

## 結論

DB ファイルを`wwwroot`配下に配置

:::note info
`wwwroot`フォルダが存在しない場合は手動で ASP.Net Core プロジェクトの直下に追加すれば大丈夫です。
:::

## 解説

### プロジェクト直下などに DB ファイルを配置しても正常に動かない原因

SQLite はサーバー構築が不要な軽量の RDB です。`.db`や`.sqlite`形式で保存された DB ファイルに対してアクセスを行います。

そのため SQLite を App Service 上で動作させるためには当たり前ですが`.db`や`.sqlite`ファイルが App Service 上に存在している必要があります。

そして通常ビルドの成果物にこれらの DB ファイルは含まれません。そのためローカルで確認した際には正常に動くのにいざデプロイすると全く動かないという現象が発生しました。

### `wwwroot`配下に DB ファイルを置くとうまくいく理由

アプリ発行を行う`dotnet publish`の際に発行する対象について公式ページには以下のように記載があります。

> ASP.NET Core Web アプリを発行するときは、次の資産が含まれます。
>
> - ビルド成果物
> - 次の glob パターンと一致するフォルダーおよびファイル:
>   - \*\*\*.config (例: web.config)
>   - \*\*\*.json (例: appsettings.json)
>   - wwwroot\*\*

https://learn.microsoft.com/ja-jp/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-9.0#exclude-files

`wwwroot`配下に配置したファイルはそのままの状態で発行されるアプリに含まれるため App Service に配置ができました。

### 備考

私が使用している環境が Asp.net Core であったため対応方法をそのまま記載しました。

本質としては AppService 上に DB ファイルが配置されていることであるため、他の言語でも同じ観点で対応すれば SQLite を使用することが可能です。

## おわりに

ローカルでは正常に動くのにデプロイ環境でのみうまくいかない現象に初めて遭遇したためかなり苦戦しました。デプロイ周りは Visual Studio の力を借りてやっていたため深く理解するいい機会になったと思います。

この記事が皆様のコーディングライフの助けになれば幸いです！！

## 参考

https://iifx.dev/ja/articles/216266172

https://learn.microsoft.com/ja-jp/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-9.0#exclude-files