OmniAICreator/Qiita-1.07M huggingface dataset:
情報セキュリティとは？

##  ＜　情報セキュリティとは　＞
個人、組織の情報資産を「機密性」「完全性」「可用性」に関する脅威から保護するためのもの
普段私たちが使っているパソコンやスマートフォンなどの端末やインターネットの利用
データなどを危険な状況・観点から情報を守ること

## 三大要素とは
#### 「機密性」「完全性」「可用性」＝【CIA】
が情報セキュリティにおける三大要素となっています。
情報セキュリティに限らず単語としては把握できますが、個人的にはつまりどんなこと？とイメージが湧かなかったので解釈するにあたって単語をかみ砕いて理解します。

未経験で業界挑戦しエンジニアとしてこれからを目指すにあたり、【目に見えない情報というもの】をいかにして捉えるかを日々苦戦しております。
そこで情報セキュリティにおいて、情報資産＝家（家の中のもの）と例えてとらえてみることにしました。
※以降の記述はイメージとして捉えやすくする・把握するための内容です。

#### ・機密性　Confidentiality
情報資産を正当な権利を持った人だけが使用できる状態にしておくこと
ex : 情報漏えい防止、アクセス権の設定、暗号の利用などの対策
※自分の家に家族のみが出入りすることができる状態。
正当な権利＝家の鍵を持っている人のみが利用できる。
使える人が特定の人に限られていること

#### ・完全性　Integrity
情報資産が正当な権利を持たない人により変更されていないことを確実にしておくこと
ex : 改ざん防止、検出などの対策
※家が破損していたりなくなっていないこと、あるべき形であること

#### ・可用性　Availability
情報資産を必要なときに使用できること
ex : 電源対策、システムの二重化、バックアップ、災害復旧計画などの対策
※いつでも家（家の中のもの）が使えること。
体を洗いたい時にお風呂が使える、寝たい時にソファやベッドが使えること。
壊れたときに予備や代替できるものや状況があること
使いたい時に使える状態であること

### 新要素
主な情報セキュリティの3要素に加えて、
1996年に「真正性」「責任追跡性」「信頼性」が、
2006年に「否認防止」の4つの要素が追加され、現在では情報セキュリティの7要素とされています。


## どんな脅威があるか
#### ・意図的脅威　  ・偶発的脅威　  ・環境脅威
◆意図的脅威と偶発的脅威は共に「人」が脅威元である【人為的脅威】としてまとめられます。
#### ・意図的脅威 [サイバー攻撃]

意図として不正な侵入、攻撃を目的として行うこと。
情報を盗みだすことや攻撃した相手のコンピュータを操作不能にしたりすること等。
ex : コンピュータウイルス、不正侵入、盗聴

#### ・偶発的脅威
操作ミスや設定のミス等意図としない、場合での脅威。
人間なのでミスが一切なくすことは難しいですが、ミスが発生する頻度を少なくする(確認事項を増やす)ことや、ミスが起きないような手順・仕組みを改善するなど。
ex : 操作ミス、生じやすい手順

#### ・環境脅威
主に自然災害全般の脅威。
ex : 火災　地震　雷　

### ◆10大脅威
独立行政法人情報処理推進機構IPAによる、その年における「個人」と「組織」それぞれの被害状況を確認することができます。
[IPA 情報セキュリティ10大脅威リンクはこちら](https://www.ipa.go.jp/security/10threats/index.html "情報セキュリティ10大脅威")

## 対策
以下、それぞれ個人と組織における対策です。

#### 企業
・ID,パスワードなどのアカウント管理を徹底
・適切なアクセス制限を設定する
・ソフトウェアを常にアップデート
・適切なツールを導入
・テレワークの運用ルールを策定する
・従業員への情報発信,研修の実施

#### 個人
・適切なパスワード,設定管理
・許可されたデバイス以外は業務に使用しない
・安易にソフトウェアをインストールしない
・フィッシングメールに注意する
・Webサイトの閲覧に注意する
・個人情報をデバイスに保存しない

---
「個人」と「組織」共に【意図的脅威】が占めている割合が多いです。
極論【一切使用しない】ことで解決できますが・・・
情報を取り扱う環境や「もの」はこれからますます増えていきます。
利便性が高く恩恵を受けている故に使用しないことはできません。

日常生活を送る中で、情報技術が関係している環境を選ぶ【利用する、利用しない】ことも難しく、適応や変化をすることが求められているのではないでしょうか。
「いたちごっこ」といわれる脅威　主に意図的脅威：サイバー攻撃]と対策・対処の技術は双方共に変化していき種類も増え続けていきます。

皆さんは情報セキュリティについてどのように感じて捉えていますか？
提供する立場・利用する立場隔てなくどのような種類や観点、影響範囲等を業界に携わる方々に限らず理解して関わっていくことが重要だと個人的に感じます。
CRMAのデータ同期検索条件の設定　Sample of Filter Local Data Synced to CRM Analytics

When you sync Salesforce objects to CRMA, you can filter the data to be synced. Otherwise, if you have too many records, the sync will take a long time and consume a significant amount of CRMA storage.

Here, I am going to share some commonly used samples.

SalesforceオブジェクトをCRMAに同期する際、同期するデータをフィルターすることができます。そうしないと、レコードが多すぎる場合、同期に時間がかかり、CRMAのストレージを大量に消費することになります。

ここでは、よく使用されるサンプルをいくつか紹介します。


1. Only sync the record which has been created after some day.
    特定日付以降のデータの取得：
　　　
CreatedDate > 2024-01-01T00:00:00Z
    

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672646/e21b4584-198b-6564-6007-74ad2495f11d.png)


2. Data has been created in recent one year 
   最近一年間のデータの取得
CreatedDate >= LAST_N_DAYS:365

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672646/5fe1f646-808f-11f6-f51c-a8ab608cb673.png)


3. 複数条件を利用する場合　／Multiple conditions
例：作成日が2024年6月1日以降　及び　業種=農業


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672646/05235fd6-c083-1254-3fea-8af12905272c.png)
[Windows] ローカルのPostgreSQLにpgvectorを追加する

# pgvectorのインストール＆ビルド

1. **x64 Native Tools Command Prompt**を管理者権限で開く(Winsows検索メニューから検索すると出てくる)

1. 以下のコマンドを順番に実行
    ```shell
    set "PGROOT=C:\Program Files\PostgreSQL\16"
    cd %TEMP%
    git clone --branch v0.7.1 https://github.com/pgvector/pgvector.git
    cd pgvector
    nmake /F Makefile.win
    nmake /F Makefile.win install
    ```
    **x64 Native Tools Command Prompt**を管理者権限で開かないと、最後のコマンドが実行できない。

# pgvectorをデータベースに適用
1. **SQL Shell(psql)** を開く(Winsows検索メニューから検索すると出てくる)
1. 自分が作ったデータベースを開く
1. 以下のコマンドを実行
    ```shell
    CREATE EXTENSION vector;
    ```
これでpgvectorが適用される。
初めての転職で年収130万アップ！15年目エンジニアの挑戦（転職エージェント編）

以下のような人向けの記事です。
・同世代に対し平均年収以下
・転職したいと考えてはいるが色々と面倒そうで行動に移せない
・選考通過率が低く内定まで行けない

なお個人の特定を防ぐ為、多少フェイクが含まれます。

**続きの記事は、選考&面接編。**
https://qiita.com/fuyume/items/75f67018e9b95285fc5e

**※こういったことも知りたい！などあればコメント下さい。**

## スペック・経歴

**年齢：** **40歳手前（業界経験15年目）**
**学歴：** 4年制の情報大学卒
**資格：** 新人時に取ったネットワーク資格のみ
**役職：** 無し
**年収：** **450万くらい（残業なしの場合）、平均残業20時間なら500万強**
**補足：**
　・2,3次受けの所謂SESで社内システムや基幹システムの開発・保守
　　※詳細設計から運用までがメインで上流工程は少ない
　・JavaやC#を使ったWebアプリケーションやバッチなど
　・最大5名規模のマネジメント経験

## 転職のきっかけ

現職の待遇悪いし経験できることも少なくなってきた。
年収アップのために転職したいけど面倒だし40歳前まで決めればいいや。
と思っていた矢先、**直属上司のパワハラでメンタルブレイク。。。。**
数週間の在宅勤務で療養してなんとか回復し、**こんな会社辞めてくれるわ！** と転職を決意。

　※動機としては参考にはならないけど、20～30代は長くとも10年過ぎたら転職に向けた企業選びを休日に30分でもいいので準備を進めていくことを勧めます。

## 転職結果

２ヶ月間の転活で結果として、**130万アップ（残業なしの場合）**。
みなし残業は無しで全額支給、平均残業時間は20H。残業時給単価は千円上がりました。
**業種もSESからSIerで基本在宅勤務。**

## 転職で最初にやるべきこと

**履歴書と職務経歴書の作成！**

だが後者はただ**経験したことだけ書いても書類選考での通過率は低く**なる。
じゃあ何を書けばいいんだ？となり、**オススメなのが転職ドラフト！**（PRではない

転職ドラフトが他の転職エージェントとして違う点は、**レジュメ（履歴や職歴）を書いて申請すると運営スタッフが審査し、駄目な場合はフィードバックしてくれる所。しかも無料。**

よってまずは審査が通るまで改善して再申請。
また他の転職者がたまにレジュメを公開してたりするので参考にできる。

**レジュメの審査が通ったらこれをベースに職務経歴書を作成しよう。**

※私の場合、早く転職したいという思いを抑えつつ休日を使って作成に１ヶ月かけました。

## 転職エージェント

以下の5つを登録して、実際に使ってみた個人的な所感。
SNS上はどこも評判良くなかったりするけど、結局は個々の担当エージェントで当たり外れがあると思う。

転職エージェントに登録すると頻繁にメール受信するので登録前に専用のメールアカウントを作成した方がよい。

転職ドラフト以外のエージェントは**登録すると入力した電話番号にすぐに電話がかかってくるので注意。**

#### 【転職ドラフト】
・**現職年収と自分の市場価値をズレを確かめるのに最適。**
・他と違い企業から指名されると推定年収が詳細に提示され、選考を進めて**内定した場合の提示年収は推奨年収の90%以上が保証。**
・エージェント担当者はいないので企業と直接、調整したい人向け。

※自分の場合は4社指名され現職年収から最高150～200万アップだったのでモチベーション向上にも繋がります。

#### 【OpenWork】
・企業の口コミや平均年収を見ることができる。**但し、鵜呑みにしてはいけない。**

