OmniAICreator/Qiita-1.07M huggingface dataset:
Apacheのテストページを非表示にする

# はじめに
こんばんは、amaebiです。
自宅サーバーを構築して1、2か月が経ちました。
自宅サーバーで遊ぶのがほぼ日課になっている一方、1つ気になることが...

そう、毎回アクセスする度にテストページが表示されてしまうことなんです...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/ac80bc4b-36fd-4b72-b1ff-3f5e05ca7852.png)

そこで、今回はテストページがうっとしいんでアクセスできないように設定しちゃいます！

# 各バージョン
- OSバージョン : AlmaLinux 9.5 (Teal Serval)
- Apacheバージョン : Apache/2.4.62

# テストページ非表示設定
`/etc/httpd/conf.d/welcome.conf`の下の設定内容をコメントアウトすることで非表示にすることができます。
```:welcome.conf(一部抜粋)
<LocationMatch "^/+$">
    Options -Indexes
    ErrorDocument 403 /.noindex.html
</LocationMatch>
```

では、早速設定していきましょう。
```:/etc/httpd/conf.d/welcome.confを編集
# ls -la /etc/httpd/conf.d
# mkdir -v /etc/httpd/conf.d/.backup
# cp -ipv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/.backup/welcome.conf.`date +%Y%m%d`
# vi /etc/httpd/conf.d/welcome.conf
```
```:差分チェック
# diff -U0 /etc/httpd/conf.d/.backup/welcome.conf.<対象ファイルの日付> /etc/httpd/conf.d/welcome.conf 
--- /etc/httpd/conf.d/.backup/welcome.conf.<対象ファイルの日付>     2025-01-22 06:19:11.000000000 +0900
+++ /etc/httpd/conf.d/welcome.conf      2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
@@ -8,4 +8,4 @@
-<LocationMatch "^/+$">
-    Options -Indexes
-    ErrorDocument 403 /.noindex.html
-</LocationMatch>
+#<LocationMatch "^/+$">
+#    Options -Indexes
+#    ErrorDocument 403 /.noindex.html
+#</LocationMatch>
# 
```
```:apache再起動
# systemctl restart httpd
# systemctl status httpd
```

`http://<WebサーバーのIPアドレス>`にアクセスしてみますが...
逆にサーバー情報がダダ漏れになってしまったので、こちらも修正します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/11f85ca2-001e-4534-af90-456aaa1d5a4d.png)

# サーバー情報非表示設定
`/etc/httpd/conf/httpd.conf`の部分を修正します。
```:httpd.conf(一部抜粋)
Options Indexes FollowSymLinks
```

設定していきます。
```:/etc/httpd/conf/httpd.confを編集
# ls -la /etc/httpd/conf
# mkdir -v /etc/httpd/conf/.backup
# cp -ipv /etc/httpd/conf/httpd.conf /etc/httpd/conf/.backup/httpd.conf.`date +%Y%m%d`
# vi /etc/httpd/conf/httpd.conf
```
```:差分確認
# diff -U0 /etc/httpd/conf/.backup/httpd.conf.<対象ファイルの日付> /etc/httpd/conf/httpd.conf 
--- /etc/httpd/conf/.backup/httpd.conf.<対象ファイルの日付> 2025-01-22 06:19:11.000000000 +0900
+++ /etc/httpd/conf/httpd.conf  2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
@@ -149 +149 @@
-    Options Indexes FollowSymLinks
+    Options FollowSymLinks
# 
```
```:apache再起動
# systemctl restart httpd
# systemctl status httpd
```

もう一度、`http://<WebサーバーのIPアドレス>`にアクセスしてみます。
無事にForbiddenが表示され、ディレクトリ情報が非表示になりました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/c1bbd5d8-e84e-4ae7-ad09-d22076b34191.png)

# さいごに
Apacheのテストページ非表示の設定手順でした。
テストページとお別れできたので、少し気分がよくなりました:blush:

