OmniAICreator/Qiita-1.07M huggingface dataset:
HTMLの基本

## 基本構造
```
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>ページのタイトル</title>
</head>
<body>

</body>
</html>
```
### メタデータ部　表示されない部分
・ファイルの文字コード
　文字に対して番号が割り振られており、
　異なる文字コードでファイルを開くと文字化けが発生する。
　HTML、CSSでサイトを作る際はUTE-8で作る決まりになっている。
 
・Webページタイトル
・CSSファイルのリンク
```
<head>
    <meta charset="UTF-8">
    <title>ページのタイトル</title>
</head>
```

#### コンテンツ部　表示される部分
```
<body>

</body>
```


#### コメントの書き方
```
<!-- -->
```
## 要素の追加
```
</head>
<body>
    <header>

    </header>

    <h1>大見出し</h1>

    <main>
    
        <p>段落</p>

        <div>        
            <h2>中見出し</h2>
            <ul>
                <li></li>
                <li></li>
            </ul>
        </div>

        <div>
            <h2>中見出し</h2>
            
            <table>
                <tr>
                    <th>見出しセル</th>
                    <tb>通常セル</tb>
                </tr>
                <tr>
                    <th>見出しセル</th>
                    <tb>通常セル</tb>
                </tr>
            </table>
            
        </div>
        
    </main>

    <footer>
    
    </footer>
</body>
</html>
```

## 段落
テキスト、テキストを装飾するタグ、リンク、画像のみ含めることができる。
```
<p></p>
```
・テキストが横に1行で表示され見にくいとき
　ファイルタブ→ユーザー設定→設定→
　Editor:Word Wrapをonでテキストが折り返して表示される

## 箇条書き(番号なしリスト)
\<ul>と\<li>はセットで使用する。

```
    <ul>
        <li>あいうえお</li>
        <li>かきくけこ</li>
        <li>さしすせそ</li>
    </ul>
```
```
・あいうえお
・かきくけこ
・さしすせそ
```
## テーブルの作成
\<table>：親要素、テーブル１行ごとのセル数は同じにする必要がある
\<tr>：テーブルの１行を指す
\<th>：見出しセル、セル幅に対して中央揃えになる
\<tb>：通常セル
```
            <table>
                <tr>
                    <th>住所</th>
                    <tb>あいうえお県かきくけこ市</tb>
                </tr>
                <tr>
                    <th>営業時間</th>
                    <tb>10:00-18:00</tb>
                </tr>
            </table>
```
```
住所　　　あいうえお県かきくけこ市
営業時間　10:00-18:00
```

## グループ化タグ
#### ヘッダータグ
```
<header></header>
```
#### フッタータグ
```
<footer></footer>
```
例：コピーライトのテキスト表示
&;を使用して文字実体参照（HTMLにかけない文字、入力しずらい文字）を使用できる。
```
    <footer>
        <p>&copy; あいうえお</p>
    </footer>
```
```
©あいうえお
```

#### メインタグ
ページの中心となる内容をまとめる。原則１回のみ使用できる。
```
<main></main>
```

#### 汎用ブロック
意味を持たないタグ。要素をまとめ、CSSをうまく適用するために使用する。
```
<div></div>
```

#### ナビゲーションタグ
主要なページへのリンクを集めたナビゲーションをまとめる。
```
<nav></nav>
```
例：ヘッダータグ内で主要なページに飛ぶリンクを集めて表示
```
    <header>
        <nav>
            <ul>
                <li>ホーム</li>
                <li>新着情報</li>
                <li>お問い合わせ</li>
            </ul>
        </nav>
    </header>
```
```
・ホーム
・新着情報
・お問い合わせ
```

#### 汎用セクションタグ
\<div>タグより意味合いを持たせたいときに使用する。
```
<section></section>
```

#### アサイドタグ
広告やコメント欄など本題とは少し離れるコンテンツをまとめる。
```
<aside></aside>
```

#### アーティクルタグ
１つの話題に関する見出しとテキストをまとめる。
```
<article></article>
```


## 参考書籍
こちらを参考に自分用にまとめさせていただきました。
画像が多くとても分かりやすいのでおすすめです。

https://amzn.asia/d/bGVeWHi
ヘッダーコメント及び関数コメント

# はじめに
本記事は各言語(環境)別でコピペ用に残しておく物、過去運用実績がある言語のみを記述

## GAS(MarkdownはJavaScriptで代用)
```JavaScript:Sample.gs
// -----------------------------------------------------------------------------
// File-Name       : .
// ProjectName     : -
// Contents        : -
// Date            : //
// -----------------------------------------------------------------------------
// Reference
// -
// -
// -----------------------------------------------------------------------------

// -----------------------------------------------------------------------------
// FuncName        : -
// Contents        : -
// -----------------------------------------------------------------------------
```
## VBA/VBS(拡張子は適宜 vbsなどに置き換える)
```visualbasic:Sample.bas
'===============================================================================
' File-Name        : .
' ProjectName      : -
' Contents         : -
' Date             : //
'===============================================================================
' Reference
' -
' -
'===============================================================================
'===============================================================================
' Func-Name        : FuncName
' Contents         : -
'===============================================================================
' Response-Value
' String           : -
'                  :
' =============================================================================
' Parameters
'                  : -
' =============================================================================
```

# C#
省略(IntelliSense任せでも良いので、先に関数定義を書いてその都度"///"を打てばいい)
詳しくは以下を参照

https://qiita.com/matsumoyu/items/5930cc7ffe2f4f4aafa2

※1:VS2003の頃はもっと凝った感じで生成されたと思ったんだが…変わったのかな？
※2:seeとseealsoは知らなかった…
【Next.js × Docker】Dockerコンテナで`npm run build`すると`Cannot find module`と言われた時の対処法【備忘録】

# 結論
`Module not found: Can't resolve '@/app/hoge/huga/piyo'` と言われたら
まず `next.config.js` でエイリアスを解決してあげる
```js:next.config.json
/** @type {import('next').NextConfig} */
const nextConfig = {
  // デフォルト設定だとこれでいける
  // いじくった人は`alias`を変えて`path.join(__dirname, "src")`てきなことをしてください
  webpack: (config, { isServer }) => {
    config.resolve.alias["@"] = __dirname;
    return config;
  },
};

module.exports = nextConfig;
```
このままだと `Error: Cannot find module 'tailwindcss'` とかも言われるので `Dockerfile`もいじくる
```diff_docker:Dockerfile
- RUN npm install
+ RUN npm install --production=false
```

解決！

## 参考文献
偉大なる Stackoverflow のコミュニティ

https://stackoverflow.com/questions/76676456/next-js-v13-in-docker-does-not-respect-path-alias-but-works-locally

Next.js v13と書かれているが自分の環境ではv14でも起こった
もしかしたら自分のDockerfileの書き方が雑すぎて起きているのかもしれないがとりあえず同じことが起こった人用に
【OutSystems】 入力フォームで未来の日付を入れた場合にエラーを表示させる

## 未来の日付を入力した場合、そのまま登録されてしまわないようにするには
誕生日に未来の日付を入力した際、登録ができないように制御します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691264/0aecf4b8-faec-535e-7476-878801199527.png)

エンティティ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691264/d9c2c9be-34a6-ea20-8f67-3e25d51a71a3.png)

Saveロジック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691264/2fbed421-d9c1-4fe4-8416-146ef46f06fb.png)

#### ① If文

ProfileForm.Record.Profile.DateOfBirth > CurrDate()

ProfileFormのDate Of Birthが現在の日付よりも先であれば
と設定。
ProfileFormはFormウィジェットにProfileエンティティを紐づけたもの。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691264/db4c399f-65af-ecf8-c88d-254f76824542.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691264/bfb0a176-21f5-9aa5-3d88-f0685ce49905.png)

#### ② True(現在の日付よりも先)の場合
Profile_DateOfBirth.Valid = False

ProfileFormのDate Of Birthは違いますよ
と設定。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691264/045393c9-26a2-11a4-bc58-fb250fbeb050.png)

#### ③ データを検証

not ProfileForm.Valid?

ProfileFormにユーザーが正しい日付を入力していないですか？
という設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691264/7ff56af1-fa9e-78a1-211e-998299ba80ae.png)

FormウィジェットのValidプロパティにアクセスすることにより、クライアントアクションでデータを検証している。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691264/ae5d1de6-4a91-491d-f980-ba8d8563364c.png)

ProfileFormにユーザーが正しい日付を入力していないですか？

->はい、正しい日付を入力していない。
正しい日付を入力していない (未来の日付を入力) 場合は、右に進み (True)、フィードバックメッセージ (「日付が正しくありません」など) を表示させEnd。

->いいえ、正しい日付を入力している。
正しい日付を入力している場合は下に進み (False)、Profileをアップデートして、フィードバックメッセージ (「登録しました。」)などを表示させてEnd。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691264/806ccb81-c856-9c5f-7b1a-9ef89a2a48ef.png)
Javaで「MULTILINEフラグ(複数行モードを有効にする)」の動作を確認してみた

# 概要

Javaで「MULTILINEフラグ(複数行モードを有効にする)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/regex/index18.html

# 実装

以下のファイルを作成しました。
```JSample18_1.java
import java.util.regex.*;

class JSample18_1{
  public static void main(String[] args){
    String target1 = "apple is red\nlemon is yellow";
    String target2 = "lemon is yellow\napple is red";

    String regex = "^apple";
    Pattern p1 = Pattern.compile(regex);

    Matcher m1_1 = p1.matcher(target1);
    System.out.println(target1 + ":" + m1_1.find());
    Matcher m1_2 = p1.matcher(target2);
    System.out.println(target2 + ":" + m1_2.find());

    System.out.println("---- ----");

    Pattern p2 = Pattern.compile(regex, Pattern.MULTILINE);

    Matcher m2_1 = p2.matcher(target1);
    System.out.println(target1 + ":" + m2_1.find());
    Matcher m2_2 = p2.matcher(target2);
    System.out.println(target2 + ":" + m2_2.find());
  }
}
```