#### 【paiza転職】
・プログラミングスキルチェックというものがあり、コーディング問題を解くとランクが上がっていく。
　※各問題は何回でも挑戦できるが1度目で正解しないとランクは上がらない。
・企業毎に一定のランク以上でないと応募できないという制限がある。
・**Bランク以上**だと企業からスカウトメールやオファー面談がよく来るようになる。
・エージェント担当者は微妙だった（マニュアルや方針すら無さそう）ので、自分から企業を探して応募した方がいいかも。

#### 【Geekly】
・エージェント担当者から良くも悪くも書類選考で30社くらいまずはエントリーを勧められる。
　※書類選考通過後に企業選びをしてみては？という方針らしい。
・自分から専用サイトで企業検索し応募もできる。
・応募日程の調整などエージェントの連絡はメールで来るが他の自動メールで埋もれやすい。
　※連絡手段は専用サイト、メール、電話
・書類添削や面接対策などは基本やってくれないので公開されているマニュアルを見る程度しかできない。エージェント担当者に相談できるほどあまりノウハウが無い。

#### 【レバテック キャリア】

・Geeklyとは違い、勧められた企業から取捨選択して応募できる。
・自分から専用サイトで企業検索はできないので、勧められた企業をもっと紹介して欲しい場合はエージェント担当へ依頼する必要がある。
　※連絡手段は基本Lineで返信が早い。他にメール、電話。
・エージェント担当者が**キャリアプラン深堀や書類添削や面接対策などをしっかりとやってくる。**

## 余談

・**中途転職の旬は30代まで。** それ以降はしっかりとした実績が無いと難しい。

・みなし残業20～30時間という企業が増えてきたが、残業全額支給という企業もまだある。

・中途経験者だとポートフォリオは必要ないんじゃないかという印象。
　※Webデザイン系ならまた話は変わってくると思うが。

・ほとんどの企業は**現職年収からアップする場合はプラス50万くらいで見ている。** よって現職で年収が残業時間で変動しやすい人は、残業時間が多い年に転職すると良い。年収は転職後に提出する源泉徴収書で分かるので盛ったりしないこと。
　※私の場合、残業が少ない年だったのでタイミングが悪かったと後から気づいた。。。

・個人的な転職エージェントのオススメは、転職ドラフトとレバテックキャリア。
　※レバテックはエージェント担当者がたまたま優秀な人だったという所が大きいかもしれないけど。

・多くの企業は平日にしか面接をやっていないが、**土or日曜日にしかも1日で１次面接から最終選考までやってくれる通称『1day選考会』を開催している企業もある。**
　※転職先の企業はこの1day選考会をやっていて内定することができたけど、かなり疲れます。１次面接後の数分後に合否、その後すぐに最終選考。少し30分ほど時間を空けたいなどの調整は可能と思います。

**1day選考会とは？**
https://doda.jp/event/1dayselection.html
フリーランスエンジニアとして案件参画するかどうか判断するためのチェックリスト

## はじめに
今年(2024年)からフリーランスエンジニアとしてのキャリアを始めました。

新卒で入社した2017年から2023年までは正社員として会社に所属しながらエンジニアをしており、その当時と現在のフリーランスエンジニアとで働き方や気をつけるべきことが違ってきているように感じています。

この記事ではフリーランスとしてエンジニアで働く際に気をつけるべきこと、特に案件を受諾するかどうかの時点でチェックしておくべきことを自分の経験に基づいて書かせていただきます。


## チェックポイント

### エンジニアチームの組織体制

ソフトウェア開発に対して理解を示している人間が会社の中に存在しているか、という観点となります。わかりやすい具体的な指標としてはエンジニアの数と言っても良いかもしれません。自分1人だけで開発業務を担う場合、非エンジニアからの非現実的な納期要求に対して論理合戦を行う手間が発生してきます。

また、エンジニアとは別に要件定義書の有無や機能要件を確認できるドメインエキスパートが周りに存在するか、その人物との連絡をとりあえるかもあらかじめ確認しておきましょう。

エンジニア組織内で、開発の納期間も正しく共有されているかも確認しておきましょう。非開発部門で納期が設定されていた場合でも、エンジニアチームにまで正しく情報が降りてきていて、可視化されている状態が好ましいです。


#### ポイント
- ソフトウェア開発に対して理解を示している人間が会社の中に存在しているか
- エンジニアが何人いるのか。自分が着手する業務に対するフォロワーなどはいるか
    - いないと、無茶な要求を無茶な納期で突きつけてくる人に対して自分自身だけで工数感を説得する必要がある。屁理屈のやりとりに時間を食われてしまう
- 要件定義所orドメインエキスパートの存在、または要件の確認を行える人物がいるか
- 納期が共有されているか


### 業務内容の確認

契約時に提示された業務内容と参画した後の実際の業務内容に差異がないか、あらかじめ確認しておきます。例えば、クラウドインフラ領域の業務を任される予定だったのが急にモバイルアプリの開発を任されるといったことが可能性としてあり得るかの確認をしておきましょう。基本的には得意ではないor未経験でいきなり別の領域を任されることはないと思いますが、クライアント側が開発に疎い場合、ソフトウェア開発の領域を理解せずに、丸投げで依頼されることがあるため念の為注意しておきましょう。

#### ポイント
- 契約前に提示された業務と実際に行う業務内容にズレがないかどうかの確認
- 安請け合いせずに、得意な領域を案件で引き受けたほうが事故は少ない


### 開発環境

開発を行う上での環境がどれくらい整っているのかも確認しておきます。PC、対象となるプロジェクトのgitリポジトリが閲覧できるか。各種リポジトリなどの権限を依頼すれば付与してもらえるかどうかなど確認しておきましょう。

また、実機上でのテストを実施する必要がある際には、対象となる端末をどのような形式で貸与してもらえるかも確認しましょう。端末数が少ないので、オフィスまで出社する必要があったり、自前の端末を利用しなくてはいけないのかなど、あらかじめ確認しておきます。

#### ポイント
- 開発環境がどれくらい整っているのか
- モバイルアプリなど、実機の種類が多い場合に、会社側で実機を十分に担保できているか
    - デバイス数が不足していて、その都度会社に出社するなんてケースもあり得るので確認しておいた方が良い


### 開発計画・見積もりの意識

自身が担当するプロジェクトの納期感が健全であるかどうかもあらかじめチェックしておきましょう。あらかじめ納期だけは確定しているものの、機能要件が不確定であったり、自動テストや、性能テストなどといったところまでの時間が考慮されていない現場は要注意です。一度減らされた工数を後から復活させるのは何かと理由づけが必要であるため、工数を伸ばすための工数が発生するという状況になってしまいます。


#### ポイント
- 納期までに品質担保されたものが現実的に間に合うか理解できる人間が自分以外にも存在する現場であること（エンジニアのリーダー層以上の人物が好ましい）
    - 無茶な納期感のプロジェクトに一度契約してしまうと、その契約期間内で無理やり実装することを要求されて、品質の悪いものを納品することになってしまう
- 調整係のプロジェクトメンバーではなく、エンジニア自身が見積もりをする文化があるか

### エンジニア文化

継続的に開発を進めていく上での環境が整っているのかもあらかじめ明らかにしておきましょう。特に自動テストの有無や社内wikiのようなドキュメントを作成する文化があるかどうかは良い指標となるでしょう。

#### ポイント
- 自動テストがあるか
- esaやnotionなど、引き継ぎ、ドキュメント、共有の文化が存在しているか


## さいごに
自身が案件を受けるかどうかを判断する際のチェックポイントを書かせていただきました。

これ以外にも、ライフワークバランスの重視やどの開発領域を担当するか、などといった様々な判断基準があると思います。

フリーランスの場合、契約更新のタイミングではなく自身の意思で案件から撤退する際には基本的にクライアント側の同意が必要となるため、正社員よりも手続きが面倒になりがちです。

不本意なトラブルや手間に遭遇しないためにも、契約する前に本案件がいわゆる「地雷」案件ではないか正しく把握することを心がけましょう。
MySQLの`GROUP BY`句の使い方

## はじめに
MySQLの`GROUP BY`句は、SQLで集計関数と共に使用され、結果セットを一つ以上の列でグループ化するために使用されます。これにより、各グループごとに集計関数（例えば`SUM`、`COUNT`、`AVG`など）が適用され、グループごとの集計結果が得られます。

## `GROUP BY`句の基本構文

```sql
SELECT
    column1,
    column2,
    aggregate_function(column3)
FROM
    table_name
GROUP BY
    column1,
    column2;
```

- **column1, column2**: グループ化する列です。
- **aggregate_function(column3)**: 集計関数です。例として`SUM(column3)`や`COUNT(column3)`などがあります。

## 具体例

### 例1: 基本的な使用方法

テーブル`sales`に以下のデータがあるとします。

| id | product  | quantity | price |
|----|----------|----------|-------|
| 1  | A        | 10       | 100   |
| 2  | B        | 20       | 200   |
| 3  | A        | 30       | 150   |
| 4  | B        | 10       | 250   |
| 5  | A        | 20       | 100   |

各製品ごとの総売上金額を計算するクエリは以下の通りです。

```sql
SELECT
    product,
    SUM(quantity * price) AS total_sales
FROM
    sales
GROUP BY
    product;
```

このクエリは、製品ごとにグループ化し、各製品の総売上金額を計算します。

### 結果

| product | total_sales |
|---------|-------------|
| A       | 6500        |
| B       | 7000        |

### 例2: 複数の列でグループ化

テーブル`orders`に以下のデータがあるとします。

| id | customer | product | quantity |
|----|----------|---------|----------|
| 1  | Alice    | A       | 10       |
| 2  | Bob      | B       | 20       |
| 3  | Alice    | A       | 5        |
| 4  | Bob      | A       | 15       |
| 5  | Alice    | B       | 10       |

顧客ごと、製品ごとの合計数量を計算するクエリは以下の通りです。

```sql
SELECT
    customer,
    product,
    SUM(quantity) AS total_quantity
FROM
    orders
GROUP BY
    customer,
    product;
```

このクエリは、顧客ごと、製品ごとにグループ化し、それぞれの合計数量を計算します。

### 結果

| customer | product | total_quantity |
|----------|---------|----------------|
| Alice    | A       | 15             |
| Alice    | B       | 10             |
| Bob      | A       | 15             |
| Bob      | B       | 20             |

## `GROUP BY`句のポイント

1. **グループ化の基準**:
   - `GROUP BY`句に指定された列を基準に結果セットがグループ化されます。これにより、各グループに対して集計関数が適用されます。

2. **SELECT句の制約**:
   - `GROUP BY`句を使用する場合、`SELECT`句に含めることができる列は、`GROUP BY`句で指定された列か、集計関数を適用した列に限られます。

3. **集計関数の使用**:
   - `SUM`、`COUNT`、`AVG`、`MIN`、`MAX`などの集計関数を使用して、グループごとの集計結果を計算します。

