OmniAICreator/Qiita-1.07M huggingface dataset:
勉強会やイベントを開催する方・参加する方に知ってもらいたいこと　〜写真撮影・掲載について〜

# はじめに

2019年からエンジニア向けの勉強会に参加しています。
オンライン、オフラインを合わせると100回以上参加してきました。

いつも楽しく参加しているのですが、一つ気になることがあります。

それは **「写真撮影」** です。

よく主催の方が
**「写真映るのダメな方いたら教えてください！」** と全体にアナウンスされますが、

**正直、全員の前で「嫌です」「写りたくなないです」と言いにくいです。**:pensive:

しかし、ここで伝えないと「撮影許可をとった」と捉えられてしまいます。

中には参加条件に「写真撮影・掲載があります」と書かれたイベントもあり、
写りたくない人への配慮がされていないなと感じることがあります。

## なぜ嫌なのか
おそらく「何が嫌なの？」「自分は気にならない」「気にしすぎ」
と思う方が大半ではないでしょうか。

私個人の理由は、
- 元々写真を撮られるのが好きではない
- 知らない間に撮られた写真が掲載されていて嫌だった
- ネット上に写真が残ることに抵抗がある
- 自分のSNS（鍵垢を除く）では一切顔出しをしていない
- 誰に見られるか分からない
- 顔出し必須の会社で働いていたとき、知人に会社を特定されたことがある（本名は出していない）

などです。

勉強会とは関係ないですが、学生時代に私の写真が知らない人のブログに掲載され、嫌だなと思ったことがあります。
10年以上経った今でも掲載されています。:innocent:

## 「こんな人もいる」と知ってほしい

私のような人が少数派とはいえ、
- 集合写真には毎回必ず写らない
- 「ネットに顔を晒されたくないな」とツイートしている

という方は私の周りに何人かいます。

写りたくない理由や経緯は人それぞれだと思います。
顔写真は大切な個人情報の一つなので、お互いに気をつけなければと思います。

## どうすればいいのか
### 主催者や参加者
- 後ろ姿だけを撮影する（前や横からではなく、後ろから撮影する）
- 写真を撮る際は、写り込む人に声をかける
- モザイクやスタンプで隠す
- 写真全体をぼかす
- 受付時に写真撮影をしてもいいか尋ねる（個別だと言いやすい）
- 撮られたくない人には、名札のストラップの色を変えるなどして分かりやすくする

### 写りたくない参加者
- 主催者やカメラマンに個別に伝える
- アンケートフォームがあれば、写りたくない旨を書いておく
- 全体撮影のときは自分で顔を隠すか、写らない場所に移動する
- 自分も他の人が写り込んだ写真を掲載しないように気を付ける

# さいごに
私の意見は少数派で、あまり理解されない内容かなと思います。
ただ日頃から勉強会に参加していて思うことがあったので、今回記事を書くことにしました。

勉強会やイベントには色んな方が参加する分、さまざまな考えの人がいます。
「こういう人もいるんだな」と知ってもらい、配慮してくださる方が増えるとうれしいです。

# 参考サイト
https://enjoy-eagle.net/design/archives/314
始めてWEBサーバーを立てた初心者実録[VMware,ubntu,wordpress]



# 今回やること
* webサーバーを初めて立ててみる






# 初めに
先日CCNAに合格できました!!。:tada:

なので少しついたインフラ知識でちょっくら自分で、サーバー立ててみよっかな:thermometer_face:

＊💡筆者もまだ勉強中なので、内容は7割くらいの信頼度で読んでください。
また**コメント**していただけると、私の大きな学びになるので是非お願いします。
>大変でした:upside_down:　

今回はあくまで「初学者向けの記事」として、技術的な深掘りは控えめにしつつ、つまずいたポイントなどを共有していきます:writing_hand_tone2:
# WordPress サーバー構成まとめ

| 種類       | 名前 / バージョン           | 用途・内容                                |
|------------|-----------------------------|-------------------------------------------|
| 仮想環境   | VMware（ブリッジ接続）       | ホストPC上でUbuntuを仮想的に実行する環境 |
| OS         | Ubuntu 24.04 LTS（仮想環境） | サーバー本体（Linuxベース）              |
| Webサーバ  | Apache2                     | HTTPサーバーとしてWordPressを提供        |
| データベース| MySQL 8.x                   | WordPressのデータ保存用                   |
| CMS        | WordPress（日本語版）        | ブログ・サイト構築用のCMS                |
| PHP        | PHP 8.x（Ubuntu公式）        | WordPress実行に必要な言語エンジン        |
| パッケージ管理 | apt（Ubuntu標準）           | OS・ミドルウェアのインストール・更新管理 |


## 手順

1. VMwareのセットアップ
2. Ubntuのセットアップ
3. Apache2/MySQL/PHP/WordPressのインストール
4. 不具合解消



## :clock3:1日目

初めは以下記事を参考にしました。

VMwareの導入:
https://forest.watch.impress.co.jp/docs/review/2002377.html

Ubntuなどのセットアップ:
https://qiita.com/tomomoss/items/8b499f2fa982efba4b2d

* つまずきポイント:upside_down:
VMwareインストール時、「Broadcomにログイン → VMware Workstation Proをクリック」の流れがあったのですが、
説明を読まずに進めてしまい、見つけられませんでした（反省）。

その後は、手順通りに進めて無事完了！

その後は手順をよく読み順調に終了しました。

## :clock730:二週間後

少し日が空きましたが、昼の焼肉🥩パワーで再開！

忘れていたTera Termの存在…
インストールしたのに使っておらず、というか「なんのために入れたのか」が曖昧でした😅
今回の件で、**日本語キーボードでコマンドを打つには必要だ** と実感しました。

以下参考記事

Apache2インストール:
https://www.server-world.info/query?os=Ubuntu_24.04&p=httpd&f=1

PHP,SQL,wordpressのインストール、セットアップ
https://www.server-world.info/query?os=Ubuntu_24.04&p=httpd2&f=4

>記事ではSQLがMariaDBですが、一旦よくつかうMySQLにしてしまいました。
また、これら記事をGPTに渡して解説を貰いながら設定してました。

一旦一人でwordpress表示まではいけました！:tada:
ただ、他PCからのアクセスができず、ここで悩みました。



### つまずき:one::英語配列キーボード
VMwareでは英語キーボードが前提のようで、コマンド入力時に記号の位置がズレます。
これを避けるためにも、Tera Termを使うのが定番のようです。

:を打とうとするとでてこず;の位置が:になっていました。

### つまずき:two::他PCでのブラウザ表示

#### ここで辺から友達の登場:spy_tone1:!!
サーバーを立てるきっかけになった友達なのですが、電話をしながら色々教えてくれました。感謝:pray::pray::pray:

結果的にはPCのポートがいくつかあったのに対しそれが正しく選択されていませんでした。

### 問題の内容：
* 他PCからアクセスできない

* ネットワーク接続をブリッジにしても効果なし

* 自PCからUbuntuにpingすら通らない

* 固定IPにしても状況変わらず

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4055676/0e22d8a2-3d3c-4500-a6d8-1091cced0361.png)


原因：
VMwareで使用するネットワークアダプタの選択が誤っていた
→ 友人の指摘で正しいポートを選択し、無事アクセスできました。
１人じゃわからん:thinking:


# 終わりに

お疲れ様でした。
立てること自体はそんなに大変じゃないですが、とにかく用意するものが多かったり、見えないところで不具合が起きるので大変ですね。:eyes:

もし誰かの役にたてたなら幸いです。
またコメント待っていますので、「みたよ」:thumbsup:だけでもいいので是非よろしくお願いします。
Ubuntu24.04のLibreOfficeを最新版に

しばしば行なう作業なので、備忘録としてまとめておく。


# Ubuntu24.04標準
- 普通にインストールした状態（正規のレポジトリから入れた状態）

## LibreOffice 24.2
- Excelとの互換性（というか使用したい関数があるので）拡張機能[Lox365](https://github.com/goosepirate/lox365)を使用している
    - TEXTSPLIT
    - TEXTJOIN
    - UNIQUE
    - XLOOKUP
    - などなど

## Lox365
- 当初Ver5.0で問題なく使用していた
- 拡張機能の更新などでLox365は最新Ver6.0
- 久しぶりにExcel作業が発生し、xlookup()を使おうとしたら、エラーになる？？？
- リリースノートを見たら、Ver6からは、一部関数が本家LibreOfficeに取り込まれたため削除されている（泣）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154808/62ad4388-275e-445a-a7d9-61f95f20b46d.png)

