OmniAICreator/Qiita-1.07M huggingface dataset:
プレトタイプとプロトタイプの違いと必要性

新しいアイデアを形にする際、欠かせないステップが「プレトタイプ」と「プロトタイプ」です。この2つはどちらも重要ですが、役割や目的が異なります。さらに、それぞれの必要性をメタ認知（自分の考えを客観的に捉える能力）を活用して考えることで、より効率的にアイデアを実現できます。
※この記事は、ChatGPTの出力を基に作成しています。

---

### **プレトタイプとプロトタイプの違い**

#### **プレトタイプとは？**
プレトタイプは「試すだけの簡単な仕組み」のこと。実際に動かなくてもいいので、アイデアを素早く試し、価値や可能性を確認するための手段です。

**例**  
- 新しいゲームコントローラーを作る場合、段ボールで簡単な形だけ作り「持ちやすいか」を試す。
- アプリを作る場合、紙に画面のデザインを描いて「どのボタンを押せばどの画面に進むのか」を確認する。

**ポイント**  
- 簡単に作れる。
- 動く必要はない。
- アイデアが「作る価値があるか」を検証する段階。

---

#### **プロトタイプとは？**
プロトタイプは「試作品」のこと。実際に動くものや使えるものを作り、機能や使いやすさをテストします。

**例**  
- ゲームコントローラーなら、実際に動くものを作り、ボタンの反応や操作性を確認する。
- アプリなら、簡単な動作ができるバージョンを作り、使いやすさをテストする。

**ポイント**  
- 実際に動くものを作る。
- 完成品に近い形。
- アイデアが「どう動くか」「実用性があるか」を検証する段階。

---

### **プレトタイプとプロトタイプの必要性**

メタ認知を使ってそれぞれの必要性を考えると、以下のような理由が浮かび上がります。

#### **プレトタイプの必要性**
1. **リソースの節約**  
   いきなりプロトタイプを作ると、時間やお金が無駄になるリスクがあります。プレトタイプを使えば、簡単に「このアイデアが求められているか」を確認できます。

2. **柔軟な発想を促進**  
   簡単な形で試すことで、失敗を恐れずに多くのアイデアを試せます。これにより、アイデアの改良点が早い段階で見えてきます。

3. **他者からのフィードバック**  
   簡単に作れるので、他人に見せて感想をもらいやすいです。「形はいいけどサイズが大きすぎる」など、貴重な意見を得ることができます。

---

#### **プロトタイプの必要性**
1. **実用性を確認**  
   実際に動くものを作ることで、頭の中だけではわからなかった問題が見つかります。「操作が複雑すぎる」など、具体的な課題を発見できます。

2. **完成形に近づける**  
   プロトタイプを通じて、実際に使える製品に近づける調整ができます。見た目や機能など、細部の確認が可能です。

3. **実際の体験を提供**  
   プレトタイプでは得られなかった「使った感覚」や「ユーザー体験」を確認することができます。

---

### **メタ認知を活用した両者のバランス**

メタ認知的に考えると、「今どちらの段階が必要か」を冷静に判断することが大切です。以下の問いかけが役立ちます：

- **「このアイデアは作る価値があるのか？」** → プレトタイプを使って検証する。
- **「このアイデアが実際に動くとどうなるか？」** → プロトタイプで確認する。
- **「失敗のコストはどれくらいか？」** → プレトタイプで試してリスクを下げる。

プレトタイプは「作るべきか」を見極め、プロトタイプは「どう作るか」を明らかにする。どちらも必要な段階ですが、順序とタイミングが重要です。

---

### **まとめ**

プレトタイプとプロトタイプは、それぞれ異なる目的を持ったプロセスです。プレトタイプは「簡単に試して価値を確認」し、プロトタイプは「動く形にして実用性を確認」します。メタ認知を活用することで、どちらをいつ使うべきかを正しく判断し、効率的にアイデアを実現できます。

新しいアイデアを形にするとき、この2つのステップを活用して、あなたのプロジェクトを成功に導きましょう！
Wurkkos for workers（Model: HD10）でOFFのときにライトが消える設定にする