4. **HAVING句の使用**:
   - `HAVING`句を使用して、グループ化された結果に対してフィルタを適用できます。`HAVING`句は、`GROUP BY`句の後に続き、集計結果に条件を適用するために使用されます。

### 例3: `HAVING`句の使用

前述の`orders`テーブルに対して、合計数量が20以上のグループを取得するクエリは以下の通りです。

```sql
SELECT
    customer,
    product,
    SUM(quantity) AS total_quantity
FROM
    orders
GROUP BY
    customer,
    product
HAVING
    SUM(quantity) >= 20;
```

### 結果

| customer | product | total_quantity |
|----------|---------|----------------|
| Bob      | B       | 20             |

このクエリは、顧客ごと、製品ごとの合計数量を計算し、合計数量が20以上のグループのみを結果として返します。
検出した人物を紹介する?(RakutenAI-7B-instruct)

# ローカルでLLMでいろいろしてみたい
:::note info
対象
- 俗に予算が回ってこないエンジニア
- なんでLLMいっているのにいいの回してくれないの？
- ローカルでLLM体験してみたい（RTXでOK）
- 多少の誤答は気にしない
:::

## 楽天さんがリリースしているRakutenAI-7B を利用

https://huggingface.co/Rakuten/RakutenAI-7B-instruct

# 試すこと
1. Webカメラで撮影し、人物を検出する
1. その人物に対する質問を投げかける
1. 回答をできれば画面に表示したい

## Webカメラで撮影、人物を検出する
- こちらについては概ね学習済みモデルの軽量なものでも問題なし
- 今回は実装

## その人物に対する質問を投げかける
- 質問を投げることは問題なし。回答をWebカメラと同時だとVRAM不足になる
- VGA解像度でもリアルタイム回答はVRAM30GBくらい欲しそう

## 回答をできれば画面に表示したい
- 画像に保存してそこにオーバーレイ書き込みであれば可能
- ただし、日本語では化ける・バイリンガルにすると尺が足りない
- 日本語の出力料が多いのでテキストに出力することに

# 完成試作の流れ
1. Opencvで撮影、Resnet50で人物検出
1. 何枚か撮影してカメラを閉じる（VRAMオーバー対策）
1. 画像に対する印象などを質問して、回答をテキストに出力

## 作例
![20240605_134652_with_description.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/5a704172-9dcc-03c3-94ed-e8f50c0e5a78.png)

> テキスト抜粋
> > 質問: この画像に写っている人物の性格について説明してください。
> > 回答: この画像に写っている人物の性格について説明してください。
> > この写真の人物は、真剣な表情でありながら目尻に微笑みを浮かべている。
> > そのため、この写真の人物は笑いを抑えるのが苦手で、常に笑顔を絶やすことなく過ごしているようである。
> > この写真の人物は、いつも笑顔であり、いつも人を笑わせているようである。
> > この写真の人物は、楽しいことをすることが好きなようである。

:::note info
For your information
Rakuten model is available to use English, you can modifiy it form below link sample code
:::

# まとめ
- 回答はかなり外している感がありますが、GPT-2ですらGeforce風情では2週間フル稼働だったので、ここで許す？
- いつの日か開発費がでることを夢見てなにか作ってみます。
- 一応、○ーヤンの印象はいかがでしょうか？


https://github.com/mi-kaneyon/jp_LLM_repos/tree/main/LLM_Proj


# 22/Jun 2024 追加
- calm2でも似たような人物検知からの質問を投げて印象聞くようにしました。
- 素のモデルでの回答はちょっとあやしいかも・・・

https://github.com/mi-kaneyon/jp_LLM_repos/tree/main/calm2-7b-chat_example

https://huggingface.co/cyberagent/calm2-7b-chat
【初投稿】基本情報技術者試験合格！

# はじめに
初投稿です！

将来のために何か資格を取らなければと思い、受験しました。
自分が行った学習方法や参考書、試験を受けた感想をまとめます。
皆様の参考になれば幸いです！

# 自己紹介
- 大学4年
- 情報系の学部に所属
- 資格は英検準２級のみ

# 基本情報技術者試験とは
https://www.ipa.go.jp/shiken/kubun/fe.html

基本情報技術者試験は、科目Aと科目Bの2部から構成された試験になります。どちらも**1000点満点で600点以上**が合格となります。

# 結果
科目A：**795**点
科目B：**805**点

試験が終わった瞬間、バンッと急に点数が出たので驚きました。（笑）
自分的にはどちらも8割程度取れたので、満足しています。

# 学習方法
私は大学の授業でプログラミング（Java、C言語など）を学んでいるので、科目Bよりは科目Aを重点的に勉強しました。
勉強時間はだいたい3週間（平日2時間、祝日4時間）ほどです。

1. 参考書を一周する
1. ひたすら科目Aの過去問を解く
1. 科目Bのサンプル問題を解く

このような方法で学習しました。

## 1. 参考書を一周する
https://gihyo.jp/book/2023/978-4-297-13807-3

僕はこのキタミ式イラストIT塾という参考書を利用しました。
この参考書は、イラストで解説してくれるので、分かりやすくて、頭にスッと入ってきました。まずは、参考書を一周読み、ある程度、試験に出てくる単語や試験の概要を理解しました。だいたい10日ほどで読み終えました。

## 2. ひたすら科目Aの過去問を解く
https://www.fe-siken.com/fekakomon.php

次に、この過去問道場というサイトで過去問演習を行いました。10日ほどで、5年分くらい解きました。問題を解いてみて、分からないところがあれば、参考書で復習をしていました。

## 3. 科目Bのサンプル問題を解く
https://www.fe-siken.com/kakomon/sample/

サンプル問題をとりあえず一回解いてみました。科目Bはアルゴリズム問題とセキュリティ問題の2種類がありました。アルゴリズム問題はプログラミングの基礎を理解していれば解け、セキュリティ問題は問題をよく読み、しっかり理解すれば解ける気がします。そして「基本情報技術者試験　科目B」とYouTubeで調べて、サンプル問題の解説や解く際のコツなどを学びました。

# 試験を受けた感想
試験が終わり、合格していたのでとりあえず安心しました。
科目Aは、自分の体感では、
4割：過去問と同じ問題
3割：過去問と似ている問題（過去問をやっていれば分かるような問題）
3割：新しい問題
でした。正直、過去問をとにかく解きまくるという学習方法はとても効果的だったように感じます。
科目Bは、解いたことのない新しい問題ばかりでしたが、そこまで難しいと感じる問題はなかったです。

# まとめ
とりあえず初めてITの資格を取得出来て安心しました！大学で学んだことを総復習した感があり、受験して良かったなと思います。次は、応用情報技術者試験を合格できるように頑張ります！
【 React 】react-router-domの <Outlet /> コンポーネントの使い方

## はじめに
こんにちは！今回は **Reactアプリケーションでルーティング** を管理するためのライブラリである **react-router-dom** の **Outletコンポーネント** について解説します。

## 1. Outlet とは？
**Outlet** は react-router-dom の一部であり、ルーティングされた子コンポーネントをレンダリングするために使用されます。

具体的には **親ルートコンポーネント内で子ルートコンポーネントを表示する場所** を指定します。

## 2. 例を通して学ぶ Outlet
以下のコード例を見てみましょう。この例では **layout.tsx** というレイアウトコンポーネントを作成し、その中で **Outlet** を使用しています。

### 2.1. layout.tsx コンポーネント

```typescript:layout.tsx
import { Outlet } from 'react-router-dom';
import { Footer } from './common/Footer';
import { Header } from './common/SimpleHeader';

export type OutletContext = [];

export const Layout = (): JSX.Element => {
  return (
    <>
      <Header />
      <Outlet />
      <Footer />
    </>
  );
};
```

layout.tsx コンポーネントは、ヘッダーとフッターを常に表示し、中央のコンテンツエリアに **Outlet** を配置しています。これにより、ルートによって異なるコンテンツが中央に表示されます。

### 2.2. ルーティングの設定
次に **React Routerでルーティングを設定** します。
以下は、ルートパス (/) と /about パスに対して異なるコンポーネントを表示する例です。

```typescript:route.ts
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import { Layout } from './layouts/Layout';
import { HomePage } from './pages/HomePage';
import { AboutPage } from './pages/AboutPage';

const App = () => {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<Layout />}>
          <Route index element={<HomePage />} />
          <Route path="about" element={<AboutPage />} />
        </Route>
      </Routes>
    </Router>
  );
};

export default App;
```

この設定により、次のように動作します：

ルートパス (/) にアクセスすると、<HomePage /> コンポーネントが <Outlet /> の場所にレンダリングされます。
/about パスにアクセスすると、<AboutPage /> コンポーネントが <Outlet /> の場所にレンダリングされます。
つまり、<SimpleGuestLayout /> コンポーネントは常にヘッダーとフッターを表示し、中央のコンテンツエリアには現在のルートに対応するコンポーネントが表示されます。これが <Outlet /> の役割です。

## 3. まとめ
<Outlet /> コンポーネントを使用することで **親ルートコンポーネントのレイアウトを一貫して保持しながら、子ルートごとに異なるコンテンツを表示する** ことができます。

これは、アプリケーションの複数の部分で一貫したレイアウトを持たせたい場合に非常に便利です。

## リンク
**【 react-router-dom 】**

https://www.npmjs.com/package/react-router-dom

**【 React Router 】**

https://reactrouter.com/en/main

**【 React 】**

https://react.dev/
【サマリー】ソフトウェアテスト技法ドリル WIP

# 目的

様々なテスト技法を知り、実際のテストケースの作成に役立てる

# 対象読者

体系的なテスト技法の学習をしたことのないエンジニア

# 1章 点に注意を向ける

## ピンポイントテスト

ここでは、あるプログラムに対してピンポイントでバグを狙い撃つ**ピンポイントテスト**と呼ばれる手法が紹介されている。
例えばnの階乗を行うプログラムについてピンポイントテストを考えてみる。
ピンポイントでバグを狙い撃てそうなnとしては「小数,0,巨大数」などが考えられる。また、階乗計算なのでnが巨大数の場合は時間がかかることも予想される。
こうしたケースをピンポイントに狙っていくのがピンポイントテストである。

## バグを狙い撃つには

ただ、数値nなど仕様に含まれている怪しい箇所は分かっても何が怪しいのかが分からないケースもあるかもしれない。
そういう時はnが「1,5,100」などの具体的な例を挙げてみることが有効。その上で「間、対照、類推、外側」を考えてみると良い。
例えば例に出した1と5の間には1.5(小数！)がある。そして5の対照を考えてみると-5や1/5(負数や分数!)がある。あるいは100の類推から0が出てくるかもしれない。そして数値の外側を考えてみるとnumericな文字列("3"とか)を考えることもできる。