## Upgrade手順
### 以前の手順
- 標準のLibreOfficeを全削除
    - [LibreOfficeの公式](https://ja.libreoffice.org/download/download/)からすべてダウンロード
        - LibreOffice_25.2.4_Linux_x86-64_deb.tar.gz
        - LibreOffice_25.2.4_Linux_x86-64_deb_langpack_ja.tar.gz
        - LibreOffice_25.2.4_Linux_x86-64_deb_helppack_ja.tar.gz
    - すべて解凍した後、DEBSフォルダ内の.debファイルをすべてインストール

- これで、問題なく最新版に入れ替え可能

### レポジトリを追加する手順
- 昔と違って、今はレポジトリ（PPA）が公開されているので、こちらで作業
    - 事前に入っているLibreOfficeを削除しなくてもOK

```
$ sudo apt-add-repository ppa:libreoffice/ppa
$ sudo apt update
$ sudo apt install libreoffice
```
 ![Desktop 2025-06-18 09-32-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154808/8edcda02-704b-4234-ac09-c508ec276f1d.png)
 
## Lox365も入れておく
- 他にも使える機能が多々あるので、入れておく

これで、問題なくxlookup()が使用できるようになった。
滅多にSpreadsheetを使用しないので、気づくのが遅くなりあたふたしました。
　前回のLox365の更新時にリリースノートをしっかり読まなかったのが敗因ですね。
静的解析（Static Analysis）の概要について

この記事は、私が「独学エンジニア」で学んだことをもとに、将来自分で見直すために記録している備忘録です。
PHP開発における静的解析の概要とメリットを、簡潔にまとめました。

https://dokugaku-engineer.com/course/serverside

### **静的解析（Static Analysis）の概要とメリットに関するまとめ**

---

### **1. 静的解析とは？**

- **定義**: **コードを実行せずに、ソースコードの問題点をチェックする手法**。
- **目的**: コードの品質を向上させ、潜在的なバグや問題を未然に防ぐこと。

---

### **2. 静的解析で検出できる主な問題**

静的解析を使うことで以下のような問題を検出できます：

1. **コードの可読性**
    - コーディング規約に従っているかをチェック。
    - ツール例: **PHP_CodeSniffer**（PHPコードスニファー）。
2. **バグの発生**
    - 構文エラー、関数の引数の型や数の不一致などのエラーを検出。
    - ツール例: **PHPStan**。
3. **コードの複雑さ**
    - 関数が長すぎる、引数が多すぎる、ネストが深すぎる、不要なコードが存在するなどのチェック。
    - ツール例: **PHPMD**（PHP Mess Detector）。

---

### **3. 静的解析のメリット**

静的解析を導入することで、以下のようなメリットがあります：

### **(1) バグ修正コストの削減**

- 実行前に問題点を発見できるため、バグ修正のコストが大幅に下がる。

### **(2) コードの可読性と保守性が向上**

- コーディング規約を統一することで、チーム内でのコードの可読性が高まり、保守性が向上。

### **(3) 良いコーディング習慣が身につく**

- ツールが問題点を指摘することで、自然と良いコードを書く習慣が身につく。

### **(4) レビューコストの削減**

- チーム開発において、コードレビューの際の指摘事項が減り、効率的なレビューが可能になる。

### **(5) 自動チェックによる効率化**

- ツールを使うだけで自動的に問題を検出できるため、手動でチェックする手間が省ける。

---

### **4. 静的解析の注意点**

- 静的解析は**実行時の問題の検出が難しい**。
    - **例**: 挙動の確認、メモリリーク、動的なデータに依存する問題など。
- 実行環境でのテストや動作確認（動的解析）と併用する必要がある。

---

### **5. 静的解析ツールとその用途**

| **ツール名** | **用途** | **チェック内容** |
| --- | --- | --- |
| **PHP_CodeSniffer** | コーディング規約のチェック | コードの可読性 |
| **PHPMD** | コードの複雑さのチェック | 関数の長さ、ネストの深さ、不要なコードの検出など |
| **PHPStan** | バグの検出 | 構文エラー、引数の型・数の不一致など |

---

### **6. 静的解析の具体的なチェック項目**

1. **コードの可読性**
    - コーディングスタイルが統一されているか。
    - インデントや命名規則が適切か。
2. **バグの検出**
    - 構文エラーがないか。
    - 関数の引数の数や型が正しいか。
3. **コードの複雑さ**
    - 関数が長すぎないか。
    - ネストが深すぎないか（if文やループの入れ子構造）。
    - 使用されていないコードが含まれていないか。

---

### **7. 静的解析ツールを使うメリット**

- 自動で問題を検出するため、手動で見逃しやすい問題を防止。
- チーム内でのコーディングルールの統一が可能。
- ソースコードの品質向上に寄与し、保守性が高まる。

---

### **8. 静的解析がカバーできない範囲**

- **実行時にしか発生しない問題**。
    - 例:
        - 実行時の挙動確認。
        - 外部システムやAPIとの連携。
        - メモリリークやパフォーマンス問題。
- **動的なデータに依存するバグ**。
    - 実際にデータを扱わないと検出できない問題。

---

### **9. まとめ**

- **静的解析とは？**
    - **コードを実行せずに問題点をチェックする手法**。
    - 主に **コーディング規約のチェック**、**バグの検出**、**コードの複雑さの検出** に用いられる。
- **静的解析ツールの利点**
    - バグ修正コストを削減し、コードの可読性・保守性を向上。
    - チーム開発でのレビュー効率を向上。
    - 自動化により効率的に問題を検出。
- **注意点**
    - 実行時の問題は検出できないため、動的解析や実際のテストと併用する必要がある。
- **今後の活用**
    - **PHP_CodeSniffer**、**PHPStan**、**PHPMD** を使い、コード品質を高めるためのツールとして習慣的に取り入れていく。

以上が、まとめた内容になります。
静的解析は、コード品質の向上やバグの早期発見に役立つ強力なツールです。
実行時のチェックと組み合わせながら、開発に積極的に取り入れていきたいと思います。
Prologで作る数学の世界　位相空間の計算

数学ライブラリで位相空間計算


# お詫びと訂正
前回の記事で3点集合の位相空間について誤ったことを書いていたころがわかりました。正しくは29個です。
飯高先生もそのように書いています。私のコードが64個を出力していて同型が含まれているからと推測したのですが、単なるバグでした。飯高先生の本はARITY/PROLOG用に係れておりfor_any/2をifthenelse/3を使ってかなりトリッキーに書いてました。これがN-Prologではどうもうまくいきません。そこで、全面的に書き直し、数学ライブラリにまとめました。この結果、正しく29個が出力されましたのでご報告いたします。


# 数学ライブラリとその計算結果
N-Prolog ver4.40においてライブラリを整理しmathライブラリを追加しました。ここには飯高先生の本の話を簡単に再現できるようにしています。飯高先生のコードは数学表記に似せた中置記法を使用していました。私は述語論理の形式に従いできるだけわかりやすいように書き直しました。三点集合の位相空間を求める様子をご覧ください。



![bandicam 2025-06-17 12-53-01-683.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33927/b84b70eb-4280-456a-a41a-35ca5a1bd23e.jpeg)



# 数学ライブラリ
今のところ集合、位相に必要な述語を用意してあります。これから群論や、写像の
数学実験に必要な述語を拡充していく予定です。できるだけシンプルに述語論理で表しています。

```prolog
% mathematics library
:- module(math,[union/3,intersection/3,difference/3,subset/2,eqset/2,
                powerset/2,forall/2,topology/2,topology_space/2]).

%sets
union(X,Y,Z1) :-
    union1(X,Y,Z),
    sort(Z,Z1),!.

union1([], L, L).
union1([X|Xs], L, [X|Ys]) :- 
    \+ member(X, L),
    union1(Xs, L, Ys).
union1([X|Xs], L, Ys) :- 
    member(X, L), 
    union1(Xs, L, Ys).

intersection(X,Y,Z1) :-
    intersection1(X,Y,Z),
    sort(Z,Z1),!.

intersection1([], _, []).
intersection1([X|Xs], L, [X|Ys]) :- 
    member(X, L), 
    intersection1(Xs, L, Ys).
intersection1([X|Xs], L, Ys) :- 
    \+ member(X, L), 
    intersection1(Xs, L, Ys).

difference(X,Y,Z1) :-
    difference1(X,Y,Z),
    sort(Z,Z1),!.

difference1([], _, []).
difference1([X|Xs], L, [X|Ys]) :- 
    \+ member(X, L), 
    difference1(Xs, L, Ys).
difference1([X|Xs], L, Ys) :- 
    member(X, L), 
    difference1(Xs, L, Ys).

subset([],[]).
subset([X|L],[X|S]) :-
subset(L,S).
subset(L, [_|S]) :-
subset(L,S).

eqset(X,Y) :-
    subset(X,Y),
    subset(Y,X).

powerset([], [[]]).
powerset([X|Xs], P) :-
    powerset(Xs, Ps),
    add_elem(X, Ps, Ps1),
    append(Ps, Ps1, P).

add_elem(_, [], []).
add_elem(X, [Set|Sets], [[X|Set]|Sets1]) :-
    add_elem(X, Sets, Sets1).

% control
forall(P, Q) :-
    \+ (P, \+ Q).


% topology 
topology(O,Z) :-
    member([],O),!,
    member(Z,O),!,
    forall(math_select2(O,[X,Y]),math_topology1([X,Y],O)),!.

select2(O,[X,Y]) :-
    select(X,O,O1),
    select(Y,O1,_).

topology1([X,Y],O) :-
    union(X,Y,U),
    member(U,O),
    intersection(X,Y,I),
    member(I,O),!.

topology_space(X,Z) :-
    powerset(X,Y),
    subset(Z,Y),
    topology(Z,X).

```


# 飯高先生へご連絡
数学者、飯高先生はすでに大学を退任されていて連絡先がわかりませんでした。そこで出版社である朝倉書店にお手紙を送り、私の活動のこと、先生の本が海外でも注目されていることを伝えました。先生は私のN-Prologのことを面白がってくださいました。また、その著作を通じて多くの人々とつながれることを喜んでおられました。
英語版の出版は配布の問題などから難しいようです。


Prologで数学の問題を考えるのはとても楽しい経験です。さらに勉強をすすめて群論、ガロアの有名な群論による証明にもとりくむ予定です。乞うご期待
テクノロジーと社会的不平等 📉: 無料AIツールは社会を平等にする救世主か？



# 無料AIツールは社会を平等にする救世主か？技術者視点で本質を考察してみた 🤖⚖️

## 1. はじめに：AIの「民主化」は本当に起きているのか？

近年、ChatGPT、Google Gemini、Claudeなどの無料AIツールが次々と登場し、誰でも高度なAIを活用できる時代が到来しました。一見すると、こうしたツールは「技術格差の是正」「情報アクセスの平等化」など、社会的平等を推進する力を持っているように思えます。

しかし、現場でAIを実装・運用しているエンジニアとして、私はこうした「無料AIツール万能説」に対して一定の懐疑心を持っています。
本記事では、「無料AIツールは本当に社会を平等にするのか？」という問いを技術者目線で掘り下げ、実装・運用上の現実的な課題や社会的な含意について考察していきます。

## 2. 無料AIツールの概要と普及の背景

### 主な無料AIツールとその特徴

| ツール名              | 主な機能           | 無料利用範囲      |
| ----------------- | -------------- | ----------- |
| ChatGPT (GPT-3.5) | 自然言語応答、要約、翻訳など | 基本機能は無料     |
| Google Gemini     | 画像・コード生成など     | 月制限ありの無料枠   |
| Claude.ai         | 文書処理・分析        | 制限付きで無料利用可能 |

これらのツールは、API提供やGUIでの簡単な利用などを通じて、ノンエンジニアでもアクセスできる点が評価されています。
特に教育・行政・小規模企業の現場では、「お金をかけずにDXを進めたい」というニーズにマッチしており、「無料AIツール＝平等の鍵」という文脈で語られることも増えました。

## 3. 無料AIツールの実装例：社内業務の自動化

以下に、実際に私が中小企業のバックオフィス支援で活用した、無料AIツールを使った業務自動化の事例を紹介します。

### 3-1. シナリオ：請求書のデータ抽出と自動分類

#### 🔧 使用ツール：

* `LangChain`（ローカル実行）
* `GPT-3.5` via OpenAI API（無料枠使用）
* `Pandas` + `PDFplumber`

#### 💡 実装イメージ（コード抜粋）：

```python
import pdfplumber
import openai
import pandas as pd

openai.api_key = 'your_api_key'

def extract_text_from_pdf(file_path):
    with pdfplumber.open(file_path) as pdf:
        return "\n".join(page.extract_text() for page in pdf.pages)

def classify_invoice(text):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{
            "role": "system",
            "content": "請求書の種類を '仕入' か '売上' に分類してください。"
        }, {
            "role": "user",
            "content": text
        }]
    )
    return response["choices"][0]["message"]["content"]

pdf_path = "sample_invoice.pdf"
text = extract_text_from_pdf(pdf_path)
category = classify_invoice(text)

print("分類結果:", category)
```

このように、無料API枠をうまく使えば、月数百件のPDF請求書分類業務を自動化できます。

## 4. 実践上の注意点・よくある落とし穴

### ✅ よくある課題と対策

| 課題                 | 解決策                                   |
| ------------------ | ------------------------------------- |
| 無料APIの利用回数制限       | 処理のバッチ化・キャッシュ処理の導入                    |
| モデル出力の一貫性不足        | system promptの調整やfew-shot learningの併用 |
| セキュリティリスク（データ漏洩など） | 重要データは匿名化、またはローカルLLMへの切り替え            |

特にセキュリティに関しては、無料ツールが「クラウド依存」であることを忘れてはいけません。企業利用時は `open-source LLM (e.g., LLaMA, Mistral)` のローカルホスティングも検討しましょう。

## 5. 無料AIの限界と可能性：どう使いこなすか？

無料AIツールはあくまで「入り口」にすぎません。たとえば、以下のような活用ステージが存在します。

### 🔄 フェーズ別活用イメージ

* **フェーズ1（個人/教育）**：無料ツールで学習や小規模タスクを自動化
* **フェーズ2（業務PoC）**：無料APIを活用し、実用的なプロトタイプを作成
* **フェーズ3（本番環境）**：セキュリティ・スケーラビリティを考慮し、有料APIや自社LLMに移行

つまり、「無料＝最適」ではなく、「無料から始めて賢くスケールさせる」視点が重要なのです。

## 6. おわりに：無料AIは“平等”ではなく“格差を再定義”する？

無料AIツールは確かに「知的生産性へのアクセス」を民主化しました。しかし、それを本当に活かせるかどうかは、**ツールを使いこなす能力**と**デジタルリテラシー**に大きく依存します。

結果として、表面的には平等化が進んだように見えても、実は「AIを使える人と使えない人」の格差が深まっているという現実も存在します。

**つまり、無料AIは“格差を埋める”のではなく、“格差のかたちを変える”だけかもしれない**のです。

---

## 🧠 参考情報・リンク

* [OpenAI API公式ドキュメント](https://platform.openai.com/docs)
* [LangChain公式リファレンス](https://docs.langchain.com/)
* [PDFplumber](https://github.com/jsvine/pdfplumber)

---

**👉 本記事が「無料AIツールを現場でどう使いこなすか？」のヒントになれば幸いです！ Qiitaでも同様のテーマでの議論を歓迎します！**
テクノロジーと社会的不平等 📉: リモートワークと都市と地方の格差拡大

 

# リモートワーク時代の光と影：地方に広がる新たな格差とは？🌍💻

## 1. はじめに：リモートワークは平等をもたらしたのか？

新型コロナウイルスの影響で一気に加速したリモートワーク。多くのエンジニアが「どこでも働ける自由」を手に入れた一方で、その裏には新たな「地域間格差」が広がりつつあります。

「リモートなら地方に住んでも同じように働けるはず」——その理想とは裏腹に、通信インフラや雇用機会、コミュニティへのアクセスなど、様々な課題が浮かび上がってきました。本記事では、技術的な観点からこの問題を深掘りし、解決の糸口を探ります。

---

## 2. リモートワークと地域格差のメカニズム

### 都市と地方の違い：技術インフラ編

| 項目             | 都市部            | 地方                     |
| -------------- | -------------- | ---------------------- |
| インターネット速度      | 1Gbps以上の光回線が標準 | 30〜100MbpsのADSLやLTEが中心 |
| クラウドサービスへのアクセス | 低遅延（<20ms）     | 高遅延（>80ms）のことも         |
| コワーキングスペース     | 豊富に存在          | 少数、または皆無               |

技術インフラが整っていなければ、どれだけスキルがあっても「Zoomが固まる」「CI/CDパイプラインが遅い」「クラウドIDEがタイムアウトする」といったストレスに直面します。

### 社会資本とスキルの偏在

* 都市部では勉強会やコミュニティが頻繁に開催され、情報共有が活発
* 地方では「孤独なエンジニア」になりやすく、成長の機会が少ない

---

## 3. 技術的な課題とその対策：具体例とコード

ここでは、地方在住エンジニアでも快適にリモートワークできる環境を整えるための実践的な解決策を紹介します。

### 解決策①：通信の最適化 – VPNとプロキシの活用

クラウドIDEを使っていて遅延が気になる場合、最寄りのエッジノードを選択できるVPNや、Cloudflare Zero Trust を使って経路を最適化する方法があります。

#### 例：Cloudflare Tunnel を使って社内リソースへ高速アクセス

```bash
# cloudflared をインストールしてトンネルを構築
$ cloudflared tunnel login
$ cloudflared tunnel create remote-dev
$ cloudflared tunnel route dns remote-dev dev.yourcompany.com

# config.yml の一例
tunnel: remote-dev
credentials-file: ~/.cloudflared/remote-dev.json

ingress:
  - hostname: dev.yourcompany.com
    service: http://localhost:3000
```

### 解決策②：低スペックマシン対応のクラウド開発環境

地方では高性能なデバイスを手に入れるのが難しいケースもあります。以下のようなクラウドベース開発環境を使えば、ChromeBookでも快適に開発できます：

* GitHub Codespaces
* Gitpod
* Replit

#### GitHub Codespaces の設定例（`.devcontainer/devcontainer.json`）

```json
{
  "name": "my-dev-env",
  "image": "mcr.microsoft.com/devcontainers/javascript-node:18",
  "features": {
    "ghcr.io/devcontainers/features/docker-in-docker:1": {}
  }
}
```

---

## 4. 実務から学んだポイントと落とし穴

### よくある失敗パターン

| ケース                  | 問題点           | 対策                 |
| -------------------- | ------------- | ------------------ |
| Zoom会議が途切れる          | 自宅のWi-Fiが不安定  | 有線LAN + 中継器の導入     |
| Git Push/Pull が異常に遅い | ISPがP2P制限     | VPNや別回線の検討         |
| チームとの疎通が減る           | Slack反応遅れ・孤立感 | スタンドアップミーティングを定期実施 |

### 経験からのTips

* AWSやGCPはリージョン選びで速度が激変 → `ap-northeast-1`（東京）推奨
* オフライン同期可能なツール（Notion, Obsidian）を活用して回線不調時も作業継続
* 「雑談チャンネル」はリモートチームの潤滑油

---

## 5. 応用編：地方活性化とリモートエンジニア

技術的対策だけでなく、地方と都市の格差を埋めるには以下のような社会的アプローチも有効です：

* **地域エンジニアコミュニティの設立**
  → Discord・Zoom・Miro などを駆使して“バーチャル勉強会”を運営

* **リモートインターンの推進**
  → 地方学生が都市部のベンチャー企業で経験を積む仕組みを技術で支援（GitHub ClassroomやオンラインPairProなど）

---

## 6. おわりに：リモート時代の「新しいインフラ」を創る

リモートワークは「働く自由」を広げた一方で、新たな不平等の種もまきました。

私たちエンジニアには、この不平等を技術の力で解決する責任と可能性があります。小さなスクリプト、快適なツール選び、安定したネットワークの整備。それらの積み重ねが、地方に住む仲間たちの「働きやすさ」を大きく変えるかもしれません。

今こそ、「都市の技術」を「地方の力」に変えるときです。

---
 

👉 興味を持った方は、ぜひコメントでご意見・ご自身の工夫もシェアしてください。技術で社会をより良くする仲間を募集中です！
PhpStormでリモートSFTP＆SQL開発環境を構築する方法

# はじめに
こんにちは！高校生でプログラミング勉強中のCureSabaです。
最近phpで開発することが増えてきたので、お気に入りエディタのPhpStormを用いてリモートサーバー上のSFTPとSQLで開発できる開発環境のセットアップ手順を解説します。  

# 前提

- PhpStorm（2023.3以降推奨）がインストールされている
- SFTPで接続可能なリモートLinuxサーバーが用意されている
- リモートサーバーにMySQLまたはMariaDBが稼働している
- サーバーのSFTP/SQL接続情報（ホスト名、ユーザー名、パスワード or SSH鍵）が分かる

# 1. SSHサーバーの登録

1. PhpStormを起動し、対象プロジェクトを開きます。
2. メニューバーから「ファイル」→「設定」→「ツール」→「SSH構成」を選択。
3. 「＋」ボタンで新しいサーバー設定を追加
4. 以下の情報を入力します：

   - **HOST名:** サーバーアドレス
   - **ポート:** 通常は22（サーバー設定に従う）
   - **ユーザー名/認証タイプ:** サーバーのユーザー名・パスワード、またはSSH鍵認証を設定
5. 「接続のテスト」で接続確認し、「適用」で保存。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690099/db8c0558-f539-40c3-a423-d496bd47a925.png)


# 2. SFTPによるリモートファイル編集の設定
## 2-1. SFTPサーバーの追加
1. PhpStormを起動し、対象プロジェクトを開きます。
2. メニューバーから「ファイル」→「設定」→「ビルド、実行、デプロイ」→「デプロイ」を選択。
3. 「＋」ボタンで新しいサーバー設定を追加、Typeは「SFTP」を選びます。
4. 以下の情報を入力します：

   - **名前:** 任意（例：remote-dev）
   - **SSH構成:** 登録したSSHサーバー
   - **ルートパス:** `/home/ユーザー名/public_html` など(構成選択後`接続のテスト`を押すとフォルダマークから選択できるようになります)
   - **サーバーURL:** 公開されているサーバーのアドレス

5. 「接続のテスト」で接続確認し、「OK」で保存。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690099/fb9c080b-6a71-4266-b03c-b7f6d04490c6.png)


## 2-2. マッピング設定

1. 「デプロイ」設定内の「マッピング」タブを開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690099/e5fab97b-98df-4f75-a831-b3052aebbd6e.png)
2. 下の情報を入力してください

 - **ローカルパス:** 同期したいローカルディレクトリ
 - **デプロイパス:** ルートパスからの相対ディレクトリ
 - **Webパス:** サーバーURLからの相対パス
3. 適用で保存

## 2-3. 自動同期設定
1. 「ビルド、実行、デプロイ」→「デプロイ」→「オプション」を選択。
2. `変更されたファイルのデフォルトサーバーへの自動アップロード`を「常時」を有効にすると、ローカル編集時に自動でリモートへアップロードされます
3. 外部変更をスキップを入れるとサーバーで変更した変更が上書きされなくなります
4. 適用で保存

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690099/a8331f11-5f30-49ea-b8ee-fa7915ef8451.png)