# 対象
 - [Wurkkos]( https://www.wurkkos.com/ ) for workers（Model: HD10）のライト
 - [anduril 2]( https://github.com/ToyKeeper/anduril )

# 問題
ライトの状態はオフのずなんだけど、デフォルトでは青→赤と点灯して、赤が点灯するままになる（ **デフォルトだとOFF状態でライトが消えない** ）。オンだと白いライトが点くんだけど、オフでもライトが点いてるのでオフなのか？？となった。

# 解決法
### 概要
ざっくり言うと、取説の **Advanced UIにある、7Cのところに書いてあるOFF** を目指せば良い。

### 手順
7回クリックを2回やればよい。

※もしかすると、7回クリックの前にアドバンスUIへ遷移するために9回クリック+1回長押しをする必要があるかも？（やった感じ、たぶん不要そうな気がするけど）

# 仕様の話
（ONのときはまぁいいんだけど）取説的にOFFと書いている状態は、「スタンバイ」状態という扱いな模様。

このスタンバイモードの明るさ調整が、Advanced UIで7回クリックするごとに、OFF→low→High→Blinkingと状態遷移する。デフォルトではこれのHighに設定されているっぽい。
VsCodeで作成したWindows Powershellスクリプトが動かないとき

## おさらい
https://learn.microsoft.com/ja-jp/powershell/scripting/what-is-windows-powershell?view=powershell-7.4

* 忙しい人向け
> Windows PowerShell と PowerShell は、2 つの個別の製品です。

要はURLとURIみたいなもん、細けえことは良いんだよ

## なぜ動かないかはアタリはついていた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423236/1739252f-7f90-57bf-a73a-5be165ec9a4f.png)
これ文字化けしてる可能性大という話で、結局原因もそうだったというお話。

https://learn.microsoft.com/ja-jp/powershell/scripting/windows-powershell/ise/how-to-write-and-run-scripts-in-the-windows-powershell-ise?view=powershell-7.4

>Windows PowerShell ISE では、ASCII、BigEndianUnicode、Unicode、UTF32、UTF7、UTF8、既定値のエンコード オプションをサポートしています。 既定値オプションの値は、システムによって異なります。

まぁ大方の人はASCIIになってんじゃないの？

## 解決策
* Shift-JISで保存する
なんとなく文字コードの問題だなと思って試してみたら動いた。個人的にはShift-JISとCP932さんという存在には、過去にも困らされていたし、滅べばいいと思っているので、別の手法を採用した。けどcodeでエンコード変えて保存するだけだし影響範囲的にはこちらのほうが良かったのではないかと思っている。

https://qiita.com/recomemos/items/1032199c5c47f1ce5417

* UTF-8 BOM付きでよみこむようにプロファイルファイルを新規追加
```powershell MakeProfile.ps1
new-item -path $profile -itemtype file -force
notepad $profile
```

出てきたメモ帳に以下を記載
```powershell Microsoft.PowerShell_profile.ps1
$OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423236/74a9246f-e598-09b6-8e44-b376a5743d83.png)

脳死でANSIとか言う聞いたこと無い文字コードで保存。

その後走らせたいPS1ファイルをUTF-8 with BOMで保存

これで日本語を含んだPS1を右クリック>Powershellで実行で無事に実行できるようになる。

## 書いてて思ったこと
Shift-jisで保存の解決法がベストプラクティスな感じがしてきた。
シンプルであり、影響範囲はそのファイルのみ。
今後運用してみてなんか問題があれば加筆か別記事を書きます。

## もとに戻す
UTF-8 with BOMは影響範囲でかすぎぃ！
```powershell RemoveProfile.ps1
Remove-Item -Path $profile -Force
```
なんかclearでも元に戻らなかったのでPowershellを再起動
```powershell ChkEncode.ps1
$OutputEncoding.EncodingName
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423236/ca473f5b-3f4a-70b9-09e4-b6b415fd7a76.png)

もとに戻った。日本語含むPS1ファイルはS-JISで運用することにした。
React19×create-react-appで起こるエラー

Udemy講座をする際に、`create-react-app`でreactの開発環境を作成したらエラーが起こりました。

### 依存関係の競合のためエラーが発生

react@19.0.0がインストールされているのに、`@testing-library/reactがreact@^18.0.0`を必要としているためエラーが出たようでした。

![スクリーンショット 2025-01-07 14.22.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288047/e254d661-bf40-daa2-a31e-15c5d06198d5.png)

## 解決方法

この記事が参考になりました！

https://qiita.com/tsuyuni/items/d2edef23c169bd79de93

この記事の内容の通り進めると、依存関係のエラーは解決できました。

### axiosのエラーが出る

依存関係のエラーを解決し、さらに講座を進めていくと、今度は`axios`を使ってデータを取得する必要があり、その際にまたエラーが起こりました。

型定義のエラーが起こっています。

![スクリーンショット 2025-01-07 18.33.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288047/32398822-0f3c-b078-cd13-9d957101376c.png)

これも、先ほど参考で紹介した記事にもある通りですが、カスタムの型定義ファイルに追記することで解決できました。

```src/custom.d.ts
declare module "axios";
```

### axiosパッケージがインストールされていないエラー

型定義のエラーは解決しましたが、ローカル環境ではエラーが出ています。
`Module not found: Error: Can't resolve 'axios'`

![スクリーンショット 2025-01-07 18.38.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288047/cd99ce1a-9bd5-0cf8-ad68-3583658ab522.png)

`npm install axios`でaxiosをinstallします。

### 互換性のないtypescriptのバージョンがインストールされているためにエラーが発生

しかし、installするとまたエラーが出ました。

![スクリーンショット 2025-01-07 18.46.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288047/c005cdfb-4ee3-9e90-30b1-8b441e262268.png)

このエラーは、`react-scripts@5.0.1`がtypescriptの特定バージョンを期待している一方で、現在のプロジェクトには互換性のない`typescript@5.7.2`がインストールされているために発生しています。

`npm install typescript@4.9.5`をインストールし、typeScriptのバージョンを下げました。

すると、無事に`npm install axios`が通りました！

![スクリーンショット 2025-01-07 19.32.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288047/befa228d-8992-daf9-c871-931c3b6a25bf.png)

fetchも成功しています。

![スクリーンショット 2025-01-07 19.34.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288047/3b7ee2b5-878f-06e3-4d53-7c33b9d2b80d.png)


やっと講座の内容を進められるようになりました！

### 補足
ちなみに`create-react-app`は3年ほど更新が停止しており、非推奨であり、今はViteを使ったインストールが主流になってきているようです。

https://zenn.dev/laravelstudy/articles/bad11d64eeac42

今回はUdemy講座を進める目的だったので`create-react-app`を使用しましたが、あくまでも個人学習の範囲で使用するのが良さそうです！
リモートワークでもオフィス勤務みたいな優しいおせっかいをしたい！をツールに落とし込んでみた

# リモートワークでも結局ベースはオフィス勤務でも変わらないと思う

いきなりブチあげましたが色々なチームとしてのキャッチアップが必要なところは同じかと思う
新人さんとかエンジリアリング歴の浅い人へのマネージメント力がどうしても低下してしまう

- 作業管理に日報等集めてみるものの文章から各作業にどのくらい時間をかけたかが分かり辛い
- ハマってるときに様子を察して適切なアドバイス出すタイミングが読めない
- 依頼した作業についてどの時間帯になに取り掛かるべきか一声かけるようなコミュニケーションを取り辛い

こういうのってありませんか？
**シニアエンジニアはこれを経験則で報連相してくるので良いのですが、ジュニアエンジニアはそうもいかない**
「何でも聞いて」というスタンスでも手が空いているタイミングが分からないので声をかけづらし、チャットツールがあっても明文化するスキルが育ってないため、どう質問すれば良いのか分からない

それを報連相力で片づけちゃうのはあんまりだ・・・
逆にマネージャー側はこういう状況をキャッチアップするのが大変なのでオフィス勤務より気苦労が増えてしまう

# という問題の打ち手としてアンチパターンが実装されてしまう

要は慣れが大きいけど体験しないと慣れてはいかない。フツーに慣れるまでにはオフィス勤務一択の時代より数倍は時間がかかってしまうのは仕方ない。だから、強制的な方針が打ち出されたりした。

## 過剰監視
マイクロマネジメントだけならまだわからんでもないけど、インカメで着席してるか監視、キーストロークを記録して仕事してるか監視。これはいくら何でもやりすぎだ。恐怖政治的に心理的安全性を下げてしまう。

## オフィス回帰　※メリットも大きいけどね！
正攻法ではある。フルリモートから週５出社とか極端なのも散見する。チーム全体として生産性は上がるとおもうけど、リモートワークに設計された仕事をオフィス回帰させると、マネージャーが会議とサポート業務だらけになって手を動かす時間が無くなってしまう。通勤時間分の実務で残業を削れてたのが元通りに。

もっと双方の合意の上でうまいとこコミュニケーションとれるチャンスを作れないだろうか？
チャット/エンゲージメント/チケット管理/ピアボーナスツールはあってもこの部分のスキマを埋めてはくれなさそう

### じゃ、作っちゃお！（でた、いつも通り！

# というのを実装したらこんなかんじに

- ①**バックグラウンドで使用したアプリケーション情報を収集し、それぞれに消費した時間を計測する**
    - キーストロークの計測監視未満のレイヤーであるアプリ情報レベルで収集で過剰監視となる事を防ぐ
    - 集計対象外のものは全て「その他」にまとめられます。作業用BGMでYoutubeを開いた、といったものまで過剰監視しない作りになっています
- ②**特定のアプリケーションの操作時間を集計し、一定時間を超える場合に定義されたRunbookを実行し、アラートを自動発砲する**
    - 煮詰まった状況を自動的にキャッチアップできるようにする。また、マネジメント側がアラート時間を設定することで、報連相への心理的安全を高める
    - アラートの設定をPMやシニアエンジニアが行うので、エスカレーションへの障壁がさがります
- ③**指定された時間や日時で通知することで、どのタイミングで何をすれば良いのか気づくことができる**
    - 会議のカレンダーと切り離す事でタスクの忘却を防ぐ。また、これもマネジメント側と相違の設定により、双方のタスクへのコミット感が醸成される
    - Outlookとかの会議のカレンダーと切り離す事でタスクの忘却を防ぎます

各設定ファイルに定義されたルールで動作します。以下のようなチームでの運用が望ましいでしょう

- PMやシニアエンジニアは「タスク集計定義」と「スケジュール通知」の設定ファイルを準備し、**チームでファイル共有します**
- Windows起動時に自動起動する設定をします [設定例](https://note.com/bright_clover112/n/ncd35e325b202)
- 出力される作業時間のファイルを定期的にアップロードするようにします
- 作業時間のファイルを**PM、シニアエンジニアが評価し適切なマネジメントになるようにチューニングします**

# 置き場所

<a href="https://github.com/yasutakatou/goRemotework"><img src="https://github-link-card.s3.ap-northeast-1.amazonaws.com/yasutakatou/goRemotework.png" width="460px"></a>

# 動作画面

①**バックグラウンドで使用したアプリケーション情報を収集し、それぞれに消費した時間を計測する**

フォアグラウンドで操作していたウィンドウで正規表現でマッチしたものを集計します

![image](https://github.com/user-attachments/assets/99e76027-42f7-4da7-ad1f-90607ef72baa)

②**特定のアプリケーションの操作時間を集計し、一定時間を超える場合に定義されたRunbookを実行し、アラートを自動発砲する**

stackoverflowで検索し続けていたのでアラートが出た例

![image](https://github.com/user-attachments/assets/3737c0ae-4e53-4d22-b437-d96529958674)

③**指定された時間や日時で通知することで、どのタイミングで何をすれば良いのか気づくことができる**

毎時45分になったらポモドーロテクニックで休憩しましょう、な例

![image](https://github.com/user-attachments/assets/6fae4eee-fb2b-4451-a07f-9d65e9a2909e)

# あとがき
正月に貯めたカロリーの消費に、年始の散歩中にふと降りてきたアイディアです！
今年は連休長かったのもあって休み終盤のタイミングだけど無事取り掛かることができました。
まとまった休みがないとコーディングする意欲が湧かなくなってきてるのが良くないですが自画自賛だけど、よくこういうの思いつくよなーって思う。大きなプロダクトにはならなくても着想でニマニマできるなんて素敵だよな。
ガチ目に作りこんだら今までなかったタイプのサービスにはできると思うんだけど、僕が出来るのはここまで
また、何か思いついたら書こう。
picoCTF 2021 writeup GET aHEAD

## GET aHEAD (Web Exploitation)

Find the flag being held on this server to get ahead of the competition http://mercury.picoctf.net:15931/

タイトルより、`Get a HEAD`する。
curlでresponse headerのみを取得するときは、`curl --head`を利用する。
```
$ curl --head http://mercury.picoctf.net:15931/
HTTP/1.1 200 OK
flag: picoCTF{r3j3ct_th3_du4l1ty_82880908}
Content-type: text/html; charset=UTF-8
```
フラグが得られた。

`picoCTF{r3j3ct_th3_du4l1ty_82880908}`

## References
https://qiita.com/takc923/items/1b508bb370c78b7a9d44
(途中)比の連結？の計算「a:b=n1:n2 b:c=n3:n4 a:cはいくつになりますか。」をAI先生に聞きました。

勉強中

申し訳ありません。質問が間違っています。
いい方法があればアドバイスをいただけると幸いです。
**a:b=n1:n2 b:c=n3:n4 a:cはいくつになりますか。**

~~pythonのユーザー定義関数を教えて下さい。~~
~~上記で約分はしないで下さい。~~
~~上記で8を2のままの計算を教えて下さい。~~
~~(途中省略)~~
~~ユーザー定義関数で~~

# ChatGPT先生へ
>(回答抜粋)

```python
```



# Gemini先生へ
未

# copilot先生へ
未

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

# いつもと違うおすすめです。
#### Qiita
useRefを用いてモーダルの外側判定を行うと起きた不具合

## 前提
モーダルの外側をクリックしたときにモーダルを閉じる実装方法は何パターンかあると思います。
今回は下記記事で紹介されているような、useRefを使った方法で外側判定を行っていました。
https://qiita.com/G4RDSjp/items/58364a6655d4968a90d9

## 起きた不具合
モーダルの上にクリックするとその要素が消える要素を置いていて、その要素をクリックした際に、モーダルも閉じてしまう現象が発生しました。

![gif-output-Tue07Jan2025101329GMT.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2221375/19465c6d-d149-a5a7-ec33-20ca727691c9.gif)



## 原因
クリックされた直後に要素が消滅し、外側をクリックしたと判定されてしまっていたため。

## 解決策
モーダルの外側判定を別のやり方で実現することで解決しました。
参考：https://zenn.dev/aiq_dev/articles/b6a2653e52e028

## まとめ
useRefを用いた要素の外側クリック判定方法は便利ですが、モーダルに関しては違うやり方で実装した方が良いということがわかりました。
ExcelでPrint_Titles及びPrint_Areaを@を付けて参照すると複数のバグが発生する

# 検証環境
- Win11Pro(24H2)
    - Excel2024_64bit(Ver2412/Build16.0.18324.20092)
- Win10Home(22H2)
    - Excel2024_64bit(Ver2411/Build16.0.18227.20082)

# 症状
Print_Titles及びPrint_Areaを@を付けて参照すると値が`#NAME?`になって範囲を参照できなくなる
以降、下記症状も発生する
1. VBAにて**Evaluate**に**Print_Titles及びPrint_Areaを含む参照を渡すとエラーになる**
1. VBAにて**Names**で**Print_Titles及びPrint_Areaを呼び出そうとするとエラーになる**
1. PageSetupのPrintArea及びPrintTitleColumns並びにPrintTitleRowsを呼び出す前に**該当セルのformulaを呼び出す**と、**印刷範囲・タイトル行・タイトル列がクリアされる**
1. 【3】を行うと以降**印刷範囲・タイトル行・タイトル列の設定ができなくなり、PageSetupのPrintArea及びPrintTitleColumns並びにPrintTitleRowsも空になる**
1.【4】の状態になると、 **印刷範囲・タイトル行・タイトル列は空なのに名前定義にはPrint_Titles及びPrint_Areaが残ったままになり消せなくなる**

## 大きく三つのバグに分けられる
- 一つ目は**参照の値が`#NAME?`になり参照ができなくなる**
- 二つ目は**WorkSheet#Names**及び**WorkSheet#Evaluate**で**Print_Titles及びPrint_Areaが呼び出せなくなる**
(Application#Names / Applicatoin#Evaluateで絶対アドレスを指定しても同様)
- 三つ目は**印刷範囲・タイトル行・タイトル列がクリアされて変更できなくなる**

# 再現方法
## 一つ目及び二つ目の再現方法
1. 新規作成でまっさらブックを作成
1. 【印刷タイトル】→【印刷タイトル】を設定する
わかりやすいように行タイトルのみを設定
1. ブックを保存する　← **★これがトリガー**
1. 新規シートを作成する
1. 新規に作成したシートの適当なセルで【2】で作成した範囲のPrint_Titlesを@付きで参照して確定する
数式は【`=@Sheet1!Print_Titles`】で、値は参照範囲の最初の値が表示される
**★この時点で二つ目のバグが発生する**
1. 【5】のセルをF2なりで開きそのまま確定する
1. 数式が【`=@Sheet1!_xlnm.Print_Titles`】(`_xlnm.`が勝手に追加される)になり、値が【`#NAME?`】になる

## 三つ目の再現方法
上記バグ発生後、下記コードで再現
```VB:Sheet1
Sub Hoge()
    ' Sheet2のA1でSheet1のPrint_Titlesを参照しているものとする
    Dim formula As String
    Dim printTitleRows As String
    formula = Sheet2.Range("A1").formula
    printTitleRows = Me.PageSetup.printTitleRows
    Debug.print _
        "Formula : " + formula + vbLf + _
        "PrintTitleRows : " + printTitleRows
End Sub
```
出力結果
```
Formula : =Sheet1!_xlnm.Print_Titles
PrintTitleRows : 
```
ちなみにこっちだと問題がない
```VB:Sheet1
Sub Foo()
    ' Sheet2のA1でSheet1のPrint_Titlesを参照しているものとする
    Dim formula As String
    Dim printTitleRows As String
    ' formulaより先にprintTitleRowsを呼び出しているのがキモ
    printTitleRows = Me.PageSetup.printTitleRows
    formula = Sheet2.Range("A1").formula
    Debug.print _
        "Formula : " + formula + vbLf + _
        "PrintTitleRows : " + printTitleRows
End Sub
```
出力結果
```
Formula : =Sheet1!_xlnm.Print_Titles
PrintTitleRows : $1:$1
```

# 対処法
一つ目と二つ目の対処法は見つからなかった
三つ目に関しては、PrintArea及びPrintTitleColumns並びにPrintTitleRowsのそれぞれをformulaを呼び出す前に呼び出しておくことで回避できることが分かった
ThisWorkbookのOpenイベントの先頭にでも仕込んでおけばよさそう
```VB:ThisWorkbook
Private Sub Workbook_Open()
    Dim ws As Worksheet
    Dim tmp As Variant
    For Each ws In Me.Worksheets
        With ws.PageSetup
            tmp = .printArea
            tmp = .PrintTitleColumns
            tmp = .printTitleRows
        End With
    Next
End Sub
```

# おまけ
検証中VBAをいじらなくても印刷タイトルの範囲が空になる症状が多々あったけどトリガーが見つからなかった。
あと、範囲が空になっていても名前定義が生きているからなのか開き直すと範囲が復活するという特徴もあることが分かった。

軽く調べた感じ情報がなかったんだけどおま環なのかな？
会社の別バージョンのExcelでも再現できたからおま環じゃないと思うんだけど。
ページタイトルとか結構使うものだと思うのだが、それを参照するってのがかなりニッチな使い方なのかな？
Advanced SEO Training in Nepal

Advanced SEO Training in Nepal at Digital Mastery Nepal equips you with the essential skills to boost your search engine rankings. Learn directly from industry experts in an interactive, hands-on environment. Our comprehensive courses cater to all levels, whether you’re just starting out or already have experience in SEO. Gain valuable insights into keyword research, on-page and off-page optimization, and the latest SEO tools and techniques. Enroll today to sharpen your digital marketing skills and stay ahead in the competitive online landscape.

https://digitalmasterynepal.com/advanced-seo-training-nepal/
circuitjsの作法 その8

# 概要
circuitjsを調査してみた。
ネットリストの共有方法、その3。
テキストです。

# ネットリスト

```
$ 1 0.000005 10.20027730826997 50 5 50 5e-11
172 304 176 304 128 0 7 5 5 0 0 0.5 Voltage
g 256 336 256 352 0 0
w 256 304 256 336 1
r 352 176 352 304 0 1000
w 352 304 352 336 1
g 352 336 352 352 0 0
w 304 176 352 176 0
w 256 176 304 176 0

```

# 手順


https://www.falstad.com/circuit/circuitjs.html

を開く。

ファイル>テキストデータからインポートをクリック


以上。
circuitjsの作法 その7

# 概要
circuitjsを調査してみた。
ネットリストの共有方法、その2。
リンクです。

# リンク

https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjCAMB0l3BWcMBMcUHYMGZIA4UA2ATmIxAUgoqoQFMBaMMAKACcQUFDwMeueuACxRkkFmAwoQw3oMgiwKPKPJIkVTdCQA1APYAbAC4BDAOZ0WZztxnZ+t7AmmaWAdxvyRAuz1YcnaUlBZxkFUTB4dxlQ2UDfcCsY6Wx7ZPTXD1lg9JzxDx8c7L4oFiA



以上。
初めてのReactで学習記録アプリの作成の記録

# 実践内容
JISOUで今取り組んでいるReactの学習記録です。

### 1.Udemyの講座でReactの記載方法を学ぶ

こちらのUdemyの講座でReactの基礎知識を学習しました。
[モダンJavaScriptの基礎から始める挫折しないためのReact入門](https://www.udemy.com/course/modern_javascipt_react_beginner/?srsltid=AfmBOorPKN0dJ2c-ckRd1b_ZjJ6GI85HKWPnbGEOd8Detg82J7PaRkwj&couponCode=NEWYEARCAREERJP "モダンJavaScriptの基礎から始める挫折しないためのReact入門")
ハンズオン形式になっており、動画をなぞってコードを書きながら～なるべく手を動かして進めるように意識しました。


### 2.開発環境の作成
vscodeでコーディングを行い、viteで実行環境を構築して動かせるように環境を構築しました。


### 3.アプリを実際に作成
学習内容と学習時間を記録するアプリを講座でやっていたことを真似しながら実際にコーディングをしました。
分からなくなったら動画を見直したり調べたりしながら、とにかく意図した動きを再現できるように進めました。

実際に作成したものがこんな感じで動きます。
![レコーディング 2025-01-06 211142.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3973178/30cceaf9-a53c-e045-01c9-ff59ed157161.gif)


## 学んだこと
座学だけに比べて手を動かすことでの理解度は全然違うことを改めて実感しました。
また、実際に作ることで楽しさや成果に対する達成感も得られます。
今回はひとまずReactの基礎的な部分を学習できたので引き続き手を動かして学習を続けてもっと力をつけていきます。

##

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

https://projisou.jp
Apache Spark で df.show が上手くいかない問題


# 実行環境
OS: Microsoft Windows 11 Pro 10.0.26100
Apache Spark: 3.5.4
JDK: 11.0.20
仮想環境: conda
Python: 3.8.20 

# 発生した事象
Anaconda navigator より JupyterNotebook を起動してコードを実行すると df.show が上手くいかない
他のデータフレーム作成などは問題なく動作する...
## エラーの一部抜粋
```
"name": "Py4JJavaError",
"message": "An error occurred while calling o43.showString...
```

# エラー原因
Apache spark は Worker と Driver、それらを管理する Manager で構成されています。  
今回は、Pyspark の Driver と Worker に内包される Executor で異なる Python バージョンを使用しているためエラーが発生。（たぶん）

# 解決方法
DriverとExecutorのPythonバージョンを環境変数で明示的に指定して上げる事で解決できます。
今回はcondaの仮想環境内でのみ有効化したいので、conda仮想環境の有効化時に変数を作成するようにして解決したいと思います。

### 1. 仮想環境の activate.d 内に sp1 スクリプトを作成
activate.d は初期なら以下にあるはず。
<condaの仮想環境名> はcondaの仮想環境名で置換してください。
```powershell
C:\Users\%USERNAME%\anaconda3\envs\<condaの仮想環境名>\etc\conda\activate.d
```
仮想環境名はPowershell上で以下のコマンドを通せば確認できる
```
conda env list
```
※baseはデフォルトでそれ以外がユーザーの作成した環境、左に記載のあるのがcondaの仮想環境名

### 2. activate.d ディレクトリ内に環境変数を設定するスクリプトを作成
activate.d ディレクトリ内で拡張子が ps1 であればファイル名は何でもよいです。
今回は set_env_vars.ps1 で作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531208/bb381932-8bf6-4843-5122-721fbba4b7e0.png)

ファイルを開いて以下のスクリプトを記述します
<condaの仮想環境名> はcondaの仮想環境名で置換してください。
```powershell
# 環境変数の設定
$env:PYSPARK_PYTHON = "C:\Users\%USERNAME%\anaconda3\envs\<condaの仮想環境名>\python.exe"
$env:PYSPARK_DRIVER_PYTHON = "C:\Users\%USERNAME%\anaconda3\envs\<condaの仮想環境名>\python.exe"
```

設定は以上です、仮想環境を再起動して df.show() を行ったら無事成功しました。

本記事がトラブルシューティングの一助になれば幸いです。
[ガチ初心者用]Google colaboratoryを使ってPythonの勉強をしてみる#1

# 今回やること
四則演算,変数,標準出力を理解する.

## 実際に打ち込んでみる
### 事前準備とか
前回立ち上げたcolabの画面から再開する.「コーディングを開始するか,AIで生成します.」をクリックすると自由に入力できる.これはコードを打ち込むためのノートみたいなもの.プログラムの実行にはshiftを押しながらenterを押す.

### 四則演算してみる
プログラミングはただコードを書き連ねるだけではなく,計算処理もできる.
試しに1+1を計算させる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3938254/7218b76e-ea94-65f8-4be2-d24b543b0ae2.png)
ここで注意したいのが,入力する文字などは基本半角でないといけない,実際全角で１＋１を実行してみると・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3938254/21316958-b246-bf64-5a3c-9c9fdbcd5ee1.png)
こんな風にエラーとなり計算結果が表示されない.プログラミングの実行はきほんエラーが起きた個所で止まるからである.ここでpythonにおける四則演算子を表形式で記載しておく.これを一生懸命暗記する必要はなく,必要になったとき思い出せばok.
|演算子 |役割 |使い方 |計算結果|
|---  |---  |---   |---|
+|足し算する|1+1|2|
-|引き算する|1-1|0|
/|割り算をする|4/2|2|
*|掛け算をする|2*3|6|

他にもいっぱいあるが,とりあえず四則演算だけで使えればok

### 変数に値を代入してみる
ここまでやったことは計算するだけで,プログラム上だとほぼ無意味に近い.計算結果を保持する方法として変数を使う.変数にはアルファベットの文字列を使う.変数を使う際も全角ではなく半角文字であることに注意.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3938254/dce4c93e-5b27-5891-d8ad-721ba1bc8da6.png)
これで代入ok.aの中に1+1,つまり2が入っている
#### 小言
pythonにおける変数は厳密には代入を行っているわけではない点に注意!(便宜上ここでは代入と呼んでいる)

### 変数の中身を表示する
変数に値を入れても,それをじゃあそいつの中身を見るにはどうするのっていう話がある.それを解決するのが標準出力であるprint文である.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3938254/aa7d0844-4384-79c5-9907-94e25093fa6c.png)
正しい計算結果が入っているのがわかるはず.aは2なのでこんなこともできる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3938254/ba03260d-63b7-a47b-a1d8-4d4473a534b4.png)
aには2が入っているため,a+aというのは2+2ということなので4になる.

今回はここまで.お疲れさまでした.
[ガチ初心者用]Google colaboratoryを使ってPythonの勉強をしてみる#0

# 趣旨
本記事はプログラミングの勉強をしたいけど何から始めたらいいかわらかない,ガチ初学者向けの記事である.他の言語を使ったことがある人や,既にプログラミングを職に就けている人には退屈な内容に思えるかも.

# 今回やっていること
google colaboratoryをインストールして勉強用の環境を整える



## 環境を用意せずにプログラミングをする
環境というのは工作などの道具を用意するということ.VScodeやanacondaなどでちまちま環境構築(道具をそろえる)ことが鉄板だが,今回はGoogle colaboratoryというGoogleが提供するものを使うことにする.特にプログラミングをこれから始める人にとってVScodeのUIは難解なためあまりお勧めしない.

## Google colabratolyを立ち上げてみる
### 事前準備
作業するためのgoogleアカウントを一つ用意する

### 立ち上げるまでの手順
用意したgoogleアカウントのドライブを開く.開き方は点が並んだところをクリック→ドライブをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3938254/7b36476b-0655-73bb-796f-ad15b59bbfae.png)