## 意地悪テスト

意地悪条件を探して行うテスト。
ソフトウェアが大変な計算をしなければならなくなる入力や異常値・特異値（=意地悪条件）を考えて行う。

### 異常値

ソフトウェアの入力可能範囲を超えた値のこと

### 特異値

0などの特別な処理が行われる値のこと

そして意地悪条件は類推から過去の経験を思い出して見つけることもできる。
例えば階乗計算で言えば「巨大数、メモリを少なくする」とか。

## 探索的テスト

経験上怪しそうなところを重点的に探索して掘り下げてテストしていく技法。つまりテストにおいて経験は偉大。

# 2章 線を意識する

## 同値分割法

入力される可能性のある値をグルーピングして、それぞれのグループから代表値を選んでそれだけをテストする技法。有効な値のグループを「有効同値パーティション」、無効な値のグループを「無効同値パーティション」と呼ぶ。あるいは単に各グループのことを「同値パーティション」とも呼ぶ。

## 境界値分析

言わずと知れた境界付近の値を集中的に狙う技法。例えば模試の偏差値が６０以上で合格で偏差値が0.1刻みと仮定すると、この場合テストすべきなのは60.1,60.0,59.9の3つとなる。

### tips1

境界値分析をする際には簡単そうに思えても必ず直線を描いて、どの値が境界値なのかを視覚的に確認しながら行うこと。

### tips2

パスワードのような文字列では使える文字種が決まっていることが多い。
使用された文字種が妥当かどうかチェックするテストでは文字コードを同値分割し境界値分析することができる。

### tips3

同値分割・境界値分析の適用範囲はtips2の文字列の他にも日付と時刻など幅広い。線には型があると知ること。

### tips4

**正常ケースは1度で確認できるが異常ケースは1度で1つしか確認できない。** 異常値に引っかかった場合、その異常をテストはアサートするがそれ以上先のプログラムの部分についてはテストは言及できないから。

## 技法に囚われるな

同値分割法や境界値分析はあくまで手法であって、本来の目的は無限にあるテストケースからバグの検出に有効なケースを抽出し現実的にテストできる分量まで減らすことである。例えば文字列のテストで空文字や改行などの制御コードが入ってきた場合が気になったら別途テストケースを追加すべきである。

# 3章 面で逃がさない

## tl;dr

テスト対象の次元が増えたら表を描け

## ドメイン分析テスト

テストの次元（変数）が増えてきた時にいかにして異常系を確認していくか、というお話。
既に出ているように **「正常系は同時に複数確認できるが異常系は1つずつしか確認できない」** ので、着目する1つの変数だけを動かし残りの変数を固定にしておくというのが基本。

## クラシフィケーションツリー

## デシジョンテーブル

論理値の組み合わせに対して使える。テストケースが多くなってきたら、適宜テストケースをまとめて簡単化することも忘れずに。

## CFD

Cause Flow Diagramの略。プログラムの流れ図をノードと矢印で表して、そこからデシジョンテーブルを作成する。
流れ図を書く際にはノードを集合として描くことで、補集合への意識を持たせること。
CFDが描けたら流れを1つ1つ辿ってデシジョンテーブルを作成すれば良い。

# Appendix

[ソフトウェアテスト技法ドリルはこちらから](https://www.juse-p.co.jp/products/view/934)
【intra-mart】横配置ノードをやってみた

# はじめに
どうも、今日もintra-martについて記事を書いていきます。

今回のテーマは「横配置ノード」について説明していきます。
実践方法や動作など、共有していきたいと思います。

# 横配置ノードとは
横配置ノードは、**申請書を申請する際に複数人の承認者を選択できる機能**を指します。

例えば、申請者と承認者Aの間に横配置ノードが設定されているとき
その間に承認者B、承認者C、承認者D...のように複数人の承認者を選択することができます。

https://document.intra-mart.jp/library/iap/public/im_workflow/im_workflow_specification/texts/detail_guide/master_definition/node/detail_guide_10.html
# 実践
それでは横配置ノードを使って実践していきます！

1. 赤枠で囲まれている「横配置」をドラッグ&ドロップします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/100f0837-a9e1-b86c-d3f3-197aabc4eba9.png)

2. 下のフロー図になれば、登録します    
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/9c573990-09af-0994-68a9-026a528ba4da.png)  
3. フロー図にある「横配置」を右クリックし、「動的処理者設定-設定」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/b64e44d7-fa24-88dd-a338-35d54726f521.png)


4. 「割り当て可能最小ノード数」と「割り当て可能最大ノード数」を設定します
この2つは**ユーザが申請する際に承認者の最少人数と最大人数を設定すること**ができます。
この画像だと、1人から10人までの承認者を設定することができます。
そのあとに、追加をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/b8574d6b-1f9d-7c7f-ca80-e142b0105e18.png)

5. 「ノード定義-検索」で対象ノードを選択する
対象となるノードを選択することで、
選択されたユーザのみ横配置の承認者人数を選択することができる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/bd509674-a3b5-aae9-565c-62db44789ce1.png)

6. 図のような設定ができれば、「保存」ボタンをクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/7aa5c7f4-9094-7bf2-3e52-1b0ed26bbf62.png)

7. それぞれのノードに申請画面を割り当て、定義を反映する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/9a0bebeb-cabe-76cc-7bb2-81bf286407eb.png)

これで横配置ノードが含まれたワークフローを完了しました。

# 動作確認
次に申請を行います。
一通り、項目を入力し申請ボタンをクリックすると、子画面が出てきます。

1. フロー設定にある、横配置の「編集」ボタンをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/43cd6975-feb4-c3a8-89ad-eea034edb625.png)

2. ノード編集画面が出るので、こちらで承認者を設定します
「検索」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/69fa937e-5b88-4c62-272a-66fc9fdf76ce.png)

3. ユーザ検索を行い、追加します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/e40559f3-9d37-de8c-51fb-bf48d636c545.png)
4. 処理対象者が設定されたことを確認し、「決定」ボタンをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/85c35da6-05ff-0a58-3356-2b812dcb3254.png)
5. 設定状況に緑のチェックマークがついた後、「申請」ボタンをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/c1e43481-5ad4-1a15-9e4a-b371619ee5d3.png)

6. 申請すると、横配置ノードで設定した承認者ノードに進みます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3678292/a12547b3-7289-3f28-b6fc-34bd6a7f2f91.png)
# 最後に
最後まで、読んでいただきありがとうございます。

引き続き、記事を書いていくのでよろしくお願いします♪
[備忘録]   読んだネットの記事 (FA業界) ver.1

# 備忘録

1.　"垂直多関節6軸ロボット向けリングリモートシステム、断線リスクを解消"：<br>https://monoist.itmedia.co.jp/mn/articles/2405/20/news024.html

[備忘録]
- 垂直多関節6軸ロボットのアームの先端に小型リングリモートシステムを取り付けて断線を解消
- ワイヤレスで信号と電力を伝送する．<br><br>

2.　"三菱電機がパズルキューブを解くロボットで世界最速記録、FA機器と制御技術活用"：<br>https://monoist.itmedia.co.jp/mn/articles/2405/24/news096.html

[備忘録]
- シーケンサーや産業用pcなどを構成して機器間の高速な信号接続と制御を行う
- AIにてキューブの色を判別
- キューブの回転手順を解析する計算プログラムを最適化<br><br>

3.　"倉庫面積を75％削減　製造業でも導入多数の自動倉庫化システムが革新的な理由"
https://monoist.itmedia.co.jp/mn/articles/2405/27/news006.html

[備忘録]
- 自動倉庫を工場で使う場合は周辺のモノづくり工程との整合性が必要
- AutoStoreは建物の形状に合わせて倉庫内のスペースを高さも含めて活用できる
- 製造業が倉庫を自動化．メリットが主に３つ存在．
1つ目：制約が発生する中で保管スペースを確保することが可能
2つ目：生産性の向上．オペレーターが部品を取りに行く時間が不要になる．
3つ目：人手によるピッキングミスを削減することができる．つまり，正確性が高い

4.　"自動車メーカーらの活用が進むアマダのInnovation LABO、新たなビジネスの芽も"
https://monoist.itmedia.co.jp/mn/articles/2405/30/news096.html

[備忘録]
- 溶接は自動化が普及していない．曲げといった前工程の影響を受けるという課題が製造現場に存在する．以下は課題である
    - 各平角線の位置決め精度
    - 溶接スピード<br><br>
- レーザー技術、高速スキャナー制御技術、AI（人工知能）処理技術を用いた協働ロボットを開発

5.　"ERPから工程制御まで水平垂直のデータ連携が実現するモノとは、飲食料品製造の例"
https://monoist.itmedia.co.jp/mn/articles/2404/24/news006.html

[備忘録]
- SCADA(Supervisory Control And Data Acquisition):監視制御を行うシステムのこと[1]
- MES(Manufacturing Execution System)：生産管理システムのこと．製造工程の把握から作業者への指示まで行う．[2]
- EPR(統合基幹業務システム)：販売や生産計画などを管理するシステム[2]
- DCS（Distributed Control System）：機械や設備を制御するシステムのこと[2]
- OT（Operational Technology)：工場やビルなどの設備を制御して運用するシステムのこと[3]<br><br>
- 生産工程を管理，制御を行うソフトウェアが存在している
    - それぞれのソフトウェア間でデータのやりとりが行われていない．(課題点)
- 　飲食料品製造業界ではDCSが導入されている
    - 　カスタムメイド式で汎用性に欠ける
    - 　Plant iT（プラントIT）というプランと制御とMESを統合したソフトウェアが展開されている
        - 　飲料から食品の製造まで特化している
        - 　水の入庫から完成品を出荷するまでの流れを水平レベルで統合する
        - 　EPR，MES，制御の３段階を垂直レベルで統合する<br><br>
- 　EPRで必要な原材料の種類や分量などのレシピ情報を管理
- 　もし，不良品が製造されてもデータを追跡することで迅速にどの製品が不良品なのか特定することが可能

6.　"シュナイダーが国内で産業用データ基盤の提供開始、設計から保守までの受け皿にFAニュース"
https://monoist.itmedia.co.jp/mn/articles/2405/31/news099.html

[備忘録]
- DXを行っている企業では多数のデータを集めているが活用方法が分からずに困っている
- データが様々な場所に集まっているため，どのように統合すれば良いのか分からない
- 4つのサービスを提供するプラットフォームを提供
    - データを管理し，許可したユーザのみにデータを共有
    - データを使って様々なコンテンツやダッシュボードをノーコードで作成
            - 1から画面を構築するセルフサービス
            - あらかじめ開発された画面を基に編集する事前定義済テンプレートの
    - AIを用いてデータを予測分析
    - パートナー企業や開発者が、ユースケースの拡張、強化ソリューションを構築

