OmniAICreator/Qiita-1.07M huggingface dataset:
DockerでJenkins環境構築

## ひとまず

Jenkinsを動かす環境が必要だったが、サーバを用意していなかったので
Dockerで環境を作り検証をすることにしました。

## ひとまず最小限で動かす
まずはDockerのhubからイメージを取得します。

https://hub.docker.com/r/jenkins/jenkins
```bash
docker pull jenkins/jenkins:lts-jdk17
```

### docker containerをrunで動かす


```bash
docker run -p 8080:8080 -p 50000:50000 --restart=on-failure jenkins/jenkins:lts-jdk17
```
上記コマンドのあと、標準出力に、Jenkinsのadminユーザのパスワードが表示されます。
コマンドプロンプト上に表示されるので控えておきます。

![スクリーンショット 2025-02-18 092635.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544972/479459bc-a65a-489e-ac57-89264203a56e.png)
忘れた場合は、

> /var/jenkins_home/secrets/initialAdminPassword

にありますので、catコマンドで

```bash
cat /var/jenkins_home/secrets/initialAdminPassword
```

表示できます。

これで一旦最小構成の作成完了です。

## URLを叩いてみる

URL、ローカル環境に作成できたのでポート8080にてアクセス可能です。
> http://localhost:8080/

アクセスしたら、adminのパスワードを入力する画面が表示されます。
    なので、先ほどコマンドプロンプト上に表示されたパスワードを入力します。

![スクリーンショット 2025-02-18 093448.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544972/f1a610cc-d468-4c56-829c-d39ec29e0d20.png)

パスワードの入力が成功したらプラグインの入力画面が表示されますので
いったんは左側「Install suggested plugins」のほうを選択してクリックします。

ちなみに、右側を選択すると好みのプラグインを導入することができます。

![スクリーンショット 2025-02-18 093602.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544972/c689a7d8-964c-4c7d-9030-800b2f62f870.png)

プラグインのインストールがどんどん進んでいきます。
![スクリーンショット 2025-02-18 093929.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544972/83f1ffef-cb31-4c3e-93c7-af8ea0d75e4d.png)

作成が完了すると、Adminのユーザ作成を促されますので作成します。
![スクリーンショット 2025-02-18 094543.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544972/28f78655-74f7-49fa-b797-43ca2e6f5a42.png)

adminユーザが作成完了したら、今回使用するJenkinsのURLの確認画面が表示されます。
そのまま「Save adn Finish」のボタンを押します。
![スクリーンショット 2025-02-18 094704.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544972/5dce468b-ab76-48d5-9f1c-d8156e65de07.png)

Jenkinsの作成完了がでたので「Start using Jenkins」のボタンを押します。
![スクリーンショット 2025-02-18 094825.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544972/095b778c-899d-46c9-b1f9-a32faffdea7b.png)

## Jenkinsの画面が立ち上がる

Jenkinsの画面が表示されるので使用できます。
![スクリーンショット 2025-02-18 094935.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544972/d6a751f2-16c9-4491-83c7-c95a014a8eac.png)

最小単位ですが、こちらでいったん起動などジョブの作成などはできます。
ループ内でのAPI通信の際の注意

こんにちは、新人エンジニアの三上です。

今回は、API通信が大量に行われる際に講じるべき対応をご紹介します。

## Thread.sleep
Thread.sleep を使用した実装を以下に記載します。
```kotlin:kotlin

    fun apiCall(): List<TmpObject>? {
        tmpList.forEach{ tmpObject ->
            // リスト要素を使用してAPI通信（具体的記載は省略）
            
            Thread.sleep(1000)
        }
        return tmpList
    }
```

リストを forEach でループさせて、その要素を使用してAPI通信を行う際などに
通信回数が膨大になることが予想される場合には、呼び出しごとに間隔を空けるために、
Thread.sleep を挿入することで、指定した時間の間だけ処理を中断出来る。

上記の例では 1000ms、つまり 1s 間隔で API通信が行われる。

## まとめ
このように、間欠的にAPI通信を行うことで負荷を軽減します。

以上、三上でした。
個人的備忘録： CTOがかっこいいと感じたので、他の主要な役職についても ChatGPT と話し合いながらまとめてみた

## はじめに

企業にはさまざまな役職がありますが、特にCTO（最高技術責任者）やCEO（最高経営責任者）などの経営層の役職について、その役割が具体的にどのようなものなのかを知っておくことは、ビジネスやキャリア形成において重要です。

:::note info
**特にIT業界では、CTOやCIOのような技術系の役職が増えており、それぞれの違いを理解しておくと役立ちます。**
:::

本記事では、主要な経営層の役職について解説し、それぞれの役割を整理していきます。

## 書こうと思ったきっかけ

最近、スタートアップや大手企業での経営層の役割についての議論が増えているのを目にします。

:::note warn
***特に、CTOやCIOの違いについて混同されることが多く、明確な理解が必要だと感じました...。***
:::

また、企業によって役職の名称や役割が異なることもあり、これを整理することで、ビジネスパーソンや就職・転職を考える方々の参考になればと思い、本記事を書くことにしました。

## 企業の主要な役職一覧

### **経営層**
- **CEO（Chief Executive Officer）**  
  最高経営責任者。会社のトップであり、企業の方針決定や全体の経営戦略を担う。株主や取締役会に対する責任を持つ。

- **COO（Chief Operating Officer）**  
  最高執行責任者。CEOの補佐をしながら、会社の事業運営を実行する役割。特に大企業では、CEOが長期戦略を考え、COOが日々の業務を指揮するケースが多い。

- **CFO（Chief Financial Officer）**  
  最高財務責任者。会社の財務戦略を統括し、予算管理や投資計画、資金調達などを担う。

### **技術・製品関連**
- **CTO（Chief Technology Officer）**  
  最高技術責任者。会社の技術戦略を策定し、開発チームを統括する。技術選定やイノベーション推進を行い、プロダクトの技術的な方向性を決める。

- **CIO（Chief Information Officer）**  
  最高情報責任者。企業のITインフラや情報管理を統括し、DX（デジタルトランスフォーメーション）を推進する。CTOが技術そのものを担当するのに対し、CIOは業務におけるIT活用を重視する傾向がある。

- **CPO（Chief Product Officer）**  
  最高プロダクト責任者。プロダクト開発の統括者であり、ユーザー体験や市場ニーズを考慮しながら製品の方向性を決定する。

### **マーケティング・広報・人事関連**
- **CMO（Chief Marketing Officer）**  
  最高マーケティング責任者。ブランド戦略、広告、マーケティング施策などを統括する。

- **CCO（Chief Communications Officer）**  
  最高コミュニケーション責任者。企業の広報・PR活動を担当し、企業イメージやメディア対応を管理する。

- **CHRO（Chief Human Resources Officer）**  
  最高人事責任者。人材採用、組織開発、人材戦略を担い、企業文化の形成にも関わる。

### **その他の役職**
- **CSO（Chief Strategy Officer）**  
  最高戦略責任者。企業の長期的なビジネス戦略を立案し、競争力を高める施策を推進する。

- **CISO（Chief Information Security Officer）**  
  最高情報セキュリティ責任者。企業の情報セキュリティを管理し、サイバー攻撃やデータ漏洩から組織を守る。

- **CDO（Chief Digital Officer）**  
  最高デジタル責任者。DX（デジタルトランスフォーメーション）を推進し、デジタル技術を活用した新規事業や業務改善を担当する。

## まとめ

企業の役職は多岐にわたりますが、それぞれに明確な役割があります。特に経営層の役職は、企業の成長に大きな影響を与えるため、役割の理解は重要です。

:::note info
***IT業界では、CTOやCIO、CDOといった技術関連の役職が注目されていますが、マーケティングや財務、人事なども企業運営に不可欠です。***
:::

本記事を通じて、各役職の違いや役割が明確になり、キャリア選択や企業理解の一助となれば幸いです。
[Linux][command] UUIDの表示_blkid, lsblk

# UUIDとは
- Universally Unique Identifier: 汎用一意識別子
- デバイスのUUID: バイスに向けて与えられた全世界で重複が起きないように生成される一意な値

# blkid コマンド
- デバイスのUUIDやファイルシステム情報を取得
~~~terminal:
$ blkid [オプション]
~~~
~~~terminal:
$ blkid [オプション] デバイス名
~~~

| オプション    | 由来   | 説明 |
|:--|:--|:--|
| `-o format`  | output  | 出力フォーマットを指定（例: value, udev） |
| `-s tag`     | search  | 指定した情報（例: UUID, LABEL）のみを表示 |
| `-c file`    | cache   | キャッシュファイルを指定（デフォルト: `/etc/blkid.tab`） |
| `-p`         | probe   | 指定したデバイスを調査し、詳細情報を取得 |

# lsblk コマンド
- ストレージデバイスの階層構造を表示
~~~terminal:
$ lsblk [オプション]
~~~
~~~terminal:
$ lsblk [オプション] デバイス名
~~~

| オプション    | 由来   | 説明 |
|:--|:--|:--|
| `-f`         | filesystem | ファイルシステム情報（UUID, TYPE, LABEL など）を表示 |
| `-o columns` | output     | 表示するカラムを指定（例: `NAME,SIZE,UUID`） |
| `-p`         | path       | フルパス（`/dev/sda1` のような形式）で表示 |
| `-r`         | raw        | ツリー構造ではなく、フラットなリストとして表示 |