そうしたら,左上にある新規をクリック→その他→アプリを追加をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3938254/9968fc02-5d21-ebf3-d865-537025aca0d9.png)

検索バーにcolabと打ち込みColaboratoryをインストールする.
インストールができたら作業用のフォルダを作成し,再び新規→その他をみると,colabの選択肢が追加されているのでクリックする.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3938254/99311800-2d14-d2ec-081b-b23bfab83120.png)
この画面が出たらok.お疲れさまでした.
今後の記事投稿について 2

# はじめに

2020~2023年は`Qiita`、2024年は`はてなブログ`に記事投稿していましたが、2025年からは`Qiita`に戻します。

# 理由

`Qiita`の方が閲覧数が伸びたから

# リンク

[はてなブログ](https://nakashimaakio.hatenablog.com/archive)

https://nakashimaakio.hatenablog.com/archive
AVL木の回転をアニメーションしたい

## きっかけ

AVL木というものを最近知ったのですが、回転の意味がよく分からなかったので、可視化したいと思いました。

## 作ったもの

JavaScriptで書いて、以下のGitHub Pagesに置きました。
（おそらく問題ないと思いますが、もし間違っていたら教えてください）

https://thirdcake.github.io/tools_page/avl-tree.html

操作手順は、以下の通りです。

- 数字を入力して、`insert` ボタンを押してください
- バランスしていないところがあれば、ノードが赤くなります
- `R`で右回転、`L`で左回転です
- ノードを削除する場合は、`x`を押してください

## 考察

たとえば、以下のような数列をinsertしてみます。
`8 4 12 2 6 10 5 7 11`

二分木なので、左から小さい順に並びます。
![img1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310353/a7919b93-f1a9-1022-2b1f-2509a2067dbc.jpeg)

ここで、`4`のノードを左回転してみます。(`4`ノードの`L`をクリックします)
![img2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310353/b1aa2c23-3f51-151f-9a75-12551a9e5997.jpeg)


`4`が左下に移動し、それに伴い2,5,6等も移動していることが分かります。
回転をしても、大小関係に影響を与えないことが、視覚的に分かります。

## 右・右回転や、左・右回転をしなければいけない理由

AVL木の解説を読むときに、右・右回転や、左・右回転などを場合分けしているのですが、初心者にはとても理解しづらいです。
どうしてこのようなことをしなければいけないのかというと、1回の回転では、バランスを取れないことがあるからです。
以下は、その例です。

`8 4 6`をinsertしてみます。
`8`がバランス取れていないので、右回転します。
すると、`4`が先頭に来て、バランスが取れていません。
しかし`4`を左回転しても、もとに戻るだけです。
赤いノードの回転だけでは、バランスが取れません。

![img3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310353/b8091d25-15bc-d715-19bc-0befc9e5742f.jpeg)

このような場合、まず子ノードの`4`を左回転させてから、親ノードの`8`を右回転させるという操作をする必要があります。

![img4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310353/01fd7c8a-ddf7-f90f-abb2-710c66989d02.jpeg)

場合分けをするのは、このような場合にそなえてのことだと分かります。

## 感想

自分で右回転と左回転をやってみることで、イメージできるようになりました。
apply

# apply(適用させる）とは  メソッドを新しく作って適用させているような関数
```rb
      def apply(owner, path, line)
        unless @sources.empty?
          @cache.module_eval("# frozen_string_literal: true\n" + @sources.join(";"), path, line) # ファイルと行を指定して書き込むようなことをする
        end
        @canonical_methods.clear # ハッシュの中身を消す

        @methods.each do |as, canonical_name|
          owner.define_method(as, @cache.instance_method(canonical_name)) # メソッドに新たな名前をつけて定義する
        end
      end
```
https://github.com/rails/rails/blob/cf6ff17e9a3c6c1139040b519a341f55f0be16cf/activesupport/lib/active_support/code_generator.rb#L28C1-L37C10

#### `@cash`
```rb
class MethodSet
      METHOD_CACHES = Hash.new { |h, k| h[k] = Module.new }

      def initialize(namespace)
        @cache = METHOD_CACHES[namespace]
        @sources = []
        @methods = {}
        @canonical_methods = {}
      end
```
https://github.com/rails/rails/blob/cf6ff17e9a3c6c1139040b519a341f55f0be16cf/activesupport/lib/active_support/code_generator.rb#L5C1-L13C10

```rb
irb(main):022> "# frozen_string_literal: true\n" + [].join(";")
=> "# frozen_string_literal: true\n"
irb(main):023> "# frozen_string_literal: true\n" + ["fafa", "fafa"].join(";")
=> "# frozen_string_literal: true\nfafa;fafa"
```

#### module_evalとは　文字列を与えると定義されたものがそのクラス自身のスコープになる
https://qiita.com/masatom86650860/items/a366c197dc0e9605538e

#### Hash#clear ハッシュの中身を消す
https://qiita.com/masatom86650860/items/9ae9b63dd9de281c4007

#### define_method メソッド名を追加して作成する
https://qiita.com/masatom86650860/items/2708229bca31a8d5ace8

#### 感想
今はなんとなくでしか調べることができなかった。
define_method

# メソッド内容を新しくメソッド名を追加することができる
>define_method(name, method) -> Symbol[permalink][rdoc][edit]
define_method(name) { ... } -> Symbol

>インスタンスメソッド name を定義します。

>ブロックを与えた場合、定義したメソッドの実行時にブロックが`レシーバクラスのインスタンスの上で BasicObject#instance_eval`されます。

### 引数
>[PARAM] name:
メソッド名を String または Symbol を指定します。
[PARAM] method:
`Proc、Method あるいは UnboundMethod のいずれかのインスタンスを指定`します。
### 返り値
>[RETURN]
`メソッド名を表す Symbol を返します。
### 例外
>[EXCEPTION] TypeError:
method に同じクラス、サブクラス、モジュール以外のメソッドを指定した場合に発生します。
例
```rb
irb(main):001* class Foo
irb(main):002*   def foo() p :foo end # レシーバのないメソッドを作成
irb(main):003*   define_method(:bar, instance_method(:foo)) # 作成されたメソッドがbarというメソッド名にもなる
irb(main):004> end
irb(main):005> Foo.new.bar
:foo
=> :foo
```
```rb
irb(main):029> Foo.new.foo
:foo
=> :foo
```
https://docs.ruby-lang.org/ja/latest/method/Module/i/define_method.html

#### UnboundMethodクラスとは　レシーバがないと動作しない
https://qiita.com/masatom86650860/items/e5fdb4ebf158d9a9e00a
Lpic 303 v3 合格体験記

## はじめに
記事の内容はLpic 303 v3 の合格体験記になります
誰かの参考になれば

スコアは　520 でギリギリ合格しました。

## 学習方法
●<strong>ping-t オンリー</strong>
●LPIC JAPANの動画

### <strong>学習期間/どのように学習したか</strong>
半年v2のping-tをだらだらやってたんですが、v3に変わったので
０からまたやることになり時間がかかってしまいました。

１回目不合格 470　模擬試験90% コマ問80%
２回目合格　520  模擬試験95% コマ問80%

## 試験の所感
いやぁ、難しいですよ。僕始めてLPIC不合格になりましたし、２回受けてもスコアは大きく上がりませんでした

LPIC3 304のver2を所持していて有効だったのですが…304ver2より全然難しいです。


今のところLPIC3ver3でping-tが対応しているのが303だけなので、なんとか合格できてよかったです。

１回目で見た問題は２回目では出なかったのですが、傾向をつかんでなんとか点数UPしました。

他のサイトでたまに　範囲が狭いから勉強しやすい　ってあるんですけど。

これ資格あるあるで　範囲が狭いほど深堀されるんですよね。
逆に範囲が広いほど　浅かったりします。

303は浅いところと深いところが極端でしたね。
選択された問題によっては、落ちていた可能性がでかいです。

合格画面出た瞬間に　両手を上げて喜びました。こんなの初めてですｗ


## 感想

５問ぐらいお試しの難易度高い問題を入れてくるので、どれが点数を取れる問題なのかよくわかってないですが、まぁ、難しい。

ベンダーの資格の更新が値段も高くなってるし、もうめんどくさくなってきたので
国家資格に切り替えて

応用技術者　を取りに行こうと思います。

元気があれば　AWSスペシャリスト取りたいです。
UnboundMethodクラス

# レシーバを持たないメソッドのクラス、レシーバがないと動作しない　　レシーバ(オブジェクト).メソッド名
>クラス・モジュールの継承リスト: 
BasicObject>Kernel>Object>UnboundMethod 

>要約
`レシーバを持たないメソッド`を表すクラスです。呼び出すためには`レシーバにバインドする必要`があります。

>Module#instance_methodやMethod#unbindにより生成し、後でUnboundMethod#bindによりレシーバを割り当てた Method オブジェクトを作ることができます。

```rb
irb(main):006* class Foo #メソッドを定義
irb(main):007*   def foo() "foo" end
irb(main):008*   def bar() "bar" end
irb(main):009*   def baz() "baz" end
irb(main):010> end
=> :baz

# 任意のキーとメソッドの関係をハッシュに保持しておく
# レシーバの情報がここにはないことに注意

irb(main):011* methods = {1 => Foo.instance_method(:foo),
irb(main):012*            2 => Foo.instance_method(:bar),
irb(main):013>            3 => Foo.instance_method(:baz)}
irb(main):014>
=> {1=>#<UnboundMethod: Foo#foo() (irb):7>, 2=>#<UnboundMethod: Foo#bar() (irb):8>, 3=>#<UnboundMethod: Foo#baz() (irb):9>}

# キーを使って関連するメソッドを呼び出す
# レシーバは任意(Foo クラスのインスタンスでなければならない)

irb(main):015> p methods[1].bind(Foo.new).call
"foo"
=> "foo"
irb(main):016> p methods[2].bind(Foo.new).call
"bar"
=> "bar"
irb(main):017> p methods[3].bind(Foo.new).call
"baz"
=> "baz"
```
https://docs.ruby-lang.org/ja/latest/class/UnboundMethod.html

### レシーバーがないと動作しない
```rb
irb(main):019> Foo.foo()
(irb):19:in `<main>': undefined method `foo' for Foo:Class (NoMethodError)

Foo.foo()
   ^^^^
...
irb(main):020> Foo.new.foo()
=> "foo"
```
### クラスはUnboundMethodになる
```rb
irb(main):011* methods = {1 => Foo.instance_method(:foo),
irb(main):012*            2 => Foo.instance_method(:bar),
irb(main):013>            3 => Foo.instance_method(:baz)}
irb(main):014>
...
irb(main):022> methods[1]
=> #<UnboundMethod: Foo#foo() (irb):7>
irb(main):023> methods[1].class
=> UnboundMethod
```
怠惰エンジニアワイ、外に出る習慣をつけようと思う

## リモート生活習慣改善

最近はフルリモートワークとまではいかなくとも、リモートワーク時に全く外に出なくなったように感じる。

筆者もリモートワークが主体のため、1日も外に出ずに終えることも多々ある（かなり不健康）

そんな生活が続いていた時に、いくつか外に出るのに効果的なものがあったので備忘録的にメモしてみた。

## 朝にゴミ出しにいく
こちらは効果的である。部屋も綺麗になるし、時間的にも短時間で済む。

個人的には出勤後、朝会前にやるのがおすすめ。

## 昼に外食する
こちらも個人的におすすめ。
自炊して節約している方にはおすすめできないが、気分転換にもなるし近所開拓もできる。

ルーティン化もしやすく良い。

難点と言えばお昼寝ができなくなる。

## 昼にスーパー買い出し
夕方とか夜はサラリーマン、主婦、OLでごった返すので、空いている間に買い物を済ませる作戦。

人が少ないだけでストレスフリーで買い物ができる。

外食よりも昼寝の時間も確保できそう（近いスーパーなら）

## ベランダでタバコを吸う（喫煙者限定）
これは相当おすすめ。

特に冬は寒いが相当目も覚めて、業務にも集中できる。

こちらもルーティンにしやすく継続も可能（健康には良くない）

喫煙者限定なのが痛い

## 振り返り
全てに共通することだが、外に出るための目的を持たせることが大事なのかもしれない。

ふらっと外に出れるようになれば一番良いのだが、、、
3日目





























# Azure OpenAI ServiceとDockerを使用したMarkdown変換システムの構築記録

## 1. プロジェクトの概要
- 目的：各種ファイル形式をMarkdownに変換するDockerコンテナの構築
- 使用技術：Docker, Python, Azure OpenAI Service, MarkItDown
- 対応ファイル形式：PDF, PPTX, DOCX, 画像ファイル等

## 2. 主要な技術的課題と解決プロセス

### 2.1 OpenAIライブラリの互換性問題
```python
TypeError: Client.__init__() got an unexpected keyword argument 'proxies'
```

#### 解決までの過程
1. 特定バージョンでの試行
```txt
openai==1.10.0  # 失敗
openai==1.9.0   # 失敗
```

2. 最新バージョンでの成功
- コミュニティ情報を参考に最新バージョンを試行
- バージョン`1.59.3`で正常動作を確認

### 2.2 パッケージバージョンの明確化
動作確認済みの最終構成：
```txt
markitdown==0.0.1a3
openai==1.59.3
python-dotenv==1.0.0
```

## 3. システム構成

### 3.1 Dockerfile
```dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --upgrade pip && \
    pip install -r requirements.txt
COPY html-to-markdown.py .
COPY .env .
VOLUME ["/app/files"]
CMD ["python", "html-to-markdown.py"]
```

### 3.2 実行コマンド
```bash
# イメージのビルド
docker build --no-cache -t html-to-markdown .

# コンテナの実行
docker run -v "$(pwd)/files:/app/files" --env-file .env html-to-markdown
```

## 4. 重要な学び

### 4.1 バージョン管理の重要性
- 明示的なバージョン指定の必要性
- 動作確認済みバージョンの記録
- 再現性の確保

### 4.2 デバッグ手法
- コンテナ内でのパッケージ確認
```bash
docker run --rm html-to-markdown pip list
```
- エラーメッセージの詳細な分析
- コミュニティ情報の活用

### 4.3 Docker活用のメリット
- 環境の完全な分離
- 再現性の確保
- デプロイの容易さ

## 5. 今後の展望
- 定期的なパッケージバージョンの更新確認
- セキュリティアップデートへの対応
- 変換機能の拡張

## 6. まとめ
- 環境構築の重要性
- バージョン管理の必要性
- コミュニティ情報活用の有効性
- Docker化による開発効率の向上

この実装を通じて、実践的なDocker活用とトラブルシューティングのスキルを習得することができました。
gitHubを学び直して、実務でめちゃくちゃ使えそうなやり方を見つけられた話

webデザイナーのmariettiです。

社内のwebデザインチームでgitHub学び直しをしたところ、**ステージングにあるまだアップしたくないコミットをリバートし、別のコミットをstg→mainへマージする方法**を導き出しました。（説いてくれたのは社内の有志です。ありがたい）

gitHubは初心者すぎてとりあえずマージやらプルやらプッシュ、基本的なことができますというくらいだったので、かなりためになりました。

今回できるようになった運用はこれ。
文字で書いてもわかりづらいと思いますので以下図解。

```mermaid
gitGraph
	commit id: "first-commit"
	branch "develop(stg)"
	branch "Aさんの作業ブランチ"
	branch "Bさんの作業ブランチ"
	checkout "Aさんの作業ブランチ"
	commit id: 'Aさんの修正' type: NORMAL
	checkout "develop(stg)"
	merge "Aさんの作業ブランチ" id: "Aさんの修正をstgにマージ"
	checkout "main"
	checkout "Bさんの作業ブランチ"
	commit id: "Bさんの修正" type: NORMAL
	checkout "develop(stg)"
	%% Aさんの修正が一時的に取り消された状態
	commit id: 'Aさんの修正をリバート' type: REVERSE
	merge "Bさんの作業ブランチ" id: "Bさんの修正をstgにマージ"
	checkout "main"
	merge "Bさんの作業ブランチ" id: "Bさんの修正をmainにマージ"
	checkout "develop(stg)"
	%% Aさん、Bさんの修正が反映される
	commit id: 'Aさんの修正をリバートのリバート' type: REVERSE
	checkout "main"
	merge "develop(stg)" id: "Aさんの修正をmainにマージ"
	
```  

マーメイドもめちゃくちゃ難しかったのですが、学び直し会で学習したgit commandと似ている...！となり知見でした。
今までmainブランチから直接ブランチを切って、stgを回避していた複数人の作業本番環境デプロイですが、これからはリバートで良き運用となりそうです！

gitHubはきちんとした勉強というより概念を知っていき、実用で覚えていったので知らない機能がたくさんあり基礎的な学び直しも大事だなと実感しました。
玄人の方々から見たらこんなことも知らないのか！となりそうですがエンジニア畑出身じゃない私にとっては知る由もなかった...

もう少し積極的にCLIでの操作ができるようになれたらいいなと思う今日この頃です。（ずっと言っている気がする）

会社内には、フロントエンドエンジニアやなんでも書けるようなエンジニアもたくさん所属しているので、知見をもう少し横連携でもらえる環境があったらいいなとぼんやり思いました。
ヒヤリハット体験：ホームディレクトリ直下で git init してしまったので、Git管理下から解除してみた

## はじめに

今回は、自分の失敗体験をもとに、Git周りの知識を改めて整理してみようと思います。

:::note info
***Gitを使い始めた人やGitHubでの管理を始めた方にとって、無意識のうちにやってしまいがちなミスを防ぐ手助けになれば幸いです。***
:::

以下のブログ記事も参考にしながら、自分の備忘録として体系的にまとめていきます。

https://qiita.com/chell2/items/82d024a67096a43933e0

## 書こうと思ったきっかけ
最近、Gitコマンドを使ってさまざまな作業をしている中で、**記憶があいまいなまま自分のホームディレクトリをGit管理下に置いてしまっていました...。**

:::note alert
**幸いにも、GitHub上のリモートリポジトリにプッシュすることはなかったため、個人情報が漏洩するような事態には至りませんでした。**
:::

***しかし、この経験は「ヒヤリハット」として大いに反省するきっかけとなり、記事としてまとめておくことにしました。***

## 起きていた事象
***自分のホームディレクトリ全体がGit管理下に置かれていました。*** 私の場合、「***Oh My Zsh***」というフレームワークでターミナルをカスタマイズしています。

https://qiita.com/free-honda/items/5fb52879c019750a4e75

画面には現在のディレクトリがGitリポジトリであることや、現在のブランチが `main` であることが表示される設定になっています。

```bash
➜  ~ git:(main) ✗ pwd
/Users/ホームディレクトリ
```

`git rev-parse --is-inside-work-tree` コマンドを使うと、ホームディレクトリがGit管理下にあるかどうかを確認できます。

***このコマンドの結果が `true` の場合、現在のディレクトリはGit管理下にあります。***

![Screenshot 2025-01-07 at 16.27.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/d95bc83e-b154-f51c-1abb-ada57fd21bf8.png)

:::note warn
**※結果がエラーや `false` の場合は、Git管理下にはありません。**
:::


### なぜこれが問題なのか？

ホームディレクトリには、認証情報や機密データが含まれる可能性があります。

**例:**
- `.ssh/`（SSH鍵）
- `.aws/`（AWSのクレデンシャル）
- `.bash_history`（コマンド履歴）

:::note alert
***これらを誤ってリモートリポジトリにプッシュしてしまうと、**情報漏洩やアカウントハッキング**などの重大なセキュリティリスクにつながります。***
:::

### ホームディレクトリ全体をGitリポジトリとして扱うべきではない理由

1. **管理が煩雑になる**  
   必要なファイルと不要なファイルの区別が難しくなります。

2. **セキュリティリスク**  
   認証情報や機密データが含まれる可能性が非常に高いです。

3. **パフォーマンス低下**  
   大量のファイルをGitが追跡することで、動作が遅くなります。

今回は、幸いにもリモートリポジトリにプッシュする予定がなかったため、問題は発生しませんでした。


:::note alert
***しかし、ホームディレクトリ内にすべての認証情報（APIキーやパスワードなど）が含まれていた場合、意図せず重大なセキュリティリスクを招く可能性がありました。***
:::

## さっそく、Git管理下から解除してみた
Git管理を解除する最も簡単な方法は、Gitリポジトリの管理情報が格納されている `.git` ディレクトリを削除することです。

ホームディレクトリに移動し、`.git` ディレクトリを削除します。

```bash
cd ~
rm -rf .git
```

**以下の手順でホームディレクトリをGit管理下から解除しました。**

:::note alert
**注意:**
***この操作を実行すると、Gitの履歴や追跡情報がすべて失われます。一度削除すると元に戻すことはできないため、削除前に重要な情報が含まれていないか確認してください。***
:::

削除後、`git rev-parse --is-inside-work-tree` コマンドを実行すると、エラーメッセージが表示されます。

![Screenshot 2025-01-07 at 16.42.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/4a796a88-5af8-3d6f-647f-11f5ffa16032.png)

このメッセージは、現在のディレクトリ（またはその親ディレクトリ）が Gitリポジトリではない ことを示しており、正常な動作です。

:::note info
**Git管理から正しく解除されたことが確認できました！**
:::

## まとめ
今回は、無意識のうちにやってしまいがちな「**ヒヤリハット体験**」を記事としてまとめてみました。

:::note warn
***私自身、今回はたまたまリモートリポジトリにプッシュすることがなかったため、セキュリティ事故にはつながりませんでしたが、改めて注意しようと感じました...。***
:::

***この記事の内容が、同じような状況に直面している方や、技術的な知識を深めたい方のお役に立てば幸いです！***

## おまけ：`pwd` コマンドを必ず確認してから作業しよう
今回の失敗は、カレントディレクトリを正しく把握せずに `git init` を実行してしまったことが原因でした。

作業を始める前に、`pwd` コマンドで現在のディレクトリを確認する習慣をつけることで、誤った場所での操作を防ぐことができます。

:::note alert
**同じミスを繰り返さないよう、慎重な確認を心がけていきたいと思います！**
:::

## 関連記事
GitやGitHubについては、自宅でいろいろな技術検証をしています。***興味のある方は、ぜひ以下の記事も参考にしてみてください！***

https://qiita.com/free-honda/items/874b1cd9d4a41e82c3ee

https://qiita.com/free-honda/items/f67236ea732eb7473c86
REST APIを学んだ話

## はじめに
今回はREST WebAPI サービス 設計を視聴したのでアウトプット記事を書いていきます。

https://www.udemy.com/course/rest-webapi-development/?couponCode=NEWYEARCAREERJP

## REST APIって何？
1語ずつ意味を確認します。
#### REST(Representational State Transfer)
分散型システムにおける設計ルールのこと
#### API(Application Programming Interface)
簡単にいうと、「境界線」「接点」
異なるソフトウェアやプログラムを連携するための機能

まとめると**REST API**は
分散型システムにおける設計ルールに則った、ソフトウェアやプログラムを連携するための機能のことです。
## REST原則
次にREST原則を確認しましょう。

1. クライアント/サーバー
1. 階層化システム
1. コードオンデマンド
1. 統一インターフェース
1. ステートレス
1. キャッシュ制御
1. REST API設計レベル

### クライアント/サーバー
- 要約
  - よくあるネットワークベースのアプリケーションの構成
- 特徴
  - "画面(UI)” と “データ”で関心事を分離
  - クライアント側がトリガーで、サーバー側は受け身

### 階層化システム
- 要約
  - 多層アーキテクチャ構成
- メリット
  - 各システム（コンポーネント）に役割を決めて独立させることで進化と再利用の促進ができる
- デメリット
  - ユーザーから見ると応答が悪く見える。キャッシュを利用すると改善が見られる

### コードオンデマンド
- 要約
  - クライアントコードをダウンロードして実行できることで
リリース後にクライアントコードを変更できる

- メリット
  - リリース済みのクライアントに対して機能追加が可能
  - サーバーの負荷が下がる（クライアントに処理が移譲できる）
- デメリット
  - 評価環境が複雑になる（多数のブラウザなど…）
### 統一インターフェース
#### リソースの識別
- 要約
リソース : 名前がつけられるもの。サーバー側に保持されるデータ(人、画像、4/1の鹿児島の天気など...)
URIを用いてサーバーに保存されたデータを識別する。URIに動作は含まない

#### 表現を用いたリソース操作
- 要約
断面情報（リソース）を利用してサーバー上のデータを操作する
クライアントからサーバーへ編集をリクエストする際、認証情報などの追加情報を付与する

#### 自己記述メッセージ
- 要約
  - メッセージ内容がヘッダーに記述されていればOK

自己記述 : データ自身がデータの中身を説明している
メッセージ : クライアントにレスポンスするデータ

#### アプリケーション状態エンジンとしてのハイパーメディア(HATEOAS)
HATEOAS : (Hypermedia as the Engine of Application State)
- 要約
  - レスポンスに現在の状態を踏まえて関連するハイパーリンクが含まれている
(検索結果ページにおける次のページなど)
- メリット
  - システムアーキテクチャ全体が簡素化されてわかりやすくなる
  - 提供するサービスに集中でき、独自の進化ができる
  - 異なるブラウザでも同じような画面を出力できる
- デメリット
  - 標準化によって効率化が犠牲になる
### ステートレス
- 要約
  - サーバーはリクエストだけでコンテキストを理解できる
  - サーバーに保存されたコンテキスト情報は使わない
（サーバーセッションは使わない）
  - 状態はクライアント上に保存される
（リクエストに全て含める）

→リクエストに状態情報を含めることでリクエストが独立する

- メリット
    - 単一のリクエスト以外見る必要がないので、監視が容易
    - 障害発生したリクエストだけ回復すれば良いので、障害復旧が容易
    - リクエスト全体でサーバーリソースを共有する必要がないのでスケールが容易
- デメリット
    - 単一リクエストで完結させるため、リクエストデータに重複がある
    - アプリを複数バージョン同時提供し、状態をクライアントに置いておくとアプリ制御が複雑になる
### キャッシュ制御
- 要約
クライアントはレスポンスをキャッシュできる

- メリット
    - レスポンスは明示的または暗黙的にキャッシュ可能
    - キャッシュを適切に行うことでクライアント/サーバー間の通信が排除されユーザー体験の向上、リソース効率の向上、拡張性の向上が見込める

- デメリット
  - 古いデータを戻してしまうとシステムに対する信頼性の低下につながる
### REST API設計レベル
- Level0
    - HTTPを使っている
    - REST APIの基本レベル
    - RPCレベルのXML通信
    (**Remote Procedure Call)**
- Level1
    - リソースの概念を導入
    - リソースごとにURLを分離
    - HTTPメソッドは活用できていないので、GET, POSTのみで通信
- Level2
    - HTTPの動詞を導入
    - Level1に加えてHTTPメソッドを活用
    - CRUDに対して適切なHTTPメソッドを使っている
- Level3
    - HATEOASの概念を導入
    - Level2に加えてレスポンスにリソース間の繋がりが含まれる
### よく使うHTTPメソッド
| HTTP method | 説明|
|-|-|
| GET  |  リソースの取得 |
| POST  |  リソースの新規登録 |
| PUT  |  既存リソースの更新 / リソースの新規登録 |
|  DELETE |  リソースの削除 |
## 感想
以前、自作アプリを作った時に当時のメンターの方から
「Devtoolのヘッダーにはたくさんの情報が載っているので調べてみてください。理解することで開発がスムーズになります」と言われました。

ただ、調べてうえで何を書いているのか、どんな時に使うのかが理解できていませんでした。

今回で基本は学べたと思います。以前のメンターさんが言っていたことが、少しばかり理解できた気がします。実際の開発で詰まった際に見直していきたいと考えています。
23種類のPDF/画像変換 & データ抽出 - 無料オンラインツール

全面的[なPDF変換ツール](https://www.compdf.com/pdf-tools?utm_source=qiita_20250107&utm_medium=convert)

## 1. データ抽出
•  全て抽出: PDFや画像から全てのテキスト、表、画像を抽出し、JSON形式で保存します。

•  テキストのみ抽出: PDFや画像からテキストのみを抽出し、TXTおよびJSON形式で保存します。

•  表のみ抽出: PDFや画像から表のみを抽出し、JSON、Excel、CSV形式で保存します。

•  画像のみ抽出: PDFからページや画像のみを抽出し、PNGおよびJPG形式で保存します。

## 2. PDF/画像からの変換
•  PDFからWordへ: PDFファイルをDOCおよびDOCX文書に変換します。PDFを編集可能なWordファイルに魔法のように変換します。

•  PDFからExcelへ: PDFを無料で簡単に編集可能なMicrosoft Excelファイルに変換します。メールは不要です。

•  PDFからPowerPointへ: 数秒でPDFをPowerPointに変換します。強力な変換ツールで文書作業を簡素化します。

•  PDFからHTMLへ: 数秒でPDFをHTMLファイルに無料で変換する最良の方法です。

•  PDFからPNGへ: PDFを無料でPNGに変換します。

•  PDFからJPGへ: 無料のオンラインPDFからJPGへの変換ツールです。

•  PDFからTXTへ: ComPDFKitオンラインツールを使用して、PDFファイルを無料で簡単にTXTファイルに変換します。

•  PDFからCSVへ: PDFファイルをアップロードするだけで、CSVファイルに変換します。

•  PDFからRTFへ: 高品質でPDFファイルをRTFファイルに変換します。

•  PDFからJSONへ: 非構造化PDFを構造化JSONに変換します。

•  画像からJSONへ: 画像をJSONに変換し、全ての要素を含みます。

## 3. PDFへの変換
•  WordからPDFへ: WordファイルをPDFに変換し、元のPDFファイルのレイアウトを完全に保持します。

•  ExcelからPDFへ: 数回のクリックで全てのEXCELシートを自動的にPDF表に抽出します。

•  HTMLからPDFへ: HTMLファイルをPDFファイルに変換するツールです。

•  PowerPointからPDFへ: PPTおよびPPTXスライドショーをPDFに変換し、簡単に閲覧できるようにします。

•  PNGからPDFへ: ComPDFKitオンラインツールは、画像ファイルをオンラインで変換します。

•  TXTからPDFへ: TXTファイルを簡単にPDFファイルに変換します。

•  CSVからPDFへ: 最良のオンラインCSVからPDFへの変換ツールです。

•  RTFからPDFへ: ComPDFKitオンラインツールを使用してRTFをPDFに変換します。

![API demo new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789769/c66fed55-6195-ff98-1c2d-19bd889c0d3d.png)
circuitjsの作法 その6

# 概要
circuitjsを調査してみた。
ネットリストの共有方法、その１。
codepen 埋込みテスト。


# codepen

<p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="PwYERPO" data-pen-title="circuitjs" data-user="ohisama" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/ohisama/pen/PwYERPO">
  circuitjs</a> by ohisama (<a href="https://codepen.io/ohisama">@ohisama</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://public.codepenassets.com/embed/index.js"></script>



<script async src="https://production-assets.codepen.io/assets/embed/ei.js"></script>


以上。
Vscode信者が初めてCursorを触ってみた

# Cursorを触ってみた
今まで目を背けてきたようなCursorを初めて使ってみようと思います！

# ダウンロード
https://www.cursor.com/

**「DOWNLOAD FOR WINDOWS」** を押したらダウンロードが始まりました。

# 初期設定
![first-setting](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/4c282e4f-f315-b845-c1c2-bfe2a4a17c93.png)

Vscodeっぽい操作ができるようです。Language for AIには言語を入力すればいいんでしょうか？
あとはあんまり意味が分かりません(知識不足)

![import-vscode-extentions](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/7d27ddd3-eee0-e7be-696b-523eee1c0d35.png)
Vscodeの拡張機能がそのまま使えます。便利！
**「Use Extentions」** を押すだけでVscodeで使っていた拡張機能がインストールされました。

![autocomplete](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/fa861bf3-2927-9d5f-2026-41bfa8b63161.png)
AIによるコード補完機能でしょうか。最近Vscodeの方にも追加されましたが
僕は1日で無料版の制限に引っかかってしまいます:(

# 使ってみた
日本語にも対応していてよかったです。
## コード補完機能が充実してる！
![autocomplete1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/3bd2b7fc-d4d2-0a98-004b-0f600ea54ca0.png)
![autocomplete2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/ef0b5c20-f12d-6d5c-ad76-e7a99c6786e4.png)
Github Copilotと同じようなことができます！

## Vscodeユーザーが使いやすい！
![cursol-looks-like-vscode](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/2c6c85d1-d9fb-ae4c-645c-5390932842cb.png)
Vscodeがベースなので、同じ感覚で使えます！

# 終わりに
やっぱりタスクバーのVscodeに手が行ってしまう...
これからはCursorも使おうと思います！
最後まで読んでいただきありがとうございます。
[Unity]Unity6でAndroidビルドができなかった→再インストール備忘録

## はじめに
 Unity6を使うぞと意気込んで環境構築をしている際に、ビルドできないエラーがあったので日記にはなりますが記録しておきます。

## 1.環境
・Unity6000.0.24f1
　（その他複数のバージョンをダウンロード済み）
・Windows11

## 2.エラー
 環境構築時によく見る、下記のエラーが発生しました。
　UnityException: JDK not found

## 3.対策
　Unity2020～2022までをいれていたので、そんなことないだろうとは思っていたのでUnity2022を開いて、PrefarenceからJDK,NDK,SDKなどのパスをコピーして当ててみました。
 　今度は 「Android SDKのバージョンが低い（意訳」と言われてしまいました。（スクショがなく、本文不明）

　であればAndroid SDKを入れなおせばいいでしょうとのことですが、ここで引っかかってしまいました。
 Unity6ではUnityHubではなく公式ホームページからダウンロードした場合は、Android Build Supportなどのモジュールの追加ができないようです。

 ## 4.結果
 　仕方がないのでUnity6を一度アンインストールして、UnityHubからインストール、Android Build Supportを入れなおしたら、ビルドができるようになりました！

　Android Studioまで使わないといけなくなると面倒なので、これで済んでよかったです...

 ## おわりに
 　やはり、困ったら適度な範囲で再インストールをかませば何とかなることがわかりました。
excelで「行の高さ」「列の幅」の設定


①編集したい箇所を選択する。
②「ホーム」ー＞「書式」ー＞「行の高さの自動調整」
　　　　　　　　　　　　ー＞「列の幅の自動調整」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3795764/6aaefebf-c352-665d-ac26-1ad56ed53a39.png)
Cursor 0.44の新機能「Review changes」

2024年12月17日にリリースされた Cursor 0.44 で、コード生成・編集をより安全に管理するための新機能「Review changes」が追加されました。

## **Review changesとは**

Cursorの新機能「Review changes」は、AIによるコード生成・編集をより安全に管理するための機能です。

設定画面の説明文には以下のように書かれています：

> List and group changes made in a composer session with an LLM for you to review
> 

（和訳：LLMとのComposerセッションで行われた変更を一覧表示し、レビューのためにグループ化します）

## **主な特徴**

- 複数ファイルの変更を一括確認
- Diffビューで変更箇所を明確に表示
- 2つの実行モードを用意

## **使い方**

### **設定方法**

1. Cursorの設定画面を開く
2. サイドバーから「Features」を選択
3. 「Review changes」セクションで希望のモードを選択

### **動作モード**

| モード | 説明 | 用途 |
| --- | --- | --- |
| Display button | 変更確認用のボタンを表示 | 慎重なレビューが必要な場合 |
| Auto-run | 変更を自動で表示 | 素早いレビューが必要な場合 |
| Disabled | 機能を無効化 | 従来通りの動作を希望する場合 |

### **Display buttonモードの流れ**

1. AIがコードを生成/編集
2. 「Review changes」ボタンが表示
3. クリックでDiff表示
4. 変更を確認して適用

### **Auto-runモードの流れ**

1. AIがコードを生成/編集
2. 自動でDiffを表示
3. すぐに変更を確認可能

## **Review changesのメリット**

Review changes機能を使用することで、以下のような利点が得られます：

- AIが生成・編集したコードの確認が容易になる
- 意図しない変更が含まれていないかの確認が可能
- GitHubのPRレビューのような使い心地で変更確認ができる
- 複数ファイルの同時編集も安全に管理
- 編集が意図通りでない場合、より賢いモデルで再試行が可能

特に大規模なコード生成や、複雑な変更を伴うリファクタリングで重宝する機能です。

## **まとめ**

Review changesは、AIによるコード生成・編集をより安全に、より確実に行うためのCursorの新機能です。手動確認と自動確認の2つのモードを使い分けることで、プロジェクトの規模や重要度に応じた柔軟な運用が可能です。コードレビューの workflow に近い使用感で、AIとの共同開発をよりスムーズにする機能といえます。

## **参考文献**

- [Cursor Changelog - Agent Improvements, Yolo Mode, Cursor Tab Update](https://www.cursor.com/changelog/agent-improvements-yolo-mode-cursor-tab-update)
簡単AWS　AZ

AWSのAZは、**Availability Zone アベイラビリティゾーン**の略で、AWSのデータセンターアーキテクチャの中核概念の1つです。簡単に言うと、AZはAWSリージョン内の独立したデータセンターの集合で、可用性と耐障害性が高いです。

### ■簡単な説明
多様性と隔離：各AZは物理的に独立していますが、同じ地理的リージョン内の異なる場所に配置されています（例えば、AWS東京リージョンは、ap-northeast-1a、ap-northeast-1bなど、複数のAZを含んでいます）。これらのAZ間には、高速で低遅延のネットワーク接続があります。
障害隔離：もし、1つのAZに地震や停電などの障害が発生した場合、他のAZは通常通り動作し、ビジネスの中断を避けることができます。
高可用性：複数のAZにアプリケーションを展開することで、1つのAZが障害を起こしても他のAZが自動的に受け持ち、サービスの信頼性を高めることができます。

### ■利用用途
分散型展開：複数のAZにアプリケーションをデプロイして、システムの信頼性を向上させます。
ディザスタリカバリー：データベースやファイルバックアップを別のAZに保存し、単一障害点（SPOF）を防ぎます。
低遅延通信：AZ間の高速ネットワークを利用して、迅速な応答を実現します。

### ■例
例えば、AWSの東京リージョン（ap-northeast-1）でアプリケーションを展開する場合、ap-northeast-1aとap-northeast-1bという2つのAZにサーバーを分散できます。どちらかのAZに問題が発生しても、もう1つのAZが稼働し続けるため、ユーザーへのアクセスが正常に保たれます。

AZはクラウドコンピューティングにおける高可用性を実現するための重要な基盤であり、複数のAZを活用してシステムの信頼性を高めることをお勧めします！
Pythonを最初からはじめる人のための記事 【Python、Vscodeをインストール、Print文を使ってみる】

# この記事の目的
この記事は、初めてPythonを触るとき、
プログラミングを始めるときに見ていただければ
少しは役に立つことができるかもしれません。

# 事前準備
:::note warn
この記事では**Windowsでの手順を解説しています。**
他のOSを使っている場合、手順が異なるかもしれません。
:::

## Python
### インストーラーをダウンロードする
https://www.python.org/downloads/

![download-python](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/5279c0d0-dc5b-6e55-0834-7fef6d7b30d7.png)
**「Download Python 3.13.1」** を押すと、インストーラーがダウンロードされます。
ダウンロードは大体数十秒で終わります。

### インストーラーを実行
![python-installer-icon](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/dddc7beb-9f74-3fbd-41b3-77cdc2acae8d.png)
インストーラーをダブルクリックします。

![python-installer-window](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/0484f651-33b8-0c78-4bbf-b7cfa46ceb6b.png)

:::note info
下の二つにチェックを入れることをおすすめします！
上は**複数のPythonバージョンを管理しやすくなります**
下は**Pythonのファイルパスを全て入力しなくても、
```python```と入力するだけで実行できるようになります**
:::

出来たら、```Install Now```を押します。

## Visual Studio Code (vscode)
https://code.visualstudio.com/

### インストーラーをダウンロードする
![download-vscode](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/260b7e4a-88ca-cf2f-0ea5-4d3d20c24e75.png)
**「Download for Windows」** をクリックし、インストーラーをダウンロードします。
ダウンロード後、インストーラーを実行してインストールを完了させてください。

# Vscodeを開く
![vscode-window1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/e8ac309e-c5e9-4091-3dae-5f952ca6b6b2.png)
Vscodeを開くと、このような画面になると思います。
左側の「フォルダを開く」を押し、任意のフォルダを選択してください。
![make-a-file](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/8d8ad6eb-ab25-76b4-f6f8-0e8b86b2d8ec.png)
フォルダを開くことが出来たらこのボタン(ファイルを作る)を押し、
ファイル名を```main.py```とし、そのファイルを開いてください。
ファイルが出来たら内容をこのようにしてください。
```python:main.py
print("Hello world!")
```
一旦、この文章の意味は考えず、
![run-python-file](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930283/bfb5ec05-79e3-c0ca-e3a2-cfce51832232.png)
右上にある、この三角を押してください。

すると、こう出力されるはずです。
```
Hello world!
```
おめでとうございます！Pythonで```Hello world!```と出力することができました！

:::note warn
<details><summary><b>エラーが出たとき</b></summary>

右下の **「インタープリンターの選択」** をクリックし、
```Python 3.XX.X XX-bit```を選択してください。

それでも直らない時は、コメントをもらえたら
出来る限りお助けします！
</details>
:::

# コード解説
さっきの```print("Hello world!")```について解説します。
### printって何？
Pythonで使う```print```という命令は、**ターミナルに文字を出力する命令**です。
### ("Hello world!")って何？
> ```print```という命令は、**ターミナルに文字を出力する命令**です。

このprintで何を出力するのかを決める物 (引数) です。
この例では、**Hello world!** と出力するようになっているので、
この部分を変えると何でも出力することができます。

# 終わりに
最後まで読んでいただきありがとうございます。
Pythonを始めたりする方に少しでも役に立つと嬉しいです。
人気だったら他のPythonの命令、強み、文法も書いてみようと思います。
いいね、コメントもよろしくお願いします！
Pythonでコマンドラインツールを作る際に使える自作記事集

本記事では、Python で開発する際に参考になる一連の自作記事をまとめています。
コマンドライン引数の処理から、ファイル操作、外部 API との連携、そしてテストまで、実用的なツール開発に必要な要素を網羅しています。

## コマンドライン引数の処理

https://qiita.com/pokapu/items/964dd6499504fdf000d0

この記事では、コマンドラインツールの基礎となる argparse ライブラリの使い方を解説しています：

- 基本的なコマンドライン引数の処理方法
- 引数のバリデーション
- ヘルプメッセージのカスタマイズ

## 外部リソースとの連携

https://qiita.com/pokapu/items/2ba221568a59ef6f72de

この記事では、REST API 等の HTTP API と連携する実装を解説しています：

- requests ライブラリの使用方法
- エラーハンドリング

https://qiita.com/pokapu/items/7a47c864b21b5ebd0f99

この記事では、JSON データ処理の実装方法を解説しています：

- JSON 形式の基本
- データの変換
- エラー処理

## ファイルシステム操作

https://qiita.com/pokapu/items/c9687dd5bdb90e884824

この記事では、ファイルやディレクトリを扱う場合に必要な知識を解説しています：

- 基本的な読み書き: `open()` 関数
- ファイルシステム操作: `os` モジュール
- モダンなパス操作: `pathlib` モジュール
- 高レベルなファイル操作: `shutil` モジュール

## モジュール化と設計

https://qiita.com/pokapu/items/dd9514b80da00a436a60

この記事では、 import 文の記述バリエーションについて解説しています

https://qiita.com/pokapu/items/2777a026640ea5e8467c

この記事では、C# に慣れた人に向けて、クラスの記述に関する違いや注意点を解説しています：

- コンストラクタ
- クラス変数や定数
- 説明コメント
- 継承

## テストと品質管理

https://qiita.com/pokapu/items/902dfb190264a7fc0e2a

この記事では、ユニットテストの基本的な記述方法を具体的なテストターゲットを使用して解説しています

https://qiita.com/pokapu/items/bb4d6bd7645ca4820235

この記事では、ユニットテストで Mock を使用する方法を具体的なテストターゲットを使用して解説しています

## さいごに

これらの記事を通じて、クラス記述時の基本的な構造から、外部サービスとの連携、そしてテストまで、実践的な開発に必要な要素を網羅しています。

トピックごとにまとめていますので、必要な部分から参照していただければと思います。
皆様のツール開発の一助となれば幸いです。