7.　"ファナックが国際規格対応防爆協働ロボット、塗装環境でも直接教示可能"
https://monoist.itmedia.co.jp/mn/articles/2405/29/news041.html

[備忘録]
- 防爆仕様が要求される塗装環境でも直接ロボットを動かすことで正確に軌跡を覚えさせることが可能
- 接触停止機能あり
- 塗装アプリケーションに直感的な教示が可能なアイコン命令も備わっている

8.　"Mech-Mindが製造や物流現場向け自動化展示施設、検査測定用途の新製品も"
https://monoist.itmedia.co.jp/mn/articles/2403/18/news088.html

[備忘録]
- 三角測量方式で計測するレーザー変位計
    - ノートpcの外装の平面度測定や文字認識に活用
- ピッキングシミュレーションでは実機を使わずに対象物のCADデータを使って事前検証を実施
    - 認識AI学習機能も備わっている
- 認識の精度を向上
    - 認識AIの学習に必要なアノテーションの作業を効率化


# 参考文献
[1]"SCADAとは？搭載している機能や活用のメリットを解説"，https://www.cct-inc.co.jp/koto-online/archives/94
[2]"在庫管理術 MES【製造実行システムの導入目的や機能、メリットとは？】"，https://www.smartmat.io/column/production_management/8159
[3]"セキュリティ用語解説"，https://www.nri-secure.co.jp/glossary/ot-network
[AWS #1]AWS認定試験とは？

## はじめに
こんにちは
初めてのQiitaに触れてみて最初の投稿は何にしようか考えていましたが
現在資格学習中であるAWS認定試験についてご紹介させていただきます！

## AWS認定試験とは？
AWS(Amazon Web Service)では、認定資格体系としてAWSエンジニアのキャリアパスを提示しています。体系的に学習することで、それぞれが目標とするキャリアに**必要な知識やスキルが習得できる**ようになります。

そんなAWS認定資格には**4つ**のカテゴリーがあります。

**・FOUNDATIONAL（基礎レベル）**
　AWSクラウドの全体的な理解を証明します。
　事前の経験は必要ありません。
 
「AWS認定クラウドプラクティショナー（通称：AWS CLF）」

**・ASSOCIATE（アソシエイトレベル）**
　技術的役割別認定です（受験にあたり前提条件はありません）。
 　クラウドの経験、または豊富なオンプレミスでのIT経験があるのが望ましいです。
  
 「AWS認定デベロッパーーアソシエイト」
 「AWS認定システムオペレーション(SysOps)アドミニストレーターーアソシエイト」
 「AWS認定ソリューションアーキテクトーアソシエイト」
 「AWS認定データエンジニアーアソシエイト」

 **・PROFESSIONAL（プロフェッショナルレベル）**
 　最高レベルの技術的役割別認定です（受験にあたり前提条件はありません）。
  　約2年以上のAWSクラウドの経験があることが望ましいです。

   「AWS認定ソリューションアーキテクトープロフェッショナル」
   「AWS認定DevOpsエンジニアープロフェッショナル」

**・SPECIALTY（スペシャリティー）**
　セキュリティソリューションの設計と実装で5年の IT セキュリティ経験と 
 　AWS ワークロードのセキュリティ保護に関する実務経験が2年以上ある経験豊富な個人を
  　対象としています。
   
---
AWS認定資格は**3年ごとに更新をする**必要があります。再認定試験を3年ごとに更新するか、
役割別の認定資格の場合は上位レベルの試験に合格する必要があります。
### [AWS認定資格についてはこちら](https://aws.amazon.com/jp/certification/?nc2=sb_ce_co)
---

## おわりに
今回はAWS認定資格の大まかな概要をご紹介しました。
現在私はクラウドプラクティショナー（CLF）の取得に向けて学習中です。
学習するにあたって私が活用している資料を提供いたします。
まずはCLFの合格を目指してAWSの基礎を身につけていきます。

最後まで読んで頂きありがとうございました！
> **「参考書」**
[AWS認定クラウドプラクティショナー改定第3版](https://x.gd/19i6N)
>
> **「Udemy」**
[【CLF-C02版】この問題だけで合格可能！AWS 認定クラウドプラクティショナー 模擬試験問題集（6回分390問）](https://www.udemy.com/course/aws-4260/?couponCode=ST19MT60324)
>
> **「無料WEB問題集」**
[AWS 認定資格 WEB問題集&徹底解説](https://aws-exam.net/clf/)
～よく使うコマンド【Linux編】～

## はじめに
【本記事は定期的に更新予定】
・現在の担当範囲では、たまにLinux環境でコマンド操作する程度なのでいちいちコマンド一覧をネットで検索してしまう。
検索時間短縮のため本記事を作成する。（※本記事にない、よく使うコマンドがあればご教授願います...！

# ディレクトリ系
## カレントディレクトリを確認する【pwd】
```
pwd
/home/user
```
## ディレクトリ移動【cd】
```
cd [移動したいディレクトリ]
cd /      //ルートディレクトリ
cd ~      //ホームディレクトリ
cd ..     //親ディレクトリ（ひとつ上）
```
## ディレクトリ中身表示【ls】
```
ls　[表示したいオプション] [表示したいディレクトリ | 未入力の場合カレントディレクトリ]
-a | ドットファイルも表示する
-l | パーミッション,ハードリンク数,所有者,グループ,サイズ,更新日,ファイル名の順で表示される
```

# パーミッション系
## パーミッションを確認する【ll】
* 意味合い的には【ls -l】と同じ。ファイルのパーミッションを確認できる
```
-rw-r--r-- 1 root root 10 1月 1 12:00 test.txt
・1文字目：ファイルの種類（※ -：ファイル, d：ディレクトリ, |：シンボリックリンク）
・2~4文字目：ファイルの所有者権限（※ r：読み取り, w：書き込み, x：実行）
・5~7文字目：ファイルの所有グループ（※ r：読み取り, w：書き込み, x：実行）
・8~10文字目：その他（※ r：読み取り, w：書き込み, x：実行）
```
## パーミッションを変更する
```
chmod 764 test.txt
【7,6,4 | 所有者,所有グループ,その他】の順で設定される
1 | x：実行
2 | w：書き込み
4 | r：読み取り
```

# ファイル・フォルダ系
## ファイル作成（※ファイルがある場合タイムスタンプが更新される）【touch】
```
touch test.txt
-a | アクセス時刻のみ変更
-d | 日時指定してタイムスタンプ更新
-m | 時刻のみ変更
```
## ファイル削除【rm】
```
rm test.txt
-f | 確認メッセージを表示せず削除
-i | 削除実行時に確認メッセージ表示
-r | ディレクトリ内のファイルをすべて削除
```
## フォルダ作成【mkdir】
```
mkdir test
-m | パーミッション指定
-p | 親ディレクトリを作成
-v | 結果メッセージを表示
```
## フォルダ削除【rmdir】
```
rmdir test
-p | 親ディレクトリを含めて削除
-v | 結果メッセージを表示
```
## ファイルorフォルダコピー【cp】
```
cp test
-a | アクセス権限ごとコピー
-f | ファイルが存在する場合強制的に上書き
-r | ディレクトリに存在するファイルをすべてコピー
```
## ファイルorフォルダリネーム【mv】
```
mv test1.txt test2.txt
```
## ファイル検索【find】
```
find test.txt
-empty | 空ファイルを検索対象に含める
-type f | ファイルを検索対象
-type d | フォルダを検索対象
-size | 指定したサイズ以上のファイルを検索対象
```

# テキスト操作系
## テキストエディタ「vi」を起動【vi】
```
vi
-b | バイナリモードで開く
-R | 読み取り専用で開く
```
## ファイルの中身表示【cat】
```
cat test.txt
-b | 空白行を除外した行番号を表示
-n | 空白行を含んだ行番号を表示
-s | 空白行が連続する場合まとめる
```
## 特定の文字検索【grep】
```
grep test test.txt
-i | 大文字小文字区別しない
-l | 検索結果はファイル名のみ表示
-r | サブディレクトリを再帰的に検索
```

# 番外編【便利なショートカット】
## 画面をクリアする【Ctrl + L】
* コマンドを複数入力していくと見づらくなることが多々あるときに使えるコマンドです

## 処理をキャンセルする【Ctrl + C】
* コマンド実行をキャンセルor強制終了したい場合に使用します
生成AIの種類・仕組み・従来のAIとの違いを解説

![生成AIの種類・仕組み・従来のAIとの違いを解説.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3544821/b29c9310-257c-f44f-b99b-1ed4a28c70d7.png)

<h2>初めに

生成AIは、近年注目されている人工知能（AI）の分野の一つです。生成AIは、データから新しい情報やコンテンツを生成する能力を持ち、画像、音声、テキストなど様々なメディアで革新的な応用が期待されています。

本記事では、従来のAIとの違い、生成AIの種類、そのモデルについて詳しく解説します。
<h2>生成AIとは

生成AI（Generative AI）は、従来のAIとは異なるアプローチを用いて情報を生成する人工知能の一種です。従来のAIは、与えられたデータやパターンに基づいてタスクを実行することが主な目的でしたが、生成AIは新しいデータやコンテンツを創造することが可能です。

<h2>生成AIが注目される背景

生成AIが注目される理由は以下の通りです。

<h3>創造性と革新性

生成AIは新しいデータやコンテンツを創造する能力があり、芸術やデザイン、科学、ビジネスなどで革新的なアプローチを提供します。

<h3>自律性と柔軟性

生成AIは条件やデータに基づき自律的にコンテンツを生成し、人間の介入を減らします。また、異なるデータや条件にも柔軟に対応できます。

<h3>応用範囲の広さ

生成AIは画像、音声、文章など様々なメディアに適用でき、アート、メディア、広告、エンターテイメント、マーケティングなど多くの分野で活用されています。

<h3>技術の進歩

機械学習やディープラーニングの進歩により、生成モデルの性能が向上し、高品質な生成が可能になりました。
これらの理由から、生成AIは革新的な技術として注目され、様々な分野で活用されています。

<h2>従来のAIとの違い

AI総合研究所によって、従来のAIとの大きな違いは、その応用範囲と柔軟性にあります。
従来のAIは、特定のルールやアルゴリズムに従って動作し、限られたタスクや領域でのみ効果的でした。
![Audit Site.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3544821/e63759ab-b32c-7bfc-f459-5c2c78d48b55.png)


以下の表は、生成AIと従来のAIとの間の詳細な比較を示しています。


<h2>生成AIの種類

生成AIには以下の種類があります。
<h3>画像生成AI

条件やデータに基づき新しい画像を生成します。主な手法はGANやVAEです。
<h3>テキスト生成AI

テキストやトピックに基づき新しい文章を生成します。大規模な言語モデルやRNN、トランスフォーマーが使われます。

<h3>動画生成AI

条件やデータに基づき新しい動画を生成します。静止画から動画を生成する手法や次のフレームを予測する手法があります。

<h3>音声生成AI

条件やデータに基づき新しい音声を生成します。WaveNetやTacotronが使用されます。

<h3>3Dモデル生成AI

情報やデータから新しい3Dモデルを生成します。ポイントクラウドやメッシュデータ、GANを用いた生成があります。

これらの生成AIは各分野で応用が期待され、技術の進歩によりさらに高度な成果が期待されています。

<h2>生成AIの仕組み・用いられる生成モデル

生成AIの代表的な生成モデルには、VAE（Variational Auto Encoder）、GAN（Generative Adversarial Networks）、拡散モデル（Diffusion Models）、GPT（Generative Pre-trained Transformer）があります。
<h3>VAE

確率的生成モデルで、データを潜在空間にエンコードし、ランダムサンプリングしてデコードします。画像生成や音声合成に利用されます。
<h3>GAN

生成器と識別器の2つのニューラルネットワークが競い合い、生成器が本物に近いデータを生成します。画像生成や動画生成に広く使われます。

<h3>拡散モデル

データポイントにノイズを追加して新しいデータを生成します。画像生成や音声合成、自然言語処理で活用されます。

<h3>GPT

大規模なテキストデータセットで事前学習されたトランスフォーマーモデルです。文章生成、要約、質問応答などに使用されます。

これらの生成モデルは、応用や問題に応じて適切に選択されます。

弊社のチャットGPTを活用したコンテンツ制作及び自動回答ツールについて詳しく知りたい方は以下の記事もご覧ください。
<a href="https://hblab.co.jp/blog/content-creation-automatic-response-using-chatgpt/ " rel="nofollow noopener" target="_blank">チャットGPTを活用したコンテンツ制作及び自動回答ツール</a>

<h2>まとめ

生成AIの背景、従来のAIとの違い、種類、モデルについて理解を深めることで、生成AIの可能性と重要性が分かりました。

生成AIは高度な生成能力で様々な分野に革新をもたらすと期待されます。技術の進歩と共に、その発展はさらに加速するでしょう。

今後、生成AIが生活や産業に与える影響に注目し、その可能性を最大限に活用することが重要です。

詳しくは下記の記事もご参照ください。
<a href="https://hblab.co.jp/blog/explaining-the-mechanism-problems-and-future-of-generative-ai/" rel="nofollow noopener" target="_blank">生成AIの仕組み・問題点・将来を解説 | HBLAB</a>
Arduinoで接触位置+感圧センサ(FSLP)を使った時のメモ

SwitchScienceで販売されていた[直線型接触位置+感圧センサ（FSLP）](https://www.switch-science.com/products/6843?variant=42382129332422)をArduinoで使った時のメモです。

<img src="https://www.switch-science.com/cdn/shop/files/296e6bc5-f5a7-4e16-a98f-4989114c1f9a_513x513.jpg?v=1716879961" alt="FSLP" title="FSLP" width=400>



## プログラム
販売元の[Pololu](https://www.pololu.com/product/2730)からセンサとLEDテープを使った[サンプルプログラム](https://github.com/pololu/fslp-led-strip-arduino-demo/blob/master/FslpLedStripDemo/FslpLedStripDemo.ino)が出ているので、LEDテープの部分を除いて使用する。


```C++
const int fslpDriveLine1 = 8;
const int fslpDriveLine2 = A3;
const int fslpSenseLine = A2;
const int fslpBotR0 = 9;

void setup() {
  Serial.begin(9600);
}
void loop() {
  int pressure, position;
  pressure = fslpGetPressure();
  if (pressure == 0) position = 0;
  else position = fslpGetPosition();

  Serial.print("pressure     ");
  Serial.print(pressure);
  Serial.print("   position     ");
  Serial.println(position);
}

int fslpGetPosition() {
  pinMode(fslpSenseLine, OUTPUT);
  digitalWrite(fslpSenseLine, LOW);
  pinMode(fslpDriveLine1, OUTPUT);
  digitalWrite(fslpDriveLine1, LOW);
  pinMode(fslpDriveLine2, OUTPUT);
  digitalWrite(fslpDriveLine2, LOW);
  pinMode(fslpBotR0, OUTPUT);
  digitalWrite(fslpBotR0, LOW);
  digitalWrite(fslpDriveLine1, HIGH);
  pinMode(fslpBotR0, INPUT);
  pinMode(fslpSenseLine, INPUT);
  delayMicroseconds(10);
  analogReset();
  return analogRead(fslpSenseLine);
}

int fslpGetPressure() {
  pinMode(fslpDriveLine1, OUTPUT);
  digitalWrite(fslpDriveLine1, HIGH);
  pinMode(fslpBotR0, OUTPUT);
  digitalWrite(fslpBotR0, LOW);
  pinMode(fslpSenseLine, INPUT);
  pinMode(fslpDriveLine2, INPUT);
  delayMicroseconds(10);
  analogReset();
  int v1 = analogRead(fslpDriveLine2);
  analogReset();
  int v2 = analogRead(fslpSenseLine);
  if (v1 == v2) return 32 * 1023;
  return 32 * v2 / (v1 - v2);
}

void analogReset() {
#if defined(ADMUX)
#if defined(ADCSRB) && defined(MUX5)
  ADCSRB |= (1 << MUX5);
#endif
  ADMUX = 0x1F;
  ADCSRA |= (1 << ADSC);
  loop_until_bit_is_clear(ADCSRA, ADSC);
#endif
}

```

## 配線
[販売元サイト](https://www.pololu.com/product/2730)に載っているこの画像を元に配線する。
<img src="https://a.pololu-files.com/picture/0J5351.450.jpg?277763732fc6384ab7bdc56cfbe9927a" alt="FSLP" title="FSLP" width=400>

D1 : 8pin
D2 : A3
SL : A2 (4.7kΩ→9pin)

![スクリーンショット 2024-06-05 13.00.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191122/6e5cfb4f-f46f-219f-780e-ed453333f153.png)


## 結果
センサをタッチしている強さと、タッチ位置が計測できた。感圧は軽く触った時と強く押した時で値の変化がみれるが、タッチ位置は先端から中間くらいまでは値の変化が見られるが、中間から末端くらいまでは1000を行ったり来たりであまり制度は良くなさそうだった。

ある程度のタッチ位置と、感圧なら取れるって感じの印象でした。

![スクリーンショット 2024-06-05 13.17.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191122/95e950d6-fd20-646d-d208-bd1ac7a4bae4.png)
コレクション変数に値があるかを確認する


# Summer　24 で変わった

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/7477dc85-0d9d-3eff-cf5f-498132e893d2.png)



# 以前の方法

+ [フロー内の分岐でコレクション変数がnullかどうかで判定を行いたいのですが、分岐の条件を「変数名 null True」「変数名 空 True」などどの条件を試してもnullの判定になりません。](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007ep0sW)

numは数値型の変数、Stringsはテキスト型のコレクション変数
ポイントは演算子を割り当てで次の数と一致するにすること

コレクション変数がnullのときにはnumは0になっている

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/2f30f02a-8fbd-9d78-d7f9-b376a03d645b.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/5038aa61-6613-7454-403d-751a95f5cd70.png)


割り当ての前にコレクション変数に値を追加した場合

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/162aab9d-48ed-f02d-21f5-61de4247e782.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/8a12254d-2a0a-a352-98c0-9f956bfbb344.png)
Chromeの拡張機能をレジストリから追加

通常、Chromeに拡張機能を追加する際は、<a href="https://chromewebstore.google.com/?hl=ja&pli=1">Chrome ウェブストア</a>から追加しますが、レジストリからも追加することが可能です。

コマンドでも出来るのでキッティング作業など、複数のPCに拡張機能を入れたいというニーズに有効かもしれません、多分。
豆知識程度として参考にしてください。

:::note alert
尚、レジストリで追加した場合は、追加したレジストリを削除しなければブラウザ側から機能をオフにすることや削除することはできません。
:::


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804239/7e024e31-ca48-eba4-f55f-b28a5b5f53b8.png)


## レジストリで拡張機能を追加する方法

### 1. 拡張機能IDを確認
追加したい拡張機能を<a href="https://chromewebstore.google.com/?hl=ja&pli=1">Chrome ウェブストア</a>で確認します。今回はGoogle翻訳にしてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804239/3c9ec5bb-29a0-2a82-bf28-859dbf00eca3.png)

Google翻訳をクリックして遷移した後、URL末尾を確認します。以下の赤枠のように、"/"から"?"の範囲が拡張機能のIDとなります。

**aapbdbdomjkkjkaonfhkkikfgjllcleb**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804239/46fad98e-1a08-2ffc-4676-3ef6f05c4446.png)

### 2. レジストリに追加
Win＋R→"regedit"と入力し実行して、レジストリエディタを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804239/20e0669f-d2cf-7989-2359-bff7577181a6.png)