以下のコマンドを実行しました。
```
$ javac JSample18_1.java 
$ java JSample18_1 
apple is red
lemon is yellow:true
lemon is yellow
apple is red:false
---- ----
apple is red
lemon is yellow:true
lemon is yellow
apple is red:true
```

# まとめ

何かの役に立てばと。
「スタッフエンジニア」を読んで  〜キャリア考察〜

## 前段
「[スタッフエンジニア　マネジメントを超えるリーダーシップ](https://www.amazon.co.jp/%E3%82%B9%E3%82%BF%E3%83%83%E3%83%95%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2-%E3%83%9E%E3%83%8D%E3%82%B8%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%82%B7%E3%83%83%E3%83%97-Will-Larson/dp/429607055X)」という書籍を通して、改めてキャリアを考察し直しました。

## 本の大まかな構成
第 1 部では、「スタッフ」とはどういう役割なのか？またどのように活躍していけば良いのか？といったことが書かれています。

第 2 部では、名だたるテック企業におけるスタッフエンジニアの方へのインタビュー内容が収められています。

## そもそも「スタッフ」とは？
### キャリアフロー
「スタッフ」という言葉のイメージから、「上位」の位置付けであるという想定をしづらいかと思います。

が、本書では下記のような位置付けになっています。

```mermaid
flowchart LR

ジュニア-->ミドル-->シニア==>スタッフ-->プリンシパル-->ディスティングイッシュド
ジュニア-->ミドル-->シニア==>マネージャー-->シニアマネージャー-->ディレクター-->バイスプレジデント
```

「スタッフ（重要）」・「プリンシパル（主要）」・「ディスティングイッシュド（際立って優れた）」の3つを総称して「スタッフプラス」と呼び習わすようです。

「シニア（上級）」から「スタッフプラス」にいくのか、「マネジメント」にいくのか枝分かれするイメージです。

### 典型例（一部）
- テックリード
    - チームを技術的な成功に導く役割
- アーキテクト
    - 技術戦略・設計をリードする役割
- ソルバー（解決者）
    - 複雑な問題を解決に導く役割
- 右腕（ライトハンド）
    - 会社幹部の補佐を務める役割

本書で取り上げられていたパターンを上記に書き出しましたが、そもそも「スタッフエンジニア」という概念が認知されていない会社も多く、存在しても呼び名や役割がまちまちだったりするようです。

そして、その分かりづらさのため、スタッフではなくマネージャーを選んでしまい、やりたいこととのズレが生じて苦しむエンジニアも多い、ということでした。

## 大切だと感じたポイント（意訳）
- 力の注ぎ先に留意する
    - スナッキング（簡単だがインパクトの弱いタスクの消化）を避ける
    - プリーニング（有能なリーダーのフリ）を辞める
    - ゴーストチェイシング（前職での状況に囚われた誤った戦略転換）を辞める
- 自分の「得意」を活かす
- インポスター症候群（自分の能力や実績を認められない状態）から脱する
- 自分を「安全圏の外に」出す
- 「肩書き」は、周囲からの「信用」を得るのに重要な役割を果たす
- 役割にも依るが、「スタッフエンジニア」が「コードを書く時間」は減る傾向にある
    - コーディング力は現場から離れるほど衰えるが、そこが肝要ではないと心得る
- 「スタッフエンジニア」にはコミュニケーション能力が重要であり、重要な技術的課題においても人に委任し育成する意識が肝要
- 人によって「やりがい」を感じるポイントは異なるので、「肩書き」のために自分の気持ちを犠牲にすることなく、「本当にやりがいを感じるポジション」を目指す
- 希望のポジションを得るためには「上位の役職者」や現場の「サポート」が必須であり、協力を得られる関係づくり・及び（自身の実績を知って貰う）アピールが肝要
- スタッフエンジニアになるための「スタッフプロジェクト（重要・かつ難易度の高いプロジェクトにおけるリード）」は必須でないこともあるが、その経験があれば大きな財産になる
- 「スタッフエンジニア」として重要なのは「個人」ではなく「チーム」として成果を出す、という意識
- 「専門性」は、「細かいタスク選択」の積み重ねにより培うことも可能
    - なおジェネラリストを目指すか、スペシャリストを目指すかという、どちらの志向もある

## 感想
全体的にテクニカルな話はほぼ無く、心構えやメンタリティの話が中心でした。

また第 2 部などは丸々インタビュー形式ですし、人によって考え方もまちまちなので、体系的に捉えるのは少し難しく感じました。

ただ、そもそも「スタッフエンジニア」のキャリアというものはそこまで体系立った厳密なものではなく、周囲の力を借りながら自分自身で作っていくものである、と理解しました。

また各インタビュイーの話を読んでいると、マネージャーにいきたいと結論付けている人・マネージャーとスタッフを行き来している人・行くか迷っている人・行ったけどスタッフで行こうと決め直した人・絶対行かないと決めている人、と様々でした。

が、「スタッフエンジニア」は「人事権の無いマネージャー」というぐらい似通った要素が多々あるようでしたので、いずれにせよマネジメントについても学んでいくのが良さそうだ、と感じました。

それから、本書では度々「インポスター症候群」という言葉が出てきますが、どんなに優秀な人でも絶えず不安に駆られ自信の無さに苛まれている、ということがよく伝わってきました。

自分も、なるべく自信を持って、安全圏の外に出るような挑戦をこれからも行っていきたいと思いました。

今後もキャリアについては迷いながら進んでいくことと思いますが、この本を読む中で様々なヒントを得られたのがありがたかったです。

今後はそれらも手掛かりにしつつ、実際の仕事を通して、自分ならではのキャリアを築いていきたいと思います。
Cloudflare+Astro+githubでSSRの構築

以前、構築したサイト（github+s3+cloudfront）からヘッドレスCMSの構築の前段として、Astro+ReactとCloudflare Pagesに移行することにしたので、そのメモ。

Pagesがやたら便利で、本番化前の確認も手軽にできたり、デプロイもむちゃくちゃ簡単でだいぶ時短ができたのと、プロにアップグレードすると他にも色々と設定ができて、かなり優秀。

## githubの設定
1. githubにリポジトリを作成
2. ブランチに `prod` を追加
3. レポジトリの Settings > Rules > Rulesetsの設定
3.1 `main`と`prod`をプロテクトする
3.2 「Require a pull request before merging」選択
:::note info
開発時は、必ずリモートブランチを作成しPRをするという流れを準備し、合わせてprojectsのワークフローの設定を行うことでより、作業の進捗を把握しやすくする。
:::

## Astroのセットアップ

### githubのレポジトリーをcloneする
```bash
git clone レポジトリのURL
```

### Astroをインストール
```bash
cd レポジトリのDIR
npm create astro@latest
npx astro add react  # reactを使いたいので入れておく
npx astro add tailwind  # tailwindを使いたいので入れておく
```
:::note info
作成時に質問があるが基本全部YESし、githubのレポジトリの初期化はNOにする。ディレクトリ名は、`frontend` にしておく。
:::

## Cloudflareの設定
前提: cloudflare DNSの設定が終わっていること
1. Workers & Pagesに移動しGithubアカウントと接続
2. カスタムドメインでDNSに登録してあるドメインを使って設定
3. 設定 > ビルド&デプロイへ移動
4. 本番環境デプロイ構成
5.1 プロダクションブランチ `prod`
6. ビルドの構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18766/b088d209-a50d-aef8-b3a8-723357b43ed0.png)
:::note info
今後、strapi（ヘッドレスCMS）と連動したいので、webhookも設定しておく。使用しない場合は、設定しなくてよい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18766/6b280c27-b93b-65bc-225a-5db39add94da.png)
:::

### その他の設定
* カスタムドメインに以下を追加
    * www.ドメイン.com
    * ドメイン.com
* Bulk Redirectを使って、***.pages.devをwww.ドメイン.comへリダイレクト

大体こんな感じで、できてしまう。
BigQueryで定数を定義する方法

## はじめに

BigQueryでSQLクエリを書く際、同じ値を複数回使用することがよくあります。

このような場合、定数を定義することで、コードの可読性、保守性、そして再利用性を大幅に向上させることができます。本記事では、BigQueryで定数を定義する方法、そのベストプラクティス、注意点、そして定数を使用することの多様なメリットについて詳しく解説していきます。

## DECLAREステートメントの基本

BigQueryでは、`DECLARE`を使用して定数を定義します。

### 基本構文

```sql
DECLARE 定数名 データ型 DEFAULT 値;
```

### 簡単な例

```sql
DECLARE start_date DATE DEFAULT DATE('2024-01-01');
DECLARE end_date DATE DEFAULT DATE('2024-12-31');
DECLARE group_id INT64 DEFAULT 100;
```

### 簡単な例（日本語での定義）

```sql
DECLARE `開始日` DATE DEFAULT DATE('2024-01-01');
DECLARE `終了日` DATE DEFAULT DATE('2024-12-31');
DECLARE `グループID` INT64 DEFAULT 100;
```

## 定数の使用例

以下に、定数を使用したより実践的な例を示します。