# 参考リンク
- [blkid(8) — Linux manual page](https://man7.org/linux/man-pages/man8/blkid.8.html)  
- [lsblk(8) — Linux manual page](https://man7.org/linux/man-pages/man8/lsblk.8.html)

# Ping-t
- [3698_blkid, lsblk](https://mondai.ping-t.com/question_subjects/31/question_sessions/30553580/progressing_questions/468115702)
- [3719_UUIDの確認](https://mondai.ping-t.com/question_subjects/31/question_sessions/32844784/progressing_questions/503156026?result=true)
画面フロー:選択肢セットの考察



+ [画面フローにてコレクション選択肢セットで選択した結果がラベルになる](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX000000TQBw)

:::note
デバッグとして画面コンポーネント上にselection1を表示テキストで表示させた場合はラベルが表示されていましたが、実際に項目更新を行う際はselection1を指定するだけで値で更新されていました。 
:::

# レコード選択肢セットとして作成する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/0a6253c7-0922-468d-b23e-ffafcc3abe62.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/22538fe3-19af-4e78-9aa9-59c508db06b2.png)

# コレクション選択セットとして作成する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/5477629e-14c7-4c69-acc9-3941bdb6cc55.png)

コレクション変数が必要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/1236b5eb-d233-4b38-ac0e-83486a3a955c.png)

コレクション変数に値をセットすることが必要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/28473fd2-0f4c-4797-8f87-4b4ea9366852.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/67eb28ac-91eb-4fa5-b420-eaad228ec016.png)

項目にコレクション選択セットで使用しているフィールドが全て設定されないと機能しないことに注意
集客UP🔥レスポンシブ＆SEO最適化！予約システム搭載のレストランサイト制作✨

![PHOTO-2025-02-11-09-18-57 2.jpg](https://yushiyamamoto.vercel.app/images/restrant.webp)


## プロジェクト概要

本プロジェクトでは、レストランのブランディングとオンライン集客を目的に、WordPressをベースとしたウェブサイトを制作しました。サイト構造は、検索エンジンにインデックスされやすい明確なサイトマップと内部リンクを意識して設計し、ユーザーが直感的に各ページにたどり着けるよう工夫しています。さらに、予約システムを統合することで、オンラインでの予約促進にも寄与しています。

## プロジェクトの目的と背景

多くのレストランはWeb上での存在感が重要となる中、当該プロジェクトは以下の点を目的として実施しました。

- **SEO対策による集客促進**  
  検索エンジン向けに最適化されたコンテンツ構造と内部リンクの実装で、サイト全体の発見性を向上。

- **レスポンシブデザインの採用**  
  PC、タブレット、スマートフォンなど各デバイスからのアクセスにおいて、一貫したユーザー体験を提供。

- **オンライン予約システムの導入**  
  ユーザーが簡単にテーブル予約や問い合わせができるインターフェースを実現し、顧客利便性を向上。

## 採用技術とそのメリット

以下の表は、本プロジェクトで採用した技術とその特徴をまとめたものです。

| 技術              | 特徴・メリット                                                                                          |
|-------------------|---------------------------------------------------------------------------------------------------------|
| **WordPress**     | CMSとして高い柔軟性を持ち、直感的な管理画面でコンテンツ更新が容易。                                      |
| **PHP**           | サーバーサイドの処理を柔軟に実装でき、カスタム機能（例：予約システム）への対応が可能。                     |
| **Booking System**| 利用者がワンクリックで予約できる仕組みを提供し、レストランのオンライン予約を円滑にサポート。                |
| **SEO**           | メタタグ、タイトル、内部リンク、サイトマップの最適化により、検索エンジンからの集客を強化。           |
| **Responsive Design**| CSSメディアクエリやフレームワークを活用し、スマートフォンからデスクトップまで最適表示を実現。         |

## 開発プロセス

- **企画・設計**  
  初期段階では、ユーザーの利用シナリオを想定しながらサイトマップを策定。ホーム、メニュー、予約、店舗情報、お問い合わせなど、レストランサイトに必要な主要ページを明確にしました[1]。

- **デザインとコーディング**  
  ワイヤーフレームとデザインモックアップを元に、WordPressのテーマカスタマイズ及びPHPでのカスタム機能（予約システム）の実装を行いました。レスポンシブ対応は、各デバイスでの閲覧性を重視し、十分なテストを実施しました。

- **SEO対策**  
  各ページで適切なタイトル、メタディスクリプション、altタグなどの最適化を施し、内部リンクを強化。これにより、検索エンジンが各コンテンツを正確に認識できるように工夫しました[7]。

## SEOとレスポンシブデザインの工夫

SEOを意識したサイト設計では、各ページが相互にリンクし合う内部構造を構築。具体的には、主要キーワードを意識したタイトルタグや、ユーザーが求める情報に迅速にアクセスできる直感的なナビゲーションを採用しました。  
また、レスポンシブデザインを採用することにより、スマートフォン利用者が増加する中でも、画面サイズを問わず快適な操作性を保証。これにより、ユーザー離脱率の低減とエンゲージメントの向上を図りました。

## 予約システム実装のポイント

統合された予約システムは、以下の点に注力して実装されました。

- **簡単操作**: ユーザーが直感的に利用できる予約フォームを設計。クリック数を最小限に抑えることで、予約までの導線をスムーズに。
- **統合性**: WordPressとPHPによるカスタム機能として実装し、サイト全体のデザインと統一感を保ちつつ、オンライン予約の利便性を向上。
- **セキュリティと信頼性**: 予約情報の管理やメール通知機能を強化し、顧客情報の安全性を確保。

## 成果と今後の展望

サイト公開後、検索エンジンからの流入が大幅に改善され、実際にオンラインでの予約件数も増加しました。これにより、レストラン側も集客効果を実感し、運用面でも大きな成果を上げています。  
今後は、さらにSNS連携や動的コンテンツの導入、予約ステータスのリアルタイム管理など、ユーザー体験を向上させるための機能拡充を検討していく予定です。

## まとめ

本プロジェクトでは、WordPressとPHPを中心とした開発環境で、SEOを意識したサイト構造とレスポンシブデザイン、さらに使いやすい予約システムを実現しました。確実なSEO対策とマルチデバイス対応により、検索エンジンからの集客向上とユーザー満足度の向上を達成し、レストラン側にも確かな成果をもたらしています。  
今回の取り組みは、今後のWebサイト制作においても参考になる成功事例として、多くの関係者に情報提供できればと考えています。

---
### 最後に：業務委託のご相談を承ります

私は、業務委託エンジニアとしてWEB制作やシステム開発を請け負っています。最新技術を活用し、レスポンシブなWebサイトやインタラクティブなアプリケーション、API連携など、幅広いニーズに対応可能です。

「課題解決に向けた即戦力が欲しい」「高品質なWeb制作を依頼したい」という方は、ぜひお気軽にご相談ください。一緒にビジネスの成長を目指しましょう！

👉 [ポートフォリオ](https://yushiyamamoto.vercel.app/)
🎨医療×UI/UX改革！直感的なデザインでヘルスケアをもっと快適に💡

![PHOTO-2025-02-11-09-18-57 2.jpg](https://yushiyamamoto.vercel.app/images/4.webp)

## プロジェクト概要

本プロジェクトは、医療・ヘルスケア分野で利用されるWebアプリケーションのUI/UX改善を目的とし、ユーザー（患者や医療従事者）がストレスなく操作できるインターフェースの提供に注力しました。既存システムの課題を洗い出し、よりシンプルで直感的なデザインに刷新することで、利用者の満足度と業務効率の向上を図りました[1]。

---

## 導入背景と目的

ヘルスケア領域では、正確な情報提供と迅速な操作性が求められるため、ユーザーインターフェースの使いやすさはサービスの信頼性や利便性に直結します[1]。  
このプロジェクトの目的は以下の通りです[1]:

- ユーザーが必要な健康情報や機能に瞬時にアクセスできる、シンプルなUIの実現  
- 医療従事者や患者向けに、直感的なナビゲーションと一貫したUXを提供する設計  
- 利用環境やデバイスに左右されず、常に最適な表示とレスポンスを実現すること

上記の目的に基づいて、ユーザーリサーチやヒートマップの分析など、定量的・定性的なデータを活用して現状の問題点を明確化しました[4]。

---

## 採用技術とそのメリット

本プロジェクトでは、以下の技術スタックを採用しました。それぞれが高速な開発、安定した動作、保守性の向上に寄与しています[5]:

| 技術            | 採用理由・特徴                                                                                     |
|-----------------|---------------------------------------------------------------------------------------------------|
| **Nuxt.js**     | Vue.jsベースで、サーバーサイドレンダリング（SSR）を活用し、初期表示の高速化とSEO対策を実現              |
| **TypeScript**  | 静的型付けにより、開発時のミスを低減し、コードの保守性と信頼性を向上                                    |
| **REST API**    | フロントエンドとバックエンド間のシンプルかつ効率的な通信を実現                                          |
| **Node.js**     | 高いパフォーマンスを発揮するサーバーサイド環境を提供し、リアルタイム性が求められるヘルスケアシステムに最適 |
| **Express.js**  | 軽量かつ柔軟なミドルウェアとして、RESTfulなAPIの開発と拡張性の確保に貢献                                   |

各技術を組み合わせることで、ユーザー側の高いレスポンス性とサーバー側の安定運用を両立させました[5]。

---

## 開発プロセスと設計のポイント

### ユーザー中心のデザインプロセス

- **ユーザーリサーチ**  
  現状のUI上の課題を、ユーザーインタビューや行動解析ツールを用いて徹底的に洗い出しました[1]。

- **プロトタイピング**  
  フィードバックを迅速に反映できるよう、Nuxt.jsを利用して動作するプロトタイプを作成し、複数回のユーザーテストを実施しました[4]。

- **レスポンシブ設計**  
  デスクトップからタブレット、スマートフォンまで、各デバイスでの操作性と視認性を最適化するためのレイアウト設計を重点的に行いました[1]。

### バックエンドとの連携

- **REST API の統合**  
  ユーザー情報や健康情報などのデータを効率的に取得するため、Node.jsとExpress.js上で堅牢なREST APIを構築し、フロントエンドとシームレスに連携させました[5]。

- **リアルタイム更新**  
  状況に応じたコンテンツの即時更新を実現するため、API経由でのデータ更新やキャッシュ戦略を適用し、ユーザー体験の一貫性を確保しました[5]。

---

## チャレンジと解決策

- **複雑な医療情報の整理**  
  医療情報は専門性が高く、ユーザーにわかりやすく提示する必要がありました。そこで、インフォグラフィックスや分かりやすいアイコンを導入し、視覚的に整理しました[1]。

- **多様なユーザー層への対応**  
  患者、医療従事者、管理者といった多様なユーザーが利用するため、アクセス権限や表示コンテンツのカスタマイズに工夫を加えました[4]。

- **保守性の向上**  
  TypeScriptを活用し、将来的な機能追加や改修時のバグを事前に防ぐ体制を構築。これにより、長期間にわたって安定運用を可能にしました[5]。

---

## 成果と今後の展望

プロジェクトの結果、ユーザーからは「操作が直感的で分かりやすい」「必要な情報に迅速にアクセスできる」との高評価を得ることができました[1]。  
また、医療従事者からは業務効率の向上や、データ入力ミスの減少に寄与したとのフィードバックがあり、今後はさらなる機能拡張（例：リアルタイムチャットサポートやカスタマイズ可能なダッシュボードなど）を検討しています[4]。

---

## まとめ

本プロジェクトは、ヘルスケア関連のWebアプリケーションにおけるUI/UX改善を通じて、ユーザーが安心して利用できるインターフェースを実現した成功事例です[1]。  
Nuxt.js、TypeScript、REST API、Node.js、Express.jsといったモダンな技術を駆使し、ユーザー中心のデザインプロセスを採用することで、直感的かつレスポンシブなシステム構築に成功しました[5]。  
今回の取り組みは、今後の医療・ヘルスケア分野においても、さらなる利便性向上とユーザーエンゲージメント促進に寄与すると期待されています。

この記事が、同様のUI/UX改善プロジェクトに携わる方々の参考となれば幸いです。

---

### 最後に：業務委託のご相談を承ります

私は、業務委託エンジニアとしてWEB制作やシステム開発を請け負っています。最新技術を活用し、レスポンシブなWebサイトやインタラクティブなアプリケーション、API連携など、幅広いニーズに対応可能です。

「課題解決に向けた即戦力が欲しい」「高品質なWeb制作を依頼したい」という方は、ぜひお気軽にご相談ください。一緒にビジネスの成長を目指しましょう！

👉 [ポートフォリオ](https://yushiyamamoto.vercel.app/)
急にCursorからWSLに繋がらなくなった件

## 背景

普段通りCursorでWSLを立ち上げようとしたところ、失敗した。なんか左下の `>< GitHub` とか表示されるところに、`△WSL: Ubuntu-24.024から切断されました` と表示されている。

![スクリーンショット 2025-02-17 212229.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4011379/623ee0e2-2e63-49e9-a51f-ce46fa67d76d.png)

なお、その状態でもターミナルからwslに入ることはできた。

## エラー内容

ログを確認する：

```bash:Filesync
[error] Failed to fetch fsConfig File sync is disabled
```

FileSyncに関するエラー。WSLの直接の問題ではない。

```bash:ウィンドウ
[error] No remote extension installed to resolve wsl.:
CodeExpectedError: No remote extension installed to resolve wsl.
```

WSL を扱う Remote - WSL 拡張機能がインストールされていない か、正常に動作していない。

```bash:ターミナル
[warning]
RemoteTerminalBackend#getTerminalLayoutInfo Error
["No remote extension installed to resolve wsl."]
```

ターミナルが WSL に接続できない理由として、WSL のリモート環境がセットアップされていない。

```bash:リモートトンネルサービス
[error] Missing 'tunnelApplicationConfig' or 'tunnelApplicationName' in product.json. Remote tunneling is not available.
```

Remote トンネル (リモート開発用の接続機能) が壊れている可能性。

## 解決策

Remote -WSL拡張を再インストール

1. Remote - WSLをアンインストール
1. Cursorを再起動
1. Remote -WSLをインストール
1. WSLに接続

ここで接続に成功した。

## Ref

ChatGPT にエラー内容全部投げて質問した。
Remote -WSLをアンストして再インストールは一度やったが、成功したときは一々Cursorの再起動したからそれのお陰だと思う。

たぶんエラーログにあったとおりWSL拡張機能が正常に動作してなかったんだと思う。

```bash
~/.vscode-remote-containers/dist$ la
vscode-remote-containers-server-0.385.0.js
vscode-remote-containers-server-0.394.0.js
```

上記コマンドを試してみると、`vscode-remote-containers-server-0/XXX.0.js` が失敗したときは2種類あった。正常に動いているときは1つだけだったので、このファイルが競合したかも。

WSLが動かなくなると困るので、また今度同じようなエラーが発生したら試してみることにする。

## 追記

またなったから今度は、`~/.vscode-remote-containers/dist` の中身を全削除してから Cursor を再起動したら繋がった。

今回も、dist の中には jsファイルが複数あった
📚 React × TypeScript で作る！学習効率を高めるプログラミング教室サイト 💡

![PHOTO-2025-02-11-09-18-57 2.jpg](https://yushiyamamoto.vercel.app/images/3.webp)

## プロジェクト概要

このプロジェクトは、受講生と講師が必要な情報に迅速にアクセスできる環境を整えるため、プログラミング教室専用のウェブサイトを制作することが目的でした。管理者は教材のアップロードや管理、講師側は授業スケジュールの調整、受講生は直感的な予約機能を利用できるシステムを目指し、全体のユーザーエクスペリエンス向上を図りました。

---

## プロジェクトの目的

- 受講生が授業の予約や教材へのアクセスをスムーズに行える仕組みを提供  
- 管理者が効率的にコンテンツやレッスンスケジュールを運用できる管理機能の実装  
- スマートフォンなど様々なデバイスで最適な表示と操作性を確保するレスポンシブデザインの実現  

---

## 採用技術とその特徴

| 技術             | 特徴と活用理由                                                                                   |
|------------------|--------------------------------------------------------------------------------------------------|
| **React.js**     | コンポーネントベースの設計で再利用性を高め、動的なUI実現により複雑な画面構成も容易に管理可能。          |
| **TypeScript**   | 静的型付けにより開発時のバグを未然に防ぎ、コードの保守性と信頼性を大幅に向上。                         |
| **Web Audio API**| インタラクティブな音声フィードバックや教材の音声コンテンツなど、豊かなユーザー体験を創出するために活用。  |
| **Chakra UI**    | 直感的なUIコンポーネントとスタイルシステムを導入することで、迅速にレスポンシブデザインを実装。            |

---

## 開発プロセス

- **要件定義と設計**  
  プロジェクト開始時に、受講生・講師・管理者の視点から必要な機能を洗い出し、システム全体の構成を設計しました。これにより、教材管理と予約機能の連携をスムーズに行えるアーキテクチャを決定しました。

- **フロントエンドの実装**  
  React.jsとTypeScriptを組み合わせ、各機能ごとにコンポーネントを分割。Chakra UIを用いて統一感のある美しいUIを迅速に構築するとともに、各画面がどのデバイスでも最適に表示されるようレスポンシブデザインを実現しました。

- **音声機能の導入**  
  Web Audio APIを利用して、教材に関連する音声フィードバック機能を実装。教室内の説明や講義サンプルを、ユーザーが直感的に再生できる仕組みを構築しました。

- **統合テストとフィードバック**  
  開発過程では各機能を統合し、実際の利用シナリオに基づいたテストを実施。受講生や講師からのフィードバックをもとに、UI・UXの調整とバグ修正を重ねました。

---

## チャレンジと解決策

- **Web Audio APIの実装**  
  初期段階で、ブラウザ間の互換性や音声再生のタイミング調整に課題がありましたが、最新のドキュメントやコミュニティの知見を取り入れることで、スムーズな音声機能の実装に成功しました。

- **レスポンシブ対応の最適化**  
  各種デバイスでの表示テストを重ね、特にスマートフォンでの操作性向上に注力。Chakra UIのレスポンシブ設定を活用することで、ユーザー体験を大きく改善しました。

- **型安全な開発体制の確立**  
  TypeScriptの採用により、コードの整合性を担保し、開発チーム全体での認識を統一。これにより、リリース後のトラブルを最小限に抑えました。

---

## 導入効果と今後の展望

本システムの導入により、受講生の予約が円滑になり、教材へのアクセスも迅速に行えるようになりました。また、管理者側の運用負荷が軽減され、教室運営の効率化にも大きく寄与しています。今後は、ユーザーのフィードバックをもとに、学習進捗の管理機能やオンライン講義用のインタラクティブツールなど、さらなる機能拡充を検討中です。

---

## まとめ

今回のプログラミング教室サイト制作プロジェクトは、最新技術を駆使しユーザーエクスペリエンスと運用効率の向上を実現した好例です。React.js、TypeScript、Web Audio API、Chakra UIの統合により、柔軟で拡張性のあるシステムが完成し、今後の教育現場のさらなる発展に寄与することが期待されます。この記事が、今後同様のプロジェクトに挑戦する方々の参考になれば幸いです。

---

### 最後に：業務委託のご相談を承ります

私は、業務委託エンジニアとしてWEB制作やシステム開発を請け負っています。最新技術を活用し、レスポンシブなWebサイトやインタラクティブなアプリケーション、API連携など、幅広いニーズに対応可能です。

「課題解決に向けた即戦力が欲しい」「高品質なWeb制作を依頼したい」という方は、ぜひお気軽にご相談ください。一緒にビジネスの成長を目指しましょう！

👉 [ポートフォリオ](https://yushiyamamoto.vercel.app/)
H2 データベースのリカバリー時にデータベースは停止すべきか？

【結論】
H2 のリカバリーコマンドを実行する際は、データベースを停止しておくことが推奨されます。
リカバリー処理は破損したデータファイルを修正または再構築する操作を含むため、データベースが稼働中だと競合が発生する可能性があります。

---

1. リカバリーコマンドとデータベースの停止の関係

【Recover コマンド】
```bash
java -cp h2*.jar org.h2.tools.Recover -dir ./recover -db mydb
```
- **データベースを停止した状態で実行することを推奨**
- `Recover` コマンドは破損したデータベースから `mydb.h2.sql` を生成し、新しいデータベースを作成するのに使われる
- 実行中にデータベースが動いていると、ファイルアクセスの競合が起こる可能性がある

【SCRIPT コマンド】
```bash
java -cp h2*.jar org.h2.tools.Script -url jdbc:h2:file:./mydb -script backup.sql
```
- **データベースが動作していても実行可能**
- ただし、実行中にトランザクションが走っていると、一部のデータが正しくエクスポートされない可能性がある

【SHUTDOWN COMPACT コマンド】
```sql
SHUTDOWN COMPACT;
```
- **データベースを適切に終了し、データを最適化する**
- **このコマンドの前にリカバリーを行う場合は、データベースを停止しておくのが望ましい**

---

2. 公式ドキュメントの推奨
H2 の公式ドキュメントでは、破損したデータベースのリカバリーを行う際には、データベースを停止して実施することを推奨しています。

---

3. 具体的なリカバリー手順

【手順 1: アプリケーションを停止】
```bash
systemctl stop my_app_service  # サービスがある場合
kill -9 $(pgrep -f h2)  # H2のプロセスを手動で停止
```

【手順 2: データベースファイルをバックアップ】
```bash
cp mydb.mv.db mydb_corrupt_backup.mv.db
```

【手順 3: Recover コマンドを実行】
```bash
java -cp h2*.jar org.h2.tools.Recover -dir ./recover -db mydb
```

【手順 4: RunScript で復元】
```bash
java -cp h2*.jar org.h2.tools.RunScript -url jdbc:h2:./newdb -script ./recover/mydb.h2.sql
```

【手順 5: アプリケーションを再起動】
```bash
systemctl start my_app_service
```

---

4. 結論
- **`Recover` を実行する場合 → データベースを停止すべき**
- **`BACKUP TO` や `SCRIPT` でのバックアップ → 稼働中でも実行可能**
- **`SHUTDOWN COMPACT` は停止後に実行するのが望ましい**

**👉 `Recover` を使う場合は、必ず H2 を停止してから実行することを強く推奨！**
それ 詐称されていませんか？

経路間に詐称できる要素があるならそれ自体は信じない方がいいのでは？という例を挙げてみます。

| 事象 | 詐称対象 | 対策 | 注釈
| - | - | - | -
| クライアントサイドのバリデーション | リクエスト内容 | サーバーサイドのバリデーション | ブラウザはユーザの介入でスクリプトは改竄されうるので
| 使った絵がAIだとpixivのページのタグが見えるスクリーンショットがタレコミされた | スクリーンショット | 当該ページを直接確認する | スクリーンショットは改竄可能ですし、相手が見ているWEBページもF12 から改竄可能です（自身の見ているものであれば改竄できないのでそれを信じるべき） 
| 警察官を名乗るものからの電話 | 警察官 | 名前を聞いて 警察署にこちらからかけなおす | オレオレ詐欺にありがち
| Amazon に登録したクレジットカード情報を再入力せよとメールが届き、URLから再入力が促される | Amazon | メール上のURLから飛ばず、直接Amazonからそのページを探す | メールのURLは基本信用するべきではない。直接ページから探せ。いわゆるPhishing詐欺

以上。
2025年最新ガイド：UI/UX、メタタグ、ページ速度、SEOでウェブサイトを成功に導く方法

# UI/UX、メタタグ、ページ速度、SEOを徹底解説！2025年最新ガイド

こんにちは！現役エンジニアでテックブロガーの@YushiYamamotoです。
この記事では、ウェブ制作やデジタルマーケティングにおいて重要な「UI/UX」「メタタグ」「ページ速度」「SEO」について、初心者でもわかりやすいように専門的な内容を盛り込みながら解説します。さらに、具体的な実装例や視覚的な図解を使って、実際のプロジェクトに活用できる情報をお届けします！

---

## **UI/UXの最新トレンド：2025年のデザイン革命**

### **1. インタラクティブな3Dオブジェクト**

インタラクティブな3D要素は、現代のウェブデザインにおいて欠かせない存在です。例えば、製品ページでユーザーが製品を回転させたり、ズームして詳細を確認できる機能は、ユーザー体験を大きく向上させます。

#### 実装例: Three.jsを使用した簡単な3Dモデル表示

```javascript
import * as THREE from 'three';

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();

renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);

scene.add(cube);
camera.position.z = 5;

function animate() {
    requestAnimationFrame(animate);
    cube.rotation.x += 0.01;
    cube.rotation.y += 0.01;
    renderer.render(scene, camera);
}

animate();
```


### **2. Bento Boxデザイン**

日本の弁当箱から着想を得た「Bento Boxデザイン」は、情報を整理しやすく、視覚的にわかりやすいレイアウトです。特にダッシュボードやデータ管理ツールで効果的です。

#### 図解：Bento Boxデザインの例

```
+-------------------+-------------------+
|   ユーザー情報    |   アクティビティ   |
+-------------------+-------------------+
|   設定           |   統計           |
+-------------------+-------------------+
```

---

## **メタタグ：SEO成功の鍵**

メタタグは検索エンジンにウェブページの情報を伝える重要なHTML要素です。適切に設定することで検索結果での可視性が向上し、クリック率が改善されます。

### **1. タイトルタグ**

**ベストプラクティス**:

- 主キーワードを前半に配置
- 50〜60文字以内に収める
- ユーザーが興味を持つ行動語を含める


#### 良い例:

```html
<title>2025年最新SEO戦略 | 成功への完全ガイド</title>
```


### **2. メタディスクリプション**

**ベストプラクティス**:

- 140〜160文字以内
- ページ内容を簡潔に説明
- ユーザー意図に応える内容


#### 良い例:

```html
<meta name="description" content="2025年の最新SEO戦略と技術的最適化方法について詳しく解説します。クリックして成功への道を学びましょう！">
```

---

## **ページ速度：高速化でユーザー体験とSEOを向上**

### **1. 画像最適化**

画像はウェブページの読み込み時間に大きく影響します。以下の方法で最適化しましょう：

- **圧縮ツール**: TinyPNGやImageOptimを使用
- **WebP形式**: JPEGよりも軽量で高品質


#### コード例: Lazy Loading

```html
<img src="image.jpg" loading="lazy" alt="製品画像">
```


### **2. CSS・JavaScriptの圧縮**

コード内の不要なスペースやコメントを削除することでファイルサイズを削減できます。

#### コマンド例: UglifyJSによるJavaScript圧縮

```bash
uglifyjs input.js -o output.min.js
```

---

## **SEO：2025年の成功戦略**

### **1. コンテンツ最適化**

GoogleのE-A-T（専門性・権威性・信頼性）原則が重要です。質の高い長文コンテンツがランキング向上につながります。

#### 実装例: 構造化データ（Schema Markup）

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "2025年最新SEO戦略",
  "author": {
    "@type": "Person",
    "name": "山本勇志"
  },
  "datePublished": "2025-03-14"
}
</script>
```


### **2. ビジュアル検索への対応**

画像検索が主流化する中、画像のalt属性やファイル名も最適化しましょう。

#### 良い例:

```html
<img src="product-blue-shoes.jpg" alt="青い靴の商品画像">
```

---

## **まとめ**

以上がUI/UX、メタタグ、ページ速度、SEOに関する2025年最新情報です。それぞれの要素は互いに関連し合い、ウェブサイトやアプリケーションの成功に寄与します。ぜひこの記事で紹介した技術やトレンドを活用して、自分のプロジェクトを次のレベルへ引き上げてください！🚀

読者のみなさんもぜひコメント欄で質問や意見をシェアしてくださいね！
H2 データベースのバックアップ時にデータベースは停止すべきか？

【結論】
H2 データベースのバックアップ時には基本的に停止しておくことが推奨されます。ただし、H2 にはオンラインバックアップの方法も用意されています。

---

1. 推奨：データベースを停止してバックアップ
最も安全な方法は、H2 データベースを停止した状態で `.mv.db` ファイルをコピーすることです。

【手順】
1. アプリケーションを停止する
2. `.mv.db` ファイルをコピー
3. アプリケーションを再起動

```bash
cp mydb.mv.db mydb_backup.mv.db
```

【メリット】
- データの一貫性が保証される
- 破損のリスクが低い

【デメリット】
- 一時的にシステムを停止する必要がある

---

2. オンラインバックアップ（データベースを動作させたまま）
データベースを停止せずにバックアップを取得する場合、H2 の `BACKUP TO` コマンドを使用するのが最も安全な方法です。

【手順】
```sql
BACKUP TO 'backup.zip';
```

【メリット】
- データベースを停止しなくてもバックアップ可能
- 破損のリスクが低い

【デメリット】
- 一部のトランザクションが未確定の状態で保存される可能性

---

3. スクリプトを利用したバックアップ
データベース全体を SQL スクリプトとしてエクスポートする方法もあります。

【手順】
```bash
java -cp h2*.jar org.h2.tools.Script -url jdbc:h2:file:./mydb -script backup.sql
```

【メリット】
- データベースを停止しなくても取得可能
- テキスト形式のバックアップなので、手動で修正しやすい

【デメリット】
- 大規模なデータベースでは時間がかかる
- インデックス情報などは再構築が必要になる

---

4. 結論
| バックアップ方法 | データベース停止 | メリット | デメリット |
|----------------|--------------|-----------|------------|
| **ファイルコピー** | **必要** | 簡単・確実 | 一時的にDBを停止する必要あり |
| **BACKUP TO コマンド** | 不要 | DB を動かしたままバックアップ可能 | 一部のデータが未確定の状態で保存される可能性 |
| **Script コマンド** | 不要 | テキスト形式で復元しやすい | 大規模なデータベースでは時間がかかる |
Next AuthでLINEログインをしてemailアドレスを取得する方法

Next.jsにNext Authを用いてLINEログインによるユーザー情報の取得をしようとした際にExampleのままに実装するとOpen ID Connectの申請が完了していてもセッションから取得できるユーザー情報にemailが含まれていません。

https://next-auth.js.org/providers/line

デフォルトの設定はこのようになっています
```TypeScript:app/api/auth/[...nextauth]/route.ts
import LineProvider from "next-auth/providers/line";
...
providers: [
  LineProvider({
    clientId: process.env.LINE_CLIENT_ID,
    clientSecret: process.env.LINE_CLIENT_SECRET
  })
]
...
```
この設定でnext-auth/reactの`signIn("line")`を行うとLINEのログインフローを通してリダイレクトしたのちに`getServerSession`からユーザー情報を取得することができます。
しかしその時に取得できる情報は、たとえLINEログインチャンネルがOpen ID Connectの利用申請を提出していたとしてもユーザー名とプロフィールアイコンのみとなっています。

```TypeScript:app/page.tsx
import { getServerSession } from "next-auth";
const Page = async () => {
  const session = await getServerSession();
  console.log("session", session);
  /**
   *session {
   *  user: {
   *   name: 'John Smith',
   *   email: undefined,
   *   image: 'https://profile.line-scdn.net/foo'
   *  }
   * }
   */
}
```

これはNext Authで定義されているLINEのためのProviderのデフォルト設定のスコープに`email`が設定されていないためです。
Next Authは各プロパイダーのデフォルトの設定をエクスポートしていてそれをオーバーライドすることができます。
つまりLINEのためのプロバイダーの設定のスコープに`email`を追加すれば取得できるようになります。

```TypeScript:app/api/auth/[...nextauth]/route.ts
import LineProvider from "next-auth/providers/line";
...
providers: [
  LineProvider({
    clientId: process.env.LINE_CLIENT_ID,
    clientSecret: process.env.LINE_CLIENT_SECRET,
    authorization: {
      params: {
          scope: "profile openid email",
        }
      }
  })
]
...
```
App Serviceのコンテナに パブリック SSL 証明書をダウンロードするコマンド

https://learn.microsoft.com/ja-jp/azure/app-service/tutorial-php-mysql-app

> 手順 4:手順 3 の同じ手順を使用して、次のアプリ設定を作成します。
> MYSQL_ATTR_SSL_CA: /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem を値として使用します。 このアプリ設定は、MySQL サーバーにアクセスするために必要な TLS/SSL 証明書のパスを指すものです。 便宜上、サンプル リポジトリに含まれています。

上記の手順の中で紹介されている `/home/site/wwwroot/ssl`の階層に `DigiCertGlobalRootCA.crt.pem`をダウンロードするコマンドです。

```sh
curl -o /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
```
1から10までを足して遊ぶ。1+2+3+4+5+6+7+8+9+10


- 過去ログを見よ!!!
- sum(サム)「サム」君? サム=合計の事
- M5NanoC6での予定は、未定


# 目的
統計の計算とかでつかう

# 単純計算
コンパイラの最適化が効くので事前に計算されている。

```c++
sum = 1+2+3+4+5+6+7+8+9+10;
```

# ループで計算

```c++
#include <iostream>
using namespace std;
int main(void){
    // Your code here!
    int sum = 0;
    for(int i=1;i<=10;i++){
        sum = sum + i;
    }
    printf("%d\n",sum);
}
```

```:実行結果
55
```

# 先からと後からを足して2で割る

```
 1 +  2 +  3 +  4 +  5 +  6 +  7 +  8 +  9 + 10 = 55
10 +  9 +  8 +  7 +  6 +  5 +  4 +  3 +  2 +  1 = 55

11 + 11 + 11 + 11 + 11 + 11 + 11 + 11 + 11 + 11 = 11 * 10 = 110

110 / 2 = 55
```

```c++
sum = (1 + 10) * 10 / 2;
```
PythonでFreeCADのスライダーモデルを駆動する

## FreeCAD アセンブリワークベンチ
無料で使用できる3D-CAD：FreeCADのサンプルモデルがあります．
[Assembly]: https://wiki.freecad.org/Assembly_Workbench/ja/
ここには，スライダーモデルをマクロ機能（Python）で駆動させる手順が示されています．
![drive_crank.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1979979/4b2fa861-0333-6242-393c-9972c6f91714.gif)
サンプルをそのまま動かすだけでは，つまらないので
Pythonスクリプトを少し改良してみます．
```drive_crank_mod.py
import math
import FreeCAD as App
import FreeCADGui as Gui

actuator = App.ActiveDocument.getObjectsByLabel("Fixed")[0]

for i in range(2):
	for angle in range(0, 46, 5):
	    actuator.Offset1.Rotation.Angle = math.radians(angle)
	    App.ActiveDocument.recompute()
	    Gui.updateGui()
	
	for angle in range(45, -46, -5):
	    actuator.Offset1.Rotation.Angle = math.radians(angle)
	    App.ActiveDocument.recompute()
	    Gui.updateGui()
	
	for angle in range(-45, 1, 5):
	    actuator.Offset1.Rotation.Angle = math.radians(angle)
	    App.ActiveDocument.recompute()
	    Gui.updateGui()
```
このPythonスクリプトのポイントは，
１．パッケージ３つをインポート
２．モデルのラベル名で駆動ジョイントを定義：
　　回転ジョイントのラベルが"Fixed"となっていること
３．回転駆動を２回させる
４．駆動角度は，（初期角度，終了角度，ステップ）として与え，
　　終了角度値は，終了角度よりも少し超えた値としないと，
  　終了角度よりも１ステップ分手前の角度で終わってしまう．

![drive_crank_mod.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1979979/343a3628-1ae0-6505-1f76-9bce80363ba3.gif)
２つの関数が同じ入力なら同じ結果を返すことを保障するテストフレームワーク

IntelからOpenPOWERにポートする作業について記述してきたが、一つ必要なものがある。C言語において、２つの関数が同じ入力なら同じ結果を返すことを保障するテストフレームワークである。

例えば、以下のソースコードを見て欲しい。

```c
extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__,__artificial__))
_mm_add_pd (__m128d __A, __m128d __B)
{
   return (__m128d) ((__v2df)__A + (__v2df)__B);
}
```

このソースコードは、_mm_add_pdというIntelのIntrinsic関数をOpenPOWERにポートしたものだが、このポートには一つ問題がある。

このソースコードは本当に正確な結果を返すのだろうか。

１つ２つ動作確認しても本当に正しいかどうかわからない。

ここで必要なものは、ランダムに生成した値をIntelとOpenPOWERの__Aと__Bに入力し、帰ってきた値がIntelとOpenPOWERで同じであるかどうかのチェックを自動的に行うテストフレームワークである。

今のところそういうテストフレームワークは存在しない。

今回は＿＿Aにはいる型はベクトル型である。Intel固有の型であるため、OpenPOWERやRISC-Vでは構造体として定義してやる必要がある。

以下はちょっと違う型であるが、OpenPOWERでは以下のように定義する。

```c
/* Internal data types for implementing the AVX in PowerISA intrinsics.　*/
typedef struct __v4df
{
__vector double vd0;
__vector double vd1;
} __vx4df;

/* The Intel API is flexible enough that we must allow aliasing with other
vector types, and their scalar components. */
typedef struct __m256d
{
__vector double vd0;
__vector double vd1;
}__attribute__ ((__may_alias__)) __m256d;
```

Intel側で、__m128dをテキストに変換してファイルとして格納し、OpenPOWERやRISC-V側でC言語の型に戻す処理が必要となる。ネットワークでリアルタイムにつなぐ必要はなく、ファイル転送で十分対応できる。
定義そのものが違うのと、アラインメントも考えないといけないので、一筋縄では行かない。

あと、Intel側で例外が出たときも、理想的にはOpenPOWER及びRISC-Vで同じ例外が出るのが良いので、Intelで作るファイルに例外が出たことを記録しておくのが良い。そこでテストが止まるのはよくない。

Intelで「ある程度」ランダムに値発生させて、値を場合によってはフィルターして、IntelのIntrinsic関数に入れて、戻り値と入力値のペアの集合をファイルに保存する。例外が発生した時は、例外が発生したことをファイルに保存して、次の値を、ファイルに格納する作業を再開する。

OpenPOWERおよびRISC-Vに同じIntelのIntrinsic関数をポートしたソースコードに値を入れて、ファイルに「例外が発生したよ」と書いてある場合は、同じ種類の例外が発生することを確認して、テストを続行。

ファイルはストレージに保存して移動。

C言語でIntelのIntrinsicをRISC-Vにポートしたモジュール作って、それにコマンドから値を受け渡す機構を作る。で、コマンドでそれをコントロールする機構をC言語かC言語以外で作る。

ということで、これからもやっていこうかと思う。
個人的備忘録：信頼性の高いシステムを作るためのSREの考え方と実践をChatGPTと話し合いながらまとめてみた

## はじめに
近年、SRE（Site Reliability Engineering）の重要性が高まり、多くの企業で導入が進んでいます。

:::note info
***私自身もインフラ運用やシステムの信頼性向上に関心があり、SREの考え方やツールについて整理したいと考えました。***
:::

本記事では、SREの概要や主要な役割、使用されるツールについて分かりやすくまとめます。

## SRE（Site Reliability Engineering）とは

SRE（Site Reliability Engineering）は、Googleが提唱したソフトウェアエンジニアリングのアプローチであり、システムの信頼性やスケーラビリティを向上させることを目的としています。

SREは運用業務を自動化し、ソフトウェアエンジニアリングの手法を適用することで、信頼性の高いシステムを維持・改善します。

## SREの主な役割
1. **システムの信頼性確保**
   - サービスの可用性を向上させる
   - 障害発生時の迅速な復旧
   
2. **運用の自動化と効率化**
   - 手作業による運用を減らし、自動化を推進
   - CI/CDパイプラインの最適化

3. **パフォーマンスの最適化**
   - システムのスケーラビリティを確保
   - パフォーマンスボトルネックの特定と解決

4. **モニタリングとアラート管理**
   - 適切なメトリクスを設定し、監視を強化
   - インシデント対応のプロセスを最適化

## SREが使用する主要なツール
### 1. **モニタリング・アラート管理**
- **Prometheus**: 時系列データの収集・分析を行うオープンソースの監視ツール
- **Grafana**: ダッシュボードを作成し、Prometheusなどのデータを可視化
- **Datadog**: クラウドベースの監視ツールで、インフラ・アプリケーションの監視が可能
- **New Relic**: パフォーマンス監視、エラートラッキング、分散トレーシング

### 2. **ロギング**
- **ELK Stack（Elasticsearch, Logstash, Kibana）**: ログデータを収集・分析し、可視化するツール
- **Fluentd**: 多様なログの収集・転送を行う
- **Loki**: 軽量なログ管理システム、Grafanaと統合可能

### 3. **オーケストレーション・自動化**
- **Kubernetes**: コンテナ化されたアプリケーションの管理を行う
- **Terraform**: インフラの構成をコード化し、自動管理
- **Ansible**: 構成管理ツールとして、サーバー設定やデプロイの自動化を実現
- **Jenkins**: CI/CDの自動化ツール
- **GitHub Actions**: GitHub上でCI/CDを実行

### 4. **障害対応・インシデント管理**
- **PagerDuty**: インシデント対応の通知や管理を行う
- **Opsgenie**: アラートのエスカレーションやオンコール管理
- **Statuspage**: サービスのステータスページを公開し、ユーザーへの通知を自動化

### 5. **パフォーマンス・キャパシティプランニング**
- **Google Cloud Operations Suite (旧Stackdriver)**: Google Cloud環境向けの監視・ロギングツール
- **AWS CloudWatch**: AWS上のリソースやアプリケーションを監視
- **Jaeger**: 分散トレーシングツールで、リクエストの流れを可視化
- **Zipkin**: 同様に分散トレーシングを行い、パフォーマンス問題を特定

## SREの文化と考え方
### 1. **SLI/SLO/SLAの定義**
- **SLI（Service Level Indicator）**: サービスのパフォーマンスを測る指標（例: レイテンシ、エラーレート）
- **SLO（Service Level Objective）**: SLIの目標値（例: 99.9%のアップタイム）
- **SLA（Service Level Agreement）**: 契約レベルで保証する可用性

### 2. **エラーバジェットの活用**
エラーバジェットは、システムの許容可能なダウンタイムを示し、開発と運用のバランスを取るために使用されます。例えば、99.9%のSLOが設定されている場合、年間のダウンタイム許容時間は約8時間となります。

### 3. **ポストモーテムと学習文化**
SREでは、障害発生後にポストモーテムを作成し、再発防止策を立てることが重要です。この際、個人を責めるのではなく、システムやプロセスの改善に焦点を当てる文化が推奨されます。

## まとめ
SREは、ソフトウェアエンジニアリングの手法を活用し、システムの信頼性とスケーラビリティを向上させることを目的としています。

:::note warn
**モニタリング、ロギング、自動化、インシデント管理などの多様なツールを活用しながら、SLI/SLO/SLAの管理やエラーバジェットの考え方を取り入れることで、効率的な運用を実現します。**
:::

SREを導入することで、システムの安定性が向上し、エンジニアが本来の開発業務に集中できる環境が整います。
AWS プレフィックスリストと保守容易性

# はじめに
AWSでEC2などのリソースを作成する場合に、
そのリソースに対して特定のIPからのみアクセス出来る様にする形で配置しようとすると、
Network ACLやSecurity Groups等でCIDRを限定する事があると思います。

Security Groupsを中心に利用する場合、ルールに対してCIDRを追加しても良いですが、
ルールに対してプレフィックスリストを適用する事で、
柔軟で保守容易性に優れた形でCIDRを管理する事が可能になります。

# プレフィックスリストとは？
AWSプレフィックスリストはCIDRをまとめて管理する事が出来る様になる、
AWSにおけるリソースの一つです。

VPCのダッシュボードのサイドバーにある「マネージドプレフィックスリスト」から
実際に確認する事が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737208/7ed9e777-52d2-416a-9038-c17c878a8440.png)

AWSが管理して作成されている「AWSマネージドプレフィックスリスト」の他に、
自ら「カスタマーマネージドプレフィックスリスト」を作成する事も可能です。

カスタマーマネージドプレフィックスリストでは、
以下の様に自ら管理するCIDRをまとめて格納しておくことが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737208/8943f44d-854e-4d17-818d-ed4963f386a8.png)

Security Groupの他に、Route Tableへの割り当ても可能になっています。

# どういう局面で有効か
プレフィックスリストの主な用途はSecurity Groupsになると思いますが、
特に複数の拠点がある様な場合に効果を発揮します。

## Security GroupsにCIDRを割り当てる場合
以下に例を挙げます。
まず、3つの拠点があるとして、それらの拠点から接続できるEC2が3つあると考えます。
EC2にはそれぞれ異なるSecurity Groupsを割り当てるとしました。

それらの依存関係は以下の様になります。

![prefixList01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737208/ffab519e-1edc-4056-bbcd-becbc8ac3f08.jpeg)

実際には見た目程複雑な設定ではありませんが、図にすると大分複雑に見えます。

ここで、拠点XのIPが変更になった場合を想定します。
拠点XのIPが変更になった場合、影響範囲は以下の様になります。

![prefixList02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737208/edf8c034-c15f-4084-8f41-fdb2f0dc10cd.jpeg)

この場合、EC2毎に割り当てられている全てのSecurity Groupsを変更する必要があります。

これらのSecurity GroupsのルールのCIDRの一覧が適切に管理されていて、
かつ見落としなく作業出来るなら問題は無いかもしれませんが、
例えばこのSecurity Groupsがもっと多かった場合を考えた時、
保守の管理の面から言えば、この手法はあまり適切で無いかもしれません。

この様な構成において、Security Groupsに対してプレフィックスリストを適用していると、
依存関係は以下の様になります。

![prefixList03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737208/66f624a5-84d0-47b5-843a-ff057942e078.jpeg)

先程と同様に拠点XのIPが変更になった場合を考えると、影響範囲は以下の様になります。

![prefixList04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737208/edc04198-33f3-43cd-8257-074b27e8da52.jpeg)

上の図のように、拠点に関するCIDRの変更影響範囲を極小化させる事が可能になります。
これは**CIDRの変更や追加に対して柔軟である**構成と考える事が出来ます。

## 保守容易性
プレフィックスリストは、**保守容易性**を向上させる為のツールの一つとなります。

今回の様にIP(CIDR)という具体的なアイテムを取り扱う際に、
プレフィックスリストをインターフェースとして取り扱う事で、
「抽象化による柔軟性の確保」を行う事が出来ます。
設計思想という観点からすれば「依存関係逆転の法則」に近しい、と考える事も可能です。

プレフィックスリストは再利用性も高く、
バージョン管理によって復元を行える事も大きなメリットと成り得ます。
terraformやCloudFormationなどのIaCとも相性が良いです。

# おわりに
今回は複数のCIDRを指定するケースを例に挙げましたが、
単独のCIDRを指定する様なケースであってもプレフィックスリストを経由する事で、
変更に対する柔軟性を確保する事が出来ます。

設定の一貫性を確保したり、人的ミスを防ぐなど、
保守容易性を向上させることで得られるメリットは運用面において非常に大きいです。
長くクラウドを運用する事を考慮した時には保守容易性の向上についても、
システムの中に考慮すると運用が非常に楽になるかと思います。
個人的備忘録：インフラエンジニア・SRE・DevOpsエンジニアに向いている人の性格についてChatGPTと話し合いながらまとめてみた

## はじめに

IT業界にはさまざまな職種が存在しますが、特にインフラエンジニア、SRE（Site Reliability Engineer）、DevOpsエンジニアは、システムの安定性や効率化に大きく貢献する職種です。

:::note info
**それぞれに求められるスキルは異なりますが、向いている性格や人間的な特性には共通点や違いが存在します。**
:::

本記事では、それぞれの職種に適した性格について掘り下げていきます。

## **書こうと思ったきっかけ**  

### **1. IT業界におけるキャリア選択の悩みを持つ人が多い**  
ITエンジニアのキャリアにはさまざまな選択肢がありますが、「どの職種が自分に向いているのか？」という疑問を持つ人は少なくありません。特に **インフラエンジニア、SRE、DevOpsエンジニア** は業務内容が密接に関連しており、それぞれの違いや求められる適性を知ることで、自分に合ったキャリアを見つけやすくなると考えました。  

### **2. 「向いている性格」を知ることで、適職選びの参考にしてほしい**  
技術スキルは学習すれば身につけられるものですが、**性格的な適性は後天的に変えにくい部分もあります**。そのため、スキル面だけでなく **「どんな性格の人が活躍しやすいか？」** という視点から解説することで、より実感を持って職種の違いを理解できると思いました。  

### **3. SRE・DevOpsエンジニアの認知度がまだ低いと感じた**  
インフラエンジニアの役割は比較的一般的に知られていますが、**SRE や DevOps エンジニアは比較的新しい職種** であり、特に初心者や未経験者にはなじみが薄いことが多いです。そのため、これらの職種について **「どんな人が向いているのか？」** を説明することで、より多くの人に関心を持ってもらいたいと考えました。  

### **4. ITスクールの学習者やハッカソン参加者に役立つ情報になりそう**  
現在、ITスクールに通っていたり、ハッカソンに参加したりしている人が増えており、そのような学習者にとって、将来どの分野に進むかを考えるきっかけになればと思いました。特に **SRE や DevOps** は、**プログラミングスキルだけでなくシステム全体を俯瞰する力も求められるため**、早い段階で関心を持つことがキャリア形成に役立つと考えました。  

## インフラエンジニアに向いている人の性格

### **① 安定志向で責任感が強い**
インフラエンジニアは、企業のシステムやネットワークの基盤を支える役割を担います。そのため、安定性を重視し、長期的な視点で考えられる人が向いています。また、トラブルが発生した際には迅速に対応しなければならないため、責任感が強く、プレッシャーに耐えられる人が適しています。

### **② コツコツと作業を進められる**
インフラ構築や運用には、細かい設定や地道な作業が必要不可欠です。そのため、飽きっぽい人よりも、一つひとつの作業を着実にこなせるタイプの人に向いています。

### **③ 論理的思考が得意**
ネットワークやサーバーの障害を解析し、原因を特定する能力が求められるため、論理的思考が得意な人が活躍しやすいです。

## SREに向いている人の性格

### **① 問題解決が好きで、自動化に興味がある**
SREは「システムの信頼性を高める」ことを目的とするため、障害対応だけでなく、根本的な問題解決やシステムの最適化に関心がある人が向いています。また、手作業を減らすための自動化（Infrastructure as Codeなど）に興味を持てる人も適性が高いです。

### **② 好奇心旺盛で新しい技術を試すのが好き**
SREはGoogleが提唱した比較的新しい職種であり、クラウド技術やコンテナ、オブザーバビリティ（監視・ログ分析）といった最新技術を駆使する場面が多いです。そのため、新しい技術を試すことが楽しいと感じる人に向いています。

### **③ 精神的にタフで冷静に対応できる**
システムの障害対応は避けられないため、緊急時にも冷静に対処できるメンタルの強さが求められます。また、「100%の信頼性はあり得ない」という考えを理解し、リスクを適切に管理できる人が適しています。

## DevOpsエンジニアに向いている人の性格

### **① 開発と運用の橋渡しができるコミュニケーション力**
DevOpsエンジニアは、開発チームと運用チームの間に立ち、両者を円滑に連携させる役割を担います。そのため、コミュニケーションが得意で、開発者とインフラエンジニアの双方の視点を持てる人が向いています。

### **② 効率化が好きで、仕組みづくりに興味がある**
DevOpsは「継続的インテグレーション／継続的デリバリー（CI/CD）」などを通じて、ソフトウェア開発のスピードを上げることを目的としています。そのため、手作業を減らしてプロセスを自動化し、システムの効率化を図るのが好きな人が向いています。

### **③ 柔軟で適応力が高い**
DevOpsエンジニアの業務範囲は広く、使用する技術も多岐にわたるため、特定の技術にこだわりすぎず、柔軟に対応できる人が活躍しやすいです。また、アジャイル開発の文化を理解し、変化に適応できることも重要です。

## まとめ

| 職種 | 向いている性格・特性 |
|------|----------------|
| インフラエンジニア | 安定志向、責任感が強い、論理的思考が得意、コツコツ作業ができる |
| SRE | 問題解決が好き、自動化に興味がある、新しい技術が好き、冷静な対応ができる |
| DevOpsエンジニア | コミュニケーションが得意、効率化が好き、柔軟で適応力が高い |

インフラエンジニア、SRE、DevOpsエンジニアは、それぞれ異なる役割を持ちますが、システムの安定性や効率性を支える重要な職種です。

自身の性格や興味に合った職種を選ぶことで、より楽しく、やりがいを持って働くことができると思います。
debeziumで__debezium_unavailable_valueが出た時の解決方法

## はじめに

長すぎるカラムの場合、`__debezium_unavailable_value` が入ってしまう

## 対応方法

```json
  "post.processors": "reselector", 
  "reselector.type": "io.debezium.processors.reselect.ReselectColumnsPostProcessor", 
  "reselector.reselect.columns.include.list": "<schema>.<table>:<column>,<schema>.<table>:<column>", 
  "reselector.reselect.unavailable.values": "true", 
  "reselector.reselect.null.values": "true",
  "reselector.reselect.use.event.key": "false" 
```

## Ref

https://debezium.io/documentation/reference/stable/post-processors/reselect-columns.html#_configuration_options
個人的備忘録：インフラエンジニア、SRE、DevOpsエンジニアの違いと役割をChatGPTと話し合いながらまとめてみた

## **はじめに**

近年、IT業界においてシステムの安定運用や効率的な開発・運用プロセスの実現がますます重要視されています。

:::note warn
***特にクラウド環境の普及により、インフラエンジニア、SRE、DevOpsエンジニアの役割が明確化し、それぞれの専門性が求められるようになっています。***
:::

**本記事では、これらの職種の違いや役割、必要な技術について解説します。**

## **インフラエンジニアとは？**

**役割**
インフラエンジニアは、企業や組織のIT基盤を支えるサーバーやネットワークの設計・構築・運用・管理を担当するエンジニアです。

:::note info
**オンプレミス環境だけでなく、クラウド環境の利用も一般的になっています。**
:::

**主な業務内容**
- サーバーの設計・構築・管理（Linux, Windows Server）
- ネットワークの設計・運用（ルーター、スイッチ、ファイアウォールの設定）
- クラウド環境（AWS, GCP, Azure）の設計・運用
- 監視システムの導入・運用
- セキュリティ対策の実施

**使用する主な技術・ツール**
- **クラウド**: AWS, GCP, Azure
- **OS**: Linux, Windows Server
- **ネットワーク機器**: Cisco, Juniper
- **監視ツール**: Zabbix, Nagios

## **SRE（Site Reliability Engineer）とは？**

**役割**
SREは、Googleが提唱したエンジニアリング手法で、システムの信頼性（Reliability）を向上させることを主な目的としています。

:::note info
**インフラの管理だけでなく、監視や自動化を重視し、開発と運用の両方に関与します。**
:::

**主な業務内容**
- システムの可用性・信頼性向上のための施策
- 監視システムの導入・運用（Datadog, Prometheusなど）
- インシデント対応とポストモーテムの実施
- SLA（Service Level Agreement）やSLO（Service Level Objective）の定義・運用
- 運用の自動化・最適化（スクリプトやCI/CDパイプラインの構築）

**使用する主な技術・ツール**
- **監視ツール**: Datadog, Prometheus, Grafana
- **CI/CDツール**: Jenkins, GitHub Actions, GitLab CI/CD
- **コンテナ・オーケストレーション**: Kubernetes, Docker
- **IaC（Infrastructure as Code）**: Terraform, Ansible

## **DevOpsエンジニアとは？**

**役割**
DevOpsエンジニアは、開発（Development）と運用（Operations）の橋渡しをする役割を担います。

:::note info
**SREと似ていますが、より開発プロセスの最適化やCI/CDパイプラインの構築・管理にフォーカスする点が特徴です。**
:::

**主な業務内容**
- CI/CDパイプラインの構築・運用（Jenkins, GitHub Actions, GitLab CI/CD）
- インフラのコード化（Infrastructure as Code: Terraform, Ansible）
- クラウド環境の最適化と自動化（AWS, GCP, Azure）
- コンテナ技術（Docker, Kubernetes）を活用したシステムの構築・運用
- マイクロサービスアーキテクチャの導入・管理

**使用する主な技術・ツール**
- **コンテナ技術**: Docker, Kubernetes
- **IaC（Infrastructure as Code）**: Terraform, Ansible, CloudFormation
- **CI/CDツール**: Jenkins, GitHub Actions, GitLab CI/CD
- **クラウド**: AWS, GCP, Azure

## **まとめ：インフラエンジニア・SRE・DevOpsエンジニアの違い**
|  | インフラエンジニア | SRE | DevOpsエンジニア |
|---|---|---|---|
| **主な目的** | システムの構築・管理 | システムの信頼性向上 | 開発と運用の連携・最適化 |
| **監視・運用** | 監視システムの導入・運用 | 監視・インシデント対応・自動化 | CI/CDパイプラインの最適化 |
| **使用技術** | Linux, AWS, GCP, ネットワーク機器 | Datadog, Prometheus, Kubernetes | Docker, Kubernetes, Terraform, Ansible |
| **自動化のレベル** | 手作業が多い | 高度な自動化を実施 | IaC・CI/CDによる自動化 |

インフラエンジニア、SRE、DevOpsエンジニアはそれぞれ異なる目的を持ちつつも、システムの安定運用を実現するために欠かせない存在です。

***企業やプロジェクトによって求められるスキルは異なりますが、これらの分野の知識を深めることで、より柔軟で信頼性の高いシステムを構築・運用できるようになります。***
クロスアカウントのカスタムイベントバスを作ってみる。

## はじめに

今回はイベントバスのアクセス許可周りを見てみます。

https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-event-bus-perms.html

## イベント送信できるのは同一アカウントのみ。

初期状態では、イベント送信できるのは同一アカウントのみとのことなので、動作確認してみます。

適当なカスタムイベントバス`Cross-Account-Bus`をアカウントAに作ってみます。

![スクリーンショット 2025-02-18 4.13.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3894042/be2d67d3-59f0-4551-85a7-3d15f65d01b6.png)

アカウントBでCLIを利用し、アカウントAのカスタムイベントバスにイベント送信(put-events)してみます！

```console
aws events put-events \
  --entries '[{
    "Source": "custom.application",
    "DetailType": "paid",
    "Detail": "{\"payment_number\": \"00001\"}",
    "EventBusName": "arn:aws:events:ap-northeast-1:AAAAAAAAAAAA:event-bus/Cross-Account-Bus"
  }]' \
  --region ap-northeast-1
```

確かに以下のようなエラーが出ました。

```
An error occurred (AccessDeniedException) when calling the PutEvents operation: User: arn:aws:sts::BBBBBBBBBBBB:assumed-role/AWSReservedSSO_AdministratorAccess_27a704c6bb0e0488/chelky is not authorized to perform: events:PutEvents on resource: arn:aws:events:ap-northeast-1:AAAAAAAAAAAA:event-bus/Cross-Account-Bus because no resource-based policy allows the events:PutEvents action
```

`no resource-based policy allows the events:PutEvents action`とあり、リソースベースのポリシーで許可されていないよ。って感じです。

## リソースベースのポリシーを設定してみる。

エラーの通り、リソースベースのポリシーを設定してみます。

`テンプレートをロード`機能があるので、作成は簡単です。

![スクリーンショット 2025-02-18 4.27.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3894042/be038295-ded0-4d91-8c78-3b56c9d442b4.png)

こんな感じで設定してみました。

```
{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "AllowAccountToPutEvents",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::BBBBBBBBBBBB:root"
    },
    "Action": "events:PutEvents",
    "Resource": "arn:aws:events:ap-northeast-1:853835738220:event-bus/Cross-Account-Bus"
  }]
}
```

## 動作確認

リソースベースのポリシーを設定後、再度アカウントBからイベントを送信すると、無事イベント送信できました！

![スクリーンショット 2025-02-18 4.33.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3894042/3cd0b125-afa1-4c2b-9f30-36cb5405d58d.png)

## 最後に

簡単な記事でしたが、カスタムイベントバスとリソースベースのポリシーを触ることができました！
個人的備忘録：チーム開発における役割とは？各ポジションの役割を体系的にChatGPTと整理してみた

## **はじめに**  
チームで開発を進める際には、さまざまな役割が存在し、それぞれの専門性を活かしてプロジェクトを成功に導きます。

:::note info
**開発の現場では、フロントエンドやバックエンドのエンジニアだけでなく、インフラや品質保証、デザイン、プロジェクト管理など、多くの職種が関わります。**
:::

本記事では、それぞれの役割について詳しく解説します。

## **書こうと思ったきっかけ**  
チーム開発を進める中で、自分やチームメンバーがどのような役割を担うのかを明確に理解することは、プロジェクトの円滑な進行に欠かせません。

:::note warn
***特に、ハッカソンのような短期間で成果を出す場面では、各メンバーがどのポジションを担当し、どのように連携すればよいのかを把握することが重要になります。***
:::

そこで、開発チームの役割を整理し、それぞれのポジションがどのような仕事をするのかをまとめました。

## **チーム開発の主な役割**  

### **開発系**  
- **フロントエンドエンジニア**  
  ユーザーが直接触れる部分（UI/UX）を開発し、デザインを形にする。主な技術はHTML, CSS, JavaScript（React, Vue.js, Angularなど）。  
- **バックエンドエンジニア**  
  アプリのビジネスロジックやデータベースとのやり取りを担当。Python（Django, Flask）、Node.js、Java（Spring Boot）などを使用。  
- **フルスタックエンジニア**  
  フロントエンドとバックエンドの両方を担当し、システム全体を開発できる。  
- **モバイルエンジニア**  
  スマホアプリ（iOS, Android）の開発を担当し、Swift, Kotlin, React Native, Flutterなどを活用。  

### **インフラ系**  
- **インフラエンジニア**  
  サーバーやネットワーク、クラウド環境の構築・管理を担当。AWS, GCP, Azure, Linuxなどを活用。  
- **SRE（Site Reliability Engineer）**  
  システムの信頼性を向上させ、監視や自動化を行う。Datadog, Prometheus, CI/CDツールを使用。  
- **DevOpsエンジニア**  
  開発と運用の橋渡しをし、CI/CDの最適化を担当。Docker, Kubernetes, Terraform, Ansibleなどを活用。  

### **企画・デザイン系**  
- **プロダクトマネージャー（PM）**  
  プロジェクトの方向性を決め、ビジネス視点で意思決定を行う。  
- **スクラムマスター**  
  アジャイル開発の進行をサポートし、チームの生産性向上を図る。  
- **UI/UXデザイナー**  
  ユーザーが使いやすいデザインを設計し、Figma, Adobe XD, Sketchなどのツールを活用。  

### **品質・テスト系**  
- **QAエンジニア（品質保証）**  
  システムのテストを行い、バグを発見・修正する。Selenium, Cypressなどを活用。  
- **セキュリティエンジニア**  
  アプリやシステムのセキュリティ対策を担当し、OWASP, Penetration Testing, WAFなどの知識を活かす。  

### **運用・サポート系**  
- **カスタマーサポート（CS）**  
  ユーザーからの問い合わせ対応やフィードバックの収集を行う。  
- **データエンジニア**  
  データの収集・分析基盤を構築し、BigQuery, Redshift, SQL, Pythonを活用。  

## **まとめ**  
チーム開発では、それぞれの役割が明確に分担され、連携することでプロジェクトを成功へと導きます。

:::note info
**小規模なチームでは一人が複数の役割を兼任することもありますが、大規模な開発では専門性を活かし、それぞれのポジションが協力することが重要です。**
:::

自分の得意分野を活かしつつ、チーム全体の役割を理解することで、スムーズな開発が可能になります。
2025/2/18主にITとかセキュリティの記事

DOGE.gov緊急事態｜米政府効率化省のウェブサイトに重大な脆弱性、誰でもデータベース編集可能に(2/15)
https://innovatopia.jp/cyber-security/cyber-security-news/47971/

仮想通貨ウォレットが標的に？新型マルウェア「SparkCat」がGoogle Play・App Store経由で拡散(2/15)
https://bittimes.net/news/196053.html

サム・アルトマンCEOが「GPT-4.5」と「GPT-5」のロードマップを明らかに／AMD製CPUに脆弱性(2/16)
https://news.yahoo.co.jp/articles/9737cb706153d0f2b3beb6a82752c62cfa6304d5

北朝鮮の脅威グループがDropboxを悪用してサイバー攻撃、注意を(2/16)
https://news.mynavi.jp/techplus/article/20250216-3129071/

Dockerfileセキュリティ完全ガイド ｜脆弱性を防ぐ10のベストプラクティス(2/15)
https://zenn.dev/fuuji/articles/426a8ca994607b

大分みらい信用金庫のキャンペーンサイトへ荒らし投稿が発生(2/16)
https://rocket-boys.co.jp/security-measures-lab/oitamirai-bank-campaign-site-attack/

身代金は払いません。ランサムウェアの被害額が減ってきている(2/16)
https://www.gizmodo.jp/2025/02/a-lot-of-people-just-refused-to-make-ransomware-payments-in-2024-report.html

バレンタインデーに注意して、カスペルスキーはオンラインでギフトを買い物するときに詐欺を見つけます(2/14)
https://voi.id/ja/teknologi/460075

デジタル化とAI活用　宮城和美（りゅうせき常務取締役） ＜仕事の余白＞(2/16)
https://ryukyushimpo.jp/news/economics/entry-3969063.html

米国 NIST IR 8356 デジタルツイン技術におけるセキュリティと信頼の考慮点 (2025.02.14)(2/16)
http://maruyama-mitsuhiko.cocolog-nifty.com/security/2025/02/post-11cc67.html

賃金デジタル払いの今とこれから──普及に向けた課題解決のヒント(2/15)
https://www.manegy.com/news/detail/10991/

能動的サイバー　重大な被害を未然に防止せよ(2/16)
https://www.yomiuri.co.jp/editorial/20250215-OYT1T50179/
NEC UNIVERGE IX2105 ルータ　ファームウェア　アップデート 

# 環境
- NEC UNIVERGE IX2105
-- PC→USBシリアルケーブル→IX2105コンソールポート
-- GE0とPCを接続
- PCでTFTPD64 windows　を準備
- PC側のNICを　192.168.0.1　にする

# PCでTFTPD64を実行
-- ファイル置き場を決定
-- NICを選択
-- TFTPD64 に rapファイルを置いておく　(ix2105-boot-19.1-gate-ms-10.2.42.rap)

# 初期化
~~~
電源投入して、起動中にCtrl+C
cc
b
~~~

## GE0の設定

~~~
configure
interface GigaEthernet0.0
ip address 192.168.0.254/24
noshutdown
exit
~~~

## アップデート

~~~
software-update tftp://192.168.0.1/ix2105-boot-19.1-gate-ms-10.2.42.rap
exit                                                            
reload  
~~~
競プロ日記#25/02/18

# アルゴ式-[単純グラフ](https://algo-method.com/tasks/de9e3737bb05069d/editorial)
- 頂点数がXの単純無向グラフの辺の最大値は「考えられうる全ての頂点の組み合わせに対して辺が張られている場合」→「全ての頂点から 2 つの数を選ぶ場合の数と等しいのでxC₂」で求められる

# アルゴ式-[友達](https://algo-method.com/tasks/411)
- for文でN個の文字列をN個の要素を持つ配列に入れていく
```
    int N , A, B;
    cin >> N >> A >> B;

    vector<string> S(N);

    for (int i  = 0;i < N;i++){
        cin >> S.at(i);
    
```

- あとは配列のA番目の要素文字列のB番目の文字が'o'か'x'かっでｈ
```
    if (S.at(A).at(B) == 'o'){
        cout << "Yes" << endl;
    }else{
        cout << "No" << endl;
    }
```
MIT App InventorのListViewに画像を入れる

## はじめに
MIT App Inventorで誰しもがチャットアプリを作ってみようかなぁと思ったことがあるでしょう．
LineやInstaには左側にアイコンが縦方向に並んでおり，その右側に名前があります．これの作成方法をメモしておきたく，ここにまとめた．

## デザイナー画面
![スクリーンショット 2025-02-18 020435.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3928359/c420e71e-0c9d-416a-8199-1a0053156db5.png)


| 機能 | 内容 |
|:-:|:-:|
|ListView|左側に画像，右側にテキストを表示|
|Button1|ListViewにテキストと画像を追加|
|Button2|ListViewにテキストと画像を追加|

ListViewのPropatiesで表示させるコンテンツ（MainText, DetailText, Image）を変更できる．
![スクリーンショット 2025-02-18 020841.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3928359/26cb1c4e-6990-4489-8412-b6fe216295ab.png)


## ブロック画面
![スクリーンショット 2025-02-18 021012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3928359/aebc958f-6cd0-4ae5-ba9f-ee26d9cda7c2.png)

:::note info
**メモ**
Button2だけでも動く
:::

## 実行画面
**Image, MainText, DetailText, (Vertical)**
![Screenshot_20250218-021040.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3928359/9be459c5-5d4d-4973-ac51-e0674ac9bd12.png)

**MainText, DetailText, (Vertical)**
![Screenshot_20250218-021059.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3928359/97124752-af04-4498-b994-412374d22e09.png)

**Image, MainText, (Vertical)**
![Screenshot_20250218-021126.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3928359/1e01d39f-7e46-4897-aa48-1af7851ae08a.png)

**Image, MainText, (Horizontal)**
![Screenshot_20250218-021300.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3928359/7eefa999-b3b6-4345-8406-5a8b8c1538d8.png)


## おわりに
ListView内のPropatiesにOrientationがあり，アプリの幅が広がりそう．
メニューバーに常駐型のアプリのアイコンが現れない原因を探る（mac）

こんにちは。
メニューバーに、メニューバー常駐型のアプリのアイコンの一つが現れないことに気がつきました。Activity Monitor で確認すると動いているのにも関わらずです。余白の位置に当然現れるとユーザは予期するので戸惑います。

![menu_bar.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54617/fd87a906-cab0-424d-8dec-2b58541343c6.jpeg)

原因は表示可能なアイコンの数が上限(?)を超えたためと推測しました。

解決法として、他の常駐型プロセスを終了すれば（Activity Monitor 利用など）、そのアイコンは消える（表示アイコンの数を一旦減らし）と同時に、代わりにそれまで現れなかったアイコンが現れました。

現状の UI 設計は欠点があると思いました。メニューバーにアイコンを表示しないことをユーザへ伝えるべきです。