エディタ上部の検索窓に以下のパスを入力します。左ペインのフォルダからでも問題ありません。
**HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804239/e866d480-b56b-7856-4776-c3af2afb73b6.png)

上記階層に移動したら、右クリックをして新規＞文字列値で追加してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804239/e294470a-1b90-ce71-2d15-28e68f29735a.png)

追加したデータの名前を"1"に変更します。名前は整数にする必要があるそうですので、連番で設定してください。
また、データは以下のように設定します。("+"は結合を意味します）
**拡張機能ID + ; + https://clients2.google.com/service/update2/crx**

今回のGoogle翻訳を例とすると、
**aapbdbdomjkkjkaonfhkkikfgjllcleb;https://clients2.google.com/service/update2/crx**
このようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804239/2f62b673-4cb0-b4cc-ddaf-f3a01fff3627.png)

### 3. 拡張機能を追加
Chromeを開いていたら全てのブラウザを一度閉じて再起動します。
Chromeの<a href="chrome://extensions/">拡張機能を管理</a>を開いてデベロッパーモードのトグルボタンをオンにして、更新ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804239/b3b7f70f-4d31-7b16-24d6-e47de23ce1a4.png)

正常に追加されれば完了です。

:::note warn
追加されない場合は、拡張機能IDの誤りやデータ値の確認等を再度行ってください。また、インターネットに接続していない場合、更新ボタンを押下しても追加されません。
:::