```sql
DECLARE start_date DATE DEFAULT DATE('2024-01-01');
DECLARE end_date DATE DEFAULT DATE('2024-12-31');
DECLARE target_group_id INT64 DEFAULT 100;

WITH user_activity AS (
    SELECT
        user_id,
        COUNT(*) AS activity_count
    FROM `project.dataset.events`
    WHERE event_date BETWEEN start_date AND end_date
        AND group_id = target_group_id
    GROUP BY user_id
)
,final AS (
    SELECT
        user_id,
        IFNULL(activity_count, 0) AS activity_count
    FROM user_activity
    ORDER BY activity_count DESC
)
SELECT * FROM final
```

この例では、日付範囲とグループIDを定数として定義し、クエリ内で再利用しています。

## 定数を使用することのメリット

1. **コードの可読性向上**
定数に意味のある名前を付けることで、コードの意図が明確になり、他の開発者やレビュアーが理解しやすくなります。
2. **保守性の向上**
値を変更する必要がある場合、定数を定義している箇所を1か所だけ修正すれば良いため、変更が容易になり、ミスのリスクも減少します。
3. **再利用性の向上**
同じ値を複数のクエリで使用する場合、定数を定義することで簡単に再利用できます。
4. **エラーの減少**
値を直接ハードコーディングする代わりに定数を使用することで、タイプミスなどのヒューマンエラーを減らすことができます。
5. **要件の明確化**
定数として定義することで、ビジネス要件や技術的な制約を明確に表現できます。これにより、コードの意図がより明確になります。
6. **テストの容易性**
定数を使用することで、テスト時に値を簡単に変更できるため、異なるシナリオのテストが容易になります。
7. **コードの標準化**
プロジェクト全体で一貫した定数の使用を促進することで、コードの標準化につながります。

## ベストプラクティス

1. **意味のある名前を使用する**：
`start_date`や`target_group_id`のように、定数の目的が明確に分かる名前を付けましょう。
2. **適切なデータ型を指定する**：
`DATE`、`INT64`、`STRING`など、値に適したデータ型を必ず指定してください。
3. **コメントを追加する**：
複雑な計算や特定の選択理由がある場合、コメントで説明を加えると良いでしょう。

```sql
-- 前四半期の開始日
DECLARE quarter_start DATE DEFAULT DATE_SUB(DATE_TRUNC(CURRENT_DATE(), QUARTER), INTERVAL 3 MONTH);
```

## 注意点

**定数名とカラム名の競合**
特に英語で定数名を付ける場合、既存のカラム名との競合に注意が必要です。

```sql
DECLARE group_id INT64 DEFAULT 100;

SELECT * FROM users
WHERE group_id = group_id;  -- これは常にtrueとなり、意図した動作にならない
```

**解決策**

- 定数名を明確に区別する: `DECLARE group_id_const INT64 DEFAULT 100;`
- バッククォートを使用する: `WHERE group_id =`group_id``
- テーブル名やエイリアスを明示的に指定する: `WHERE users.group_id = group_id`

## まとめ

BigQueryで定数を適切に使用することで、SQLクエリの可読性、保守性、そして再利用性を大きく向上させることができます。本記事で紹介したベストプラクティスと注意点を念頭に置きながら、プロジェクトに合わせて定数を活用してください。定数の効果的な使用は、長期的なコード品質の向上と開発効率の改善につながります。
netstatよりGet-NetTCPConnectionを使おう

最近PowerShellを使って便利だなと思ったことがあったので、メモを残します。

# TCP通信でプロセス名とURLを同時に表示する

Windowsで通信状況を見る場合に、netstatを実行し、表示されたPIDや通信先IPアドレスを見て、tasklistやDNSキャッシュを調べていました。これではさすがに面倒くさいのでPowerShellで自動化処理をしてみました。

```powershell:
$proc = @{}
Get-Process | foreach { $proc.add($_.Id,@($_.ProcessName,$_.Path)) }
$dns = @{}
Get-DnsClientCache | foreach { if (($_.Data -ne $null) -and !$dns.ContainsKey($_.Data)) { $dns.add($_.Data,$_.entry) }}
Get-NetTCPConnection | foreach { New-Object PSCustomObject -Property @{ "dstaddr"=$_.RemoteAddress;"dns"=$dns[$_.RemoteAddress];"dstport"=$_.RemotePort;"state"=$_.state;"PID"=$_OwingProcess;"Proc"=$proc[[int]$_.OwningProcess][0];"path"=$proc[[int]$_.OwningProcess][1] }} | format-table dstaddr,dstport,state,PID,Proc,Path,dns
```

* プログラムの説明
1~2行目で、PIDからプロセス名とパスを検索できる辞書型変数`$proc`を作っています。
3~4行目で、IPアドレスからURLを検索できる辞書型変数`$dns`を作っています。
5行目で、PowerShell版nestatの`Get-NetTCPConnection`の出力に、上の辞書型変数`$proc`と`$dns`を使って、プロセス名とパス、URLを追加しています。

# イベントログをCSVファイルに出力したい

Windowsのイベントビューアーでの検索が辛いので、PowerShellで必要なデータをcsvファイル化する方法を調べてみました。これで、テキストエディタやExcelで処理できるので、ログ検索が楽になると思います。

```powershell:
Get-EventLog -Logname System -After　"2024/08/01 08:00:00" -Before "2024/08/01 09:00:00" | Select-Object -property EventID,TimeGenerated,UserName,Message | Export-Csv -Path "event.csv" -Encoding UTF8 -NoTypeInformation -Append
```

* プログラムの説明
`Get-EventLog`コマンドで、イベント情報を取ってきます。
`-Logname`オプションで、`System`を選んでいます。
`-After`と`-Before`オプションで、抽出期間を選んでいます。
`Select-Object`コマンドで、パイプに流すオブジェクトを選別しています。
`Export-Csv`コマンドで、CSVファイルとして保存しています。
`-Append`オプションを使い、先にファイルがあった場合には追記するようにしています。

# コマンドプロンプト対比表

PowerShellを使えば他にも色々便利になると思いますが、今は思いつかないので、今後のためにコマンドプロンプトの代わりに使えるPowerShellのコマンドレットを載せておきます。

|コマンドプロンプト|PowerShell|
|:--|:--|
|arp -a|Get-NetNeighbor|
|netstat -a|Get-NetTCPConnection|
|ipconfig /all|Get-NetIPConfiguration -detail<br>Get-NetIPAddress|
|ping x.x.x.x|Test-Connection x.x.x.x|
|tracert x.x.x.x|Test-NetConnection x.x.x.x -traceroute|
|schtasks|Get-ScheduledTask|
|tasklist|Get-Process|
|systeminfo|Get-ComputerInfo|
|ipconfig /displaydns|Get-DnsClientCache|
||Get-EventLog|

# あとがき

久しぶりにPowerShellを使うと思ったとおりの操作ができないので、プログラム作成に難儀しました。
プログラムを作成した際には、小まめにメモを残しておくのは重要かと思います。
foobar2000でレーティングを基準にリストが自動更新されるプレイリストを作成

# 前提条件

レーティング機能（コンポーネント）追加についてはもう終わってる前提になります。

https://qiita.com/waokitsune/items/9cf9351d60eeff419927

また、『Media Library』の『Music folders』の設定も終わっている前提です。
それについては下記。

https://qiita.com/waokitsune/items/e274b91098df9943f9d4

# プレイリスト作成方法

『Library』の『Search』。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/7f32bff5-50b2-794d-638a-e286c1ae6a5f.png)

検索クエリを ```%rating% EQUAL 5``` にするとレートが5（★★★★★）の曲が下に出てきます。
**EQUALは全部大文字** なことに注意。
Equalやequalではダメです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/504d2f99-013c-4876-6ff7-fdb8787a5bfa.png)

検索小窓の右上『…』の『Crate Autoplaylist』。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/fa8f02ec-2349-1681-363d-359200ab1438.png)

こんなふうに新しいプレイリスト作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/d628a46c-09f5-9841-c35d-a3ec81e4a442.png)

このプレイリストには新しく評価した★5の曲が自動で追加されます。

「★4以上という条件にしたい」という場合は ```%rating% GREATER 3``` 。
このGREATERも全部大文字が必須です。

# プレイリストの設定変更

プレイリスト上で右クリック ⇒ 『Autoplaylist…』。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/d9463c60-f625-b120-f006-f76de1d84ba5.png)

こんな小窓が出てくるのでプレイリストのクエリ文字列を変更できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/be6608e6-afb6-6718-b83b-147588464dfb.png)

# 参考サイトさん

https://so-zou.jp/software/tool/audio/foobar2000/tags/search.htm

# バージョン

Microsoft Windows [Version 10.0.22631.4037]
foobar2000 v2.1.5 [×64]
Win11 WSL2でARMクロスコンパイル環境  

## 背景
UV-K5シリーズという中華系の無線受信機をご存じだろうか。地震、台風、異常気象や犯罪、事故が頻発する現代で、ネット以外の情報収集手段を確保すべく、無線受信機を購入。ファームウェアソースがGITで公開されており、カスタマイズし放題というゴージャス仕様にして中国から3000円程で購入できる。
ソースコードはC言語、動作プラットフォームはARM。カスタマイズすべく、普段使いのWin11のWSL2にARMのクロスコンパイル環境を導入した。

## 手順
### ダウンロード
以下からクロスコンパイラのダウンロードが可能   