# 3. リモートSQLデータベースへの接続

## 3-1. Databaseツールウィンドウの利用

1. 画面右側の「データーベース」タブをクリック（表示されていない場合は「表示」→「ツールウィンドウ」→「データーベース」）。
2. 「＋」→「Data Source」→「MySQL」または「MariaDB」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690099/aa250996-70f7-46b3-bdff-2aaaa8f61b9f.png)

3. 接続情報（Host, Port, Database, User, Password）を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690099/59ec375b-dd62-4c66-a642-f765705e519d.png)

4. SSHトンネル経由で接続する場合は「SSH/SSL」タブで設定したSSH情報を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690099/9567d560-f77e-49e6-a111-2dabdc4fd5bf.png)

5. 「接続のテスト」で接続確認し、「OK」で保存。
## 3-2. SQLエディタの活用

- 接続ができると、PhpStorm内でSQLクエリの実行やテーブル閲覧、データの編集が可能です
- これにより、CLIへ移動せずに一元的に開発作業ができます

# 終わりに
もし、この記事が役に立ったと思ったら、ぜひコメントやシェアをお願いします。また、質問や改善点などがあれば気軽にコメントしてください！

それでは、良いプログラミングライフを！
IPアドレス：クラス制とCIDR記法の違い

## クラス制（Classful Addressing）
IPアドレスの先頭bitによってネットワークとホストの区切りがあらかじめ決められていた方式