## 拡張機能を削除する方法
[レジストリで拡張機能を追加する方法](レジストリで拡張機能を追加する方法)で追加したレジストリを削除すれば、拡張機能も削除されます。レジストリ削除後、Chromeを再起動して拡張機能が削除されていることを確認して完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804239/1a694049-75a9-751f-b158-fbbe9482fa46.png)

## コマンドで実行
コマンドからレジストリを追加するだけです。
```
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist" /v "1" /t REG_SZ /d "aapbdbdomjkkjkaonfhkkikfgjllcleb;https://clients2.google.com/service/update2/crx" /f
```
batファイルとして作成すれば、あとは配布して実行するだけで拡張機能を追加できます。（更新ボタンを押さなければならないのがネックですが）
Android Studioについての個人メモ

- buildやmake projectは、ビルド＋自動生成ファイル作成＋テストが動く
- app実行は、テストが動かない


# プラグイン
- Ktlint
変更ファイルの保存時に自動フォーマットしてくれるので便利

https://plugins.jetbrains.com/plugin/15057-ktlint

導入方法↓

https://zenn.dev/ryokusasa/articles/4791675c4507a3

# エミュレータ
## エミュレータが起動しなかった時

- UIが消えていても、Windowsのプロセスにqemuというプロセスが残っていた場合は、そのqemuがエミュレータの制御プロセス。
それがゾンビになっているので、基本的にqemuを強制終了させることで、エミュレータを正常に起動できる
→PC再起動でも直るが、先にタクスマネージャーからqemuを探して消しておくと良い
https://note.com/ar_vr_mr/n/n6f383d81334c


# プロジェクトウィンドウ
- 「Android」を設定すると　**←Android開発をするときはだいたいこれを設定しておく**
    - Android開発に最適化された形でプロジェクトのフォルダやファイルを表示してくれる
    - Android開発に関係ないファイルとかは表示されなくなる
    - Android開発ではフォルダ（パッケージ）毎に意味を持つ
（「UseCase」「ViewModel」とかのファイルをどのフォルダに置くかをだいたい決めておくので）
        - アイコンでkotlinとかjavaとかが分かるようになる

- 「Project」を設定すると
    - ファイルシステム上のモノがそのまま表示される
    - Android開発に関係無いファイルも表示される

![2024-10-29_20h50_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2330584/9101250e-66d4-2c43-109f-d6ac40581e93.png)

# ライブラリの追加
ライブラリの追加は、gradle syncでよしなにやってくれるので、右上の象さんマークを押すだけでいいハズ！
動画のノイズを除去する方法とおすすめツール【音声と映像】

## 動画のノイズってどんなもの？
動画制作や編集を行っている方なら誰でも経験するのが、動画に含まれるノイズの存在です。動画のノイズとは、映像や音声に混入する雑音や乱れのことを指します。一般的に、動画撮影時の環境や機材の性能、編集作業による劣化などが原因となって生じます。
### 映像ノイズの種類
動画制作において、映像ノイズは非常に重要な問題です。映像ノイズにはいくつかの種類があります。
* 一般的な映像ノイズの一つは「グレインノイズ」です。これは、映像が粗く見える現象であり、通常は低照度条件下で発生します。
* もう一つの映像ノイズの種類は「ブロッキングノイズ」です。これは、映像が大きな塊状になる現象であり、コンテンツの品質を低下させる原因となります。ブロッキングノイズは圧縮された映像データから生じることが多いです。
* 映像ノイズの中には「モーションブラー」と呼ばれるものもあります。これは、被写体やカメラの動きによって生じるぼやけた映像のことであり、動きの速い映像ではより目立ちます。

映像ノイズの種類を理解することで、適切なノイズリダクション技術を選択し、ノイズを効果的に取り除くことができます。映像制作においては、映像ノイズの種類を把握し、適切な対策を講じることが重要です。
### 音声ノイズの種類
動画制作や音声録音でよく発生する音声ノイズにはさまざまな種類があります。

* その中でも特によく見られるノイズの一つは「背景ノイズ」です。背景ノイズは周囲の環境音や電子機器からの干渉によって引き起こされます。例えば、車の通行音やエアコンのブーイングなどが挙げられます。
* また、「マイクロフォンノイズ」もよく見られる問題です。マイクロフォンノイズはマイク自体から発生するノイズであり、マイクの品質や使用方法によって異なる影響を及ぼします。
* さらに、録音機器や再生機器の故障による「機器ノイズ」も重要な要因として挙げられます。

ノイズがあると、動画の質が低下してしまうだけでなく、鑑賞者の視聴体験にも影響を与えます。ノイズが多すぎると、視聴者が動画を見続けることが難しくなりますし、プロフェッショナルな印象を与えることも難しくなります。

しかし、心配はいりません。ノイズ除去の技術やソフトウェアは、日々進化しており、様々なツールやアプリを活用することで、簡単にノイズを取り除くことが可能です。ノイズを排除することで、クリアで美しい映像や音声を作ることができ、視聴者に最高の視聴体験を提供できるでしょう。

## 動画の映像ノイズ除去の方法

映像ノイズを取り除くことは、自力ではかなり困難ですが、現在はAI技術を搭載したソフトウェアが存在し、それを活用することが望ましいと考えます。AI技術を搭載したソフトウェアは、動画のノイズを詳細に分析し、処理してくれます。パソコンに詳しくない方にとっても最適です。例えば、UniFab ノイズ除去 AIがそのようなソフトウェアです。
### 映像ノイズを除去できるツール：UniFab ノイズ除去 AI

UniFab ノイズ除去 AIは、DVDFab社が開発している製品であり、AI技術を利用することで高品質な動画出力を実現できます。細部まで修復してくれ、他の手続きが全く必要ありません。

ビデオノイズは、さまざまな原因で発生する可能性がありますが、UniFab ノイズ除去 AIは、AIアルゴリズムによってノイズを迅速かつ正確に除去できます。AI技術を活用することで、操作が簡単で初心者でも簡単にノイズを取り除けます。

また、簡単な動画編集機能やサイズのクロップ、ビデオのトリミングなどの機能も備えています。30日間の無料お試し期間があるため、試してみましょう！

### UniFab ノイズ除去 AIで映像ノイズを除去する方法