[ARM Developer site](https://developer.arm.com/downloads/-/gnu-rm)

> gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
こちらを選択してダウンロード。WSL2はデフォルトでbz2が解凍できないため、ツールをインストール。
`$ sudo apt install bzip2`
### 解凍確認＆解凍 
アーカイブの中身とパスを念のため確認。   
`$ sudo cat gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 | bzip2 -d | tar -xvf -`
が、インストーラが含まれておらず、面倒になって手抜きへ方針転換。     

### インストール
`$ sudo apt install gcc-arm-none-eabi`
簡単にインストール成功。

### uv-k5のFirmwareをコンパイルしてみる
gitリポジトリからuv-k5のソースコードをゲット。 
[egzumer](https://github.com/egzumer/uv-k5-firmware-custom)

現在の最新はrelease 0.22。 
> uv-k5-firmware-custom-0.22.zip

make一発で順調にコンパイル成功。（crcmodがないと怒られるが） 
> arm-none-eabi-objcopy -O binary firmware firmware.bin
> arm-none-eabi-size firmware
>    text    data     bss     dec     hex filename
>   61288      44    3172   64504    fbf8 firmware

### まとめ
思っていたよりも簡単にWindows上にARMのクロスコンパイル環境を構築することができた。デバイス関係はARMチップで動作するものが多く、いくつかはソースコードが公開されており、自由自在にカスタマイズできる（能力が伴えば）。
fedora 40 に VMware workstation をインストール

# はじめに

VMware workstation pro が個人利用ができるようになったとのことで、手持ちのfedora 40が入っているノートパソコンにインストールしました。インストールは、公式サイトからダウンロードしたファイルを実行するだけと考えていたのですが、すこしひっかかった箇所がありました。カーネルと関係する箇所であり、また、fedoraのアップデートでよくカーネルが更新されますので、メモとして残すことにしました。

ダウンロードの詳細につきましては、公式サイトであるBroadcomのサイトでユーザー登録してからダウンロードすれば良いので割愛します。

# インストール

https://docs.vmware.com/jp/VMware-Workstation-Pro/17/com.vmware.ws.using.doc/GUID-1F5B1F14-A586-4A56-83FA-2E7D8333D5CA.html

上のページを参考にvmwareのインストールを行いました。

Broadcomのサイトからzipファイルをダウンロードし、解凍しますと、bundleという拡張子のファイルが保存されます。

これを次のコマンドにて実行します。

``` sh
sudo sh VMware-Workstation-Full.bundle
```

実行後、ログでエラーが発生した場合はそれを解決します。私の場合はカーネルヘッダーがないとかのエラーなので、パッケージをdnfからインストールしました。エラーをググると解決方法がでてきました。

# 実行

インストールするとgnomeのランチャーにvmwareが登録されたり、Terminalからvmwareで起動できたりするのですが、実行時にvmmonとvmnet関連でエラーが発生します。エラーが発生した際に、ログを参照するようにとのメッセージがでてきます。

それでこれらを別途自分でインストールする必要がでてきます。

# vmmon vmnet のインストール

次のページを参考にインストールを行いました。

https://github.com/mkubecek/vmware-host-modules

https://pyopyopyo.hatenablog.com/entry/2023/01/15/214027

https://github.com/mkubecek/vmware-host-modules/issues/239

上記の1つ目のリンクのgithubリポジトリをローカルにcloneしまして、それをmake, make installを行いました。その手順が2つ目のリンクのページに記載されています。ただ、こちらを実行しましたところvmnetのコンパイル時にエラーが発生してしまいました。その対処方法が3つ目のリンクのページに記載されていました。

具体的には、/vmnet-only/vmnetInt.hを編集します。それについては3つ目のページに記載されています。

# アップデート

fedoraのアップデートで新しいバージョンのカーネルをインストールしますと、エラーが発生し動かなくなります。その際は上でインストールしたvmmon vmnetをmake cleanしてからサイトmake, make installする必要があります。
Android Studioでハマった話

# はじめに
弊学の`Java`の講義では後半で`Android Studio`を用いたAndroidアプリの演習を行います．その際，計算機室のパソコンに入っている`Android Studio`バージョンと最新版（2023年現在）をインストールしたときの挙動が違いハマったので備忘録としてまとめます．

# ハマったこと
計算機室の`Android Studio`では，演習で使うテンプレートとして画像の`Empty Activity`を選択すればいいです．しかし，最新版では`Empty Activity`を選択するとこのあとの画面で`Java`を選択できなくて詰みます．（`Kotlin`しか使えない）

![スクリーンショット 2024-08-17 16.44.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806676/d484ed1b-4cfd-20a9-075c-755ca8d95789.png)


# で，どうすればいいのか
ちょっと下にある`Empty Views Activity`を選択すれば後の画面で`Java`を選択できます．おそらく計算機室では`Empty Activity`を選択すると思いますが，自前で環境構築した方は`Empty Views Activity`を選択するようにしましょう．

![スクリーンショット 2024-08-17 16.46.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806676/ed2a1901-899d-8f78-65c3-a64f45a6a2cc.png)

# 余談
エミュレーター使うのでメモリは16GBあったほうがストレスは少ないと思います．
pythonでgnuradio その19

# 概要
pythonでgnuradioやってみた。
練習問題やってみた。

# 練習問題
AM変調を録音した、wavファイル読み込んでAM復調して、聞く。
信号は、440Hzのサイン波、搬送波は、5KHz。

# 方針
- hilbert使う。
- am demod使う。


# サンプルコード

```

from gnuradio import gr, blocks, analog, audio
from gnuradio import filter
from gnuradio.filter import firdes
from gnuradio.fft import window

class my_top_block(gr.top_block):
	def __init__(self):
		gr.top_block.__init__(self)
		samp_rate = 32000
		self.hilbert_fc_0 = filter.hilbert_fc(65, window.WIN_HAMMING, 6.76)
		self.blocks_wavfile_source_0 = blocks.wavfile_source('a2.wav', True)
		self.audio_sink_0 = audio.sink(samp_rate, '', True)
		self.analog_am_demod_cf_0 = analog.am_demod_cf(channel_rate = 48000, audio_decim = 1, audio_pass = 5000, audio_stop = 5500, )
		self.connect((self.blocks_wavfile_source_0, 0), (self.hilbert_fc_0, 0))
		self.connect((self.hilbert_fc_0, 0), (self.analog_am_demod_cf_0, 0))
		self.connect((self.analog_am_demod_cf_0, 0), (self.audio_sink_0, 0))

if __name__ == '__main__':
	try:
		my_top_block().run()
	except KeyboardInterrupt:
		pass



```

以上。
pythonでgnuradio その18

# 概要
pythonでgnuradioやってみた。
練習問題やってみた。

# 練習問題
AM変調を録音。
信号は、440Hzのサイン波、搬送波は、5KHz。

# サンプルコード

```

from gnuradio import gr, blocks, analog

class my_top_block(gr.top_block):
	def __init__(self):
		gr.top_block.__init__(self)
		samp_rate = 32000
		self.blocks_wavfile_sink_0 = blocks.wavfile_sink('a2.wav', 1, samp_rate, blocks.FORMAT_WAV, blocks.FORMAT_PCM_16)
		self.blocks_multiply_xx_0 = blocks.multiply_vcc(1)
		self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((0.3, ))
		self.blocks_head_0 = blocks.head(gr.sizeof_gr_complex * 1, 64000)
		self.blocks_complex_to_real_0 = blocks.complex_to_real(1)
		self.blocks_add_const_vxx_0 = blocks.add_const_vcc((1, ))
		self.analog_sig_source_x_1 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 5000, 1, 0)
		self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 440, 1, 0)
		self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_const_vxx_0, 0))
		self.connect((self.analog_sig_source_x_1, 0), (self.blocks_multiply_xx_0, 1))
		self.connect((self.blocks_add_const_vxx_0, 0), (self.blocks_multiply_xx_0, 0))
		self.connect((self.blocks_complex_to_real_0, 0), (self.blocks_multiply_const_vxx_0, 0))
		self.connect((self.blocks_head_0, 0), (self.blocks_complex_to_real_0, 0))
		self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_wavfile_sink_0, 0))
		self.connect((self.blocks_multiply_xx_0, 0), (self.blocks_head_0, 0))

if __name__ == '__main__':
	try:
		my_top_block().run()
	except KeyboardInterrupt:
		pass




```

以上。
【2024年08月版】Proxmoxで分散スイッチ構築メモ【vxlan, ハブ・アンド・スポーク型】

# はじめに

vSphere上で使っていた分散スイッチみたいなのを、
Proxmox上で、Open vSwitch でつくってみたいな

とういことで、VXLANでつないでみるメモ

:::note info
Google検索しても理解できるレベルの資料がなかったので、ChatGPT先生に教えてもらいました
:::

# 構成

今回は、Node A が SPOF になるけど、簡単なので、以下のハブ・アンド・スポーク型の構成で作ってみる

メッシュ型の記事はこちら　↓
[【2024年08月版】Proxmoxで分散スイッチ構築メモ【vxlan, メッシュ型】](https://qiita.com/nouernet/items/cab0deb213f15a97000f)
GREの記事はこちら ↓
[【2024年08月版】Proxmoxで分散スイッチ構築メモ【gre, メッシュ型】](https://qiita.com/nouernet/items/0b6163b8497e29e7e9d5)

```plantuml
@startuml
skinparam componentStyle rectangle

node Hub

node "Node A" as A {
  [vmbr0 (OVS Switch)\n10.0.254.111] as A_vmbr0
  [vmbr1 (OVS Switch)\n172.16.254.111] as A_vmbr1
}

node "Node B" as B {
  [vmbr0 (OVS Switch)\n10.0.254.112] as B_vmbr0
  [vmbr1 (OVS Switch)\n172.16.254.112] as B_vmbr1
}

node "Node C" as C {
  [vmbr0 (OVS Switch)\n10.0.254.113] as C_vmbr0
  [vmbr1 (OVS Switch)\n172.16.254.113] as C_vmbr1
}

node "Node D" as D {
  [vmbr0 (OVS Switch)\n10.0.254.114] as D_vmbr0
  [vmbr1 (OVS Switch)\n172.16.254.114] as D_vmbr1
}

Hub --> A_vmbr0
Hub <-- B_vmbr0
Hub <-- C_vmbr0
Hub <-- D_vmbr0

B_vmbr1 -[dotted]- A_vmbr1 : VXLAN
C_vmbr1 -[dotted]- A_vmbr1 : VXLAN
D_vmbr1 -[dotted]- A_vmbr1 : VXLAN
@enduml
```

# 設定方法

## Node A

```
ovs-vsctl add-port vmbr1 vxlan2_B -- set interface vxlan2_B type=vxlan options:remote_ip=10.0.254.112 options:key=101
ovs-vsctl add-port vmbr1 vxlan2_C -- set interface vxlan2_C type=vxlan options:remote_ip=10.0.254.113 options:key=101
ovs-vsctl add-port vmbr1 vxlan2_D -- set interface vxlan2_D type=vxlan options:remote_ip=10.0.254.114 options:key=101
```

## Node B, C, D

```
ovs-vsctl add-port vmbr1 vxlan2_A -- set interface vxlan2_A type=vxlan options:remote_ip=10.0.254.111 options:key=101
```

# 確認
## 設定の確認

### Node A
```
$ ovs-vsctl list-ports vmbr1
vxlan2_B
vxlan2_C
vxlan2_D
```
### Node B, C, D
```
$ ovs-vsctl list-ports vmbr1
vxlan2_A
```

## 疎通の確認

- vmbr1 に直接IPを指定して（たとえば172.16.254.0/24など）、互いにPingで疎通確認
- vmbr1 をVMやLXCで利用して疎通確認

# さいごに

かんたんでしたね

# 関連リンク

- [【2024年08月版】Proxmoxで分散スイッチ構築メモ【vxlan, メッシュ型】](https://qiita.com/nouernet/items/cab0deb213f15a97000f)
- [【2024年08月版】Proxmoxで分散スイッチ構築メモ【gre, メッシュ型】](https://qiita.com/nouernet/items/0b6163b8497e29e7e9d5)
- [VXLAN lab based on OpenVSwitch and LXD containers](https://gist.github.com/platu/427c7b94cab38bd8dea34dbe24ba5f30)
- [Open vSwitch | FAQ | VXLANs](https://docs.openvswitch.org/en/latest/faq/vxlan/)
pythonでgnuradio その17

# 概要
pythonでgnuradioやってみた。
練習問題やってみた。

# 練習問題
AM変調を表示。
信号は、440Hzのサイン波、搬送波は、5KHz。

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/e301d204-86aa-9f85-a0e4-590647a704b9.png)


# サンプルコード

```

from gnuradio import gr, filter
from gnuradio.fft import window
from gnuradio import blocks
import sys
try:
	from gnuradio import qtgui
	from PyQt5 import QtWidgets, Qt
	import sip
except ImportError:
	sys.stderr.write("Error: Program requires PyQt5 and gr-qtgui.\n")
	sys.exit(1)
try:
	from gnuradio import audio
	from gnuradio import analog
except ImportError:
	sys.stderr.write("Error: Program requires gr-analog.\n")
	sys.exit(1)
try:
	from gnuradio import channels
except ImportError:
	sys.stderr.write("Error: Program requires gr-channels.\n")
	sys.exit(1)

class my_top_block(gr.top_block):
	def __init__(self):
		gr.top_block.__init__(self)
		samp_rate = 32000
		self.snk1 = qtgui.sink_c(1024, window.WIN_BLACKMAN_hARRIS, 0, samp_rate, "", True, True, True, True, )
		self.blocks_multiply_xx_0 = blocks.multiply_vcc(1)
		self.blocks_add_const_vxx_0 = blocks.add_const_vcc((1, ))
		self.analog_sig_source_x_1 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 5000, 1, 0)
		self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 440, 1, 0)
		self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_const_vxx_0, 0))
		self.connect((self.analog_sig_source_x_1, 0), (self.blocks_multiply_xx_0, 1))
		self.connect((self.blocks_add_const_vxx_0, 0), (self.blocks_multiply_xx_0, 0))
		self.connect((self.blocks_multiply_xx_0, 0), (self.snk1, 0))
		self.qapp = QtWidgets.QApplication(sys.argv)
		pyQt = self.snk1.qwidget()
		pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget)
		pyWin.show()

if __name__ == "__main__":
	tb = my_top_block()
	tb.start()
	tb.qapp.exec_()
	tb.stop()





```

以上。
AutowareとAWSIMを動かしてみた！

# 初めに
Autowareのインストールはdocker(仮想環境)を使用するやり方とPCに直接入れるやり方(SourceInstallation)と2種類ある。
今回は前回の[自作PCを作ってみた](https://qiita.com/takatakao397/items/2a2a950cffce1f96ac8c)でスペック高めのPCを組み立てたので仮想環境は使わない方法でやります。あとOSは __Ubuntu22.04__ 一択で事前に __ROS2__ をインストールする必要があります。
> AutowareはROSをベースに開発されています
>
また、AWSIMはUnityをベースに開発されたシミュレーターで綺麗な風景付きの車・歩行者に対する動作を確認できるのでおすすめです！
AWSIMのインストール方法も書いておきます。

# ROS2 Humbleのインストール
[DebianPackage](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html)をインストールすればOKです。
基本的に上のサイトを参考に環境構築をできればいいです。
ROS2 Humbleをインストールするメインのコードは以下の通りです。
```
sudo apt install ros-humble-desktop
sudo apt install ros-humble-ros-base
sudo apt install ros-dev-tools
```
動作確認はTalkerとListenerで別ターミナルを立ち上げてみましょう。
```
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker
```
```
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener
```
Autowareでも注意しておきたいのが、Pathを有効にするSourceコマンドは頻繁に使うので注意しておきましょう。

# Autowareのインストール
最新の[QuickDemo](https://autowarefoundation.github.io/AWSIM-Labs/main/GettingStarted/QuickStartDemo/)の記事を確認しながらインストールを進めていきましょう。
    まず、西新宿のマップをダウンロードしておきます。次に __git__ で環境を用意します。
```
git clone https://github.com/autowarefoundation/autoware.git
cd autoware
```
AutowareではAnsible、Build tool、pacmod、など多くのパッケージを用意する必要がありますが、下のコマンドでまとめてインストールできます。
```
./setup-dev-env.sh
```
srcフォルダに実行環境のインストール
```
mkdir src
vcs import src < autoware.repos
```
先ほど入れたrosのアップデートもしておきましょう
```
source /opt/ros/humble/setup.bash
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
```
そしてcolcon buildをします
```
source install/setup.bash
ros2 launch autoware_launch e2e_simulator.launch.xml vehicle_model:=sample_vehicle sensor_model:=awsim_labs_sensor_kit map_path:=/home/your_username/autoware_map/nishishinjuku_autoware_map
```
colcon buildで標準出力エラーを何度も出しました。
まず、cascheの関係で一発で動くことはないので、2回colcon buildをしましょう。
それでもeasy_installを避けましょうといったエラーが発生した場合、setuptoolsのダウングレードが必要です。
```
pip install setuptools==57.4.0
```
また、僕の場合 __autoware_carla_interface__ でエラーを出しました。このエラーは単純に __autoware_carla_interface__ 内に__init__.pyを追加すればOKです！
なので、 __autoware/build/autoware_carla_interface/src/autoware_carla_interface__ フォルダ内に空のpyファイル__init__.pyを作りましょう！
>標準出力エラーを出さないで起動できるのに2週間ぐらい時間をかけました💦	
>

# AWSIMのインストール
AWSIMのインストールはAutowareの環境構築よりは簡単にできました。パッと見難しそうですが、ほとんど[QucikDemo](https://autowarefoundation.github.io/AWSIM-Labs/main/GettingStarted/QuickStartDemo/)の通りに進めていけば、OKです！

NVIDIAのドライバーインストールとドライバーバージョンの確認は重要そうなコマンドなので下に書いておきます。
```
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
```
このコマンドで最新のバージョンがインストールされます。
```
sudo ubuntu-drivers autoinstall
```
リブートして設定を反映させる
```
sudo reboot
```
nvidiaのバージョンを確認します
```
 nvidia-smi
```
ダウンロードしたAWSIMのzipファイルを展開してawsim_labs.x86_64のアクセス権限を下のように設定します
```
chmod +x <path to AWSIM folder>/awsim_labs.x86_64
```
そして実行します
```
./<path to AWSIM folder>/awsim_labs.x86_64
```
 __Dockerを使った方法__ でAWSIMを起動したとき __core dumped__ が発生してどうしても解決できなかったので、SourceInstallationのやり方に変えました。

 # シミュレーションの実行
 ![Autoware実行.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2153036/b399924b-0227-ac5d-b138-c5946fd4ba21.gif)
>動画サイズの都合で画質は結構落としていますm(_ _)m
>
Eclipseインストールマニュアル


:::note
エクスプローラーの設定で，「拡張子の表示」と「隠しファイルの表示」をオンにしておくことをおすすめします．
:::

# はじめに

Eclipseのインストール手順を解説します．Eclipse2021まではzipファイルのダウンロードの後，7-zipを用いて解凍する必要がありましたが，Eclipse2022以降は自己解凍機能が含まれたzipファイルをダウンロードするため7-zipを用いる必要がありません．

ではインストールに移りましょう．

# 参考資料

- 授業資料
- [Pleiades All in One ダウンロード](https://willbrains.jp/)
- [Eclipseのインストールから使い方まで～EclipseでJavaプログラムを実行してみよう！](https://proengineer.internous.co.jp/content/columnfeature/7853)

# インストール

## zipファイルのダウンロード

まずは[https://willbrains.jp/](https://willbrains.jp/)からzipファイルをダウンロードしましょう．
このページを開くと以下のようになっています．

:::note
このマニュアルの初稿は2023年に作成されました．したがって画像内の2023という表記は適宜`Calendar.getInstance().get(Calendar.YEAR)`に読み替えてください．
:::

![HP_top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806676/8b0a3d99-5aaa-ba73-09a1-09a1def23897.png)

Eclipse2024をインストールしたいので赤枠で囲った「Eclipse 2024」をクリックしてください．

すると，この画面になります．

![HP_download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806676/dea70588-8c45-6559-1d70-7eadc30a4975.png)

Javaの実行環境を作りたいのでFull EditionのJavaをダウンロードします（赤枠）．「Download」をクリックすると勝手にダウンロードが始まるはずです．Macの人はMac版をダウンロードしましょう．

ダウンロードしたファイルはダウンロードフォルダにでも入れておきましょう．

## 解凍

ダウンロードフォルダに「`pleiades-2023-03-java-win-64bit-jre_20230326.exe`」があると思います．

![kaitou_mae.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806676/c2073016-f63f-4d88-6761-b7394d277f10.png)


これをダブルクリックすると，以下のように自己解凍を始めてくれます．

![jiko_kaitou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806676/0297b3db-039c-7e18-33fa-034ff40132c1.png)


展開先は勝手にCドライブ直下に設定してくれているのでこれで行きましょう．デフォルトでパス設定されていない場合はこれを参考に手動でパスを入力してください．

作成先フォルダを設定できたら「解凍」を押してください．

# 起動

しばらくすると解凍が終わりCドライブ直下に「pleiades」というフォルダができています．その中を探検していると

`C:\pleiades\2023-03\eclipse`

に実行ファイルが入っているのがわかります．

![eclipse_kidou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806676/af830d3b-8547-a2d4-e683-d2969ec3a6d3.png)


ここで`eclipse.exe`を実行したくなりますが **`eclipse.exe -clean.cmd`** を実行してください．

:::note warn
Pleiadesを更新したり，他のプラグインを追加・更新した場合は必ず起動オプションに -cleanを指定して起動してください．Windowsの場合は同梱している `eclipse.exe -clean.cmd` で `-clean`起動できます．`-clean`起動しないと，configurationの古いプラグイン情報が使用され，起動できなくなったり，更新したプラグインが正常に動作しなくなったりします． [^1]
:::

workspaceを作成するウィンドウが出てきます．パスはデフォルトのままで大丈夫です．起動するたびに出てきても鬱陶しいので「この選択をデフォルトとして...」にチェックを入れましょう．

![eclipse_workspace.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806676/df0fd8aa-ac61-be89-9a31-81481317fb6a.png)


起動まで時間がかかりますが気長に待ちます．無事起動できたら成功です．お疲れ様でした．次回以降の起動は`eclipse.exe`で実行できます．デスクトップ等にショートカットを作成しておくと便利です．

[^1]:https://willbrains.jp/
AIによるニュース記事生成の成功と失敗：その現状と課題

# メディアと雑誌がAIを活用する理由：経済合理性と利益の追求

## はじめに

現代のメディア業界は、デジタル化の波に乗りながら、新たな収益源を模索し、コストを削減するためのさまざまな戦略を試みています。その中で、AI（人工知能）の導入は、多くのメディアや雑誌にとって、経済的な合理性と利益の最大化を実現する有力な手段となっています。本記事では、メディアがAIを積極的に取り入れる理由について、経済的視点から詳しく探ります。

## 1. コスト削減とリソースの最適化

### 効率化によるコスト削減

AIを導入する最大の理由の一つは、業務の効率化によるコスト削減です。従来、人手で行われていた記事の生成や編集作業を自動化することで、大幅なコスト削減が可能になります。例えば、AIはニュース記事の自動生成、画像の自動編集、データ解析によるコンテンツの最適化など、さまざまな業務を迅速かつ正確に行うことができます。

**事例: The Washington Post**
The Washington Postは、AIシステム「Heliograf」を導入し、選挙やスポーツイベントなど、データに基づいたニュースの自動生成を行っています。このシステムは、限られたリソースでより多くのニュースをカバーすることを可能にし、人的コストを削減するとともに、迅速なニュース配信を実現しています。

### 人件費の削減

AIは、人件費の削減にも寄与します。特に、ルーチンワークやデータ処理といった単調な作業をAIに任せることで、従業員をより創造的な業務に配置できるようになります。これにより、労働力の効率的な活用が可能となり、企業全体の生産性が向上します。

**事例: The New York Times**
The New York Timesは、AIを用いてニュースレターの自動生成を行い、特定のテーマに関する定期的な更新作業を効率化しています。これにより、編集部の負担を軽減し、人的リソースをより重要な調査報道や分析に集中させることが可能となっています。

## 2. 収益の最大化と新しい収益源の開拓

### パーソナライズド広告とリコメンデーション

AIは、ユーザーの行動データをもとに、個々の読者に最適化されたパーソナライズド広告を提供することが可能です。これにより、広告効果を最大化し、広告収益を大幅に増加させることができます。さらに、リコメンデーションエンジンを活用して、読者に関連性の高いコンテンツを提供することで、サイト滞在時間の延長やエンゲージメントの向上を図ります。

**事例: NetflixとSpotify**
NetflixやSpotifyのようなプラットフォームは、AIを活用したリコメンデーションシステムにより、ユーザーの嗜好に合ったコンテンツを提供し、顧客満足度を向上させています。この手法は、ニュースサイトや雑誌でも応用可能であり、読者の関心に合わせたニュースや記事を提供することで、広告収益を最大化しています。

### 新しい収益源の開拓

AIは、従来の広告モデルに加えて、新しい収益源を開拓するための手段としても有効です。例えば、AIを活用したコンテンツ分析により、マーケティング戦略を強化し、スポンサーシップやブランドパートナーシップを通じて新たな収益を生み出すことができます。また、AIによるコンテンツ生成を活用して、サブスクリプションサービスや有料コンテンツの提供を促進することも可能です。

**事例: Forbes**
Forbesは、AIを活用したコンテンツ生成により、個々の読者に最適化された記事を提供し、プレミアムコンテンツの販売を強化しています。これにより、サブスクリプション収益が増加し、長期的な収益安定性が向上しています。

## 3. データドリブンな意思決定と市場競争力の強化

### データ分析による市場の理解

AIは、膨大な量のデータをリアルタイムで分析し、読者の行動や市場のトレンドを正確に把握することができます。このデータをもとに、迅速かつ効果的な意思決定を行うことで、競争力を維持し、マーケットシェアを拡大することが可能です。

**事例: Bloomberg**
Bloombergは、AIを駆使して金融市場の動向をリアルタイムで分析し、迅速かつ的確な投資判断を支援する情報を提供しています。このデータドリブンなアプローチにより、顧客満足度とリテンション率が向上し、ブランドの信頼性が強化されています。

### AIによる競争優位性の確保

AIを効果的に導入することで、メディア企業は競争優位性を確保し、市場でのポジションを強化することができます。AIは、コンテンツ生成のスピードと精度を向上させ、競合他社との差別化を図るための重要な要素となります。

**事例: Financial Times**
Financial Timesは、AIを活用して市場動向や読者の嗜好に基づいた分析記事を迅速に生成し、他のメディアと差別化を図っています。このアプローチにより、読者からの信頼を獲得し、リーダーシップポジションを維持しています。

## 4. リスク管理と将来の展望

### リスクの軽減とコンプライアンスの強化

AIの導入には、リスク管理が不可欠です。AIによるバイアスや誤情報のリスクを軽減するために、厳密なチェック体制と倫理基準の確立が求められます。これにより、企業は法的リスクを回避し、コンプライアンスを強化することができます。

**事例: GoogleとFacebook**
GoogleやFacebookは、AIを活用してコンテンツのモデレーションを行い、フェイクニュースや不適切なコンテンツの拡散を防止しています。これにより、プラットフォームの信頼性を維持し、規制当局との関係を円滑にしています。

### 将来の展望とAIの進化

今後、AI技術はさらに進化し、メディア業界における活用範囲が拡大することが予想されます。特に、生成AIによるコンテンツのパーソナライズや、自動化によるコスト削減が一層進むでしょう。企業は、これらの技術をいかに活用し、経済的合理性を追求するかが、成功の鍵となります。

## まとめ

メディアや雑誌がAIを積極的に導入する理由は、コスト削減、収益の最大化、競争力の強化といった経済的な要因に根ざしています。AIは、業務の効率化や新しい収益源の開拓に寄与するだけでなく、データドリブンな意思決定を支援し、企業の競争優位性を確保する重要なツールです。今後、AIの進化とともに、その活用範囲はさらに広がり、メディア業界全体の構造を大きく変える可能性があります。企業は、これらの変化を見据え、AIを最大限に活用する戦略を策定する必要があります。
Windowsログイン前の状態でWindowsの設定を確認する方法（20240817_備忘録）

### Windowsログイン前にコマンドプロンプトを開いてWindowsの設定を確認する

`utilman.exe`を`cmd.exe`に置き換えると、ログイン画面からアクセシビリティ機能（Utility Manager）を起動しようとした際に、コマンドプロンプト (`cmd.exe`) が管理者権限で開かれるようになります。これは、セキュリティ上の脆弱性として悪用される可能性があります。

### 具体的な動作

- **置き換え操作**: `utilman.exe`を`cmd.exe`に置き換えることで、ログイン画面でのアクセシビリティ機能の起動（右下の「アクセシビリティ」アイコンのクリック）が、実際にはコマンドプロンプト (`cmd.exe`) の起動に置き換えられます。
- **影響**:
  - ユーザーがログインせずに、管理者権限のコマンドプロンプトを開けるようになります。
  - これにより、システムの設定を変更したり、管理者権限が必要な操作（例えば、新しいユーザーアカウントの作成やパスワードのリセットなど）を行ったりできるようになります。

`utilman.exe`を`cmd.exe`に置き換える方法について説明しますが、この操作はセキュリティリスクを伴うため、実際には行わない方が良いことを強調しておきます。

### 注意

以下の手順を実行することで、システムに不正アクセスできるようになります。

### 手順

1. **Windowsインストールメディアまたは回復ドライブの準備**:

   - Windowsインストールメディア（USBドライブなど）を使用するか、回復ドライブが必要です。

2. **回復環境にアクセス**:

   - インストールメディアを使用する場合

     :

     1. インストールメディアからPCを起動します。
     2. 言語やキーボードの設定を選択し、「コンピューターの修復」を選択します。

   - 回復環境（WinRE）にアクセスする場合

     :

     1. PCを再起動し、起動時にF8キーやShiftキーを押しながら「再起動」を選択します。
     2. 「トラブルシューティング」→「詳細オプション」→「コマンドプロンプト」を選択します。

3. **コマンドプロンプトでの操作**:

   - 回復環境のコマンドプロンプトが開いたら、次のコマンドを入力して

     ```
     utilman.exe
     ```

     をバックアップし、

     ```
     cmd.exe
     ```

     を置き換えます。

     ```
     cmdコードをコピーするcopy C:\Windows\System32\utilman.exe C:\Windows\System32\utilman.exe.bak
     copy C:\Windows\System32\cmd.exe C:\Windows\System32\utilman.exe
     ```

   - これにより、`utilman.exe`がバックアップとして保存され、`cmd.exe`が`utilman.exe`として置き換えられます。

4. **再起動**:

   - 操作が完了したら、コマンドプロンプトを閉じてPCを再起動します。

5. **テスト**:

   - ログイン画面で、右下の「アクセシビリティ」アイコンをクリックすると、コマンドプロンプトが表示されるはずです。

### 元に戻す方法

- 上記の手順を逆に行って、

  ```
  cmd.exe
  ```

  を元の

  ```
  utilman.exe
  ```

  に戻すことができます。バックアップファイルを元の名前に戻すだけです。

  ```
  cmd
  コードをコピーする
  copy C:\Windows\System32\utilman.exe.bak C:\Windows\System32\utilman.exe
  ```

### 結論

この手法はセキュリティのテストや学習のためのものであり、実際の運用環境やセキュリティが重要なシステムに対しては実施しないようにしてください。



### 詳細なプロキシ設定の確認（Internet Explorer/Edge 設定）

Windowsのレジストリから詳細なプロキシ設定を確認する場合、以下のコマンドを使ってレジストリの情報を表示することもできますが、標準のコマンドプロンプトでは直接確認することは難しいため、レジストリエディタを使用する方が確実です。

```
cmd
コードをコピーする
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
```

このコマンドを実行すると、ユーザーのインターネット設定に関するレジストリの情報が表示されます。出力には、`ProxyEnable`、`ProxyServer`、`ProxyOverride` などの値が含まれます。

### コマンドの出力例

- **`netsh winhttp show proxy` の出力例**:

  ```
  arduinoコードをコピーするCurrent WinHTTP proxy settings:
  
      Proxy Server(s) : http=proxy.example.com:8080;https=proxy.example.com:8443
      Bypass List     : <local>
  ```

- **`reg query` の出力例**:

  ```
  bashコードをコピーするHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
      ProxyEnable    REG_DWORD    0x1
      ProxyServer    REG_SZ       http=proxy.example.com:8080
      ProxyOverride  REG_SZ       *.local;localhost
  ```

これらのコマンドを使うことで、システムのプロキシ設定やインターネット設定の状況を確認することができます。
関数の独立性

# 使い回しに影響が出る関数
アプリケーションとは長く改善され続けることを前提として作る場合、それは元の創設者とは別の人間がそのコードを使用するということは十二分に考えられます。

その上で、関数の役割はやはり一つにするべきだと痛感しました、

一つの関数に二つ以上の役割があると、新たにその一つの機能だけ呼び出したいときに元の関数はとっても邪魔になり、結局作り直す必要があります。

必ずひとつのコンポーネント内に閉じ込められ他範囲内でしか使わない、と決められた関数であれば、ひとつの役割に絞る必要払いませんが、使いわ増すような関数は極力小さく分けて二つ以上のことを一個の関数内で行うのは避けるべきである、と今日ジョイン中のプロジェクトを回収していて思ったので記事に残しておきます。
メディア業界におけるAIの未来：進化するデジタルエコシステム

# メディア業界におけるAIの未来：進化するデジタル革命の中での変革

## はじめに

人工知能（AI）は、生活やビジネスのあらゆる側面に深く浸透しており、メディア業界も例外ではありません。AI技術が進化するにつれて、その影響力はますます増大し、プロセスの最適化、コストの削減、そして人間の能力を補完する役割を果たしています。本記事では、AIがメディア業界をどのように変革しているのか、具体的な事例を通じて探り、企業がどのようにこれらのイノベーションを取り入れて成功を収めることができるかを検討します。

## AIがメディア業界に与える影響

### 1. コンテンツ制作の変革
AIはメディア業界で多岐にわたる変革をもたらしています。特にコンテンツ制作において、AIはジャーナリズム、映画製作、広告、ゲーム開発など、さまざまな分野で大きな影響を与えています。例えば、ジャーナリズムでは、AIが記事の執筆や画像編集を自動化することで、ジャーナリストはよりクリエイティブで高度な分析作業に集中できるようになりました。The New York Timesなどの主要メディア企業は、AIを積極的に導入し、効率を大幅に向上させています。

映画製作やゲーム開発の分野でも、AIがクリエイターのサポート役として活躍しています。特に生成AI（Generative AI）は、独自のシナリオやキャラクター、ビジュアルエフェクトを生成する能力があり、クリエイターが個別化された革新的なコンテンツを制作するのを支援しています。

### 2. コンテンツ配信の最適化
AIはコンテンツ配信の最適化にも寄与しています。リアルタイムでの広告配信の最適化やパーソナライズされた推薦システムの実現により、メディア企業は視聴者一人一人に最適なコンテンツを届けることができるようになりました。例えば、NetflixやSpotifyなどのプラットフォームは、AIを活用して視聴者の好みに基づいたコンテンツの推薦を行い、エンゲージメントを向上させています。

さらに、AIはデータ解析の力を借りて、視聴者の行動パターンや嗜好を詳細に把握し、それに基づいたコンテンツ戦略を構築することを可能にしています。これにより、メディア企業はマーケティング効果を最大化し、広告収入の増加を図ることができます。

## 生成AIのメリットと活用事例

### 1. 効率と精度の向上
生成AIは、特に大量のデータを扱う場面でその効率性を発揮します。AIは膨大なデータを分析し、そこからパターンを抽出して、関連性の高いコンテンツを迅速に生成することができます。例えば、OpenAIが開発した大規模言語モデル（LLM）は、与えられたデータを元に高品質な記事を生成し、ニュースの自動作成をサポートします。これにより、記者や編集者がデータの解析に費やす時間を短縮し、より重要な作業に集中することが可能になります。

さらに、AIは映画製作においても大きな役割を果たしています。AIがシナリオの草案を生成したり、キャラクターのデザインを支援したりすることで、クリエイターの創造力を引き出し、新たなアイデアを生み出す手助けをしています。

### 2. ニュース制作と配信の革新
生成AIはニュース制作の分野でも革命をもたらしています。例えば、AIが自動的にニュース記事を生成することで、ニュースの迅速な配信が可能となり、視聴者はリアルタイムで最新情報を得ることができます。特に、スポーツや金融の分野では、AIが即座にデータを解析し、ニュースとして発信することで、視聴者に価値ある情報を迅速に提供しています。

## 課題とリスク

### 1. 不正確な情報とバイアスのリスク
AI技術の導入には、いくつかの課題も伴います。特に懸念されるのが、不正確な情報の拡散とバイアスの問題です。AIモデルが誤ったデータに基づいて判断を下す場合、誤情報が広まり、社会的な混乱を引き起こす可能性があります。さらに、生成AIはディープフェイクのようなコンテンツを作成する能力もあり、その倫理的なリスクは無視できません。

これらのリスクに対処するため、企業は厳格なファクトチェック体制を整え、AIの出力結果を常に監視する必要があります。また、AI技術の使用にあたっては、透明性と責任を確保するための倫理ガイドラインを設けることが求められます。

### 2. 倫理的および法的な課題
AIの進化と普及に伴い、倫理的および法的な課題も浮上しています。例えば、AIが人間の労働を代替することで、雇用の喪失やスキルの陳腐化が懸念されています。また、AIによるコンテンツ生成が進む中で、著作権や知的財産権の保護も複雑化しています。企業はこれらの課題に対して、倫理的かつ法的な視点からのアプローチを検討する必要があります。

## メディアにおけるAIの未来

AIがメディア業界に与える影響は今後も続くでしょう。AIツールは既存のワークフローを補完し、メディアプロフェッショナルがより高度な価値を生み出す作業に集中できるよう支援します。しかし、その成功は、技術をどれだけ倫理的に適応させ、活用できるかにかかっています。

AI技術を適切に導入し、倫理的に使用する企業は、市場での競争優位性を維持し続けることができるでしょう。一方で、新しい規制や制裁を無視する企業は、将来的に深刻な困難に直面する可能性があります。

## 結論

AIはメディア業界に変革をもたらし、効率、創造性、パーソナライズを飛躍的に向上させています。しかし、この技術を適切に使用するためには、倫理的なアプローチと継続的な適応が不可欠です。企業がAIの可能性を最大限に引き出すことで、急速に進化するデジタル環境の中でリーダーシップを発揮し続けることができるでしょう。

---

**筆者の感想**: AIのメディア業界への影響を考えると、特に生成AIの力がどれほど強力であるかが浮き彫りになります。AIが記事を自動生成する未来が現実になりつつある一方で、情報の正確性や倫理的な問題にどのように対処するかが重要です。技術の進化は止められませんが、それに伴うリスク管理も忘れてはならないと感じます。企業がAIをどのように統合し、責任を持って活用するかが、業界全体の未来を左右するでしょう。
メディア＆エンタメ、論文まとめ。

## Artificial Intelligence in Journalism: A Ten-Year Retrospective of Scientific Articles (2014–2023)

このブログ記事では、過去10年間にわたり、AIがジャーナリズムに与えた影響を学術論文を通じてレビューし、AI技術の進化がどのようにジャーナリズムのプロセスを変革し、効率を向上させたかを探ります。特に、AIがニュース制作におけるデータ収集、分析、配信の各段階で果たした役割を質的に分析します。

### 1. AIの進化とジャーナリズムへの影響
過去10年間、AIはジャーナリズムの各プロセスに大きな影響を与えてきました。特に、自然言語処理（NLP）や機械学習（ML）の進化により、ジャーナリストがニュースをより迅速かつ効率的に作成できるようになりました。AIは、大量のデータを処理し、重要な情報を迅速に特定する能力を提供し、ジャーナリストがより多くの時間を調査やインタビューに費やせるようになっています。

### 2. 学術論文のレビュー: 2014-2023
この期間に発表された主な論文をレビューすると、AIの導入がニュース制作の効率化だけでなく、品質向上にも寄与していることが明らかになっています。AIは、データの正確性を保ちながら、複雑な情報を分かりやすく整理する能力を持っており、これにより読者がニュースをより深く理解できるようになっています。

https://www.mdpi.com/2673-5172/5/3/56　

---

## The Future of AI in the Media Industry

AIがメディア業界にどのように変革をもたらしているかについて探ります。コンテンツ制作から配信までのプロセスを最適化し、コストを削減し、人間の能力を補完する方法を示し、今後の展望を考察します。

### 1. コンテンツ制作の最適化
AIは、コンテンツ制作の効率化に大きく貢献しています。例えば、AIはトレンド分析や受け手の嗜好に基づいてコンテンツを自動生成し、メディア企業が迅速に高品質なコンテンツを提供することを可能にしています。

### 2. コスト削減と効率向上
AIの導入により、メディア企業はコストを大幅に削減できるようになりました。AIがルーチン作業を自動化することで、クリエイティブなプロジェクトにリソースを集中させることが可能となり、全体の生産性が向上しています。

### 3. 今後の展望
今後、AIはさらに進化し、人間の能力を補完するだけでなく、新しいビジネスモデルの創出にも寄与するでしょう。たとえば、パーソナライズされたコンテンツ配信やインタラクティブメディアの発展が期待されます。

---

## Navigating the New Frontier: A Comprehensive Review of AI in Journalism

ジャーナリズムにおけるAIの統合は、既存の倫理フレームワークの適応や新しい基準の確立が求められます。この記事では、AIの利点を活用しつつ、その信頼性と公正性を維持する方法について考察します。

### 1. AIの統合と倫理的課題
AIのジャーナリズムへの導入に伴い、信頼性や公正性に対する懸念が高まっています。例えば、AIが生成するコンテンツの中立性や、情報の偏りを防ぐためのアルゴリズムの透明性が重要な課題となっています。

### 2. 新しい基準の確立
AIを活用するにあたっては、ジャーナリストが従来の倫理基準を適応させる必要があります。これには、AIによる自動生成コンテンツの適切な使用方法や、読者に対する透明性の確保が含まれます。

---

## The Impact of Artificial Intelligence on Media, Journalists, and Audiences

AIはメディア、ジャーナリスト、そしてオーディエンスに多面的な影響を与えています。ここでは、AIがコンテンツ生成エージェントとしての役割を果たし、メディア経済の改善や新しいビジネスモデルの創出にどのように寄与しているかを探ります。

### 1. メディアとAI: 経済的影響
AIの導入は、メディア企業の経済構造を変革しつつあります。例えば、AIがニュース記事を自動で生成することで、コンテンツの生産コストが削減され、収益性が向上しています。

### 2. ジャーナリストとAI: 職業の変化
AIの進化により、ジャーナリストの役割も変化しています。AIはルーチン作業を代替し、ジャーナリストがよりクリエイティブな業務に専念できる環境を提供しています。

### 3. オーディエンスとAI: コンテンツ消費の変化
AIは、オーディエンスの嗜好に応じたパーソナライズされたコンテンツを提供することで、視聴体験を向上させています。これにより、ユーザーエンゲージメントが高まり、メディア企業のブランド力が強化されます。

---

## Navigating the Risks of Artificial Intelligence on the Digital News Landscape

AIのデジタルニュース業界への影響を探り、AIがもたらすリスクとその対策について論じます。特に、AIの導入がニュースの信頼性と公正性にどのように影響を与えるかを検討します。

### 1. 信頼性のリスク
AIが生成するニュース記事の信頼性に関して、フェイクニュースや誤情報の拡散リスクが高まっています。AIがデータの誤解釈や偏った情報に基づいて記事を生成する可能性があるため、ジャーナリストによる監視と検証が不可欠です。

### 2. 公正性のリスク
AIのアルゴリズムに内在するバイアスが、ニュースの公正性を損なうリスクもあります。たとえば、特定の視点に偏ったコンテンツが生成されることで、読者に対する影響が偏る可能性があります。

### 3. リスク管理と対策
これらのリスクを管理するためには、AIによるコンテンツ生成プロセスに対する透明性を高め、倫理的ガイドラインを策定することが重要です。また、ジャーナリストがAIツールを適切に使用するためのトレーニングも必要です。

---

このブログ記事シリーズでは、AIがメディアとジャーナリズムに与える影響について多角的に考察し、最新の動向と今後の課題を掘り下げています。AI技術の進化と共に、メディア業界は大きな変革を遂げつつあり、その中でどのようにAIを活用し、リスクを管理していくかが鍵となります。
【令和6年度ネスぺ】インフラ未経験が一発合格するにあたって役立った書籍



## 初めに
令和6年度　ネットワークスペシャリスト試験に合格したので、記録もかねて勉強方法と個人的に役立った本を投稿します。
知識を身に着けるのではなく、資格取得のみを目的とした勉強法になります。
受験前のネットワーク知識は応用情報の内容のみでした。

![nw.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3577550/9e29cc62-8fdf-c48e-491a-2567609b7344.png)
## 受験動機
①資格を持っていたらかっこいいと思ったから。
②学歴を資格で補おうと思ったから。

## スペック
・F欄大学卒（偏差値45）、社会人3年目
・所属する会社は一応IT業界（管理のみで現場の経験無し）
・応用情報取得済

## 勉強時間
・半年間
　平日:1時間（午前問題と参考書読み込み）
　休日:3時間（午後問題）

## 勉強方法
基本的には後程記載する参考書を読込み、午後問題を解いていくという方法を取りました。
問題を解くときに気を付けていたことは、問題を目に通すことを目的とし、問題を解く時間は最小限にすることです。
理由としては、高度IPA試験は採点基準が不明で適当に記述しても部分点がもらえる為、ちまちま問題を解くより出題パターンを覚えて、適当に回答するほうが点をもらえると思ったからです。
なので、なぜ間違えたのだろうとか、そんなことはいちいち気にしていませんでした。

問題を解くときは知っているパターンを当てはめて記述するだけです。
特にリスク/障害のパターンはほぼ同じです。トラフィックが多すぎるか、宛先間違っているか、FWの設定がおかしいかです。

## 使用した書籍

1. <B>ネットワークはなぜつながるのか第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識</B> 
お勧め度：★★★★★
今回ネスぺの受験を行うにあたって、まずはネットワークの基礎知識を叩き込む必要がありました。この書籍は、「ブラウザにＵＲＬを入力してエンターを叩くと何が起こるのか」という説明を超初心者向けに行っている書籍になります。まずはこの本を読み、ネットワークの概要を理解しました。
<br></br>
1. <B>マスタリングTCP/IP―入門編―(第6版) </B> 
お勧め度：★★★★☆
言わずと知れた名著。試験対策にはなりませんがこの本の内容をある程度理解できないと試験には受からないと思います。
<br></br>
1. <b>日本語の作文技術 本多勝一</B>
お勧め度：★★☆☆☆
ネスぺはほぼ記述で合否がきまります。この本は文章の書き方を分かりやすく教えてくれるので、記述問題の回答作成に大変役立ちました。既に作文能力がある方は必要ないと思います。
<br></br>
1. <b>ネットワークスペシャリスト　「専門知識＋午後問題」の重点対策 (情報処理技術者試験対策書) </b>
お勧め度：★★★★★
午後問題はこの問題集を3周しました。冒頭にある「午後問題の解き方」は無視して大丈夫です。
有名な「ネスぺシリーズ」は全て集めると高いので泣く泣くこちらの問題集にしましたが、合格に必要な知識を十分に蓄えることができると思います。（ネスぺシリーズは結局購入しました。。。）
ただ、解説が分かりにくい（小難しく書いている）ので馬鹿な私には理解できませんでした。
<br></br>
1. <b>ネスぺシリーズ</b>
お勧め度：★★★☆☆
丁寧な解説、分かりやすい説明で文句なしのシリーズだと思います。ただ、高い。
お金がある人はネスぺシリーズ全部揃えるだけで良いと思います。

以上。