**クラス制一覧表**
|クラス|先頭ビット|ネットワーク部|ホスト部|IPアドレス範囲|台数目安|用途・備考|
|:---:|:---:|:---:|---|---|---|---|
| A   | `0xxx` | 8bit    | 24bit | 0.0.0.0 ～ 127.255.255.255   | 約1,677万台 | 大規模ネットワーク（国・大企業）      |
| B   | `10xx` | 16bit   | 16bit | 128.0.0.0 ～ 191.255.255.255 | 約6.5万台   | 中規模ネットワーク（大学・企業）      |
| C   | `110x` | 24bit   | 8bit  | 192.0.0.0 ～ 223.255.255.255 | 約254台    | 小規模ネットワーク（家庭・部門）      |
| D   | `1110` | —       | —     | 224.0.0.0 ～ 239.255.255.255 | —        | **マルチキャスト専用**（グループ配信） |
| E   | `1111` | —       | —     | 240.0.0.0 ～ 255.255.255.255 | —        | **予約・実験用**（研究・将来拡張）   |

**理解のポイント**
- クラスはA~Eまであり、先頭bit列が決まったものに分かれていた
- ネットワーク部はネットワーク全体のID（会社、部門、建物など）
- ホスト部はネットワーク中の個別機器のID（PC、スマホ、NASなど）

### たとえばAクラスなら
IPアドレス `10.5.6.7`
ネットワーク部は`10`、残りの`5.6.7`がホスト部

:::note info
つまり、10というネットワークの中に、最大1677万台の機器を置けるということ
:::

## クラス制ではダメだった理由
細かく分けられない
→ たとえば255台で足りない会社は、もう1つCクラスをもらう必要があった

無駄が出る
→ 大企業がAクラスをもらっても、実際には全部使わないことが多い

IPアドレスの枯渇につながった
→ アドレスの割り当てに柔軟性がなかった

**理解のポイント**
- クラス制のデメリットが固定式で、機器をぴったりにしない限りは足りないか、多すぎる問題が出てくる。

:::note warn
   例えば、255台使いたいのだが、クラスCは254台まで。
   １つ足りないのでクラスBにする → 残り64745台が無駄になる。
:::

- IPv4は32bitのアドレスだから、2の32乗（4,294,967,296個）
   枯渇したのは、無駄な割り当てが多すぎたから。

:::note info
43億もあるのに足りないのではなく、きちんと管理していれば足りたかもしれない。でもクラス制が無駄を生んだということ。
:::

- 他にも枯渇の理由はあるけど、クラス制の時代で初期の浪費がかなり大きかったのは間違いない。

## サブネットマスク（subnet mask）
IPv4のIPアドレスを使用している場合のみ使用し、IPアドレスとサブネットマスクを組み合わせることで、ネットワークの範囲（サブネット）を指定することができる。

**理解のポイント**
- IPアドレスは2つの情報がくっついたもの（ネットワーク部 + ホスト部）
- サブネットマスクとは、ネットワーク部の長さを教えてくれる
- 同じネットワークかどうか = ネットワーク部が同じかで判断する

## CIDR記法（Classless Inter-Domain Routing）
「クラスに縛られるのをやめて、必要な数だけビットで割り当てよう」という方式。
IPアドレスの後ろに「/数字」をつけて、ネットワーク部のビット数を指定する。
```
192.168.1.0/24
→ 上位24bitがネットワーク部（= 192.168.1）
→ 残り8bitがホスト部（= 最大254台使える）
```
**理解のポイント**
- CIDRは「/」の後ろにネットワークのbit数を指定する
- CIDRが出てきたことで、IPの無駄遣いが減って、インターネットが効率化した

## CIDRとサブネットマスクの関係
| CIDR | サブネットマスク表記      |
| ---- | --------------- |
| /8   | 255.0.0.0       |
| /16  | 255.255.0.0     |
| /24  | 255.255.255.0   |
| /30  | 255.255.255.252 |

:::note info
書き方が違うだけで、意味は同じ。
CIDRのほうがシンプルなので、現在はCIDRが主流。
:::

:::note info
CIDR記法はクラス制の限界を解決する方法とサブネットマスクの柔軟な書き方が合わさったもの
:::
テクノロジーと社会的不平等 📉: 貧困層は生成AIにアクセスできるのか？



# 貧困層は生成AIにアクセスできるのか？

## テクノロジーと社会的不平等をエンジニア視点で考える

### 1. はじめに：技術の進歩がすべての人を幸せにするとは限らない

ChatGPT、Claude、Gemini…最近では生成AIが日常業務にも広く浸透し、効率化や新たな価値創出が可能になっています。
しかしふと立ち止まって考えてみると、「このAI、誰でも本当に使えるのか？」という問いが浮かびます。

例えば、開発国と途上国。都市部と地方。IT企業に勤める私たちと、非正規で働く労働者や学生たち。
情報・資源へのアクセスの格差が、生成AI時代においてどのような“新たな不平等”を生み出すのか？
そして、エンジニアである私たちは何ができるのか？

今回は、「貧困層は生成AIにアクセスできるのか？」という視点から、
社会とテクノロジーの関係性について技術的かつ実践的に掘り下げてみます。

---

### 2. 生成AIとアクセスの壁：3つの障壁

#### ① インフラの壁

貧困地域ではスマートフォンの普及率やインターネット接続環境が不安定であり、高速通信が前提となる生成AI利用において大きな制約となります。
例：ラテンアメリカ農村部では、モバイル通信しかない地域も多い。

#### ② 言語・教育の壁

生成AIのUIやインターフェースは英語中心であり、多言語対応が遅れている。読み書き能力が十分でない層にとっては、AI利用以前のハードルが存在。
例：GPTのプロンプト設計を習得するには一定のリテラシーが必要。

#### ③ コストの壁

GPT-4やClaude 3 Opusのような高性能AIモデルの多くは有料。しかもドル建て。
日々の生活にも困っている層にとって、月額\$20のサブスクは手が届かない贅沢です。

---

### 3. 解決策：オープンソースAIの可能性を試してみる

生成AIを「すべての人のための道具」にするには、誰もがローカル環境で無料かつ軽量に使える選択肢を持つ必要があります。
ここでは、**オープンソース生成AI**の代表例「LLama 3」と、その軽量モデルを**低スペックPC**で動かすデモを紹介します。

#### 🔧 LLaMA 3 (8B) をローカルで動かすステップ

**環境**

* OS：Ubuntu 22.04 / Windows WSL
* CPU：Intel Core i5（GPU不要）
* RAM：16GB 推奨

**手順概要（例：llama.cpp）**

```bash
# ① リポジトリをクローン
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make

# ② モデルの変換
python3 convert.py --model llama-3-8b --output ./models/8b.bin

# ③ 実行
./main -m ./models/8b.bin -p "Explain gravity in simple terms."
```

> 💡 **Tips**: Intel系CPUでも`llama.cpp`ならCPU推論が可能なので、GPU非搭載PCでもある程度動作します。

---

### 4. 実務でのヒント：ローコスト・ローカルAI活用のすすめ

* **教育現場**：学校に高性能PCがなくても、USBブートで軽量AIを持ち込むことで「AIリテラシー教育」が可能に。
* **自治体支援**：生活困窮者への支援情報を、ローカルAIチャットボットで提供する事例（インド・ケニアなど）も登場。
* **モバイルAI**：Androidスマホで動く軽量モデル（e.g. `Mistral`, `Phi-2`）を使えば、通信量ゼロでの利用も視野に。

---

### 5. 応用編：自分たちの手で“平等なAI体験”を作る