# 参考資料
- [Apacheのテストページを非表示にする - ペチパーノート](https://butterbull.hatenablog.com/entry/2014/06/20/003555)
- [Apacheでディレクトリの一覧を非表示にする方法（Option Indexes）](https://blog.junpeko.com/blogs/apache-options-indexes)
【Lefthook】一時的に無効にしてコマンドを実行する方法

`LEFTHOOK=0`または`LEFTHOOK=false`をコマンドの前に記述することでLefthookを無効にしてコマンドを実行できます。

```terminal
LEFTHOOK=0 git commit
```

```terminal
LEFTHOOK=false git push
```

https://lefthook.dev/usage/env.html#lefthook
【基本情報技術者試験 対策】データ送受信時の誤り検出方式

 **💻基本情報技術者試験 テクノロジ系 技術要素・ネットワーク🌐** 

今回は、データの送受信中に起こる **「ビット誤り」** を検出する方法について
試験対策もかねて3つの代表的な方式をまとめます。

## そもそも、ビット誤りとは？

通常、ビット（0か1）は電圧の違いで判別されますが、  
データ転送中に電圧が変化し、**「0」と「1」が入れ替わってしまう**ことがあります。

これがいわゆる **「ビット誤り」** と呼ばれる現象です。  
この誤りを検出するために使われる仕組みが、以下の3つです。

### ① パリティチェック方式（Parity Check）
→ **Parity（パリティ）= 奇数 or 偶数** の考え方を使って、ビットの誤りを見つける方式  
送信するビット列の末尾に **検査用のビット（パリティビット）** を付加して送信する

#### 2種類の方式
　**偶数パリティ**：ビット列全体の「1」の数が偶数になるように調整  
　**奇数パリティ**：ビット列全体の「1」の数が奇数になるように調整

　※付加する位置には「垂直パリティ」「水平パリティ」「垂直水平パリティ」の３つがある
 
#### 欠点
- 全てのビット誤りを見つけることは難しい
- **ビット誤りが2か所以上同時に発生した場合は検出できない**こともある

---

### ② CRC方式（巡回冗長検査／Cyclic Redundancy Check）
→データを多項式で扱い、割り算をして誤りを検出する方式

以下のような手順で処理を行う

1. **送信側と受信側** で「生成多項式（あらかじめ決められた値）」を共有
2. **送信側**：データを生成多項式で割り、その **余り** を検査用データとして付加
3. **受信側**：受信したデータを同じ生成多項式で割り、余りが一致しているかを確認

###  欠点
- **誤りの検出は可能だが、訂正はできない**
- エラー時に「再送依頼」が必要になる

---

### ③ ハミング符号（Hamming Code）
→複数のパリティチェックを組み合わせて、どこに誤りが起きたかを特定する
　1ビットの誤りであれば、 **場所の特定、訂正** ができる

　※傾向として、③は基本情報技術者試験にあまり出題されないとのこと！

## まとめ

| 方法              | 検出 | 訂正 | 特徴                        |
|------------------|------|------|-----------------------------|
| パリティチェック   | ○   | ×   | 最もシンプル、検出力は低め     |
| CRC方式           | ○   | ×   | 高精度、再送が必要             |
| ハミング符号       | ○   | ○   | 1ビット誤りなら訂正もできる！  |

---

以上、データ送受信時の誤り検出方式のまとめでした🌱  
次回は【情報セキュリティ】に関して学習します^^

## 参考文献

1. 『いちばんやさしい 基本情報技術者 絶対合格の教科書＋出る順問題集』  
　著：高橋 京介 / 出版：SBクリエイティブ

2. [【図解】CRCとは？巡回冗長検査をわかりやすく解説（medium-company.com）](https://medium-company.com/crc/)
Playwright mcpを利用した自動テストツールを作成してみた

# はじめに
Playwright MCPが出てきて、GitHub Copilotなどに読ませて、ブラウザ操作等を行えると聞いて、これは、自動テストツールにできるのでは？と思い、やってみました。

調べてみるとすでに実施されている方がいたので、以下を参考に作成しています。感謝！

https://zenn.dev/asap/articles/59b8dd06d44754

# 構成
非常に単純な作りです。agentからtoolsを呼び出して、終了するまで続ける形。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472670/e1a68e72-564d-4de8-a548-def2c8272380.png)

# できたもの

ユーザーがクエリとして、操作内容を記載すると、それに対応するスクリーンショットを取得して、画面上に出してくれます。

ためしに以下のクエリで試してみました。
```
https://google.co.jpにアクセスしてスクリーンショットを取得、
Googleと入力してスクリーンショットを取得、
Enterキーで検索してスクリーンショットを取得してください。
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472670/e4bb4a94-cb5b-4a65-ae01-cd4073486902.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472670/e5159cb6-9dcb-435c-8ec4-7eb1ef9dd1e6.png)

3アクション程度でも10秒くらいかかります。ほとんどはAIリクエスト時間ですね。


POSTでのフォーム送信などができるのか、
Mdn Web docsさんのサンプルフォームを利用して確かめてみます。
シナリオは以下です。
```
1.https://mdn.github.io/learning-area/html/forms/your-first-HTML-form/first-form-styled.htmlにアクセスしてスクリーンショットを取得。
2.Nameに「テスト」を入力。
3.E-mailに「sample@example.com」を入力
4.Messageに「test1」を入力してスクリーンショットを取得。
5.Send your messageのボタンを押してスクリーンショットを取得
```

なお、このサイトでは、POSTが許可されていないので405エラーが表示されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472670/12ecaa1f-860d-49b4-b6b5-f2e78eedd3d6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472670/38ab1735-9b10-472c-9bbb-60ea4f37edcd.png)

うまくいっています。なお、gpt-4.1-miniだと、正しく項目の場所を選べず、
E-mailに「テストsample@example.com」と書いてしまうようです。
gpt-4.1でもリクエストを操作ごとに区切らないと間違えるようです。

# ポイント
キャプチャをシステムメッセージに組み込めなかったので、ユーザクエリに必ず「スクリーンショットを取得」と書いて、何とかしています。

また、gpt-4.1-nanoだとスクリーンショット取得を飛ばしたりするので、gpt-4.1-mini以上が必須、正しく操作させるためにはgpt-4.1以上が必要そうです。（gemini-2.0-flashでも試してみましたが、gpt-4.1-miniと同様の結果になっています。）

キャプチャがリクエストトークン数を圧迫するので、スクリーンショットを取得した後はキャプチャデータをリクエストから削除して、トークン数増加を抑えています。
（とはいえ、数アクションが限界で、10アクションくらいになるとレスポンスが数十秒帰ってこないので、もっとトークン数を減らさないと実用には足らないように思います。）

# ソースコード

ソースコードはこちらです。

https://github.com/s-ono-123456/playwright-mcp-test
OpenAI Academy AIリテラシーを上げよう🧠

## はじめに

OpenAIが新たに学習プラットフォームの提供を開始しました。
その名も [OpenAI Academy](https://academy.openai.com/home)！

AIやプログラミングの知識不要で、AIの基礎〜実践的な活用法まで、誰もが無料で学べます！

## 目次

1. [OpenAI Academyとは？](#-openai-academyとは)
2. [OpenAI Academyの特徴](#-openai-academyの特徴)
3. [AIリテラシー爆上げ ~ AIを操る側へ](#-aiリテラシー爆上げ--aiを操る側へ)
4. [AI学習オンラインサロン](#-ai学習オンラインサロン)
5. [まとめ](#-まとめ)
6. [参考文献](#-参考文献)

## 🧷 OpenAI Academyとは？

OpenAI Academyは、AI学習のハードルを下げ、誰でも手軽に学べる AI 講座を提供する新しい学習プラットフォームです。

動画を中心とした多様な学習コンテンツが充実しており、次のような学習機会が用意されています。

* オンライン・オフラインのイベントや専門家とのQ&Aセッション
* 実践的なチュートリアル・ハンズオン演習
* 業界トレンドを学べるセミナー

👆 を活用して、AIリテラシーを体系的かつ実践的に身につけることができるほか、色んなビジネスシーンでの課題解決に応用できる AI スキルの向上・習得が可能です。

## 🧷 OpenAI Academyの特徴

### 1. 誰でも、無料で、すぐ使える
* 完全無料
* 年齢・知識・地域を問わずすぐ使える

2025年4月現在、コンテンツが日本語対応していません。
近々、多言語対応されるという情報も目にしたので当ご期待 🥺

### 2. 豊富な学習リソースと実践的内容

* 初心者〜専門家まで、幅広く豊富なレベル別コンテンツ
* 様々のビジネスシーンで役立つ応用例を多数紹介
* オンラインの動画講座や定期開催のリアルタイムイベント

## 🧷 AIリテラシー爆上げ ~ AIを操る側へ
OpenAI Academy では理論知識のほかに、**即実務に活かせる AI 活用術の習得を重視した教材が様々な日常・ビジネスシーン向けに用意**されています。

![スクリーンショット 2025-04-22 23.12.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3427082/1c296c98-9b67-420b-b599-f17fd846243d.png)

## 🧷 AI学習オンラインサロン
OpenAI Academyでは、最新トピックを扱うリアルタイムイベントがあります。
その中で **「コミュニティ」** に参加することで、同じ関心を持つ人たちと繋がったり、ディスカッションや実践的なプロジェクトを行うことができます。

さらに、OpenAIの社員や外部の専門家達の知見や実体験を通じて、AIの最前線をリアルに知ることができます。
いわば **「AI学習オンラインサロン」** です。

### 1. リアルタイムイベントスケジュール
イベントは頻繁に開催されており、今はオンラインですが、今後はオフラインでも展開予定とのこと。
実際に顔を合わせながら学び、語り合う体験も非常に貴重で何より楽しいはず 🤩

![スクリーンショット 2025-04-22 23.20.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3427082/17c689a4-7887-47c4-a0e5-a5b7c31540a6.png)

### 2. 有用な AI 無料講座
#### K-12教育者向けAI入門
AIリテラシーを高めるための基礎ワークショップ。生成AIモデル（ChatGPTなど）の活用方法をわかりやすく解説
#### ChatGPT Edu紹介
学習支援に役立つChatGPTの使い方を紹介。教育現場での具体的な活用法も解説
#### プロンプト技術マスタークラス
ChatGPTで正確な回答を引き出すためのプロンプト(指示・質問)の作成Tipsを解説。
実践事例を交えた講座で理解が深まる。

![スクリーンショット 2025-04-22 23.33.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3427082/b5e4ccda-9bdb-403b-b486-bfb57cb48836.png)

## 🎉 まとめ

OpenAI Academyは、AIリテラシーを「特別な人のもの」から「すべての人のもの」へと変える大きな一歩です。ますます AI を使うことへの抵抗がなくなり、スマホと同じように誰にとっても日常使いが当たり前のツールとなると思います。

近い将来、様々な教育機関で AI という科目が増えるかもしれませんwww
<br>
もはや AI は専門職の方だけでなく、老若男女誰でもいつでも活用できる時代です ✴️
難しそうだからやめよう等の先入観は捨てて、どんどん使い倒していくべしです！

## 💫 参考文献
* [OpenAI Academy](https://academy.openai.com/home)
L2スイッチ（NW機器）を保守交換するときの注意事項と流れ

L2のネットワークスイッチを交換しなければいけないというときに、
どういった内容を考慮しなければいけないかを記載する。

## 前日に実施しておく内容

現行機器からコンフィグを取得しておく。
```
show runnning config
```

その後、保守交換先の機器に設定を流し込み、不揮発性メモリに登録しておく。
```
write memory
```

## 当日事前作業（メイン）

1. スイッチ配下のサーバの誘導解除。
    1. もしもロードバランサー等で誘導を外せるのであれば、事前に行っておく。
1. 非監視設定
    1. Zabbixなどで監視している場合は、アラートをならないようにしておくこと。
    1. この時、zabbix-proxyなどもいる場合は、そのプロキシーで監視をとる機器も対象に入れる必要がある。
1. コンフィグの取得
    1. これは念のため。
1. 保守交換前に、ラック内に対象の機器が存在することを確認する。
1. ケーブルの配線状況が、netboxなどの管理台帳の内容とあっている事を確認する。
    1. **インターフェースとケーブルの対応表を、Excelなどで控えて作成しておくとよい。**
    1. ものによっては、ケーブル自体に番号を振っている場合はそれを控えるとか。
1. 故障個所を確認する。
    1. 故障個所がリンクダウンしているのであれば、その場所が交換によって解消するか覚えておく。しない場合は対向機器に問題があると思われる。
1. **重要度の高いケーブルがあるか確認する。**必要であればテープなどでわかりやすく目印をつける。
    1. ダウンタイムを許容できないサーバが繋がっているケーブル
    1. ↑がいる場合、上位機器と繋がっているケーブル

取得できる場合は、配線状況の写真を取得しておくこと。（データセンター内は取れない場合が多い。）

## 撤去作業・アンマウント作業
ケーブル撤去前に、インターフェースの状態確認コマンドで確認する。
```
show interface status　など
```
その後、現行スイッチに接続されているケーブルを全て抜く。
その後、電源ケーブルを抜いてシャットダウンさせる。

アンマウント作業自体は、2人以上で行う事が望ましい。
また、アンマウント手順自体は、各ベンダーが出している手順を参考に行う事。

## マウント・配線作業

マウント作業も同じく、各ベンダーが出している手順を参考に行う事。
L2スイッチの場合は電源ケーブルを入れた時点で電源がONになる想定である。
その後、事前に確認しておいた**重要度の高いケーブル**を先に配線する。

そのあと、管理台帳と、先に作成した結線表を元に結線していく。

## 疎通確認・事後作業

- スイッチ配下のサーバに疎通ができるか確認する。
    - Zabbixなどの監視ツールで見ているのであれば、それらが正常値を返す事を確認する。
- 管理台帳に機器を更新したむね、記載する。（シリアルなどかわると思うため）
- 全ての機器のリンクが上がっているか確認する。
- コンフィグに差分がないか確認する。
- 監視ツールを再開させ、アラートが鳴らない事を確認する。

以上
PPOにおける損失関数の挙動と学習終了の判断

## 価値損失と方策損失の変動による影響

| 損失関数 | 増加（上がる）場合 | 減少（下がる）場合 |
|---------|-----------------|-----------------|
| **価値損失** | • 価値関数の予測精度が低下している<br>• 環境が変化し、以前の価値推定が現状に合わない<br>• 学習率が高すぎて振動している<br>• 特定サンプルへの過学習が発生している<br>• 💡**アクション**: 学習率の調整、バッチサイズの増加、正則化の強化を検討 | • 価値関数の予測精度が向上している（良い兆候）<br>• モデルが環境のダイナミクスを正しく学習している<br>• パラメータが最適点に向かって収束している<br>• ⚠️ 過度に減少する場合は、価値関数が単純すぎる可能性<br>• 💡**アクション**: 方策の改善も伴っているか確認 |
| **方策損失** | • 方策が退化している<br>• 探索-活用のバランスが崩れている<br>• 重点サンプリング比が不安定化している<br>• 報酬信号にノイズがある<br>• 💡**アクション**: 学習率の低減、エントロピー係数の調整、クリッピングパラメータの見直し | • 方策が改善している（良い兆候）<br>• 方策と価値関数の整合性が向上している<br>• 適切な探索-活用バランスが実現できている<br>• ⚠️ 急激に減少する場合は、局所解への収束や過度な活用の懸念<br>• 💡**アクション**: 探索の度合いが十分か確認 |

## 学習終了の判断基準

| 判断基準 | 具体的な指標 | 判断方法 |
|---------|------------|---------|
| **報酬の安定化** | • 平均報酬<br>• 累積報酬 | • 一定期間（例：100エピソード）の移動平均が横ばいか微増<br>• 報酬の分散が小さくなっている |
| **損失値の変化率** | • 価値損失の変化率<br>• 方策損失の変化率 | • 変化率が十分小さい（例：前回比0.1%未満）<br>• 両方の損失関数が安定していることが重要 |
| **バリデーション<br>パフォーマンス** | • 別環境での評価スコア<br>• 未見の初期条件での性能 | • 要求性能レベルに達している<br>• バリデーションスコアの低下が始まると過学習の兆候 |
| **計算効率と<br>実用性** | • 計算時間<br>• リソース消費<br>• タスク要件 | • 利用可能な計算リソースを考慮<br>• 実用的な要件を満たせば十分と判断可能 |

## アーリーストッピングのための統合的判断

```
学習を終了する条件:
1. 報酬の安定: 過去N回の平均報酬の変化が閾値以下
   AND
2. 損失の安定: 価値損失と方策損失の変化率が十分小さい
   AND
3. 以下のいずれか:
   - バリデーションスコアが目標値に到達
   - バリデーションスコアが連続M回低下
   - 計算時間/エピソード数が上限に到達
```
文字列分割

文字列を指定文字で分割する
# 文字列分割
~~~
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' 文字列分割
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Public Function F_String_GetSplit( _
        ByRef aRtnAry As Variant, _
        ByVal aTarget As String, ByVal aDlmt As String, _
        Optional ByVal aIncChkFlg As Boolean = False) As Boolean
    Dim wkRtnAry As Variant
    
    '引数チェック
    If aTarget = "" Or aDlmt = "" Then
        Exit Function
    End If
    
    '区切りで分割
    wkRtnAry = Split(aTarget, aDlmt)
    
    '区切り包含チェックありの場合、区切り無しはNGで終了
    If aIncChkFlg = True Then
        If UBound(wkRtnAry) <= LBound(wkRtnAry) Then
            Exit Function
        End If
    End If
    
    aRtnAry = wkRtnAry
    F_String_GetSplit = True
End Function
~~~
# 拡張子指定分割
~~~
'------------------------------------------------------------------------------
' 拡張子指定分割
'------------------------------------------------------------------------------
Public Function F_String_GetSplitExtension( _
        ByRef aRtnAry As Variant, _
        ByVal aExtSpec As String) As Boolean
    Dim wkRtnAry As Variant
    Dim wkTmpAry As Variant, wkTmp As Variant
    
    '文字列分割（引数チェック兼用）
    If F_String_GetSplit(wkTmpAry, aExtSpec, D_STRING_DLMT_EXTENSION) <> True Then
        Exit Function
    End If
    
    '分割全てループ
    For Each wkTmp In wkTmpAry
        '空白でなければ追加
        wkTmp = Trim(wkTmp)
        If wkTmp <> "" Then
            wkRtnAry = M_Common.F_ReturnArrayAdd(wkTmpAry, wkTmp)
        End If
    Next wkTmp
    
    If IsArray(wkRtnAry) = True Then
        aRtnAry = wkRtnAry
        F_String_GetSplitExtension = True
    End If
End Function
~~~
生成AI著作権論争で優位に立つにはCG-ARTS検定（とその他資格）だ



## 著作権問題荒れすぎ
近頃、生成AIによる著作権問題に関する議論がSNSで激化しています。
それを鑑みてか、2025年春の応用情報技術者試験でAIと著作権に関する問題が出題されました。

https://x.com/ienaga045/status/1913908685681709425

生成AIのサービスが非エンジニアにも生き渡った今、著作権に関する知識をAIを利用する側もつける必要があると感じます。
とはいえ、応用情報技術者試験はエンジニア向けの国家試験かつ、著作権に関する問題が必ず出題されるわけではないので、クリエイター向けに**CG ARTS検定**がオススメです。

## CG-ARTS検定がおすすめな理由


- CG-ARTS検定は知的財産権の問題が必ず含まれる
- 前身が公的資格（画像情報技能検定）なので、そこそこの権威がある
- 受験科目が選べる
    - マルチメディア
    - CGクリエイター
    - Webデザイナー
    - CGエンジニア
    - 画像処理エンジニア
- 難易度が選べる
    - ベーシック（合格率60%程度）
    - エキスパート（合格率30%程度）



ベーシックの難易度は低めなので、誰でも合格のチャンスがあります。エキスパートはそれなりの対策が必要な難易度です。

## 知的財産権問題の対策
暗記で点数を稼げるので単語は確実におさえておきたいです。
例えば**特許権**、**実用新案権**、**意匠権**、**商標権**の違いなどを説明できるようにしておくと良いでしょう。（私は受験が2年前なのでほぼ忘れましたが...）

過去問はここから確認できます。

https://www.cgarts.or.jp/kentei/past_download/



## その他良さげな資格
- ITパスポート（非エンジニア向けIPA試験）
- ウェブデザイン技能検定（知的財産権が出題範囲にある[^1]）
- データサイエンティスト検定（権利保護が出題範囲にある[^2]）
- G検定（生成AI関連のテーマ追加[^3]）


[^1]:https://www.webdesign.gr.jp/img/2020/03/20190401.pdf

[^2]: https://www.datascientist.or.jp/dscertification/what/

[^3]:https://zenn.dev/tasse/articles/4200f0f35f498a

## 終わりに
非エンジニアに向けた記事ですが、Qiitaで投稿することにしました。目を通してくださったエンジニアの方がいましたらシェア頂けると幸いです。
[vue3]　sortableのデフォルトはtrue

こんにちは、ダチョウです。
今回は備忘録として、vue3のdata-tableのsortのデフォルトはtrueなのか、falseなのか、を記したいと思います。

### 結論から言うと、sortはtrue。自動でsortしてくれます。

これ、「まぁ困ったらsort:trueって書けばいいし、なんなら少し書けばtrueってわかるじゃん」って話なんですが、根本から考えないといけないと思ってまとめてみました。

#### 1,公式はまとめてない
```
readonly sortable?: boolean | undefined
```
vue3の公式にはこうあり、sortがデフォルトでどっちやねん、というのは公式では明らかにしてないんです。booleanね、ないならundefinedだよ、と。これは型定義ですね。

#### 2,デフォルト問題、gitで討論してました
[gitで話しているサイト](https://github.com/vuetifyjs/vuetify/issues/19329)
このサイトで、「試したけどデフォルトってtrueだよね、でも誰もそのこと言ってないよね？」と。
それの回答が下記です。

#### 3, 説明してないだけで一応定義はしてるっぽい

```
sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort)
```
上記のコードを読みとくと、つまり、
**keyまたはsortプロパティが設定されている場合...sortableはデフォルトでtrueとなり、カラムはsortが可能。
keyやsortプロパティが設定されていない場合...sortableはデフォルトでfalseとなり、カラムはsortが不可。**

すごく簡単にまとめると、**sortを気にしなくても、sortを設定したら、勝手にkeyから判別して勝手にsortしてくれる**らしいです。すごい機能ですよね。

今まで、sort? trueって書けばいいじゃん、とか安易に考えていましたが、裏ではいろいろ考えられているんですね。
こういうのを備忘録として一つ一つ丁寧に書いていきたいです。

ps.文章が見にくいと思います。自分もそう思ってます。~~初心者なので許してください~~
今後よくしていくので精進していきます。

ｓ
DX人材育成プログラムPathfinder7期プログラムについて調べてみた

今回はDX人材育成プログラムPathfinder7期プログラムについて調べてみました

今回の内容は動画でも解説してます

https://youtu.be/FBb5L0ZA7cM?si=gkWep8cbAnVq0YyL

<iframe width="560" height="315" src="https://www.youtube.com/embed/FBb5L0ZA7cM?si=sbXiCHfTyXP3MTjo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>


https://www.salesforce.com/jp/news/press-releases/2025/03/28/pathfinder_7th/

 ## Pathfinderってなに？

 Pathfinderとは2018年に米国においてSalesforceとDeloitteが共同でスタートしたDX人材育成プログラムです。
 過去のPathfinderでは累計2,000名を超える受講者がいたようですが、第7期生の募集がされています

 Pathfinderを受講した場合、Salesforce認定アドミニストレーターの資格取得や実践的な演習をすることができました。
プログラムが完了した後は就職機会も提供されていました。

第7期生ではさらに
・AI時代に更に重要性が増すデジタル人材の育成
・就職先として従来のSalesforceパートナー企業だけでなくSalesforceを導入している企業にも就職機会を拡大していく予定

と過去のPathfinderよりもパワーアップしているプログラムのようです。


## Pathfinder7期プログラム内容

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/59598e8f-3f97-4274-acfc-655289c84052.png)


プログラムは全部で約9か月のプログラムです
認定アドミニストレーター資格保有者はPhase1の参加が任意となっていますが、約9か月間じっくり勉強ができるようです

## Pathfinder受講対象者

・就職活動中・転職・再就職を検討中の方
・AI ・CRM・クラウドといった新たな技術・スキルを身に付けたい方
・キャリアチェンジを目指す方

となっています。IT業務経験は未経験でも問題ないようです。
認定アドミニストレーター資格保有者はPhase1参加が任意となっていることから、Salesforce経験がある人（Salesforce資格保有者）もプログラムの参加対象者になっているようです


　過去の参加者の傾向はこのようになっているようです
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/897c9744-5232-4e1c-8a5d-5dfdd5536a24.png)

過去の参加者を見ると年齢・職種もさまざまのようです。
オンラインでの学習になるため各地から参加が出来るようです。


## 応募資格について

・就職活動中・転職・再就職を検討中の方
　　・就職、転職意向がなく自社に導入されたSalesforceを活用するために学習されたい方は対象外となります。Salesforce 管理コースをご利用ください。
　　・プログラム終了後に転職、再就職を支援するプログラムとなります為、学生の方は基本的には対象外となります。
・アンケートに必ずご協力いただける方
　　・Pathfinderは無償プログラムということもあり、受講生の声がプログラム継続に非常に重要な位置付けになります。受講者アンケートに必ず回答いただける方を対象としています。
・事務局からの連絡に必ずご返答いただける方
　　・プログラム期間中、事務局よりメールまたは電話でご連絡することがあります。必ずご返答いただける方を対象としています。
・自習時間(15時間程 / 週)の確保出来る方
・講義時間(週2回<主に月曜日/火曜日 18:15-19:30>)の確保出来る方
　　・講義はリアルタイムでの参加を推奨しておりますが、録画視聴での参加も可能です。なお、Phase1に試験対策講義が1回程予定されております（平日の日中 午後半日、8月下旬の予定です)。その動画、資料の共有はありません。
・合同自習時間(週1回 主に水曜日)の確保出来る方。
※Salesforceパートナー企業様およびパートナー申請中の企業様所属社員の方は対象外です。





## 事前課題

Pathfinderプログラムには事前課題があります。
事前課題をあらかじめ解くことで受講のイメージができるのでおすすめです。

なお、事前課題はTrailheadという無料学習ツールなのでだれでも学習をすることが可能となっています

※事前課題

https://trailhead.salesforce.com/ja/users/jpartners/trailmixes/get-ready-for-pathfinder


## 所感
今回はAIの勉強もできることが過去のPathfinderと違う大きな点だと思います。
また、認定アドミニストレーター試験合格者もPathfinder受講対象のことから、未経験者だけでなくあらかじめSalesforceの実務を行い知識がある人も参加できるプログラムであることが分かりました。
約9か月のPathfinderプログラムをしっかり学習すればSalesforceの知識がかなり身につきそうですね。



## Pathfinder参考記事
https://www.salesforce.com/jp/company/careers/pathfinders/

https://www.salesforce.com/jp/blog/jp-pathfinder-season7/

https://www.salesforce.com/jp/news/press-releases/2025/03/28/pathfinder_7th/

https://www.salesforce.com/jp/company/careers/pathfinders/
Linucレベル１勉強メモ　＃５

＃ 第一章　Linuxのインストールと仮想マシン・コンテナの利用

練習問題1.5
Dockerを利用しています。Docker HUBからCentOS 8のDockerイメージを取得したい時、下線部に当てはまるサブコマンドを記述してください

（解答）
# docker pull centos:8

（解説）
Dockerイメージを取得するには、docker pullコマンドを使います。Dockerイメージは[イメージ名：タグ名]で表すのが一般的です。
C言語　func1(){int a=8;} func2(){int b;}　bの中身は8

## 実験概要
### 実験用プログラム
```test.c
#include<stdio.h>

void func1(){
    int a=8;
}

void func2(){
    int b;
    printf("%d",b);
}

int main(){
    func1();
    func2();
    return 0;
}
```
### func1及びfunc2のアセンブリ表記
#### func1
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/7df80570-df6e-4f48-9cda-bdac4d0ec6d7.png)

#### func2
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/15a202f5-8550-4301-be54-12a88f14cbb9.png)

#### 実行結果
```
8
```

## 考察
アセンブリ言語を見ると、変数`a`も`b`も`DWORD PTR [rbp-0x4]`となっている。
どちらも`main`から直接呼び出された関数なので、`fanc1`と`fanc2`が呼び出された時点で`rbp`は一致するはずである。
スタックを解放する時、`rsp`と`rbp`の挿しているアドレスを変更するだけで値の初期化はしていない。
よって`b`が指している`DWORD PTR [rbp-0x4]`は`a`で代入された`8`が残ったままとなっている。
(スタックフレームのことは又別で投稿する)
Linucレベル１勉強メモ　＃４

＃ 第一章　Linuxのインストールと仮想マシン・コンテナの利用

練習問題1.4
シェル上でKVM仮想マシン「vm01」を起動しようとしています。適切なコマンドを選択してください。

A.  virsh start vm01

B.  docker start vm01

C.  virsh boot vm01

D.  docker boot vm01

E.  kvm-start vm01

（解答）A.

（解説）
KVM仮想マシンはvirshコマンドで操作できます。引数には「start」サブコマンドと仮想マシン名をしてします。よって選択肢Aが正解です。選択肢Cはサブコマンドが誤りです。dockerコマンドはKVM仮想マシンではなくDockerコンテナを操作するコマンドなので、選択肢BとDは不正解です。kvm-startというコマンドはありません。

（わからない単語解説）
*　シェル
　オペレーティングシステム（OS）とユーザー間のインターフェースであるプログラムの一種です。
 
*　virshコマンド
　これが使えるのは仮想化支援機能を搭載したCPUと、仮想マシンを動かすのに必要なリソースを搭載したコンピュータが必要なため幅は限定的です。

 virshコマンドは上記のような条件下で仮想マシンを操作するためのコマンドである。
 主なコマンドの種類
 *　virsh start vm01
 *　virsh list 
 *　virsh console vm01
 *　virsh shutdown vm01
 *　virsh destroy vm01

dockerコンテナのコマンド
* コマンドの取得
docker pull centos:7

* コンテナの起動
docker run centos:7

動作中のコンテナはdocker psコマンドで表示できます。
docker ps

終了したコンテナも含めてコンテナを表示するには、docker ps -aコマンドを実行します。
docker ps -a

コンテナの削除
docker rm (コンテナID)

コンテナからの一時離脱
ctrl＋pqキー

コンテナの再接続
docker attach centosTest

コンテナの終了
コンテナ内にいる状態で
exit

コンテナの再開、停止
動作停止中のコンテナはSTATUS欄が「Exited(0)」となっています。
この状態のコンテナを再開するには、docker startコマンドを使います。
docker start コンテナ名またはコンテナID

その状態で docker psをすると
コンテナのSTATUS欄は「UP」となっている。

動作中のコンテナを終了させるには、docker stopコマンドを使用する。
docker stop
React Testing LibraryでFormの入力値のテストをする

React Testing LibraryでFormの入力値が正しいかテストする方法です。

`toHaveFormValues`を使用するとinputの値を取得することができました。
`toBe`や`toHaveValue`で値が取得できると思っていましたができなかったので備忘録です。

```src/components/Sample.tsx
"use client";

import { useForm, SubmitHandler } from "react-hook-form";

type SampleForm = {
  sampleName: string;
};

const Sample = () => {
  const {
    register,
    handleSubmit,
    formState: { errors },
  } = useForm<SampleForm>({
    defaultValues: {
      sampleName: "sampleValue",
    },
  });

  const onSubmit = (data: SampleForm) => {
    console.log(data);
  };

  return (
    <form onSubmit={handleSubmit(onSubmit)} data-testid="test-form">
      <input type="text" {...register("sampleName")} />;
    </form>
  );
};

export default Sample;
```

```src/omponents/test/Sample.test.tsx
import Sample from "@/components/Sample";
import "@testing-library/jest-dom";
import { render, screen } from "@testing-library/react";

describe("Sample", () => {
  it("textbox", () => {
    render(<Sample />);
    expect(screen.getByTestId("test-form")).toHaveFormValues({
      sampleName: "sampleValue",
    });
  });
});
```
[writeup] picoCTF "WebDecode"

# 今回の問題
picoCTFより"WebDecode"を解いていきます。

# 実際に解いていく
### 1. 問題文にあるWebサイトに移動する
![スクリーンショット 2025-04-22 15.10.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3945501/51825edf-dd7f-4d78-8d57-3b00bee53f6f.png)
謎の文字と写真がありました。
右上にHOME、ABOUT、CONTACTがありました。押してみましょう。

### 2. ABOUTに移動する
![スクリーンショット 2025-04-22 15.10.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3945501/4f353f8f-1b8c-455c-ac35-e296a927f348.png)
ここ、怪しいですね...
ウェブインスペクタを開きます。
（ちなみにMacでのショートカットキーは「Ctrl + Option + I」です。）

### 3.ウェブインスペクタに怪しい文字列を発見
![スクリーンショット 2025-04-22 15.16.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3945501/9a41d618-bea3-4111-85d1-59fc8ab37fc1.png)
何やら怪しい文字列 
"cGljb0NURnt3ZWJfc3VjYzNzc2Z1bGx5X2QzYzBkZWRfMWY4MzI2MTV9"
を見つけました。

### 4. 暗号を解く
![スクリーンショット 2025-04-22 15.17.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3945501/01394ba8-4b75-44d7-bcf9-0fb715e86c77.png)
早速、CyberChefを開きます。そして暗号を解読してみます。
今回の暗号は"Base64"と睨みました。
Base64でデコードすると...大正解！フラグを獲得しました！

# 補足
・なぜ今回の暗号はBase64とわかったのか？
→Base64でエンコードされた暗号にはいくつかの特徴があります。
・A-Z, a-z, 0-9, +, / の64種類の文字を使う。
・長いエンコード文字列。
こんな感じです。

その他にも、暗号にはそれぞれ特徴があるので気になったら調べてみましょう。
個人的備忘録：変更を GitHub に push して Pull Request を作成するまでの手順をまとめてみた

## はじめに
このドキュメントでは、現在のコード状態を GitHub に push するための一連の手順を解説します。

:::note info
**個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。**
:::

ブランチの作成からコミット、GitHub への push、Pull Request の作成までをカバーしています。

## 書こうと思ったきっかけ
開発作業を進める中で、新たに追加したページ（ログインや登録、ポエム認証など）を GitHub に反映させ、チーム内で共有・レビューできる状態にしたかったためです。

## 前提条件
- Git リポジトリはすでに初期化済み（`git init` 済み）
- GitHub 上にリモートリポジトリが存在（例：https://github.com/your-username/your-repo.git）

## 現在の状態（例）
```bash
 ~/Desktop/2025SpringTeamA/frontend  (git)-[main]-  git status
On branch main
Your branch is up to date with 'origin/main'.

Changes not staged for commit:
  modified:   src/app/page.tsx

Untracked files:
  src/app/admin-register/page.tsx
  src/app/login/page.tsx
  src/app/poem-admin/page.tsx
  src/app/poem-auth/page.tsx
  src/app/register/page.tsx
```

## 手順

## ① 変更内容を確認
```bash
git status
```

## ② すべての変更をステージング
```bash
git add .
```

## ③ 新しいブランチを作成して移動（例：`feature/login-flow`）
```bash
git checkout -b feature/login-flow
```

## ④ コミットを作成
```bash
git commit -m "feat: add login, register, poem-auth, poem-admin pages and routing"
```

## ⑤ リモートリポジトリを追加（未設定の場合）
```bash
git remote add origin https://github.com/your-username/your-repo.git
```

## ⑥ 作成したブランチを push
```bash
git push -u origin feature/login-flow
```

## GitHub 上での確認
`feature/login-flow` ブランチとして push されたことを確認し、GitHub 上から Pull Request を作成します。



## 補足
- `.gitignore` に不要なファイルが含まれていないかを確認してください
- GitHub Actions や Vercel / Netlify でのデプロイ設定も必要に応じて整備しましょう
- git remote の設定確認には `git remote -v` が使えます

## まとめ
この流れで、作業内容を安全にブランチとして分けて管理・共有することができます。Pull Request によるコードレビューの導入や、自動テスト・デプロイの仕組みとも相性が良いので、今後の開発にも活かせるかと思います...！
C_TS452_2021 - SAP Certified Application Associate - SAP S/4HANA Sourcing and Procurement対策（27/100）

【27日目】
トピック3：調達プロセス（8/13）

≪問題27≫
勘定設定カテゴリによって制御されるのはどれですか。
（２つ選択）

□設定する必要がある勘定設定オブジェクトのタイプ
□購買発注に品目を入力する必要があるかどうか
□使用できる明細カテゴリ
□入庫を転記できるかどうか

≪解答≫
■設定する必要がある勘定設定オブジェクトのタイプ
□購買発注に品目を入力する必要があるかどうか
□使用できる明細カテゴリ
■入庫を転記できるかどうか

≪解説≫
◆品目を消費品目として調達する場合には、勘定設定カテゴリと、それに関連する追加の勘定設定データを、購買依頼または購買伝票の明細で指定する必要があります。
◆勘定設定カテゴリには、以下のような主な設定内容があります。
（1）勘定設定オブジェクトのカテゴリおよび、入力が必要な勘定設定データ（例：原価センタ、資産など）の種類
（2）勘定修正キー（勘定設定が存在する伝票明細を登録する際に、G/L勘定が提案される際に使用）
（3）入庫や非評価入庫、請求書受領が関連するかどうか、またそれらが必須かどうか
◆入力可能な明細カテゴリと勘定設定カテゴリの組み合わせをカスタマイズしておくことで、明細カテゴリに対して使用可能な勘定設定カテゴリを制御できます。なお、勘定設定カテゴリが明細カテゴリを制御しているという表現は正確ではありません。
【文系未経験から挑戦】ITパスポート試験に合格した学習法まとめ

皆様、こんにちは！初めてのQiita投稿です🌱  

2024年12月18日に **ITパスポート試験** を受験し、無事に合格しました！  
今回はその備忘録として、学習方法や使った教材をまとめてみました✍️

文系からエンジニアを目指す方や
これから資格取得を考えている方の参考になれば嬉しいです。

## はじめに：短期間で一発合格するための秘訣

結論から言うと――  

**「とにかく試験に申し込んでしまう！」** これに尽きます（笑）

ITパスポート試験は、一定期間内であれば日程変更も可能なので、  
私は「学習スタート＝申し込み日」と決めて勢いで申し込みました。  

「あとで変更すればいいや！」くらいの気持ちで申し込んだことで
逆に学習へのスイッチが入りました🔥

## 学習方法まとめ

### ■受験理由
未経験ながら社内のシステム部にチャレンジさせていただけることになり、  
 **「ITの基礎知識を身につけて、キャリアアップに繋げたい！」** と思ったのがきっかけです。

### ■学習期間

**2024年10月30日 ～ 2024年12月18日（試験日）**

### ■使用した教材

### 1. 書籍  
- 『いちばんやさしい ITパスポート 絶対合格の教科書＋出る順問題集』
  （著：高橋京介｜SBクリエイティブ）  
※私は【令和5年版】を先輩から譲り受けて使いました🙌

### 2.WEBサイト  
- [ITパスポート試験ドットコム「過去問道場🥋」](https://www.itpassportsiken.com/)

### 3.Udemy（有料動画教材）  
　①高橋 京介 氏【ITパスポート試験】6年連続売上No.1
 　『ITパスポート絶対合格の教科書』著者による、最短絶対合格のコース！ (5.5時間)
　
　②石田 宏美 氏 令和7年版:参考書の著者直伝！
 　【ITパスポート試験】60日合格を目指すための講義＆過去問400全解説＆指導メール(26時間)

### ■具体的な学習ステップ

### ✅ Step1：教科書を1周（10/30〜11/10）

- まずは書籍をざっと1周読む  
- 分からない言葉があってもOK！  
→「へ〜、こんな用語があるんだ」くらいでOKです  
- 同時並行で、Udemy①の動画もゆるっと視聴  

### ✅ Step2：Udemy②で理解を深める（11/11〜11/30）

- 過去問をテーマ別に解説してくれる形式の講義  
- シラバスに沿った構成で、つまづきやすいポイントも丁寧に解説あり  
- 文系の私でもすごく理解しやすく、心の支えになりました🥹  

### ✅ Step3：過去問道場でアウトプット！（12/1〜12/17）

- 年度ごとに100問ずつ解く  
- 間違えた問題の解説を読み、分からない用語は教科書で復習  
- **正答率が9割以上になるまでひたすら反復！**  


💡私は過去10年分解きました！  
　最初は正答率40％くらいからのスタートでしたが、
　コツコツ継続することで力がつきました💪
 
　何度も間違える分野や用語は **付箋に書いて机に貼る作戦** が意外と効果的でした…

##  さいごに

ITパスポート試験の学習をする中で、自分がさらに深く学んでいきたい分野が見えてきました！少しでも受験を悩まれている方は、まずは受験されることをお勧めします✨


 現在は **「基本情報技術者試験」** **「情報セキュリティマネジメント試験」** に挑戦中！  
今後もQiitaを通して、学びをアウトプットしていきます^^


最後までお読みいただき、ありがとうございました！
学習記録　2025年4月22日

## ✅ 今日やったこと
### Railsアプリ開発
- ログイン機能
- 投稿機能
- 投稿詳細表示
- 各機能のテストコードの作成

## 💡 気づき・学び
- deviseを使用することでログインに必要な機能を簡単に構築することができる。

## 📝 明日の予定
- 投稿一覧機能作成
- 投稿削除機能作成
- レイアウト修正

## 🕒 学習時間
- 3時間
C_TS452_2021 - SAP Certified Application Associate - SAP S/4HANA Sourcing and Procurement対策（26/100）

【26日目】
トピック3：調達プロセス（7/13）

≪問題26≫
2つのプラント間の在庫転送転記と比較して、在庫転送オーダーの利点は何ですか。
（３つ選択）
□配送費用を計画できる、
□MRPを使用して在庫転送依頼を登録できる。
□品質検査中在庫から出庫できる。
□消費に入庫を転記できる。
□受託品への入庫を転記できる。

≪解答≫
■配送費用を計画できる、
■MRPを使用して在庫転送依頼を登録できる。
□品質検査中在庫から出庫できる。
■消費に入庫を転記できる。
□受託品への入庫を転記できる。

≪解説≫
◆在庫転送オーダーを利用した在庫転送には、在庫転送オーダーを使用しない方法と比較して、次のような利点があります。
（1）在庫転送オーダーはMRPに統合されているため、MRPで作成された購買依頼を在庫転送オーダーに変換することが可能です。
（2）MRP管理者は、入庫側のプラントに対して入庫計画を立てることができます。
（3）在庫転送オーダーでは、配送費用や運送業者の情報を入力することができます。
（4）在庫転送オーダーの明細には勘定設定を入力できるため、入庫時に直接消費として転記することが可能です。
（5）倉庫への入庫時に、品目を品質検査中在庫や保留在庫として転記することができます。
（6）購買発注履歴を用いることで、出庫から入庫までの全体のプロセスを追跡・管理することが可能です。
JavaScript勉強ログ 文字列の書き方

文字列の書き方は3種類
'文字列'
"文字列"
\`文字列\`


・文字列の中でシングルクォートを使う場合
```javascript
str = " ' ";
str = ' \' ';
```


・改行を入れたい時
```javascript
str = '文字列を\nここで改行';
str = `文字列を
ここで改行`;
```
バッククォートを使う場合は直接改行が入れられる。
初心者のためのおすすめ無料ソフトウェアテストコース

ソフトウェアテストは、ソフトウェア開発における弱点を特定・排除することで、優れたユーザー体験を提供するための重要な役割を担っています。高品質でスケーラブルなソフトウェアを構築するには、テスターの視点を取り入れることが不可欠です。

以下に紹介する初心者向けの無料ソフトウェアテストコースは、テスト手法に関する基礎知識を身につけるのに役立ちます。ソフトウェアテスターとして、最新のツールを習得し、増え続ける複雑性に対応し、バグを検出し、ソフトウェアの信頼性を確保することが求められます。

これらのコースは、キャリアチェンジを目指している方や、ソフトウェア開発者としてテストスキルを高めたい方に最適です。

## 無料のソフトウェアテストコース一覧

### LambdaTest 認定資格

LambdaTest は、5000 以上の実機デバイス、ブラウザ、OS 組み合わせで手動および自動テストをスケーラブルに実行できる AI ネイティブのテストプラットフォームです。教育への貢献として、[LambdaTest](https://www.lambdatest.com/?utm_source=qiita&utm_medium=organic&utm_campaign=apr_22&utm_term=free-software-testing&utm_content=blog) はソフトウェアテストの専門性を無料で証明できる認定資格を提供しています。

Selenium や Appium、その他の自動化テストに熟練している方にとって、これらの LambdaTest 認定資格は、雇用者や業界仲間に対してスキルをアピールする有効な手段です。従来型の講義とは異なり、実践的な経験と知識に基づく業界認定資格を取得できます。

さらに LambdaTest は、以下のような学習リソースも提供しています：

* LambdaTest ブログ：実際のテストや開発課題に関する情報を、実用的なユースケースとともに解説。
* LambdaTest ラーニングハブ：Selenium、Playwright、Cypress、Appium などを使った自動化テストのガイドを含むチュートリアルを提供。
* LambdaTest YouTube チャンネル：開発者やテスターがテストを加速させるためのビデオチュートリアルやユースケースを紹介。

### ソフトウェアテスト – Amazon Web Services

* プラットフォーム：Udacity
* 期間：1か月
* レベル：中級
* 講師：John Regehr、Sean Bennett

このコースでは、ソフトウェアテスターとしての思考法を学びます。さまざまなテスト手法を理解し、バグを検出し、より良いソフトウェアを構築するための内容です。豊富なコンテンツに加えて、自己ペースで学習できる構成、定期的な評価、インタラクティブなクイズも含まれています。

### ソフトウェアテストの基礎 – メリーランド大学

* プラットフォーム：edX
* 期間：8週間（週8〜10時間）
* レベル：初級
* 講師：Dr. Michael Scott Brown、Dr. Renata Rand McFadden

このコースでは、最新の手法を用いてソフトウェアの不具合やバグを見つけ出す方法を学びます。講義と課題は Java および JUnit をベースに進行し、初めて学ぶ人にも最適なコースです。学習ペースは自分で調整可能です。

### ソフトウェアテスト管理 – メリーランド大学

* プラットフォーム：edX
* 期間：8週間（週8〜10時間）
* レベル：初級
* 講師：Dr. Michael Scott Brown、Dr. Renata Rand McFadden、Dr. Mir Mohammed Assadullah

ソフトウェアテストは単なるバグの検出だけではありません。品質保証エンジニアには、テストの管理も求められます。このコースでは、テスト計画の立案、スケジュール設定、工数見積、文書作成、メトリクス分析など、テスト管理の基本を学びます。前提としてプログラミング知識は必要ありません。


### ソフトウェアエンジニアリングの基礎 – ミュンヘン工科大学

* プラットフォーム：edX
* 期間：8週間（週5〜7時間）
* レベル：中級
* 講師：Bernd Bruegge、Stephan Krusche、Andreas Seitz

このコースでは、オブジェクト指向ソフトウェアエンジニアリングの基本概念を学びます。UMLモデリング、デザインパターン、プロジェクト管理手法を実際に使いながら、複雑なソフトウェアシステムの開発方法を習得します。動画による理論解説、クイズやUMLモデリング演習などのアクティビティもあります。

### Javaによるテスト駆動開発の学習

* プラットフォーム：Udemy
* 期間：3時間
* レベル：初級
* 提供：Fluent Software Solutions

このコースでは、テスト駆動開発（TDD）のサイクルを通じて、テスト可能性を考慮した Java アプリケーションの設計と開発方法を学びます。TDD の素早いフィードバックループが生産性と品質にどのような恩恵をもたらすかを理解できます。自身のコードに TDD を適用しながら、実践的に学ぶことができます。


## 結論

ソフトウェアテストは今後もソフトウェア開発において不可欠な要素であり、エンドユーザーの期待に応えるソフトウェアを確実に提供するため、熟練したテスターへの需要は今後も増加していくでしょう。したがって、ソフトウェアテスターは、継続的に新しいスキルや認定資格を取得し、YouTube チャンネルなどを通じて最新トレンドを学ぶ必要があります。

無料で始められるこれらのコースを通じて、未来のキャリアに向けた第一歩を踏み出してみてはいかがでしょうか？
【実務体験談】プログラミング未経験転職後の初プロジェクトを終えての感想

## 私の経歴
私は以前、ノーコードエンジニアとして要件定義〜リリースまでを担当するSEとして約2年半仕事をしていました。
前職では研修を含め、JavaやPHPといったプログラムを書いたことがなく、ノーコードツールを用いた開発業務ばかりしていました。こんな私が初めてプログラマーという肩書きで仕事をしたのでその体験記を書いてみようと思います。
完全未経験というわけではないですが、未経験のエンジニアさんに向けてどういうことで困ったか？どういう反省をしたか？実務後の勉強などについて書いていこうと思います。

## 私のスキルセット
転職後のプログラミング研修では以下の内容について勉強しました。
期間はだいたい2ヶ月もなかったです。

- HTML&CSS&JavaScript
- Java
- SpringBoot

まあよくあるスキルセットですね。

## プロジェクト概要
今回は派遣契約で、全く未知のPHPとLaravelの案件に参画しました。
期間は三ヶ月です。

使用した主なスキルはこんな感じです。
- PHP
- Laravel
- xampp
- Git,GitHub
- JQuery
- BootStrap

面談をした時はフレームワークなしで開発をしていると聞かされていたのですが、実際はLaravelを使用していたため、あらかじめ勉強していた内容は多少生きる程度でした。
ちゃんと面談時に聞いたのに（ ;  ; ）

調べたところSES企業ならよくあることみたいです。

## 仕事後のキャッチアップ

もちろん触ったことがないフレームワーク・言語なので私は以下のようなことをしました。

### TODOアプリを作る
条件分岐はこういう書き方で〜みたいなことをやっている暇はないなと感じたので、
環境構築してTodoアプリを作りました。
とても簡単なものなのであまり期間はかけていません。
ログイン機能とユーザーテーブルとメモテーブルのCRUD機能の実装のみです。

### ECサイトを作ってみる
こちらはBootstrapの勉強も兼ねて着手しました。
Bootstrapを触ったことがなかったので、コードを見ても何のためのクラスなのかイメージがつきませんでした。
グリッドデザインすらわかっていなかったので、その基本を抑えながらレイアウトの作成と機能の実装を行いました。こちらは案件が終わったタイミングで終わらなかったので、中途半端なところでしたが開発を中止しました。
目的であるBootstrapの学習とLaravelに慣れることはできたので十分成果は出たと思います。

### いつ勉強したの？
私は業務終了後、家事や妻との時間を作りたいので基本的に勉強しません。妻が飲み会などで家にいなかったりする時は勉強しましたが、基本的には家事優先です。
なので、勉強は土日にしました。土曜日か日曜日を１日使ってコワーキングスペースに篭り、一日中コードを書いていました。だいたい9時〜長くて23時くらいまでコードを書いていました。目の疲れや肩こりなどで長時間かけない時もありますが、だいたい8時間〜10時間はコードを書いていました。


## プロジェクトに参画しての反省点

今回のプロジェクトはかなり反省点が多いプロジェクトになったなと正直反省しかありませんでした。
技術的なキャッチアップはでき、自走するところまでいけましたが、それ以外のところで反省点が多かったです。

### コミュニケーションの圧倒的不足
ほぼテレワークだったこともあり、コミュニケーションがあまり取れませんでした。
出社時もあまり話さない風土なので、正直かなり孤独でした。
出社したときにでもメンバーの方とコミュニケーションをとっていたら…と気づいたときには孤立し、改善する行動を何もすることができませんでした。コミュニケーション能力のない自身の無力さを知るいい経験になりました。
それと同時に、今まで私が参画したプロジェクトのメンバーとうまくやってこれたのはメンバーの方々の力のおかげだということを痛感しました。チームを明るく照らすような明るく元気な人材になりたいと強く感じました。

### 現場改善に取り組むべきだった
上記の反省点も関連してくるのですが、テストデータの作成に時間がかかっているのが目に見えてわかっていましたが、提案することができませんでした。定例ミーティングなどもなかったため、言い出す機会もなく、関係性を築くこともできなかったため、無駄な工数をかけてしまいました。Excelなどでぱっと作って展開してもよかったかなと今になって思います。

## プログラミング開発案件に初めて参画しての感想
いろいろ課題は見えてきましたが、プログラミングを用いての開発はとても楽しかったです。
できないことができるようになる。その経験は私に自信をくれました。プログラムを書くのに抵抗があった頃に比べて、今はこの仕事がさらに大好きになりました。やはり実際にさまざまなコードを実務で見るだけでも勉強になりますし、既存のコードを使って改善するにはどうすればいいか？を考えることもできるので、このプロジェクトを通じてかなりレベルアップすることができたと思います。


ですが、正直ハラスメントっぽいことをされることも多々あり、精神的にはかなり参ってしまいました。人間関係に関しては多少運の要素もありますが、自身で改善できるようなコミュニケーション能力が必須だと私は感じました。

## 一番の学び
プロジェクトは閉鎖空間のような閉じられた空間で一緒にミッションをこなすものです。宇宙飛行士はこれよりも過酷な環境下でより良好なコミュニケーションを取ることができます。宇宙飛行士のような専門性を自分が身につけることはできないと思いますが、コミュニケーションについては真似できることも多いと思います。技術だけでなく、スキルシートに乗らないような能力の成長もチームで仕事をする上では重要だと気づけたことが今回の大きな収穫です。

## まとめ
いかがだったでしょうか？
現在のプロジェクトでは反省を生かし、コミュニケーションを取りやすいように軽く雑談をしたり、設計書や資料などもコメントをしたり、更新されていない資料を率先して更新したりといろいろ自分から行動するようになりました！

皆さんのプロジェクトで
- 失敗したなぁ…
- これをこうしておけばよかった！
- こうやったら上手くいったよ！

みたいなノウハウや経験も合わせて聞かせてください！

また、未経験プログラマーを目指す、または未経験プログラマーになった方の
- こういうのが不安
- 実際に実務で勉強した内容って通用するの？

のようなお悩みも聞かせてください！
コメントは必ず返信しますので、ぜひお話しましょう！
l2c hid デバイス コード10 でタッチパッドが操作できない事象

## 事象
数日前からタッチパッドが使えなくなっていることに気づきました（普段はマウス使ってる
設定を開いてもタッチパッドの項目がない状態…
いろいろググったところデバイスマネージャーのヒューマンインターフェイスデバイスで```l2C HID デバイス``` がエラーコード10になっていました。

これの解消方法がいろいろググったことを試しましたが解消せず…

## 解消した方法
#### Ubuntuを停止して再起動
これで解消しました
普段Ubuntuを常時起動していて開発など行っていたためでした

この解消方法はどこにも載っていなかったので書いてみました
誰かの手助けになればうれしいです:grin:
【備忘録】watsonx.governanceのAPIキーとかとか

```

from ibm_watsonx_gov.config import Credentials

credentials = Credentials(
    url="<EDIT_THIS>",
    api_key="<EDIT_THIS>",
    service_instance_id="<EDIT_THIS>",

    # Uncomment the following attributes when using watsonx.governance
    # username="<EDIT_THIS>",
    # version="<EDIT_THIS>",
    # disable_ssl="<EDIT_THIS>",
)

```

①URL
以下を設定すればok
https://api.aiopenscale.cloud.ibm.com

②api_key
管理 > IAM > APIKEYでAPIキーを作成すればok

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641091/05bdc038-fcd4-4ef5-9acd-99e760be78c4.png)

③service_instance_id
リソースリストから利用予定のopenscaleインスタンスのアクションメニューをクリック。
「アクセス・レポートのエクスポート」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641091/e156f526-bcbc-4508-9c8a-2fd5a6b8621f.png)

取得したファイルの、
responses > resource > crnを確認。
crn:v1:bluemix:public:aiopenscale:us-south:x/hogehoge:fugafuga::
と書かれているので、
hogehogeのコロンより後ろの部分。fugafugaの部分がservice_instance_id。
(後ろについてくる::は不要。)
Astro.js サイトにTailwindCSS(v4)を導入する

TailwindCSSは、あらかじめ用意されたクラス名（font-boldやtext-lgなど）をHTMLに直接書き込むことで、CSSファイルを書かずに素早くスタイルを適用できる人気のフレームワークです。Astroでは簡単に導入できるようになっています。

## Tailwind CSS 導入手順
*ここでは執筆時点で最新版の4.1.4を使用しています。

### 1.Tailwindを追加する
ターミナルを開き、あなたのAstroプロジェクトのディレクトリに移動します。

以下のコマンドを実行します（お使いのパッケージマネージャーに合わせてください）。

```bash
# npm を使用している場合
npx astro add tailwind

# pnpm を使用している場合
pnpm astro add tailwind

# yarn を使用している場合
yarn astro add tailwind
```
コマンドを実行すると、いくつか質問される場合があります（設定ファイルの生成など）。通常はデフォルトの選択肢（Yes）で進めて問題ありません。

* このコマンドが自動的に行うこと:
    * 必要なパッケージ (`tailwindcss`, `@tailwindcss/vite`) をインストールします
    * `astro.config.mjs` にTailwindインテグレーションが追加されます
    * `src/styles/global.css`が追加されます

### 2.グローバルCSSファイルを作成・編集する
この作業はTailwindCSSをインストールした際に自動的に実行されているので飛ばしても構いません。

* プロジェクト内に `src/styles/` ディレクトリがなければ作成します。
* `src/styles/` ディレクトリの中に `global.css` という名前でファイルを作成（または既存のファイルを開いて追記）します。
* 作成した `global.css` ファイルに、以下の3行を記述します。これはTailwindが動作するために必要な基本的なスタイルを読み込むための指示です。

```css
/* src/styles/global.css */
@import "tailwindcss";
```

### 3.レイアウトコンポーネントでCSSを読み込む
* サイト全体で共通して使っている **レイアウトコンポーネント** ファイル（例: `src/layouts/BaseLayout.astro` など）を開きます。
* ファイルの先頭にあるフロントマター部分 (`---` で囲まれたエリア) で、先ほど作成した `global.css` ファイルを **インポート** します。

```astro
---
// src/layouts/BaseLayout.astro
import '../styles/global.css'; // ← この行を追加してCSSファイルを読み込む

// 他のインポートや変数定義...
const { title } = Astro.props;
---
<html lang="ja">
<head>
  {/* ... headの内容 ... */}
  <title>{title}</title>
</head>
<body>
  <slot />
</body>
</html>
```

これで、サイト内のすべてのページでTailwindのスタイルが使えるようになります。

### Tailwind CSS の使い方
設定は以上です。これで、`.astro` ファイルなどのHTML要素の `class` 属性にTailwindのユーティリティクラスを指定するだけでスタイルが適用されるようになります。

**例:**
```astro
<h1 class="text-3xl font-bold text-blue-600 mb-4">ようこそ！</h1>
<p class="text-gray-700 leading-relaxed">これはTailwind CSSでスタイルされた段落です。</p>
<button class="bg-indigo-600 hover:bg-indigo-700 text-white font-bold py-2 px-4 rounded">
  クリック！
</button>
```

* `text-3xl`: 文字サイズを大きく
* `font-bold`: 文字を太く
* `text-blue-600`: 文字色を青色に
* `mb-4`: 下にマージンを追加
* `p-4`: 内側にパディングを追加
* `flex`: Flexboxレイアウトを適用

など、多数のクラスがあります。[Tailwind CSSの公式ドキュメント](https://tailwindcss.com/docs/installation/using-vite)で利用可能なクラスを探せます。

### 開発サーバーでの確認と注意点

* 開発サーバーを起動 (`npm run dev` など) して、サイトにアクセスします。
* `class` 属性に指定したTailwindのスタイルが適用されているか確認してください。

**注意点:**
Tailwindを入れるとスタイルがリセットされます。リンクの色が黒くなったりマウスオーバーでアンダーラインが出なくなったりするので自分でClassを入れたりGlobalスタイルを書いてください

### TailwindCSSのスタイルが反映されない場合
* `global.css` の内容（`@tailwind ...`）が正しいか確認してください。
* レイアウトコンポーネントで `global.css` を正しく `import` できているか確認してください。
* クラス名のスペルミスがないか確認してください。
* `tailwind.config.mjs` (または `.cjs`) の `content` 配列に、スタイルを適用したいファイル（`.astro`, `.md` など）のパスが含まれているか確認してください（通常は `astro add` で適切に設定されます）。
Webサイトを他のサービスでホスティングしたままさくらのメールボックスを使用する方法

__注意: この方法は公式が推奨しているわけではありません。自己責任です。__

独自ドメインを使用できるメールサービスの中で(おそらく)最安なので使おうとしたときに戸惑った部分についての備忘録です。

初心者なのでお手柔らかにお願いします。

# 状況
- Zoho Mailからの乗り換え(を検討していた)
- サイトのホスティング自体はCloudflare Pagesで行っていた(DNSもCloudflare)
- さくらのメールボックスをセットアップしようとしたところ`A`レコードと`CNAME`レコードの変更を求められ、当然サイトの表示も変わってしまうので困った

# ゴール
- DNSはCloudflare+サイト自体もCloudflare Pagesでホスティングしたまま、メールサーバーとしてさくらのメールボックスを使用する
- SPF/DKIM/DMARCなどは今回は触れません。(特に言うことがないため)

# 結論(やり方)
- `MX`レコードのドメイン欄に、`CNAME`レコード欄に書いてあるドメイン(多分`wwwxxxx.sakura.ne.jp`のような形式)を設定すれば良い
    - 具体例: `example.com. IN MX 10 wwwxxxx.sakura.ne.jp.`
- 契約時に決めた初期ドメインでもいけるっぽい？

# わかったこと
さくらのメールボックスのコントロールパネルで指定されるDNSレコードは以下のようになっていると思います。(すでに解約してしまっていて見られないので一部間違っているかもしれません...)

|種類    |名前|値|優先度|
|---|--------------------------|-|-|
|NS   |@|ns1.sakura.ne.jp|N/A|
|NS   |@|ns2.sakura.ne.jp|N/A|
|CNAME|@|wwwxxxx.sakura.ne.jp|N/A|
|A    |@|xxx.xx.xx.xxx|N/A|
|MX   |@|@|10|

ここで、CNAMEレコードが指すサーバーのIPアドレスとAレコードが指すIPアドレスは同じです。

引っかかったのが`MX`レコードです。
コントロールパネル上では`@ 10`とだけ書かれていて、典型的な書き方しか知らなかった自分には意味がわかりませんでした。

ただ、当然読み方自体は普段と同じで
__｢ルートドメインのメールサーバーとして@(ルートドメイン)を優先度10で使用する｣__
    ということです。

ルートドメインの`CNAME`レコードには`wwwxxxx.sakura.ne.jp`、`A`レコードには`xxx.xx.xx.xxx`(中身は同じ)が指定されていますから、実際はこれをメールサーバーとして設定しているということになります。

詳しく検証したわけではないので保証はしませんが、
- `A`レコードと`CNAME`レコードが同じIPアドレスを指している
- `MX`レコードのメールサーバーとしてそれを参照している

という点から、`wwwxxxx.sakura.ne.jp`(`CNAME`レコードに追加するよう指定されてる奴)がWebサーバー兼メールサーバーであると思われます。

つまり、Webサーバーを変えずに(=`CNAME`レコードや`A`レコードを変更せずに)メールサーバーを使用したければ、`@`で参照したりせずに`MX`レコードに対して直接メールサーバーを指定すればよいのです。
【SQL】第4回勉強日記 問題解答 難易度★★☆☆☆ 内容：JOIN

## こんばんは！
朝に一問SQLの問題解こうかと思ったのですが
まさかのXAMPPでMySQLが立ち上がらず...
修復したので再開します！

### SQL練習問題 – 問5
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4053502/e965e9c9-6a7c-45df-983e-9a17e567acb3.png)
とりあえず取り出したいデータは
キックオフ日時と国名ですと...
pairingsテーブル使えばどうにかなりそうですね
と思いきやIDだけで国名が出てこないので
countriesテーブルを引っ張ってこないとダメですね
JOINの出番です

【私の解答】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4053502/aed8a8bd-7ed6-4b48-a262-bbbbdfae28f7.png)
キー同士を接着剤にしてJOINさせます
LEFT JOINで結合させることによって
ベン図のORの状態を作りだして
SELECT句でほしいデータを引っ張ってきます
最後にORDER BYでASC(昇順)に並べ替えれば完成

こちら当たっておりました！
模範解答はASが抜けていましたが
BigQueryだとAS抜かしはできなかったはず...
僕はこの書き方を貫きます！
Rancher Desktopを使ってみる

# Rancher Desktopを使ってみる
実務でDockerを使っていたのですが，イマイチDockerが何かわからず．
とりあえず触ってみよーの精神でDockerの環境を作ろうと思いました．

実務ではDocker Desktopを使っていましたが，「どうせ個人の勉強だから触ったことないもの使ってみよう」と思いRancher Desktopを使うことにしました．

## Rancher Desktopを使う前に
私自身はmacを使っているのですが，OSのアップデートを怠っていました．どうやらRancher DesktopはmacOSがVentureだと機能しないようです．（ここで結構時間取られた）

macOSが最新どうか（Venture以上かどうか）を確認してからRancher Desktopを使ってください．

## Rancher Desktopのダウンロード

以下からRancher Desktopを自分の環境に合わせてダウンロードします．（Homebrewでもいけるみたいですが，できていな人もいたので直接ダウンロードが無難かなと思います．）

https://rancherdesktop.io/

## Rancher Desktopの設定
1. ダウンロードが完了したら，Rancher Desktopを起動します．起動すると「Always run without administrative access」と表示されますが，チェックマークを付けずにOKを押します
2. その後，左下のpreferencesから詳細設定をします. 
    - Applicationの項目にて全てにチェックを入れます
    - Virtual Mashineの項目ではmemoryを8GBに，CPUsは4にします（これが最適環境らしい）
    - Container Engineの項目ではdcokerd(moby)を選択します

以上で設定はOKです．この後Rancher Desktopの画面にて，右下にメーターが出ていろいろ立ち上がります．

あとはターミナルを適当に開いて，docker infoなどのコマンドを打ってdockerが使えることを確認してください．
3年目エンジニアが「世界一流エンジニアの思考法」を手に入れる

### １．本題の前に…
私は、最近未経験でIT業界へ足を踏み入れてやっと３年目迎えたまだまだひよっこな初級エンジニアです。
仕事も一通りこなしそろそろレベルアップをと、最近YoutubeやSNS、Qiitaなどのエンジニア向けアプリで情報を収集することが増えまして、日本や世界を見渡すと自分がエンジニアとしてのレベルがまだまだ低いということが見えてきました。
その上で、エンジニアとしてレベルアップするためには何かアウトプットが必要なのではということも、情報収集していく中で見えてきたので、今回は思い切ってQiitaへの初投稿に挑戦いたします。

何を初投稿の材料にしようかと考えた結果、考えすぎると一歩踏み出すことに躊躇してしまい前に進めなくなることを危惧したため、最近読み始めた10万部のベストセラーとなっている「世界一流エンジニアの思考法」といった本を活用したアウトプットを行っていきます。
まず、手始めに第一章の内容に絞ってポイントと感想をまとめていきたいと思います。

## 第一章で自分に響いた内容
**１．基礎の練習は誰でもできることだが、習得には多くの時間がかかる**
この一文には例えがあり、ギターを弾けているように見えるが実際弾いている本人はなんか弾けている感覚がないといった状況があげられており、その状況を打破するためには基礎となるリズム感を鍛えなければならないということをまとめていました。これは高校生の頃にギターを弾いて自分自身が感じていたことの一つなので、スッと脳に状況が思い浮かびました。では、エンジニアがこの感覚を打ち破るには何が必要なのか…
それは、「プログラミングの基礎連」とのことです。
何を当たり前のことをといった反応に自分自身も陥りましたが、ここで「基礎の練習は誰でもできることだが、習得には多くの時間がかかる」この言葉を聞いてハッとしました。リズム感の話と同様に基礎連は誰でもできるからできるものと思い込んでしまい、２年間を過ごしてしまったがために、実際プログラミングをしていても何となく過去に他の人が作成した部品を組み合わせてできた風にしまっているのでは、簡単なコードでも生成AIに頼ってしまっているのでは……と大いに反省しました
そんなこんなで最近は、新卒で入社した時のテキストを再度読み返し始め、一からJavaでコードを書くことを始めました。

**２．１つの課題のために２時間以上ハマった状態となった場合は質問や相談をし、その回答が来るまでの間にほかのタスクに取り掛かること。結果として、１つのことに取り組み続けた場合よりも生産性が上がる**
この内容は実際２か月ほど前、実際に自分が陥った内容でした。
数か月前の話となりますが、システムの仕様変更を２日で仕上げてくれといった内容が上から落ちてくる落ちてくる…
その内容もなかなか濃い内容となっておりこれはどうしたものか…
仕様を思考するところからどうやってテストまでと…そんな中、半日立ったところでやっと心が折れ他社さんに助け舟を求めに質問を投げました。なんと、そのあとの回答でその部分に一致する部品が存在することを教えてもらえました。
もっと早く助けを求めていれば…といったことところですが。他社様本当にありがとうございます。
前段が長くなってしまいましたが、その長い時間の中で２時間といった制約を決めて、助けを周りに求めていればほかのタスクに取り掛かることもできたと思い返しておりました。
大事なことは問題にハマることはあっても、自分と戦う時間と助けを求めるバランスをもう少し意識することで生産性があがりかっこいいエンジニア（真面目な気持ち）になれるのかなと思った次第です…一人ではなくみんなで進めるプロジェクトという意識を強く持っていきたいと思いました。

ここまでで特に自分の中で心に響いた文章をまとめてきましたが、まだまだ読書中なのでゆっくり新たに心に響いた言葉をまとめていきたいと思います。

ご清聴ありがとうございました。
2025年に試すべき無料のテスト管理ツール10選

急速に進化するソフトウェア開発の世界において、テストを通じた品質保証はこれまで以上に重要です。しかし、すべてのチームが高額なエンタープライズ向けツールを利用できるわけではありません。幸いなことに、コストをかけずに効率的なテスト管理を実現できる無料ツールが多数存在します。

本記事では、注目すべき無料テスト管理ツール10選をご紹介します。中でも特におすすめしたい、注目すべきツールがあります。

## 1. LambdaTest
[LambdaTest](https://www.lambdatest.com/?utm_source=qiita&utm_medium=organic&utm_campaign=apr_22&utm_term=free-test-management-tools&utm_content=blog) は、手動および自動テストの両方に対応したクラウドベースのテストオーケストレーションおよび実行プラットフォームです。AIを活用したTest Managerにより、QAチームはテストケースを簡単に作成・整理・追跡できます。

#### 主な特徴:
-3000以上の実機デバイス、ブラウザ、OS環境でのクロスブラウザテスト

-Selenium、Cypress、Playwrightなどの自動化フレームワークとのシームレスな統合

-タグ付け、フィルター、担当者割り当てなどのスマートなテストケース管理

-AIによるテストインサイトとスマートレポーティング

-Jira、GitHub、Slackなどとの組み込み連携

-無料プランでも非常に柔軟で強力な機能を利用できるため、LambdaTestはあらゆる規模のチームにとって最もアクセスしやすく、スケーラブルなプラットフォームの一つと言えるでしょう。

## 2. Qase
Qaseは、手動および自動テストケースの管理をサポートするモダンなツールです。API統合に対応し、スタートアップや小規模QAチームにとって使いやすい設計が魅力です。

## 3. Testomat.io
Testomat.ioは、自動化を中心としたQAチーム向けに設計されたツールです。CypressやPlaywrightと統合し、テストケースを直接スクリプトにリンクすることが可能で、アジャイル開発環境に最適です。

## 4. QATouch
QATouchは、テストケース、テスト実行、要件を体系的に管理できるプラットフォームです。ロールベースのアクセス制御やJira、Slackとの連携機能により、チームの整理整頓と連携を強化します。

## 5. QACoverage
QACoverageは、オープンソースのテスト管理ツールで、テスト設計、実行、レポート作成に対応しています。コストをかけずにテストライフサイクル全体を管理したいチームに適しています。

## 6. TestCollab
TestCollabは、チームが共同でテストを計画・実行・追跡できる環境を提供します。インテリジェントなタスク割り当てや詳細なレポートにより、QAの業務目標との整合性を高めます。

## 7. Selenium
Seleniumは、Webアプリケーションの自動テストを行うための最も有名なフレームワークの一つです。単体ではテスト管理ツールではありませんが、他のプラットフォームと簡単に統合でき、大規模な自動化を実現します。

## 8. Appium
Appiumは、AndroidおよびiOSのモバイルアプリを対象としたオープンソースの自動化フレームワークです。他のテスト管理ツールと併用されることが多く、クロスプラットフォーム対応が魅力です。

## 9. TestLink
TestLinkは、テストケース、要件、テスト計画を管理するための人気オープンソースツールです。Jiraなどのバグトラッカーとの統合や基本的なレポート機能を備えています。

## 10. Robot Framework
Robot Frameworkは、キーワード駆動型テストをサポートする汎用オープンソースの自動化フレームワークです。受け入れテストに広く使われており、豊富なプラグインによる拡張性が魅力です。

ま今回紹介したツールはいずれも、無料でありながらテスト管理における強力な機能を提供します。その中でも、スケーラビリティ、自動化、クロスブラウザ対応、そしてAIによる支援を兼ね備えたLambdaTestは、特に注目すべき存在です。
ubuntuでCapsLockをCtrlに！ターミナルだけでキーバインドを変更する方法



# UbuntuでCapsLockをCtrlに！ターミナルだけでキーバインドを変更する方法

Ubuntuを使っていると「CapsLockキーをCtrlキーとして使いたい！」と思うこと、ありませんか？  
(特にemacsを使っている方)
この記事では**ターミナルだけでCapsLockキーをCtrlキーに変更する方法**を、**一時的な設定**と**永続的な設定**の2通りで解説します。
自身の記録用に作成しましたが参考になれば嬉しいです。

---

## 1. 一時的にCapsLockをCtrlに変更する（Xセッション限定）

まずは、今のセッションだけCapsLockをCtrlとして使いたい場合の方法です。  
ターミナルで以下のコマンドを実行します。


これで**CapsLockキーがCtrlキーとして動作**します！  
ただし、この設定は**再起動すると元に戻る**のでご注意ください。

---

## 2. 永続的にCapsLockをCtrlに変更する（再起動後も有効）

毎回コマンドを打つのは面倒…という方は、設定ファイルを編集して**永続化**しましょう。

### 手順

1. 設定ファイルを編集します（エディタはnanoやviなどお好みでOK）。
        ＊私はemacsを使います

    ```
    sudo emacs /etc/default/keyboard
    ```
    ```
    sudo vi /etc/default/keyboard
    ```
    ```
    sudo nano /etc/default/keyboard
    ```

3. `XKBOPTIONS=""` という行を探して、次のように書き換えます。

    ```
    XKBOPTIONS="ctrl:nocaps"
    ```

4. 保存してエディタを終了します。

5. 設定を反映させるため、以下のコマンドを実行します。

    ```
    sudo systemctl restart console-setup
    ```

    もしくはPCを再起動しても反映されます。
    (私は再起動して反映されました)

---

## 3. 設定応用・注意点

- `XKBOPTIONS`には他にもさまざまなオプションがあります。`ctrl:nocaps`は「CapsLockを追加のCtrlキーにする」設定です。
- **Wayland環境**や一部アプリでは動作が異なる場合があります。その場合は**Xorgセッション**で試すと安定しやすいです。

---

## まとめ

- 一時的な変更：  
  `setxkbmap -option ctrl:nocaps`
- 永続的な変更：  
  `/etc/default/keyboard`の`XKBOPTIONS`を編集し、`sudo systemctl restart console-setup`で反映

どちらも**ターミナルのみで完結**します！  
快適なLinuxライフをお楽しみください。

---

参考になった方はぜひLGTMやコメントをお願いします！
【学習記録】HTML/CSS基礎問題 & Ruby基礎（CLIやターミナル含む）

【学習記録】HTML/CSS基礎問題 & Ruby基礎（CLIやターミナル含む）
📅 本日の学習内容
HTML/CSSの基礎問題に挑戦

ターミナルの基本操作とRuby入門

間違えたポイントや、まだ理解があやふやな項目を中心に、復習を兼ねてまとめていきます。

✅ HTML/CSSでの気づき・復習ポイント
### セレクタ
CSSでHTML要素を指定してスタイルを当てるための「目印」みたいなもの。

css
/* タグセレクタ */
p {
  color: red;
}

/* クラスセレクタ */
.title {
  font-size: 20px;
}

/* IDセレクタ */
#main {
  background-color: #f0f0f0;
}
### align-items
Flexbox（display: flex）で使うプロパティ。縦方向の揃え方を決める。

css
.container {
  display: flex;
  align-items: center; /* 要素を上下中央に揃える */
}
### justify-content
こちらは横方向の並べ方の指定。

css
.container {
  display: flex;
  justify-content: space-between; /* 要素の間隔を均等に配置 */
}
### position
要素の**配置方法（流れから外すかどうか）**を決める。


値	説明
static	初期値（普通の流れ）
relative	元の位置を基準にずらす
absolute	親要素を基準に絶対配置
fixed	画面を基準に固定表示
sticky	スクロールに応じて位置が変わる
### margin と padding の違い

プロパティ	役割
margin	要素の外側の余白
padding	要素の内側の余白（コンテンツと枠の間）
➕ 判断のコツ
要素同士の間隔を調整 → margin

背景や枠と中身の文字の間隔 → padding

### font-weight
文字の太さを設定する。

css
p {
  font-weight: bold;     /* 太字 */
}

p {
  font-weight: 700;      /* 数値指定も可能（100〜900） */
}
### border-radius
角を丸くするプロパティ。

css
.box {
  border: 1px solid #000;
  border-radius: 10px;  /* 角が10px丸くなる */
}
### ブロックレベル要素と構成の考え方
ブロックレベル要素とは？
横幅いっぱいに広がる要素（例：div, p, h1, sectionなど）

上下に余白ができやすい

インライン要素との違い
a, span, strong などはインラインで、横に並ぶ

構成のコツ
大きなパーツはdivやsectionなどのブロック要素で作る

テキストやリンクなど細かいパーツはインライン要素で構成

💻 ターミナル・Rubyの基礎
### CLI（Command Line Interface）とGUIの違い

種類	説明
CLI	コマンドで操作（黒い画面）
GUI	マウスで操作（視覚的）
### 絶対パスと相対パス
絶対パス： /Users/yourname/Desktop/file.txt（パソコンのルートから指定）

相対パス： ../file.txt（今のフォルダから見た位置）

### よく使ったLinuxコマンド
bash
pwd         # 今いる場所を表示
ls          # ファイル一覧を表示
cd フォルダ名   # フォルダに移動
touch ファイル名 # 空ファイルを作成
mkdir フォルダ名 # フォルダを作成
🐣 Ruby入門：基本の文法
### メソッド
ruby
"hello".length  # => 5
123.to_s        # => "123"
"42".to_i       # => 42
### irbとは？
ターミナルでRubyコードを試すことができる対話型の実行環境

bash
$ irb
> 1 + 1
=> 2
### 式展開（文字列の中に変数を埋め込む）

name = "Taro"
puts "こんにちは、#{name}さん"
# => こんにちは、Taroさん
### 変数・代入・再代入・自己代入演算

name = "Hanako"     # 代入
name = "Taro"       # 再代入

age = 20
age += 1            # 自己代入演算（age = age + 1 と同じ）

✍️ おわりに
HTML/CSSとRubyの両方に触れて、少しずつWeb開発のイメージができてきました。
まだまだミスも多いけど、間違いから学びながらコツコツ続けていきます！