+ [UniFab ノイズ除去 AI](https://ja.unifab.ai/denoise-ai.htm)を無料でダウンロードし、パソコンにインストールします。
+ ソフトを起動し、メイン画面に移動します。左側に各製品が表示されますので、「Denoiser」を選択し、中央の「+」ボタンをクリックしてソース動画を追加します。
+ ソース動画を追加したら、画面が更新され、情報を確認して保存先を指定し、「開始」ボタンをクリックするだけで作業が開始します。
+ UniFab ノイズ除去 AIが動作中の画面になります。しばらくお待ちいただくと、UniFab ノイズ除去 AIが自動的に動画のノイズを除去します。（動画のサイズによって処理に時間がかかる場合があります。）
+ 操作は直感的で分かりやすいため、初めてでも安心して利用できます。

## 動画の音声ノイズ除去の方法
動画編集では、時に音声にノイズが乗ってしまうことがあります。このような場合、プロフェッショナルな動画を作るためには、ノイズを除去する方法を知っておくことが重要です。

ノイズ除去を行うために、最初に音声の波形をしっかりと確認しましょう。ノイズの発生原因を特定し、それに合った対策を取ることが肝心です。

### 音声ノイズを除去できるツール：MyEdit
MyEditは、CyberLink社が提供する人気の動画編集ソフト「PowerDirector」をベースにしたオンラインサービスです。このツールを使用することで、アプリのダウンロードなどは必要ありません。ブラウザ上でオンラインで無料で簡単に音声やMP3の編集ができます。

MP3、WAV、FLAC、M4Aファイルといった幅広いフォーマットに対応しており、さまざまな機能が提供されています。風の音やノイズの取り除き、声のトーンの変更、ボーカルや伴奏の抽出、BPMの計測、音声のトリミングやカットなどが可能です。また、AI機能を搭載しており、初心者でも簡単にオーディオ編集を行うことができます。基本的な編集機能は無料で利用できます。

### MyEditで音声ノイズを除去する方法
MyEditはダウンロード不要で、ウェブサイトにアクセスするだけで利用可能です。
+ サイトを開いて、左メニューが「音声ノイズ除去」になっているか確認 、ノイズの除去を行いたい音声ファイルをドラッグ＆ドロップするか「ファイル選択」からアップロードします。
+ 音声ファイルを読み込むと画面下部にある「レベル」という所をマウスで左右に動かすことで調整します。 レベルを調節することでどの程度のノイズ量（範囲）を除去するかを決められます。
+ 実際に、「再生ボタン」をクリックして、ノイズが無くなっているか確認してみましょう。 
+ ノイズ除去ができたら、画面上部の「ダウンロード」をクリックして完了です。 なお、この時に保存するファイル形式を下図のように選ぶこともできます。 
## 動画のノイズを除去するまとめ
動画制作を始めると、避けて通れない課題の一つがノイズ 除去です。ノイズの原因や対処法を理解しているかどうかは、最終的な動画のクオリティにも影響を与える重要な要素と言えます。

適切な知識を身につけ、効果的に対処することで、より魅力的な動画を制作することが可能です。
Fluent Bitメモ

[Fluent Bit](https://fluentbit.io/)を触ってみました。備忘録です。　Fluent BitとはCNFCのサブプロジェクトでOSSのログコレクターとのこと。多くのSIEM/SOARベンダーがコレクターとして利用しているっぽいですね。MacBookに[Homebrew](https://brew.sh/)がインストール済であることを前提としています。
<br>

Homebrewでインストール
```console
$ brew install fluent-bit
```
<br>

[サンプルのログ](https://gist.github.com/hisashiyamaguchi/1de2856f3eafeaf05bbacc5a47dcd296)をパースしてみた。
```console
$ fluent-bit -i tail -p path=./sample.log -p parser=json -p read_from_head=true -R /opt/homebrew/etc/fluent-bit/parsers.conf -o stdout -f 1
Fluent Bit v3.0.6
* Copyright (C) 2015-2024 The Fluent Bit Authors
* Fluent Bit is a CNCF sub-project under the umbrella of Fluentd
* https://fluentbit.io

___________.__                        __    __________.__  __          ________
\_   _____/|  |  __ __   ____   _____/  |_  \______   \__|/  |_  ___  _\_____  \
 |    __)  |  | |  |  \_/ __ \ /    \   __\  |    |  _/  \   __\ \  \/ / _(__  <
 |     \   |  |_|  |  /\  ___/|   |  \  |    |    |   \  ||  |    \   / /       \
 \___  /   |____/____/  \___  >___|  /__|    |______  /__||__|     \_/ /______  /
     \/                     \/     \/               \/                        \/

[2024/06/05 12:34:20] [ info] [fluent bit] version=3.0.6, commit=, pid=23856
[2024/06/05 12:34:20] [ info] [storage] ver=1.5.2, type=memory, sync=normal, checksum=off, max_chunks_up=128
[2024/06/05 12:34:20] [ info] [cmetrics] version=0.9.0
[2024/06/05 12:34:20] [ info] [ctraces ] version=0.5.1
[2024/06/05 12:34:20] [ info] [input:tail:tail.0] initializing
[2024/06/05 12:34:20] [ info] [input:tail:tail.0] storage_strategy='memory' (memory only)
[2024/06/05 12:34:20] [ info] [output:stdout:stdout.0] worker #0 started
[2024/06/05 12:34:20] [ info] [sp] stream processor started
[0] tail.0: [[1717558460.957882000, {}], {"date"=>"22/abr/2019:12:43:51 -0600", "ip"=>"73.113.230.135", "word"=>"balsamine", "country"=>"Japan", "flag"=>false, "num"=>96}]
```
<br>
おしまい。
OpenCVのラッパーがQRコード検出時にエラーを吐く(or 文字化けする)

## 問題
*OpenCV* の`QRCodeDetector`クラスをラップするラッパーライブラリ(具体的には*OpenCVSharp*と*OpenCV-Python*で確認)が特定のQRコードに対して`QRCodeDetector::detectAndDecode`でエラーを吐くor文字化けなどの問題を起こす件について。

他のQRコードリーダでは正しく読めたのでかなり困惑しました。

あんまり情報が無くて半日つぶしたので残しとく。

## 例
例えばこの画像で確認できる。

![qr.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705544/b229dd92-4ff3-39f5-3050-78a7c6bf5d75.png)

### OpenCV-Pythonの言い分
```python
import cv2
img=cv2.imread("qr.png")
qcd = cv2.QRCodeDetector()
result = qcd.detectAndDecode(img)
print(result)
```
```
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 0: invalid start byte
```

### OpenCVSharpの応答
```cs 
using var image = Cv2.ImRead(name);
using var detector = new QRCodeDetector();
var result = detector.DetectAndDecode(image, out var area);
Console.WriteLine(result);      
```
#### コンソールでの文字列出力
```
?±?eQR?R?[?h?AOpenCV?C?A???a?≪?￠?n???e???E
```
#### 内部データ表現
C#の文字列表現はUTF-16です。一方文字列の内部データ全文字1バイトしか使ってなかったのでその部分だけ抽出して並べるとこうなります。

```
82-B1-82-EA-51-52-83-52-81-5B-83-68-82-C6-4F-70-65-6E-43-56-82-C7-82-C1-82-BF-82-AA-88-AB-82-A2-82-F1-82-BE-82-EB-82-A4-82-CB
```

## 結論
*OpenCV-Python*のエラーが大体原因書いてくれてますけど

これはOpenCVから返されたデータがUTF-8に則ってないために起こるみたいです。
もうちょっと根本的に言うと対象のQRコードがちょっとおかしかった場合に起こるみたい。多分

## 原因の考察
QRコードには4種類のデータ格納モードがあり、通常日本語文字列を格納する場合は漢字モードというモードにShift-JISエンコードで格納すると規定されています。

で、OpenCVは漢字モードのデータに対しては Shift-JIS -> UTF-8 の変換かませて`std::string`で返すっぽいです。一方8bitバイトモードという格納モードの場合は読み取ったバイト列そのまんま`std::string`にのせて返すみたい。

(8bitバイトモードは公式の推奨だとJIS X 0201などなのでAsciiとほぼ同じ)

それで例の画像のように8bitバイトモードでShift-JISエンコードなされている ~~くそ迷惑~~ 斬新なQRコードを読み取ろうとした場合、
各ラッパーはUTF-8の文字列がOpenCVから返ってくることを期待してバイト列を各々の環境の文字列表現に変換しようとするけど中身はUTF-8じゃなくてShift-JISそのまんまの列なので...

ってことらしい。

### ちなみに他のモードは
データ格納モードは他に数値モードと英数字モードがあるみたいですが、それぞれどうなるんでしょう？
めんどくさいので確認してませんがOpenCVはいい感じに文字列化するんでしょうか。
英数字モードはさすがにそのまま文字列化してくれそうですが、数値モードに対しては数値を文字列化したものを返すのか？それとも数値自体をバイト列で返すのかな。前者の方が都合がいいんですが...

## 何が悪いのか
直接的には漢字モードを使わずに8bitバイトモードでShift-JISエンコードされたデータを格納しているQRコードが悪い。OpenCVとラッパー達は一応規定に従っただけ

でもこれWeb上のある生成ツール使って出力した画像なんですが。それでも問題のあるコードのようですね

このQRコードは一部のQRコードリーダーやライブラリでは正常にデコードできるようですが(例えばZxingはデコードできるっぽい)、こうなってくると逆にどうして他のツールは正常に処理できるのかの方が気になります。
文字コード推定でもしてるんでしょうか

今んとこ対処法は思いつかないです。OpenCV-Pythonはエラー吐くし、OpenCVSharpはエラー吐かないまでも返ってきた文字列が不当なUTF-8デコードの産物であることを直接的に判断する方法がないので。

一応OpenCVSharpの方はもう一回Shift-JISデコードを噛ませると読めるようにはなりましたが、これは対症療法に過ぎないし...

## まとめ
QRコード読み取りでこのような問題が起こったときは一応QRコードの方がフォーマットを間違えている可能性も考慮に入れてもいいかもしれません。
たとえ他のソフトでは読み取れたとしても

## 余談(愚痴)
QRコードのデータ内部表現の違いが原因なのは早々に検討がついてたんですけど意外とQRコードのデータモードを教えてくれるツールってないんですね。
お陰様でQRコードを人力で解読する羽目にあいました。もうやりたくないです。ちょっと楽しかったけど
【キャリアパス】自身のキャリアパスを振り返る

# はじめに
自分用の備忘録として記載する。
経歴が必要になった場合、すぐ提出できるよう本記事を定期的にアップデートしていく。

# 大学時代
大学で専攻していた学科は測量を主に行っており、プログラミングとは程遠い分野を勉強していた。

## ～なぜIT業界へ～
1社目は大学での学びを活かすため、建設コンサルタント業界へ就職した。業界の中では大手だった。
業務の中で、成果物自動作成ツールを開発することがあり（ExcelのVBAという中々コアな言語）そこでプログラミングに本格的に触れ合うきっかけとなり、新卒切符を半年ほどで捨てIT業界へ転職した。

## 1社目
* 技術者向けアプリケーションの 新規開発【2021年4月～2021年9月】
【概要】
　・外作業で計測したデータ、画像等をエクセルに自動的に資料化するマクロ（VBA）を作成した。
【開発手法】
　・アジャイル
【担当業務】
　・画面開発
　・バックエンド処理開発
【使用技術】
　・Windows
　・VBA

## 2社目
* 高速道路向け車線制御システムの追加機能開発【2021年9月～2022年3月】
【概要】
　・インボイス制度対応による、電子明細保存の機能追加
【開発手法】
　・ウォーターフォール
【担当業務】
　・バックエンド処理開発
　・画面開発
　・単体、結合、システムテスト
　・設計書修正
【使用技術】
　・C
　・Linux
　・Access

<br>

* 電子機器業界向け基幹システム開発【2022年4月～2023年3月】
【概要】
　・見積・受注・貸出・物流といった複数基幹システムを新システムへ統合
【開発手法】
　・アジャイル
【担当業務】
　・見積,受注機能開発の基本設計・詳細設計・実装・単体テスト・結合テスト
　・テスト項目書の作成
　・基本設計書、詳細設計書の作成（メンバーとして顧客折衝）
　・DB設計書の修正
【使用技術】
　・java
　・js/jquery
　・PostgreSQL

<br>

* 教育業界向けWebアプリケーション開発【2023年4月～2023年9月】
【概要】
　・旧システムから新システムへの機能移行、および新規機能開発
【開発手法】
　・アジャイル
【担当業務】
　・機能移行および新規機能の実装、単体テスト、結合テスト
　・テスト項目書の作成
　・DB設計書の修正
【使用技術】
　・java
　・js/jsp/jquery
　・PostgreSQL

 ## 3社目
* CMSサイト制作【2023年10月～2024年3月】
【概要】
　・某CMSを利用した、CMSサイト構築
【開発手法】
　・ウォーターフォール
【担当業務】
　・CMS環境構築
　・CMSテンプレート開発
　・バックエンド処理開発
　・単体テスト
【使用技術】
　・Windows/linux
　・php
　・Apache
　・linux

<br>

* 請求書ダウンロードシステム開発【2024年4月～2024年5月】
【概要】
　・別システムで発行した請求書をクラウド上にアップロード後、各請求先にメール送付し請求書がダウンロードできるシステム
【開発手法】
　・ウォーターフォール
【担当業務】
　・詳細設計
　・DB設計
　・実装
　・単体テスト
　・結合テスト
【使用技術】
　・Windows/linux
　・azure
　・php
　・mysql

<br>

* 【社内向け】作業報告書自動作成ツール【2024年5月～2024年6月】
【概要】
　・某企業様へ作業報告書を毎月手動作成していたため、業務効率化のため自動作成するシステムを開発
【開発手法】
　・アジャイル
【担当業務】
　・DB設計
　・実装
　・単体テスト
【使用技術】
　・Windows/linux
　・azure
　・php
　・mysql

## 保有資格
　・AZ-900（Azure初級資格）

## 最後に
意外と書き始めたら色々な思い出が蘇ってきて楽しかった（小並感）
都度更新予定（多分...

（※もし使用技術等間違えていましたらご指摘いただけると幸いです
Qiita Engineer Festa 2024の内容に対する感想

Qiita Engineer Festa 2024の内容に対する感想

このイベントは、とても楽しそうですね！6月3日から7月25日までの期間限定で開催されるこの「記事投稿キャンペーン」と「かける配信イベント」は、夏の素晴らしいお祭りになりそうです。特に、3つの楽しみ方が用意されているのは魅力的です。

「記事投稿キャンペーン」で豪華プレゼントをゲットできるチャンスは、参加者にとって大きな動機となるでしょう。そして、「投稿マラソン」でQiitaオリジナルグッズを手に入れることも楽しみの一つです。また、親しいメンバーと一緒にアウトプットを楽しむ「Organization対抗戦」は、チームの結束力を高める素晴らしい機会だと思

さらに、イベント参加者への賞品も用意されているのは、参加者への感謝の気持ちを感じさせます。自宅やオフィスから気軽に参加できる点も、全国各地の人々にと

この夏、一緒に熱い夏を楽しみながら、知識を共有し、成長できるこのイベントは、参加する価値が十分