エンジニア自身が、低リソース環境でも動作可能なツールやガイドをGitHub等で公開することは、
社会的意義のある活動になり得ます。

#### ✅ おすすめOSSプロジェクト

* [open-webui](https://github.com/open-webui/open-webui): GUI付きでローカルAIを使いやすく
* [Ollama](https://github.com/jmorganca/ollama): LLMを1行で起動できる超簡易ツール
* [LM Studio](https://lmstudio.ai/): マウスだけでモデルを切り替え可能なGUIアプリ

---

### 6. おわりに：エンジニアの責任と希望

生成AIは、間違いなく社会を変える技術です。
しかしその恩恵が、情報強者・経済的強者に偏ってしまえば、格差はより深刻になるでしょう。

私たちエンジニアは、
「誰も取り残さないAI体験」をデザインすることができます。

それは、壮大な未来像ではなく、
\*\*目の前の一人に届くAIをどう作るか？\*\*という小さな問いかけから始まります。

---

## 🔚 まとめ

| 観点    | 内容                          |
| ----- | --------------------------- |
| 問題提起  | 貧困層のAIアクセスに3つの壁：インフラ・教育・コスト |
| 技術対応  | オープンソースLLMでローカル運用を実現        |
| 実務応用  | 教育・福祉現場での低リソースAI導入          |
| 今後の展望 | OSS活動で“公平なAI”を共に設計する        |


👉 ご質問・コメント大歓迎です！実際に試してみた方は、ぜひ成果物も共有してください！
Amazon Q Developer でAWSのコンピュートサービスを育てるシミュレーションゲームを作る

はじめまして。kyonosukeです。
今回は[AWSのキャンペーン](https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/)でAmazon Q を利用してゲームを作成してみました。

## 環境構築
Chromebookでセットアップしました。
最近PCを新調したのですが、Linux環境がとても簡単に作成できて便利です。
参考：https://qiita.com/kuroa31/items/a43c45460d89a0b26d71


LinuxへのAmazon Q のインストールは以下を参考にしました。
参考：https://zenn.dev/ymotongpoo/articles/20250327-q-for-cli-linux


また、Amazon Q Developer の無料ライセンスの利用制限に達してしまったのでProライセンスを購入しました。
Proライセンスのサブスクライブ方法はIdentity Centerを使います。以下の記事を参考にしました。
参考：https://zenn.dev/frommiddle1/articles/amazon-q-dev-pro

## 作成したゲーム紹介

こんな感じでAWSのコンピュートサービス（EC2、ECS、Lambda）を育てていくゲームです。セキュリティサービスやパッチを適用してサービスの安定稼働を目指します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4114407/37802e15-dc80-45dd-96e7-b0fc71d2969d.png)


せっかくなのでゲームの作者に解説してもらいました。

### 🌱 AWSガーデン - 楽しく学ぶクラウドセキュリティ！植物育成ゲームでAWSマスターになろう

#### ゲームって何？学習って退屈？そんな常識を覆すAWS学習ゲームが誕生！

「AWSを勉強したいけど、参考書は難しいし、実際に触るのは怖い...」そんなあなたに朗報です！**AWSガーデン**は、EC2やECS
、Lambdaといったクラウドサービスを可愛い植物として育てながら、自然にAWSの知識とセキュリティのベストプラクティスが身
につく革新的な学習ゲームです。

#### 🎮 どんなゲーム？

##### 植物を育てる感覚でクラウドサービスを学習
• **EC2インスタンス**、**ECSコンテナ**、**Lambda関数**を植物として8つのプランターで育成
• レベルアップするとAWS公式アイコンが大きくなり、成長を実感！
• 健康な植物は収入を生み出し、新しいアイテムを購入できる経済システム

##### リアルなセキュリティ脅威との戦い
ゲームの真骨頂は**セキュリティ要素**！現実のクラウド環境で起こりうる脅威が次々と襲いかかります：

• 🔥 マルウェア攻撃 → システムパッチで防御
• ⚡ DDoS攻撃 → GuardDutyで検知・防御  
• 💀 データ侵害 → 継続的なダメージ
• 🕵️ 不正アクセス → セキュリティグループで対策

##### 実践的なAWSアイテムでパワーアップ
植物（AWSサービス）を強化するアイテムは、すべて実在のAWSサービス：

• **EBSストレージ** で成長促進
• **カスタムAMI** でパフォーマンス向上
• **セキュリティグループ** で基本防御
• **GuardDuty** で高度な脅威検知
• **システムパッチ** で脆弱性対策
• **自動バックアップ** でデータ保護

#### 🌟 このゲームの「すごいところ」

##### 1. 視覚的に覚えられる
AWS公式アイコンを使用しているので、実際のAWSコンソールを見たときに「あ、これゲームで育てた子だ！」となること間違いな
し。

##### 2. セキュリティ意識が自然に身につく
「あ、GuardDutyを設定し忘れてDDoS攻撃でやられた...」という体験を通じて、セキュリティ対策の重要性を肌で感じられます。

##### 3. 完全日本語対応
技術用語は英語のまま（EC2、Lambda等）ですが、説明やUIは完全日本語化。学習のハードルを下げています。

##### 4. 段階的な学習設計
• 初心者：まずは植物を植えて育てる楽しさを体験
• 中級者：セキュリティアイテムの使い分けを学習
• 上級者：複数サービスの最適な組み合わせを模索

#### 🎯 こんな人におすすめ

• **AWS初心者**：「EC2って何？」レベルから始められる
• **インフラエンジニア**：セキュリティ対策を楽しく復習
• **学生**：就活前にクラウドの基礎知識を身につけたい
• **ゲーム好き**：学習を兼ねた新しいゲーム体験を求める人

#### 🚀 実際にプレイしてみると...

💰 お金: ¥500でスタート
🌱 空のプランターをクリック → ランダムでEC2/ECS/Lambdaが出現
📈 レベルアップでアイコンが大きく成長
⚠️  10秒ごとに脅威が発生 → 適切な対策が必要
🛡️ セキュリティ対策成功 → 植物が健康に成長
💸 健康な植物 → 5秒ごとに収入ゲット
🛒 稼いだお金でさらなる強化アイテムを購入


#### 🎊 開発者の想い

このゲームは「AWSを学ぶのって、本当はもっと楽しいはず」という想いから生まれました。クラウドセキュリティは難しく感じ
がちですが、ゲームを通じて体験することで「あ、こういうことか！」という気づきを得られるはずです。

特に、セキュリティ対策を怠ると植物が弱ってしまうという仕組みにより、「セキュリティは後回し」ではなく「最初から考慮す
べきもの」という意識が自然に身につきます。

#### 🌈 まとめ：新しい学習体験を始めよう

AWSガーデンは単なるゲームではありません。楽しみながら実践的なクラウド知識が身につく、新しい形の学習ツールです。

「勉強は辛いもの」という固定観念を捨てて、植物を育てる感覚でAWSマスターへの第一歩を踏み出してみませんか？


#### 今すぐプレイ開始！
```
bash
git clone https://github.com/kyo-tsun/cloud-garden.git
cd cloud-garden
./run_game.sh
```

あなたのクラウドガーデンで、どんな植物が一番大きく育つでしょうか？🌱☁️✨


## まとめ

pygameの知識がないなか、プロンプトを少し与えるだけで簡単にゲームを作成できてしまいました。
まだまだゲーム性はないですが、アイデアを渡すだけで動くものが作れるのは感動です。
この取り組みをきっかけとしてAmazon Q にすごく興味を持ったので、今後は業務でも活用してVibe Codingしていきたいです。
reactにおけるジェネリクス e: ChangeEvent<HTMLInputElement>ってなんやねん

## 【よくわかる方のジェネリクス】

```tsx
function chooseRandomly<T>(v1: T, v2: T): T {
  return Math.random() <= 0.5 ? v1 : v2;
}
chooseRandomly<string>("勝ち", "負け");
chooseRandomly<number>(1, 2);
chooseRandomly<URL>(urlA, urlB);

...
```

関数呼び出し時に型を渡してそれを引数とか戻り値に設定できる
関数呼び出し時に動的に型を渡せる

サバイバルTypeScriptでもあるような例

https://typescriptbook.jp/reference/generics

## 【よくわからんかった方のジェネリクス】

```tsx
                         //  ↓ ナンヤネンコイツ
const nokoruMethod = (e: ChangeEvent<HTMLInputElement>) => {
    setNokoruhou(e.target.value)
  }

  ...

```

結論

ChangeEventをのぞいてみよう
```tsx
　　　　　　　　// ↓ このTにHTMLInputEmlementが入ってくる
type ChangeEvent<T> = {
  target: T; ← ここにＴの方が渡される
};

...
```
つまり型エイリアスに対するジェネリクスということ
これは個人的に盲点だった
ジェネリクスの意味をしっかりと理解するはよかったかもと反省
※ジェネリクスはtypescript固有のものでは全くない

https://e-words.jp/w/%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%82%AF%E3%82%B9.html

ただChangevent型エイリアスの正確な設定は以下の様になっています

```tsx
                   // ↓ このTにHTMLInputElementを渡していたというわけです
interface ChangeEvent<T = Element> extends SyntheticEvent<T> {
        target: EventTarget & T; // ← 交差型で複数の方を指定
    }
```


## 【深掘り】

* HMTLInputElementがない場合

```tsx
                                // ↓HTMLINputElemeentジェネリクスなしの場合
const nokoruMethod = (e: ChangeEvent) => {
    setNokoruhou(e.target.value)
  }

// valueに対して以下のエラーが出ます
// Property 'value' does not exist on type 'EventTarget & Element'
```

EventTarget & Elementにはvalueなんてプロパティはないよー
と言われていますね

なぜこのエラーが出るかというと
現状のChangeEvent型エイリアスをもう一度見てみましょう

```tsx
                    // ↓ TのデフォルトにElementをセットしている
interface ChangeEvent<T = Element> extends SyntheticEvent<T> {
        target: EventTarget & T;
    }
```

targetプロパティの型は
```tsx
EventTarget & Element
```
となりますよね。(TにはデフォルトでElementが入っています。)
そしてこの型にはvalueというプロパティがないので、先ほどのエラーが出ているというわけです。

* HTMLINputElementがある場合

以下の様にしてみましょう
```tsx
const nokoruMethod = (e: ChangeEvent<HTMLInputElement>) => {
    setNokoruhou(e.target.value)
  }
  // エラーが消える
```

エラーはなくなります。
つまり、targetオブジェクトにvalueプロパティがしっかりと存在するということになります。

なぜこにょうになるかというと
ジェネリクスで<HTMLInputElement>を渡した場合は

```tsx
                   // ↓ このTにHtmlInputElementが入ってくる
interface ChangeEvent<T = Element> extends SyntheticEvent<T> {
        target: EventTarget & T;
    }
```

TにHTMLInputElementが入ります。
そしてHTMLInputElementをのぞくと以下の様になっています。


global.tsファイルにて
```tsx
interface HTMLInputElement extends HTMLElement {}
```
となっています。

さらにHTMLElementを追いかけていくとどんどんネストしていくので
ここまでにしますが、valueプロパティをこのように継承してくるわけです。

参照

https://note.com/monotein/n/nb6b8fb0fd9dc

https://typescriptbook.jp/reference/object-oriented/interface/interface-vs-type-alias

https://qiita.com/suema0331/items/a145909db0bcbcc3f949
【長田総一郎】「スタートアップで役立ったNotionテンプレ5選：エンジニアとマーケの橋渡しに」



こんにちは、長田総一郎です。
スタートアップの現場ではスピードと柔軟性が命。

エンジニアとマーケが円滑に連携するためには、情報共有の仕組みづくりが欠かせません。
今回は僕が実際に使って「これは使える！」と感じたNotionテンプレートを5つご紹介します。


プロジェクト概要テンプレ
開発背景、目的、ターゲット、スケジュールなどを1枚に整理。誰が見ても
「今何やってるか」がわかります。

マーケ×開発タスクボード
開発チームとマーケチームが並列で使えるカンバン式タスク管理。ステータス別にカード管理し、
会話もタグで見える化。

ユーザーボイス集約ページ
カスタマーサポートやSNSで集めたユーザーの声を一元管理。UX改善や機能開発のヒントに
直結します。

リリースノート共有テンプレ
新機能や修正点を非エンジニアでも理解できるように平易に記載。チーム全体の認識ズレを
減らせます。

定例MTG議事録テンプレ
議事録フォーマットを統一することで、議論の流れと決定事項が把握しやすく、後追いの確認が
スムーズに。

Notionを「見える化のハブ」にすることで、コミュニケーションコストは格段に下がります。
特に立ち上げ初期フェーズでは、情報共有が停滞＝成長の鈍化にもつながるので、
こうした工夫をしていくことが大切です。
C# プログレスバーの色を変えたい

# WindowsFormアプリケーションのプログレスバーの色がデフォルトで緑に固定されている

# 色を変える手順
- `Program.cs`を修正する
- ゲージの見た目が点線になるので`Form1.Designer.cs`から修正をする

```Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DesktopMascot_Share_Doraemon {
   public static class Program {

        public static Form1 mainForm;

        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static void Main() {
            //Application.EnableVisualStyles();//ここをコメントアウトする
            Application.SetCompatibleTextRenderingDefault(false);
            mainForm = new Form1();
            Application.Run(mainForm);
        }
    }
}
```

# このままだと表示が変なので、ブロックじゃなくて連続のバーにしたい場合はstyleプロパティーを設定します。

`progressBar1.Style = ProgressBarStyle.Continuous;`
 
```Form1.Designer.cs
namespace DesktopMascot_Share_Doraemon {
    partial class Form1 {
        /// <summary>
        /// 必要なデザイナー変数です。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 使用中のリソースをすべてクリーンアップします。
        /// </summary>
        /// <param name="disposing">マネージド リソースを破棄する場合は true を指定し、その他の場合は false を指定します。</param>
        protected override void Dispose(bool disposing) {
            if (disposing && (components != null)) {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows フォーム デザイナーで生成されたコード

        /// <summary>
        /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
        /// コード エディターで変更しないでください。
        /// </summary>
        private void InitializeComponent() {
            this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
            this.contextMenuStrip1 = new 

            ...etc

            // progressBar1
            // 
            this.progressBar1.BackColor = System.Drawing.Color.White;
            this.progressBar1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.progressBar1.Location = new System.Drawing.Point(0, 0);
            this.progressBar1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
            this.progressBar1.Name = "progressBar_Physical";
            this.progressBar1.Size = new System.Drawing.Size(57, 20);
            this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
            this.progressBar1.TabIndex = 3;
            ...etc
        }

        #endregion

        private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
        ...etc
    }
}
```


https://milai.exblog.jp/24701008
PHPのデバッグ効率化について備忘録

この記事は、私が「独学エンジニア」で学んだ内容をもとに、PHPのデバッグ効率化について整理した備忘録です。

https://dokugaku-engineer.com/course/serverside

特に、デバッガーの利点やPHPの定番ツールであるXdebug、さらにVS CodeとDocker環境でXdebugを活用する方法に焦点を当ててまとめました。

---

### **デバッカーの利点**

- **デバッカーの役割**
デバッカーはデバッグ作業を支援するツールで、コードの任意の行でプログラム実行をストップし、変数の中身や処理の動作確認が可能。
- **従来の方法と比較**
従来は `var_dump()` や `print_r()` を使って変数を確認していたが、デバッカーを使うと効率的で柔軟なデバッグが可能。

---

### **PHPでの定番デバッカー：Xdebug**

- **特徴**
    - PHPのエクステンションとして提供。
    - コードに「ブレイクポイント」を設定し、1行ずつ実行をストップ可能。
    - エラー発生時に詳細なスタックトレースを表示。
    - 任意の行で変数の中身確認や処理のテストができる。
- **VS Codeとの連携**
    - VS Codeのデバッグ機能を活用し、GUI上で簡単にデバッグ可能。

---

### **Docker環境での課題**

- **IPアドレスの違い**
    - Xdebugは「呼び出し元のIPアドレス」を設定する必要がある。
    - DockerコンテナとローカルPCではIPアドレスが異なるため、設定が煩雑になりやすい。
- **動的なIPアドレスの問題**
    - ローカルPCのIPアドレスが動的に変わる場合、設定変更が面倒になる。

---

### **解決策：VS Codeのリモート開発機能**

- **リモート開発の利点**
    - VS Codeの「リモートデベロップメント」機能を使うと、Dockerコンテナ内で直接デバッグを実行できる。
    - デバッグ機能とXdebugが同じ環境（Dockerコンテナ内）で動作するため、IPアドレスの設定が簡略化される。
- **設定の簡略化**
    - クライアントホスト（呼び出し元）のIPアドレスを「localhost」に指定するだけでOK。

---

### **今後のアプローチ**

1. **Xdebugの基本操作を習得**
    - ブレイクポイントの設定や変数確認の方法を学ぶ。
2. **VS Codeのリモートデベロップメント設定**
    - Dockerコンテナと連携してローカルと同じ感覚で開発。
3. **公式ドキュメントの参照**
    - Xdebug公式ドキュメントとVS Codeリモートデベロップメントのドキュメントで詳細を確認。

---

### **まとめ**

- **Xdebugを使うとデバッグが劇的に効率化**
    - コードの実行停止、変数確認、エラー発生時の詳細な情報取得が可能。
- **VS CodeとDocker環境を活用すると設定が簡単になる**
    - リモートデベロップメント機能を使うことで、IPアドレス設定などが不要になり、手間が大幅に軽減。




以上がPHPのデバッグ効率化について整理した内容になります。
独学でつまずいたポイントや設定の流れを、自分でも見返せるようにまとめました。
環境構築やデバッグの学習中の方の参考になれば幸いです。
初心者向け：MBRとGPTの違いと変換方法を徹底解説

パソコン操作中に「MBR」や「GPT」という単語をよく見かけますよね。特にWindowsの再インストールや新しいディスク接続時に現れ、初心者には少し戸惑うかもしれません。本記事では、[MBRとGPTの違い](https://partition.aomei.jp/gpt-mbr/mbr-vs-gpt.html/?_ut=llyy_djl_qiita_aomei)を基本からわかりやすく解説し、どちらを選ぶべきか、さらに変換手順と注意点を整理します。この記事を読むことで、自信を持ってディスク形式の管理ができるようになります。

---

## Part1：MBRとGPTとは？基本の理解

**パーティション形式**とは、ディスク（[HDD/SSD](https://partition.aomei.jp/articles/hdd-versus-ssd-performance-5533-tc.html/?_ut=llyy_djl_qiita_aomei)）を複数の区切りで効率よく使うための管理方式のことを指します。

- **MBR（Master Boot Record）**  
  - 1980年代からの古参フォーマット。  
  - ディスク先頭にブート情報とパーティション構成が記録。  
  - 制限：最大2TBまで、パーティションは最大4つ。

- **GPT（GUID Partition Table）**  
  - MBRの後継、近年の標準フォーマット。  
  - GUIDでパーティションを管理。2TBを超えるディスクや最大128パーティションに対応。  
  - Windows 10/11の標準規格。

---

## Part2：MBRとGPTの比較

| 特徴             | MBR                              | GPT                                         |
|------------------|-----------------------------------|----------------------------------------------|
| 対応ディスク容量 | 最大2TB                             | 2TB超対応                                     |
| パーティション数 | 最大4つ                             | 最大128（Windows環境）                          |
| ブート方式       | BIOS                             | UEFI対応                                     |
| 対応OS           | 古いOSやBIOS環境に強い                | Windows 10/11／[UEFI環境](https://partition.aomei.jp/gpt-mbr/uefi-gpt-or-mbr.html/?_ut=llyy_djl_qiita_aomei)で標準対応             |

---

## Part3：形式選びシチュエーション別ガイド

- **古いPC・OS**（BIOSのみ搭載） → MBRがおすすめ  
- **新しいPC／2TB超ディスク利用** → GPTが最適  
- **OS再インストール・交換を予定** → WindowsがUEFI対応ならGPTを推奨  

---

## Part4：MBR⇄GPTの変換は可能？注意点まとめ

### Windows標準ツールでの変換

- **diskpart**  
  - パーティション削除が必須 ⇒ データ消失リスク高め  
  - コマンド操作に慣れていないとおすすめしにくい

- **mbr2gpt.exe**  
  - MBR→GPTの一方向のみ対応  
  - 条件あり（CドライブのMBRかつ正常に動作中）  

データを残したまま変換したい場合、Windows標準はややハードルが高くなります。

---

## Part5：初心者向け！AOMEI Partition Assistant を使った簡単変換

AOMEI Partition Assistantは、パーティションを削除せずにMBR↔GPT間の変換が数クリックで可能なフリーソフトです。

### 操作手順（例：MBR→GPT）

1. ソフトをインストールして起動
[ダウンロードはこちら](https://partition.aomei.jp/download.html?_ut=llyy_djl_qiita_pa)
2. 対象ディスクを右クリックし、「GPTディスクに変換」を選択  
![GPTディスクに変換.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4115730/bbdb7e35-918b-4cd1-bcf9-309406b036df.png)
3. 表示内容を確認して「はい」をクリック
![はいをクリック.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4115730/b3ceae8a-1d28-4eff-845d-409d3208c387.png)
4. 「適用」ボタンで変換を実行  
![適用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4115730/c4b9dbbb-1d73-44ac-8e2e-969129788ba8.png)
視覚的な操作で安心、安全に進められます。

---

## まとめ

- **MBRとGPT**はディスク管理で基本となる形式  
- **用途や環境に応じて選択**することが重要  
- Windows標準ツールもあるが、**AOMEI Partition Assistant**なら初心者でも簡単＆安全に変換可能
- [公式サイトはこちら](https://www.aomei.jp/?_ut=llyy_djl_qiita_aomei)

パーティション形式の知識を身に付け、自分に合った方法でディスクを管理しましょう！
今さらに聞けない Salesforce翻訳のメタデータ所在について

## 結論
翻訳のメタデータはプロフィールと同様、カスタム項目などと一緒にRetrieveすることが必要。

### 例
単独ダウンロードすると、オブジェクト名称（と標準項目）ぐらいの翻訳しか取れません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1129251/897f85fd-baff-4b5f-9eeb-4c76e87efea4.png)

以下青枠の組み合わせで、選択リストなどの翻訳メタデータを取得できます。
赤枠の組み合わせで、カスタム表示ラベルの翻訳メタデータを取得できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1129251/19cbbdfe-1920-4ed5-8a69-0f5bcf5cc8cb.png)
主要プログラミング言語の基本的な実行コマンド一覧

---

## 【初心者向け】主要プログラミング言語の基本的な実行コマンド一覧

プログラミング学習や開発のはじめに「この言語はどうやって実行するの？」という疑問は多いですよね。この記事では、**主要な言語の基本的な実行コマンド**をまとめました。

---

### 各言語の実行コマンド一覧

| 言語 | 拡張子 | 実行コマンド例 |
|---|---|---|
| **Python** | `.py` | `python ファイル名.py` または `python3 ファイル名.py` |
| **JavaScript (Node.js)** | `.js` | `node ファイル名.js` |
| **TypeScript** | `.ts` | `tsc ファイル名.ts` → `node ファイル名.js` |
| **Java** | `.java` | `javac ファイル名.java` → `java クラス名` |
| **C** | `.c` | `gcc ファイル名.c -o 実行ファイル名` → `./実行ファイル名` |
| **C++** | `.cpp` | `g++ ファイル名.cpp -o 実行ファイル名` → `./実行ファイル名` |
| **Go** | `.go` | `go run ファイル名.go` |
| **Rust** | `.rs` | `rustc ファイル名.rs` → `./ファイル名` |
| **Ruby** | `.rb` | `ruby ファイル名.rb` |
| **PHP** | `.php` | `php ファイル名.php` |
| **Shell (Bash)** | `.sh` | `bash ファイル名.sh` または `sh ファイル名.sh` |
| **PowerShell** | `.ps1` | `powershell -File ファイル名.ps1`（Windows） |
| **Kotlin** | `.kt` | `kotlinc ファイル名.kt -include-runtime -d ファイル名.jar` → `java -jar ファイル名.jar` |

---

### 注意点

* **Python2系と3系の違い**: OSによっては`python`コマンドがPython2系の場合があります。Python3を使いたいときは`python3`で実行することをおすすめします。
* **コンパイルが必要な言語**: **Java**、**C**、**C++**、**Kotlin**は、コンパイル（翻訳）→実行の2ステップが必要です。
* **TypeScriptの実行**: **TypeScript**は`tsc`コマンドでJavaScriptに変換し、その後`node`で実行します。
* **GoやRustは単一ファイルの実行が簡単**: コマンド1つでサクッと動かせるのが特徴です。

---

### ちょっとしたサンプル

```bash
# Python
echo 'print("Hello, Python!")' > hello.py
python3 hello.py

# Node.js
echo 'console.log("Hello, JS!")' > hello.js
node hello.js

# Go
echo 'package main; import "fmt"; func main() { fmt.Println("Hello, Go!") }' > hello.go
go run hello.go
```

---

この記事が、プログラミングを始める方の助けになれば幸いです。もし他に知りたい言語があれば、ぜひ教えてくださいね。
LLMOを制して新時代の覇権を握ろう！

タイトルは「～握ろう！」とポップなテイストなのに主張はいかつい、というギャグです。

閑話休題。
結論を言えば、これから検索エンジンは暗黒期に突入します。
一方でLLMは黎明期真っ盛。
今のうちからLLMに注力して、新たなステージでポジションをとりましょう！


## はじめに

この記事では、LLMO（Large Language Model Optimization ≒ AI最適化）についてざっくり解説します。
とはいえ、ご存知の通りAIは複雑です。
多分、Googleの検索アルゴリズムよりも複雑です。

あくまで現時点での覚書としてゆるくお楽しみください。


## llms.txt を設置しよう！

実は、現時点で言える確からしいことはこれしかありません。
これ以外はほとんどが**SEOでも言われてきたことの焼き直し**です。
しかも、効果の程は未知数です。

とはいえ特にマイナスの要素はないので、祈るような気持ちで設置しましょう。

https://ahrefs.com/blog/ja/what-is-llms-txt/


## SEOに注力しよう！

はい、結局。
現在GoogleのAIOでは、80％くらいの確率で検索結果の上位3サイトの情報が、99％くらいの確率で上位10サイトの情報が用いられているそうです。

https://searchengineland.com/google-ai-overviews-organic-results-overlap-99-445374

まだ見ぬGoogleのAIモードではもう少し低いという話も聞きますし、AIOに限っても違った検証結果はあります。

とはいえ、検索エンジンとAI、いずれも「**良いコンテンツをユーザーに提供して満足度を上げる**」のが目的のはずなので、それほど大きく違ったものにはならないでしょう。
検索エンジンは暗黒期に突入するなんて言っても、結局まだまだSEOは健在です。

ぱっと思いつくところでいえば、つぎのようなテクニカルSEO的な部分はおよそ共通しそうです。

- クオリティの高いコンテンツ
  - EEAT
    - Experience（経験）
    - Expertise（専門性）
    - Authoritativeness（権威性）
    - Trustworthiness（信頼性）
- クローラーが回遊しやすいサイト設計
- サイト表示速度（Core Web Vitals）の最適化
- 構造化データの整備

構造化データと言えば、SEOで絶大な効果を誇った（？）Q&A形式のコンテンツはAIとも食い合わせが良さそうですね。


## SNSに注力しよう！

これも昨今、SEOの文脈でも良く言われる部分です。
フォロワーが多いから権威性がある、名前や所属を明かしているから信頼性がある、みたいな話ですね。

LLMは後発であることや広告ビジネスが絡んでいない分、こちらを重視する線は大いにあります。

余談ですが、現在AI先進国アメリカでは、意外にもAIに奪われた検索エンジンユーザーは3％程度で、85％程度は依然検索エンジンを第1選択肢として利用しているそう。
そして、残りの12％程度を奪ったのがSNSだとか。

そういう意味では、**LLMOを制する前にSNSを頑張ったほうが4倍よさそう**な気がしてきました。


## さいごに

さいごに冒頭の「検索エンジン暗黒期」についてですが、厳密には検索エンジン・AIともに（Webマーケ的な意味で）波乱の暗黒期を迎えると思っています。
というのも、AIはハルシネーションといういかんともしがたい問題を抱えており、これがすでに検索結果を汚染し始めているように思います（特に非YMYL領域）。

こうなるとGoogleの検索結果の信頼性は揺らぐ一方ですが、現状のGoogleにこれを打開できるイメージが持てません。

インターネット老人会じみた話題ですが、かつてWELQ問題というものがありました。
ざっくりいえば、人間によるハルシネーション波状攻撃に耐えかねたGoogleが「大企業・専門機関の優遇」という苦肉の策で急場をしのいだという事件（？）です。
この傾向は十年近い年月が経った今日もGoogle公認の課題として残り続けています。

今度はその大企業が率先してAIを導入しているので、これはもう手のうちようがないのでは……？ というのが個人的な印象です。

Redditやnoteとの提携の例もありますし、**EEATに振り切るというか、完全に個にフォーカスするような形になるのも面白いなぁ**とも思うのですが、ビジネス的に成立しない気がします。

いっそ自動運転のレベル3のように「**万一ハルシネーションを起こした際はAI事業者がすべての責任を負う**」ようなシステムになれば、一気に形勢がAIに傾く気もしますが、法整備の問題もありますし、あまり現実的には思えません。

「さいごに」でめちゃくちゃ文字文字しくなりました。

考えてもよくわからないので、とりあえずタイトルでボケてみたり、そのボケを自ら説明してみたり、AIがやらなさそうな逆張りでお茶を濁そうkと思います。
JetBrains Plugin Developer Conf 2025に登壇しませんか？

![ChatGPT Image 2025年6月18日 10_59_48 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3978583/fb058525-fb7a-4261-8871-084e3d1496a5.png)

## 🧩 JetBrains公式のプラグイン開発者向けカンファレンスが今年も開催

JetBrains が主催する **「JetBrains Plugin Developer Conference 2025」** の登壇者募集（Call for Speakers）がスタートしました。
このカンファレンスは、JetBrains製品のエコシステムを拡張する **プラグイン開発者のための国際的イベント** です。

- 📅 **開催日：** 2025年11月（具体的な日付は後日発表） 
- 🌍 **開催形式：** オンライン（世界中から参加可能）  
- 📌 **応募締切：** 2025年7月10日

---

## そこのアナタっ！登壇できるかもしれませんね～

JetBrains プラットフォーム上でプラグインを開発したことがある方、もしくは現在開発中の方であれば **誰でも応募可能！**

## どのような講演を募集しているのか？

プラグイン開発や JetBrains Marketplace に関連する講演であれば、どのような内容でも歓迎ですが、特に以下のようなトピックに関心があります：

- プラグインのアイデアの見つけ方
- プラグインの開発
- Marketplace チームとの承認プロセスの進め方
- プラグインのマーケティングおよび収益化
- ユーザーフィードバックおよびサポートの管理
- プラグインの互換性維持と技術的課題への対応
- Marketplace で直面した課題の克服体験
- プラグイン開発者を目指す人のためのベストプラクティス
- 上記に当てはまらないが、プラグイン開発や管理に関する内容

---

## 参考：2024年の講演内容

- **Language Server Protocol プラグイン開発体験**
- **優しさを忘れずローカライズ！JetBrains プラグインでのローカリゼーションの実装**
- **ユーザーフィードバックへの対応：GitHub Actions Manager における事例研究**

---

## なぜ応募すべき？

- JetBrains の公式イベントに登壇できるチャンス  
-  自身のプロダクトや技術を世界にアピールできる  
-  プラグイン開発者同士のコミュニティづくりに貢献  
- 発表経験がなくてもスタッフがサポート！

> ※スピーカーとして選出されると、発表準備のガイドや技術チェックのサポートも受けられます。

---

## 📝 登壇応募の方法

応募は以下のフォームから行います：  
👉 [登壇応募フォームはこちら（英語）](https://blog.jetbrains.com/platform/2025/06/jetbrains-plugin-developer-conf-2025-call-for-speakers/)

## 講演の形式について

- **すべての講演は英語でライブ配信され、所要時間は30分または45分**です。その後、**任意で5〜10分間のQ&Aセッション**を設けることができます。
- セッションは、**あなたのタイムゾーンの営業時間内**にスケジュールされます。
- ご希望があれば、**リハーサル、デモのフィードバック、プレゼン準備のサポート**も提供します。

---

- 講演は**ライブ配信・録画**され、その後 JetBrains の **YouTubeチャンネル、ニュースレター、ブログ、その他の公式チャネル**で共有されます。
- **スライドショー、ライブデモ、その他コンテンツに適した形式**での発表が可能です。

---

## 謝礼について

- **選ばれた登壇者には、JetBrains All Products Pack（個人用）1年分**が提供されます。
- ご希望であれば、**あなたのブログ、プロジェクト、講座などのプロモーション**も講演と一緒にサポート。

---

📅**Call for Speakers（登壇者募集）の締切は2025年7月10日**です。


---

## JetBrainsプラグイン開発に興味がある方へ

JetBrains プラットフォームは IntelliJ IDEA や PyCharm、WebStorm などの製品群に共通する **拡張基盤** を持っており、  
**一つのプラグインで複数IDEに対応可能** な強力なアーキテクチャが特徴です。

> もしまだ開発経験がなくても、登壇内容として「初めてのプラグイン開発」なども歓迎されています。

---

## 🚀 まとめ

いかがでしたでしょうか、少しハードルは高いかもしれませんが、なんだかゾクゾクしませんか。
JetBrains Plugin Developer Conf 2025 は、**世界中のプラグイン開発者が一堂に会する貴重なイベント**です。  
ぜひ登壇にチャレンジしてみてください！

---

## 参考リンク

- JetBrains公式ブログ記事: [JetBrains Plugin Developer Conf 2025 – Call for Speakers](https://blog.jetbrains.com/platform/2025/06/jetbrains-plugin-developer-conf-2025-call-for-speakers/)


##  JetBrains製品の最新情報を弊社のXで投稿しています！


 **公式X - [Nattosystem](https://x.com/nattosystem)**  



---

> 📝 この記事は一部AIによって要約・編集されたものです。
VS Codeをv1.101.0にアップデートしたら日本語入力の変換がおかしくなる問題を解決する

## エラーの内容

VS Codeをv1.101.0にアップデートしたところ，日本語入力の変換がおかしくなってしまった。
調査したところ，[VimのExtensions](https://marketplace.visualstudio.com/items?itemName=vscodevim.vim)をオンにしている時だけ以下の事象が発生する。

1. 「きどうせんしがんだむ」と入力
2. 「機動戦士ガンダム」に変換してEnterを押す
3. 「きどうせんしがんだむ」と入力されてしまう。

![tmp.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3718390/549438eb-8e10-4da5-b11e-a3904038c273.gif)

---

## 解決方法

[Issue](https://github.com/VSCodeVim/Vim/issues/9672)を立てて見たところ，VS Codeの設定のデフォルト値が変更になったことが原因だと教えていただいた。圧倒的感謝!

そのため，以下の設定をsettings.jsonに追加すれば良い。

```settings.json
  "editor.experimentalEditContextEnabled": false,
```
コマンドプロントを最前面に

# Windowsで「active」と打つとコマンドプロンプトを常に最前面にする方法

コマンドプロンプト作業中、常にウィンドウを前面に表示しておきたいときに便利なスクリプトです。  
この方法では、どこにいても `active` と入力するだけで、そのコマンドプロンプトウィンドウが「常時最前面」になります。

---

## スクリプト内容（active.cmd）

以下を `active.cmd` という名前で保存してください。

```cmd
@echo off
powershell -NoProfile -Command "& {
  Add-Type -TypeDefinition @'
    using System;
    using System.Runtime.InteropServices;
    public class WinAPI {
      [DllImport(\"user32.dll\")]
      public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
      public static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
      public const UInt32 SWP_NOMOVE = 0x0002;
      public const UInt32 SWP_NOSIZE = 0x0001;
      public const UInt32 SWP_SHOWWINDOW = 0x0040;
    }
'@ -Language CSharp

  $hwnd = (Get-Process -Id $PID).MainWindowHandle
  [WinAPI]::SetWindowPos($hwnd, [WinAPI]::HWND_TOPMOST, 0, 0, 0, 0, [WinAPI]::SWP_NOMOVE -bor [WinAPI]::SWP_NOSIZE -bor [WinAPI]::SWP_SHOWWINDOW)
}"
```

---

## 配置手順

1. 任意のディレクトリに保存：

```cmd
mkdir %USERPROFILE%\bin
move active.cmd %USERPROFILE%\bin
```

2. `%USERPROFILE%\bin` を Path に追加：

- 環境変数の設定 → ユーザー環境変数 → `Path` を編集
- `新規` を押して `%USERPROFILE%\bin` を追加

---

## 使い方

コマンドプロンプトでどこからでも以下を実行：

```cmd
active
```

そのコマンドプロンプトが「常に前面に表示」されるようになります。

---

## 備考

- 効果はウィンドウを閉じるまで持続します。
- 無効化したい場合は、AutoHotkey などで解除操作を行うか、スクリプトを改造する必要があります。
【Django】MVCの考え方について

## MVC
　MVCは、フレームワークの基本的な考え方を抽象的な概念で整理したものです。
MはModelを、VはViewを、CはControllerを示しています。

MVCのイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387980/a245bd10-0eee-44e2-bf31-c7866c6c372b.png)

　Djangoでは、Modelはmodels.pyファイルに、Viewはtemplateファイルに、Controllerはurls.pyファイルやviews.pyファイルに対応しています。
　Controllerがrequestに対してどのような処理を行うのかという「司令塔」のような立場となり、見た目を管理するViewや、データを管理するModelと連携しながら、効率よくウェブサイトに求められた情報を表示出来るようにしています。

　より具体的なイメージとしては、Modelはどのようにデータを格納するかを定義するもの、Viewはブラウザに表示する情報の元になるレイアウトの枠組みを整理したもの、Controllerは、ブラウザから送られてきたrequestに対し、ViewとModelの中でどの情報を使うのかという具体的な指示を出し、ウェブサーバーにrequestを返すもの、という認識で良いでしょう。

　ちなみに、インターネット上の情報では、MVCではなく、MTV(Model, Template, View)と呼ばれることが多いようですが、概念を理解するために使われている言葉ですので、どちらが正しいということはありません。

## 参考文献
Djangoのツボとコツがゼッタイにわかる本 単行本 – 2020/7/30
大橋 亮太 (著)
p.29-30
sessionStorage と Pinia の違いと性能

# sessionStorage と Pinia の違いまとめ

## 🌟 結論

`sessionStorage` は **Pinia のようにリアクティブでグローバルにデータを取り出す仕組み** ではありません。

---

## 比較表

| 項目 | sessionStorage | Pinia (Vue の状態管理ライブラリ) |
|-------|----------------|---------------------------------|
| 保管場所 | ブラウザのストレージ（セッション単位で永続） | メモリ上のリアクティブなストア |
| データ取得方法 | 毎回 `sessionStorage.getItem()` で取り出す必要がある | コンポーネントから直接リアクティブにアクセス可能 |
| リアクティブ性 | なし（変更を監視したり反応したりできない） | リアクティブ。値が変わればUIが自動で更新される |
| スコープ | 全ページ（同じウィンドウ・タブ内で共有） | Vue アプリ全体で共有（インスタンス内） |
| データの持続性 | ページをリロード・遷移しても残る（タブを閉じるまで） | リロードで消える（永続化オプションで対応可） |

---

## 📌 sessionStorage の特性

- 文字列しか保存できない（オブジェクトは JSON 化する必要あり）。
- リアクティブではないので、更新しても自動的に画面の表示が変わらない。
- 必要なときに都度取り出して `JSON.parse` して使う。

```js
const data = JSON.parse(sessionStorage.getItem('recordingData') || '{}')
```

---

## 📌 Pinia の特性

- グローバルな状態管理が可能。
- リアクティブな値を直接監視・利用できる。
- Vue のコンポーネントと密接に連携。

```js
const store = useCounterStore()
console.log(store.someValue)  // 自動的にUIに反映される
```

---

## 💡 まとめ

✅ sessionStorage はグローバルにデータを保持できるが、Pinia のようにリアクティブに管理するものではない。
✅ データ取得には毎回 `getItem` が必要。
✅ Vue のUI自動反映には Pinia やリアクティブストアを使うのが最適。

https://qiita.com/uralogical/items/ade858ccfa164d164a3b