OmniAICreator/Qiita-1.07M huggingface dataset:
rsyslogのtemplateの使い方

## rsyslog の template（テンプレート）とは？

`rsyslog` のテンプレートとは、ログメッセージの**出力形式**や**出力先パス**をカスタマイズするための定義です。

テンプレートを使うことで、以下のような柔軟なログ設計が可能になります。

* ホスト名やファシリティ別など、動的なパス構成
* 特定プロパティのログを分離出力
* JSON形式など独自のログ書式出力

---

## templateの一例：

以下のテンプレートを使用すると、

* `/var/log/[ホスト名]/` ディレクトリに
* `[ファシリティ].log` というファイル名で
* 各ファシリティのログがそれぞれ記録されます。

```:/etc/rsyslog.conf
$template MyOutputFile,"/var/log/%hostname%/%syslogfacility-text%.log"

*.* ?MyOutputFile
```


```:作成されるログ
[root@dns /]# tail -n2 /var/log/`hostname -s`/*
==> /var/log/dns/authpriv.log <==
May 15 22:26:25 dns usermod[1840]: add 'postfix' to group 'mail'
May 15 22:26:25 dns usermod[1840]: add 'postfix' to shadow group 'mail'

==> /var/log/dns/cron.log <==
May 15 22:21:44 dns crond[1681]: (CRON) INFO (running with inotify support)
May 15 22:21:44 dns crond[1681]: (CRON) INFO (@reboot jobs will be run at computer's startup.)

==> /var/log/dns/daemon.log <==
May 15 22:27:23 dns systemd[1]: man-db-cache-update.service: Consumed 36.476s CPU time.
May 15 22:27:23 dns systemd[1]: run-r059dd2ae6e984c0c9b3d7bb07c51e2d8.service: Deactivated successfully.

==> /var/log/dns/mail.log <==
May 15 22:26:43 dns postfix/postfix-script[13548]: stopping the Postfix mail system
May 15 22:26:43 dns postfix/master[10900]: terminating on signal 15

==> /var/log/dns/syslog.log <==
May 15 21:44:54 dns rsyslogd[1627]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="1627" x-info="https://www.rsyslog.com"] start
May 15 21:44:54 dns rsyslogd[1627]: imjournal: journal files changed, reloading...  [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ]
```
---

## templateのルール

```:書式
$template テンプレート名,"出力先パスまたはメッセージ書式"
```

* テンプレート内の変数は `%` で囲む（例：`%hostname%`）。
* 出力定義でテンプレートを使うときは `?テンプレート名` と書く。

---
### ◆templateで"-"使用の注意
#### ■rsyslogにおける "-"（ハイフン）の意味

`rsyslog` の出力定義で使う `-` は**非同期書き込み**を意味します。

* ログを一時的にバッファに溜め、まとめてディスクに書き込むことで性能向上が期待できます。

#### ■templateで使用上の注意：

* `-` はテンプレートの定義行には書けません。
* `-` はテンプレート名の前、`?テンプレート名` の `?` の前に記述します。

```:/etc/rsyslog.conf
$template MyOutputFile,"/var/log/%hostname%/%syslogfacility-text%.log"

*.* -?MyOutputFile
```

---

> ※最も伝えたかったのは、この `-?テンプレート名` の構文です。
>
> 情報があまり出回っておらず、苦労しました。

---

## 補足

* `%syslogfacility-text%` などのpropatyの変数は、rsyslogの公式ドキュメントに一覧があります。
    * https://www.rsyslog.com/doc/configuration/properties.html
* JSON形式などの複雑な出力も `$template` を使えば可能です。
* `/var/log` 以下を用途に応じて細かく整理したい場合、テンプレートを使いこなすと非常に便利です。

---
Nuxt3にPiniaをインストールする方法

# Piniaとは？
`Pinia`はVueで使われる状態管理ライブラリです。

今回は、`Nuxt3`で使用するため下記の公式サイトを活用します。

https://pinia.vuejs.org/ssr/nuxt.html


# Piniaのインストール
`Nuxt3`での`Pinia`のインストールは下記のコマンドを使用します。

```
npx nuxi@latest module add pinia
```

すると、`Ok to proceed? (y)`と聞かれるので、「y」コマンドを入力します。
すると、下記のようにインストールが始まります。

```
PS C:\Users\userpc\Desktop\NuxtFDjango\frontend> npx nuxi@latest module add pinia
Need to install the following packages:
nuxi@3.25.1
Ok to proceed? (y) y
ℹ Resolved @pinia/nuxt, adding module...                                                                                nuxi 21:34:14
ℹ Installing @pinia/nuxt@0.11.0 as a dependency                                                                         nuxi 21:34:14

added 1 package, and audited 931 packages in 3s

193 packages are looking for funding
  run `npm fund` for details

7 moderate severity vulnerabilities

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.
ℹ Adding @pinia/nuxt to the modules                                                                                     nuxi 21:34:18
✔ Types generated in .nuxt               
```

インストール完了すると、次は`nuxt.config.ts `ファイルを見てみます。
```nuxt.config.ts
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  compatibilityDate: '2024-11-01',
  devtools: { enabled: true },
  modules: ['vuetify-nuxt-module', '@pinia/nuxt'],
})
```

さきほど、下記のコマンドで`Pinia`をインストールしました。このコマンドで`nuxt.config.ts`の`module`に`pinia`が自動でインストールされています。
```
npx nuxi@latest module add pinia
```

# `nuxt.config.ts `に Pinia モジュールを追加
`nuxt.config.ts`に修正を下記の通り少し加えます。
```nuxt.config.ts
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  compatibilityDate: '2024-11-01',
  devtools: { enabled: true },
  modules: ['vuetify-nuxt-module', '@pinia/nuxt'],
  pinia:{
    authImports:[
      'defineStore'
    ],
  },
})
```

以上です。

# Vue3とNuxt3ではPiniaのインストール方法が違うことに注意する

`Pinia`と検索すれば、下記がトップ検索に来るかと思います。

https://pinia.vuejs.org/introduction.html

この画面の左サイドメニューの「Get Started」をクリックして、パッケージマネージャを選択して`Pinia`をインストールすると、開発中のアプリのフレームワークがNuxt3の場合下記のエラーが出ます。

```
"getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"?
```

https://pinia.vuejs.org/introduction.html

↑のサイトは`Vue`でのインストール方法を記載しています。
`Nuxt3`で使う場合は、前述のサイトからインストールするようにしてください。
データ分析初心者がDataikuを活用してデータ分析コンペに参加してみた

# 1.はじめに
みなさん、こんにちは
自動車業界で７年目を迎えたShirachanです。
昨年からAI活用の推進を担当しており、データ分析コンペに参加することとなりました。業務で関わっているものの、実践する機会が少ないのもあり参加してみました。

本記事では、データ分析初心者の私がどのようにDataikuを活用してコンペを完走できたかをお伝えできたらと思います。

# 2.コンペについて
今回参加したコンペはSIGNATEの自動車関連産業対抗データサイエンスチャレンジのビギナーズカップです。
本コンペでは、エンジン排気量や燃料タイプなどから自動車の排出ガスのクリーンさを予測し、予測値と実測値の二乗誤差を平均した指標の平均二乗誤差（MSE）で競います。
与えられたデータセットには、変数が８０個含まれており、これらを用いて予測をしていきます。
予測に使うツールの指定はなかったのですが、希望者にはDataikuの環境がコンペ期間内に提供されていましたのでDataikuを選びました。
# 3.Dataikuについて
データの取込と準備、分析、AutoMLによるモデル開発といったデータ分析の基本的なステップをすべて、GUIベースでコーディングなしで行えるオールインワンのAI・機械学習プラットフォームです。
GUIベースで行えるためデータ分析においての面倒だった前処理等の作業を効率化できます。
もちろん、コーディングでも作業することもできます。
下記の図のようにフローで作成していくので可読性も高いです。
まだ触れたことがない方はぜひ下記のリンクからdataikuを覗いてみてください。
[Dataiku](https://www.dataiku.com/ja/)
![dataiku_flow_sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4087172/14669fb7-61a2-48cf-944e-1f5702601830.png "図1.dataikuで作成したフロー")

# 4.データの理解と前処理
データのインポートを実施した後にデータの中身を確認していきます。
Dataikuでは、即座に各カラムの平均、標準偏差、分布図、欠損などを確認することができます。また、データの可視化や相関係数などの統計指標を自動的に作成することも可能です。これらの機能を使って統計の知識がなくてもデータを統計的に確認することができます。
これが本当に便利です！
![dataiku_data_co2graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4087172/4b87e1e8-9d3b-4b90-babd-72c123db79a3.png)
![dataiku_data_correlation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4087172/5a3239ce-2fd2-465c-bdce-c20007ac5819.png)

Dataikuでは簡単にデータの整形や加工をすることができます。
今回は、下記のデータ処理を紹介する。
１）エンジン情報の空白行をNAに置き換える
　　これを実施することで後ほどワンショットエンコーディングなどの整形を行うときに役に立ちます。
２）燃費情報で０になっているものを他のカラムの数値を代入し、新たなカラムを作成する。
![dataiku_data_eng.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4087172/14a9052a-6d3c-4bc6-a766-0f11144bbaa9.png)
![dataiku_data_city.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4087172/071ab36d-2c24-4038-a692-88fadae1f43f.png)


# 5.予測モデルの作成と評価
Dataikuでは、たくさんの機械学習のアルゴリズムに対応しており、機械学習やプログラミングの知識がなくても簡単に予測モデルを作成することができます。
また、Dataikuの方で自動的に機械学習のアルゴリズムやそれぞれのアルゴリズムのパラメータのチューニングも実施してくれます。
![dataiku_data_algo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4087172/bcb3ab8f-9650-4d7a-9be2-717aa9f9482c.png)

Dataikuでは複数のモデルを同時に学習することができ横並びでモデルを比較することができます。またどの特調量の寄与度を確認することができ、次のモデル作成の考察に活かすことができます。
![dataiku_algo_train.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4087172/7a7ccb59-87f7-4268-ba33-61f5798f4650.png)

# 6.まとめ
今回のコンペでは、MSEスコアが0.406で参加者のランキングでは53位の結果を得られました。上位入賞することはできなかったですが、データ分析の楽しさを学びました。また、今回はDataikuを用いてローコードで実施いたしましたが、Dataikuの便利さを改めて感じました。データ準備からモデルの評価までをGUIで完結できるため初心者の方でも躓くことなく楽しく最後まで実装することができます。
Python3認定エンジニア認定の基礎試験を合格した話

# 受験理由
1年目の駆け出しエンジニアです。AI領域に興味があったのと、独学でPythonのWebアプリを作成した経験があったため、自分の知識の整理と今後のキャリアに向けてPythonの取得を決意しました。

# 目次

1. [勉強期間と方法](#Chapter1)
1. [Web模試紹介](#Chapter2)
1. [最後に](#Chapter3)


<a id="#Chapter1"></a>
# 勉強期間と方法
勉強期間は3カ月です。2024年の10月から勉強を始め、12月末に取得しました。

3か月間の勉強方法は↓の通り
1カ月目＝黒本を解きながらPythonチュートリアルで間違えた個所を確認。
2か月目＝Web模試を解きながらPythonチュートリアルで間違えた個所を確認。
3か月目＝模試を反復して90％の正答率を維持。

Pythonの他にも、Javaを触っていたという過去もあり、クラスや基本的な分岐条件などの知識をもっていたため、この学習期間で理解できたのだと思います。


<a id="#Chapter2"></a>
# Web模試紹介
ここからは、実際に活用したWeb模試を紹介していきます。

まず、腕試しに以下のサイトを試してみました。

https://lpm.pyq.jp/qualify_edbasic_entry/
難易度：★★☆（普通）
料金：無料

初めて模試を受けてみて、非常に難しかったです。黒本は複数回周回していたので、自身はあったのですが、5割とれませんでした。そのため、公式で教科書と言われている「Pythonチュートリアル」を購入し、間違えた問題は全て「Pythonチュートリアル」で確認していきました。「Pythonチュートリアル」を辞書のように使いながら問題文も選択肢も全て確認していきました。3回くらい解くと選択肢の並びも覚えてきてしまったので、他のWeb模試に挑戦しようと思いました。


続いて、以下のサイトに挑戦してみました。
https://study.prime-strategy.co.jp/
難易度：★★★（難）
料金：無料

  正直、難しかったです。3回分用意されていたのですが、1回分解いてみてボコボコにされました。たしか…5割だったと思います。合格点の7割は超えると思ったんですがね…。残り2回分は、他のweb模試で実力をつけてから再度解こうと残しておきました。ちなみに…テスト直前期に解いた時にもギリギリ７割しか取れませんでした。調べてみると、難しいという声がネットにちらほら散見されました。そのため、この模試では過剰にショックは受けなくても大丈夫だと思います。ただし、自分の合格点数から考えてみると、この模試では6～7割取れないと合格ラインに届かないのではと感じる側面もあります。

最後に以下のサイトを紹介します。
https://diver.diveintocode.jp/dive_into_exam/lp
難易度：★★☆（普通）
料金：無料

これは、非常に良いサイトでした。難易度もちょうどよく、解説もたまに出てくるため有益な無料サイトです。（頭が下がりすぎて地面に埋まります）問題や選択肢がランダム配置になるため、毎回答えへのロジックを確認することができました。また、アカウント登録が必須なのですが、登録すると正答率などを記憶してくれるので、少しずつ正答率が上がるのを可視化してもらえてモチベーションが保ちやすいように感じました。これをはじめに解けばよかったというのが本音です。




<a id="#chapter3"></a>
# 最後に
　「Pythonチュートリアル」は買っておいた方がいいです。あと、Pythonの由来はイギリスのとある番組だそうです。←問題で出た時にめっちゃおどろきました
パケットファイル(.pcap)の生データ

# きっかけ
CTFのハリネズミ本を読んでいると、.pcapの生データに関する記述がありました。
最近はアセンブリ命令しか見ていないので、機械語の方にも目を向けてもいいかなと…
# .pcapファイル
libpcap(Packet Capture Library)は、wireshakeなどのlibpcapというライブラリを使用したパケットを保存するためのファイルフォーマットです。
## 構成
1. libpcap header
1. packet header
1. pakcet data

の3段構造になっている。

### libpcap header

![スクリーンショット 2025-05-15 211745.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4055936/3e502b74-066c-4cba-b1e0-6c85135720fd.png)

libpcap headerはpcapファイルの情報を格納する場所です。
ファイル先頭の4バイトは`D4 C3 B2 A1`となっており、.pcapファイルと判別することができる。
(リトルエンディアンになっていることに注意)

#### 補足
16進数は1文字に4ビット使用します(0001(1)～1111(F))。
画像からわかるように2文字8ビット(=1バイト)毎に区切られています。


- libpcapファイルフォーマットのバージョン
    - majour version:2バイト
    - minor version:2バイト
    - 最新バージョンは[2.4](https://wiki.wireshark.org/Development/LibpcapFileFormat#global-header)
- タイムゾーン情報
    - timezone:4バイト
    - 基本値は0x00000000
- タイムスタンプの精度
    - sigfigs:4バイト
    - 基本値は0x00000000

ここまでが画像の一行目にあたります。

---

- キャプチャできる最大パケット長
    - snaplen:4バイト
    - 基本値は0x0000FFFF
    - 画像では0x00400000
- データリンク層のヘッダタイプ
    - linktype:4バイト
    - Ethernetの場合、0x00000001

### packet header

- パケットがキャプチャされた時の日付
    - 前4バイトはUNIX時刻型式の日付
    - 後ろ4バイトはマイクロ秒
    - 前4バイトは`46 D8 25 69`となっている
#### [UNIX時刻型式](https://e-words.jp/w/UNIX%E6%99%82%E9%96%93.html)

1970年1月1日午前0時からの経過秒数で表します。
今回は、`6925D846`秒つまり、1747310662秒経過したことになります。
計算すると、`2025年5月15日 21:04:22`のパケットファイルだという事がわかります。

余談ですが、2038年にシステムのエラーが多発すると言われている原因がこれにあります。
C言語では、UNIX時刻型式が32ビット符号付整数型(最大21億4748万3647)で表現されている。最大値を日付に変換すると`2038年1月19日3次14分7秒`となります。

---
- パケットの長さ
    - caplen:4バイト(記録されているパケット長)
    - len:4バイト(実際のパケット長)
    - 基本的に同じ値
    - 画像では見切れているが、`4E 00 00 00 4E 00 00　00`となっている

# まとめ

先頭4ビットによってファイル形式が特定でき、それ以降のデータに意味が生まれます。
他ファイルではどのように定義されているのか気になりました。

# 参考

- [セキュリティコンテストチャレンジブック](https://www.amazon.co.jp/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B3%E3%83%B3%E3%83%86%E3%82%B9%E3%83%88%E3%83%81%E3%83%A3%E3%83%AC%E3%83%B3%E3%82%B8%E3%83%96%E3%83%83%E3%82%AF-CTF%E3%81%A7%E5%AD%A6%E3%81%BC%E3%81%86-%E6%83%85%E5%A0%B1%E3%82%92%E5%AE%88%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%88%A6%E3%81%84%E6%96%B9-%E7%A2%93%E4%BA%95-%E5%88%A9%E5%AE%A3/dp/4839956480)
- [Wireshake-Development/LibpcapFileFormat](https://wiki.wireshark.org/Development/LibpcapFileFormat#global-header)
dvh 使用時にアドレスバーの格納・展開で画面がカクつく問題

## dvh とは？
`dvh`（dynamic viewport height）は、デバイスのビューポートの高さに基づいて要素の高さを指定できるCSSの単位です。
```css:css
.section {
  height: 100dvh;
}
```
スマートフォンなど、利用者によって画面サイズが異なる環境でも、それに合わせて自動で高さを調整してくれるため、柔軟なレイアウト設計が可能になります。
## 便利な反面、意図しない挙動も
### スクロールで起こる“かくつき現象”
スマートフォンのモバイルブラウザでは、スクロール操作に応じてアドレスバーが自動的に格納されたり、再展開されたりします。
これによりビューポートの高さが変わり、`100dvh` で指定した要素の高さも再計算されます。

その結果、**画面全体がガクッと動くように見えてしまう**のです。

問題の現象をご覧ください。

左がカクつくページ、右は修正したものです。

![Timeline-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183668/14455991-0deb-4d98-bc85-f7ce82ecd4c7.gif)

再現ページを作りましたので、スマートフォンでアクセスしてみてください。

https://dvh-verification.vercel.app/

## レイアウト構成
今回の現象は以下のような要件で起こりました。
### 再現要件の具体例
- ファーストビューに固定ヘッダーがある
- ヘッダー分のスペースを確保するため、下の要素に margin-top を設定している
- ビジュアル画像の高さを calc(100dvh - ヘッダーの高さ) で調整している

これにより、`100dvh`で指定した要素が再計算されてしまい、ページ全体がガクッと動いてしまい、ユーザビリティを大きく損なう原因となってしまいます。

## コード

実際のコードを見てみましょう。

修正前（カクつく方）は `48px(mt-12)` のマージンを上部に持ち、ヘッダー分下げています。
それだけだと画像がファストビューから下にはみ出てしまうので、 `48px` を `100dvh` から引くことで、ぴったりデバイスの高さに収まるということになります。

```react:page.tsx
<main>
  <div className="h-[calc(100dvh-48px)] mt-12">
     <Image src={photo} alt="" priority className="h-full w-full object-cover" />
  </div>
</main>
```

しかし、アドレスバーが格納・展開するたびに `calc` の計算が走り、画像を画面内に収めようと伸びたり縮んだりすることでカクつきが発生してしまいます。

### 結論： svh を使う
コメントをいただきました。 `svh` を使えと……

`svh` はスモールビューポート（アドレスバー以外の画面部分）しか見ないので、アドレスバーがあろうがなかろうが高さは変わらない。よって、カクつきは起きないのでした。

https://dezalog.com/viewport-relative-units/

ここから下は読まなくても大丈夫です。

## そのまま dvh を使って処理する場合

どうしても `dvh` を使わなければいけないとき

……があるかはわかりませんが、一応やり方として残しておきます。

### 初期状態を保存して再利用する
ページに初めてアクセスした段階で、画像の高さは計算されていることに着目します。

この状態を `useEffect` で初回レンダリング時のみ計算し、 `useState` で管理することで2回目以降の計算が行われずカクつきを防止することができます。

```react:page.tsx
// カスタムフックを作成してロジックを分離
function useInitialViewHeight(): string {
  // 初期値も計算済みの値を使用してちらつきを防止（初期レンダリングで使用）
  const [viewHeight, setViewHeight] = useState<string>("calc(100dvh - 48px)");

  useEffect(() => {
    // 初回レンダリング時にのみ高さを計算
    // CSS変数の100dvhはモバイルでスクロール時に変動することがあるため
    // window.innerHeightで固定値をピクセル単位で取得して再計算を防止
    const height = window.innerHeight;
    setViewHeight(`${height}px`);
    // 空の依存配列で初回レンダリング時のみ実行
  }, []);
  return viewHeight;
}

export default function AfterPage() {
  const viewHeight = useInitialViewHeight();
  return (
    <main>
      <div className="mt-12" style={{ height: `calc(${viewHeight} - 48px)` }} >
        <Image src={photo} alt="" priority className="h-full w-full object-cover" />
      </div>
    </main>
  );
}
```

`useEffect` 内で同じ計算を行っているのに、初期値にも `calc(100dvh - 48px)` を指定する必要があるのかと疑問に思う方もいるかもしれません。

`useEffect` が発火する前に、あらかじめ `calc(100dvh - 48px)` を初期値として指定しておくことで、初期レンダリング時のちらつきを防止でき、結果としてユーザビリティの向上につながります。
【Automation Anywhere COMMUNITY EDITION】初期設定

:::note warn
最低限これが出来ていればRPA作成できる、と思われる初期設定に関する内容です。

開発内容によっては更に必要な設定がある場合があります。
:::

# ①下記のリンクより登録を行う。
[automationanywhere　community-edition](https://www.automationanywhere.com/jp/products/enterprise/community-edition "インストールページ")



各種情報を入力し、送信をクリックする。

※会社名、部門について　「study」でも可能

![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/fb003f82-530b-4b18-8ff1-bf71b57a76b3.jpeg)


# ②登録したメールアドレスへメールが届くので、メール本文に記載されたパスワード設定リンクをクリックし、登録する。


# ③ユーザー名（メールアドレス）と設定したパスワードを入力し、ログインをクリックする。

![000.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/31456f04-f1e8-4dc4-9517-d76c3625e290.jpeg)


# ④Botを作成　をクリックする。
![001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/a43baefe-1d9e-4293-928b-73f6dd83550f.jpeg)


# ⑤名前を設定し、作成と編集をクリックする。
![002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/037d5fca-f297-4e35-a705-db036a225f21.jpeg)

# ⑥作成したタスクbotをクリックする。
![003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/ce0810f6-0966-45b0-b00c-413e3c147606.jpeg)

# ⑦開かれたページで録画ボタンをクリックする。
![004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/76e91372-bdcb-43b5-8d87-d7fb26b235c5.jpeg)


# ⑧exeファイルのダウンロードとブラウザへの拡張機能が追加されるので、設定を進める。

![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/d3cf4cbe-0d35-4ff4-ab70-b52d642e56da.jpeg)
↓
![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/813a5986-d100-4b32-b1eb-45d5b96fa08d.jpeg)
↓
![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/e405b79d-e9bf-42d8-9dee-14b4c04c1d39.jpeg)
↓
![8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/1c50a808-fa6b-4336-bbe1-946874ed306c.jpeg)
↓
![9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/554a105e-2ac2-4c12-8589-bd7ed0ee9277.jpeg)
↓
# ⑨デバイスユーザー名が文字化けしているので、正しいユーザー名に編集。保存して再試行　をクリックする。
![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/0d028b8e-ffe2-4741-b0c6-2e79f4b86190.jpeg)


# ⑩正しく設定が行えていると録画ボタンをクリックで、レコーダーによるRPAのアクション生成が出来るようになる。

![005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/978740ac-2473-4bd3-b10a-5366f2d8de3d.jpeg)

# 以上、初期設定は終了。
AWSまとめ

# AWSまとめ

## RDS
- RDSで使えない機能や使えないバージョンがある
- RDSは停止すれば課金されない
- RDSのスナップショットでバックアップが作成できる

## Redshift
- Redshiftはスナップショット用に無料のストレージを提供しているが、上限を超えると課金される
- 自動スナップショットの保存期間や手動スナップショットの管理が必要

## AWS ParallelCluster
- 実証環境および本番環境のHPCコンピューティング環境を迅速に構築・デプロイできる

## AWS Storage Gateway
- Amazon S3とオンプレミスのストレージを接続し、バックアップ取得やストレージ容量拡張が可能なハイブリッドクラウド機能
- 主に3種類のゲートウェイタイプがある
- ボリュームゲートウェイは保管型とキャッシュ型に分かれる

## Amazon Kinesis Data Streams
- ストリームデータの処理に特化
- クリックストリームデータをリアルタイムで取得・処理できる

## Amazon Kinesis Data Firehose
- ストリームデータを変換し、ストレージやデータベースに配信
- Amazon S3データレイクへの送信に利用可能
- 大量データの保存にはS3バケットなどが必要

## AWS CloudFormation
- AWSリソースの構成をコードとしてテンプレート化できるサービス
- EC2やRDSなどのAWSリソースのプロビジョニング・設定をコードで管理可能
基本情報技術者試験 学習まとめ（2025年5月15日）

## 📘 基本情報技術者試験 学習まとめ（2025年5月15日）

### ✅ 数学・論理・ビット処理
- `n⁰ = 1`、`n⁻ᵃ = 1 / nᵃ`
- 符号ビットの先頭が `1` なら負の数
- **論理シフト**：`1` がはみ出たら **オーバーフロー**
- **算術シフト**：符号ビットと異なる値が出たら **オーバーフロー**
- **DNF記法（Disjunctive Normal Form）**：論理式を「ANDのまとまりをORでつなぐ」形で表現

### ✅ セキュリティ・ネットワーク
- **IDS（Intrusion Detection System）**：パソコンのまわりを見はるセキュリティ警備員！
- **IPアドレス**：ネットワーク上の住所  
  - IPv4：例 `192.168.1.1`（0〜255の数字4つをドットで区切る）  
  - **プライベートIP**：家庭や社内などの閉じたネットワーク用  
  - **パブリックIP**：インターネット上で一意のアドレス

### ✅ ハードウェア・制御・仕組み
- **アクチュエーター**：電気や圧力で、モーターやピストンを動かす装置
- **エッジコンピューティング**：データを端末の近くで処理して素早く反応する方法

### ✅ データ管理・出力処理
- **ストライピング**：データを複数のストレージに分散させて高速処理を実現
- **スプーリング**：出力の順番待ち処理（例：印刷ジョブ）
- **デジタルサイネージ**：ディスプレイ（画面）を使って情報を表示する方法

### ✅ OS・スケジューリング
- **ラウンドロビン**：コンピュータが「順番にみんなに時間を分けてあげる」方式

### ✅ その他用語
- **PDPC法**：問題を前もって考えて、どうするか決めておく方法
- **デルファイ法**：専門家に匿名アンケートを繰り返して意見を集約する方法
- **イテレーション（Iteration）**：同じ作業を繰り返すこと
- **RSA暗号**：みんなに見せる「公開鍵」、自分だけが持つ「秘密鍵」
- **可用性**：コンピューターやサービスが正常に使える状態
- **ゲーム理論**：他者の動きを考慮して最適な戦略を選ぶ方法
- **リエントランス**：途中で呼び出されても正しく動作するプログラム構造
- **フラグメンテーション**：データがバラバラに分断されてしまう現象
Chat GPTのDeepResearchとGithubを連携してみた。

# 初めに
OpenAIからChatGPT DeepResearchの新機能としてGithubとの連携が発表されました。
全世界のTeamユーザと、ヨーロッパを除く国のPlusユーザ及びProユーザが利用できます。

https://x.com/OpenAIDevs/status/1920556386083102844

# 使い方

:::note warn
2025年5月15日現在、Macのデスクトップアプリ及びiOSアプリでは利用不可能です。(Windows環境の方いたら情報いただけるとありがたいです)
:::

ブラウザからGPTにアクセスすると、Deep Researchを選んだ際にWeb/Github/Sharepointとの連携を選択できます。

![スクリーンショット 2025-05-15 21.19.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632067/2719b43b-c852-4305-9362-6d7d07ad2f2a.png)

さらにGithubを選択するとリポジトリを選択できるようになります。

:::note info
プライベートリポジトリや管理者の許可のないリポジトリは追加できないため、有名なOSSなどもしばらくは対応しないと思います。
自分で作ったパブリックリポジトリでの利用がメインかと。
:::


![スクリーンショット 2025-05-15 21.20.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632067/4a8adcf5-6e70-4081-956b-311b0b9c2075.png)

今回は、私が作成したパブリックリポジトリで試してみます。実際のリポジトリはここからアクセスできます。

https://github.com/tomoya-worldwide/threejs-snippet

以下のプロンプトで試してみます。
```
下記のレポジトリで以下のタスクを実行して。
repo://tomoya-worldwide/threejs-snippet
Task1: フォルダ構成と各デモで学べる three.js の概念を表にして。日本語 30 行以内、引用付きで。
Task2: ハンズ用 README.md 雛形を作成して。セットアップ、起動コマンド、操作例、学べるポイントの 4 セクション構成、Markdownで出力して。
Task3: three.js 初心者向け選択式クイズを 5 問作成し、各問に理由・関連ファイル引用を付けてMarkdownで出力して。
```

そうすると、以下のような確認が返ってくるのでそれにも答えて出力を待ちます。
```
repo://tomoya-worldwide/threejs-snippet

# 前提
- 各デモは **src/demos/** 配下のサブフォルダを指す  
- 実行環境は “Node.js + npm (Three.js r157 時点)” と仮定  
- three.js 初心者（入門書 1〜3 章レベル）向け  
- 引用は行番号つきコードブロックで  
- 追加の質問はせず、ただちに結果を返すこと

# Task 1  
フォルダ構成と各デモで学べる Three.js の概念を **表形式（日本語、最大 30 行）** でまとめ、各行に関連ファイルを 1 箇所引用する。

# Task 2  
ハンズオン用 **README.md 雛形** を生成する。  
セクションは **①セットアップ ②起動コマンド ③操作例 ④学べるポイント** の 4 つ。Markdown 出力。

# Task 3  
Three.js 初心者向け **選択式クイズ 5 問** を作る。  
各問に **A〜D の 4 択**, 正解理由, 関連ファイル引用 を付け、Markdown で出力。
```

![スクリーンショット 2025-05-15 21.31.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632067/7c4b3557-b572-4ce1-8b4e-c8f58e51a028.png)

待つこと約15分、出力結果は以下です。
Deep Researchでは最近出た機能としてpdfでの出力にも対応していますがQiitaには添付できないためリンクを貼っておきます。

https://chatgpt.com/s/dr_6825e55ee12c819190b99f0bcbd9434f

![スクリーンショット 2025-05-15 22.00.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632067/f57972f2-04c3-4293-bc86-2521bf32f6b8.png)

## 所感
* リポジトリ構造を正しく解析し、行番号付き引用で根拠を示している
* 生成された README 雛形はほぼそのまま使えるクオリティ
* クイズ問題は学習コンテンツとしてギリ実用的

OSS プロジェクトの 事前調査・キャッチアップ や、社内プロジェクトへの 新規メンバー参加 にも活用できそうです。

## まとめ
| 観点 | メリット | 
|:-----------|:-----------|
| コード把握       | 検索＋要約＋引用をワンストップで実行 |  
| ドキュメント生成    |  READMEなどの文章を自動作成 |   
|学習用途      | three.js など技術スタックの教材づくりに使えるかも？ |   

まずは、**自分の公開リポジトリ**と連携し、小さなタスクで挙動を確認するのがおすすめです。
rex0220 計算式プラグイン スペース項目にリンク表示

[計算式プラグイン](https://qiita.com/rex0220/items/ae83c6d5ce50ff7a9a73)で、スペース項目にリンク表示してみます。

# 概要

リンク項目で WEB の URL を入力できますが、一般的な文字列にリンク設定することが出来ません。
[計算式プラグイン](https://qiita.com/rex0220/items/ae83c6d5ce50ff7a9a73)で、スペース項目へ文字列にリンク設定してみます。

- URLリンク：　リンク名（文字列項目）とリンク（リンク項目）からリンク設定
- ルックアップリンク：　ルックアップ項目からルックアップアプリへのリンク設定
    - 必要なルックアップ値が無い場合、アプリのリンクがあると便利です

編集画面

![2025-05-15_20h35_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/4587f046-12bb-48b2-adab-713cfeaa0ce9.png)

詳細画面

![2025-05-15_20h38_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/1be381b3-6053-4a11-9d00-8567f3b612a3.png)

# アプリフォーム設定

スペース項目に要素IDを設定します。

![2025-05-15_20h45_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/1bc7211c-c156-45dc-a9e4-171e9d81c8a6.png)

# 計算式プラグイン設定

TAG 関数で、リンクを組み立てます。

![2025-05-15_20h46_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/a23bdae9-31ea-4b7b-97e7-bfb38f4d16e4.png)

```JavaScript:
OPTION: 

// sp-link:(sp-link) SPACER
ARRAY("URLリンク","",
  IF(リンク,
    TAGS_HTML(
      TAG("a", ATTR("href", リンク, "target", "_blank"), リンク名)
    ),
    リンク名
  )
)

// sp-lookup:(sp-lookup) SPACER
ARRAY("ルックアップリンク","",
  TAGS_HTML(
    TAG("a", 
       ATTR(
         "href", APP_URL()&"k/"&LOOKUP_GETID(会社ID)&"/",
         "target", "_blank"
       ), 
       "会社マスタ"
     )
  )
)
```

# スペース項目の計算式解説

ARRAY 関数で、ラベル・スタイル・表示内容などを指定します。

- ARRAY("URLリンク","", ...)
- ARRAY() 関数は、スペース項目にラベル・値・スタイルなどをセットできるようにします
    - 第1引数 "URLリンク" は、表示するラベル
    - 第2引数 "" は、スタイル指定なし
    - 第3引数以降に表示内容を記述します

# リンクを組み立てる計算式解説

TAGS_HTML(...)：タグをHTMLとしてスペース項目へ表示できるようにします。

```
- TAGS_HTML(TAG("a", ATTR("href", リンク, "target", "_blank"), リンク名))
- TAG("a", ...)：HTMLの <a> タグ（リンク）を生成します
    - ATTR("href", リンク, "target", "_blank")：リンクの属性。別タブで開くように指定
    - リンク名：表示される文字列
```

# ルックアップリンクを組み立てる計算式解説

APP_URL()&"k/"&LOOKUP_GETID(会社ID)&"/"

- APP_URL()
    - 現在の kintone のベースURL（ドメイン＋サブディレクトリ） を返します
    - 例: "https://xxx.cybozu.com/"

/k/ より前までが返される可能性がありますので、後続で "k/" を追加しています。

- LOOKUP_GETID(会社ID)
    - 会社ID という ルックアップ項目（他アプリを参照する項目） から、参照先アプリのアプリID（数値）を取得します
    - 例：参照先アプリのIDが 1234 の場合、LOOKUP_GETID(会社ID) → 1234


# 項目検証プラグインで、詳細画面の項目の非表示設定

[項目検証プラグイン](https://qiita.com/rex0220/items/be20fd879f5e1bc9e035)で、詳細画面の不要な項目を非表示にしてみます。

![2025-05-15_21h02_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/4e813a06-054b-41b5-bdb6-23b1d7218a2e.png)


# 項目検証プラグイン設定

項目別非表示の計算式に、EV_INFO 関数で詳細画面を判定します。

```JavaScript:
// リンク名、リンク、sp-lookup の非表示
EV_INFO("cate")="detail"
```

![2025-05-15_21h06_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/fbdf162f-f27f-4d0f-bc63-02425657b739.png)
Linucレベル１勉強メモ　＃４５

# 第四章　リポジトリとパッケージ管理

練習問題4.9
yumコマンドを使ってpostfixパッケージをインストールしようとしています。下線部に当てはまるコマンドと引数を記述してください。

yum ________

（解答）install postfix

（解説）yumコマンドを使ってインストールするには、パッケージ名を引数としてyum installコマンドを実行します。
ConfigurationPropertiesでmapにプロパティをバインド

たとえば、以下のように同一の親キーを持つプロパティを`Map`にバインドしたい、とする。

```
prefecture.kanagwa=KANAGAWA
prefecture.tokyo=TOKYO
prefecture.chiba=CHIBA
```

```gradle
plugins {
	id 'java'
	id 'org.springframework.boot' version '3.4.5'
	id 'io.spring.dependency-management' version '1.1.7'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
	toolchain {
		languageVersion = JavaLanguageVersion.of(21)
	}
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
	useJUnitPlatform()
}
```

```java
import java.util.Map;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties
@Data
public class PrefectureConfig {

  Map<String, String> prefecture;
}

```

上記にすると `prefecture` は以下になる。

```
{kanagwa=KANAGAWA, tokyo=TOKYO, chiba=CHIBA}
```

もし、以下のようにプロパティが特定のprefix下であれば、

```
japan.prefecture.kanagwa=KANAGAWA
japan.prefecture.tokyo=TOKYO
japan.prefecture.chiba=CHIBA
```

以下のように変更すれば同一の結果が得られる。

```java
@ConfigurationProperties("japan")
```
PATHと〇〇_HOMEって何？開発で必ず使う環境変数を解説！

## 1. はじめに🥸
開発を進めるうえで避けて通れない「環境変数」。聞いたことはあるけど、詳しくは分からない…そんな初心者向けに、環境変数の基本をわかりやすく説明します。

### 本記事の目的
- `PATH` や `〇〇_HOME` を適切に設定する意味を理解する  
- 環境変数を正しく設定し、スムーズに開発できるようにする  

この記事では、特に重要な **「PATH」** と **「〇〇_HOME」** の2つを中心に解説していきます。

---

## 2. PATH とは？🛣️

### その前に…環境変数って何？
環境変数とは、**OSやアプリケーションが動作するために必要な設定情報** のことです。簡単に言えば、プログラムがどのフォルダを参照すべきかを指定するためのものです。

---

### PATH の役割
`PATH` は、**コマンドライン（CUI：Character User Interface）でプログラムを実行するときに、そのプログラムの場所をOSに教えるための設定** です。

#### **「PATHを通す」とは？**
巷でよく言われる「PATHを通す」とは、**プログラムの実行ファイル（バイナリ）のディレクトリを `PATH` に追加すること** を指します。

例えば、Javaをインストールした場合、`PATH` にJavaの実行ファイルの場所を追加すると、以下のようにコマンドが省略可能になります。

#### **PATHを設定した場合**
```bash
java -version
```
#### **PATHを設定しない場合（フルパスで指定が必要）**
```bash
/usr/lib/jvm/java-17-openjdk/bin/java -version
```
このように、`PATH` を通すことで **「どのディレクトリにあるプログラムかを毎回フルパスで指定しなくても済む」** というメリットがあります。

---

## 3. 〇〇_HOME（インストールディレクトリ）とは？🏠

### `〇〇_HOME` を指定する意味
`〇〇_HOME` は、**特定のソフトウェアやツールのインストール場所を明示し、他のプログラムがそれを参照できるようにする環境変数** です。

例えば、Javaの場合は `JAVA_HOME` を設定すると、MavenやGradleなどの開発ツールがどのJDKを使うかを識別できるようになります。

### `〇〇_HOME` を設定するメリット(例.JAVA_HOME)
1. **開発ツールが正しく動作する**
   - `JAVA_HOME` を設定しておけば、MavenやTomcatが適切なJDKを参照できる  
2. **複数バージョンを切り替えやすい**
   - Java 8とJava 17など、複数のJDKを管理するときに便利  
3. **環境の一貫性を保つ**
   - `PATH` だけに依存するとバージョン管理が難しくなるが、`JAVA_HOME` を指定すれば確実に特定のバージョンを参照できる  
4. **スクリプトやCI/CDの自動化に役立つ**
   - `JAVA_HOME` を設定することで、ビルドツールやデプロイツールが適切なJavaのパスを認識できる  

### `JAVA_HOME` の設定例
```bash
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
```
この設定により、`java` コマンドをどこでも使用でき、Mavenなどの開発ツールが正しいJDKを認識できるようになります。

---

## 4. まとめ🌟

✅ `PATH` は「コマンドを簡単に実行できるようにする設定」  
✅ `〇〇_HOME` は「ソフトウェアのインストール場所を指定する設定」  

環境変数を適切に設定することで、開発環境をスムーズに運用できるようになります。特に`JAVA_HOME`の設定はJava開発では必須なので、ぜひ意識して設定してみてください。
自然言語処理のためのポケモン


```Python
# MeCabとPythonバインディングのインストール
!apt-get -q install mecab libmecab-dev mecab-ipadic-utf8
!pip install mecab-python3

# -*- coding: utf-8 -*-
# Program Name: pokemon_mecab_analysis.py
# Description: ポケモン解説文を形態素解析（環境依存対策付き）

import MeCab

# --- MeCab初期化（環境依存対策） / Initialize MeCab with rcfile option ---
try:
    tagger = MeCab.Tagger("-r /etc/mecabrc")
except RuntimeError as e:
    print("MeCab initialization failed. Please check mecabrc path.")
    raise e

# --- 解析対象テキスト / Define Text ---
txt = '''はじめまして、こちらはポケモン統計学習チャンネルです。
Pythonを使ってポケモンデータを自在に分析し、バトルや育成に役立てる力を一緒に身につけましょう。
本講義では特にポケモンの種族値や技データを使った機械学習や自然言語処理に挑戦します。
様々なライブラリを活用することで、タイプ相性や強さ分析が簡単にできます。
それでは早速、ポケモンデータ分析の世界へ進んでいきましょう。'''

# --- 形態素解析実行 / Run Morphological Analysis ---
result = tagger.parse(txt)

# --- 解析結果表示 / Show Result ---
print(result)

```


```Python
# -*- coding: utf-8 -*-
# Program Name: simple_word_pca_visualization.py
# Description: English sentence to dummy vectors and PCA 2D visualization

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

# --- Example English Sentence ---
sentence = "Learn data science with Python and apply machine learning to analyze Pokemon data"

# --- Tokenize Sentence ---
words = sentence.lower().split()

# --- Simulate Dummy Word Vectors (50-dimensional random vectors) ---
np.random.seed(42)
dummy_vectors = np.random.rand(len(words), 50)

# --- Dimensionality Reduction (PCA) to 2D ---
pca = PCA(n_components=2)
reduced_vectors = pca.fit_transform(dummy_vectors)

# --- 2D Plot ---
plt.figure(figsize=(8, 6))
plt.scatter(reduced_vectors[:, 0], reduced_vectors[:, 1], color='blue')

for i, word in enumerate(words):
    plt.text(reduced_vectors[i, 0] + 0.01, reduced_vectors[i, 1] + 0.01, word, fontsize=9)

plt.title('2D PCA Projection of Dummy Word Vectors')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.show()

```
カシオ fx-55 PLUS fraction calculatorをざっと見

ドットマトリクスタイプの算数学習用電卓としてdeli DL-1726と人教社PEP-190を取り上げたが、本家とも言えるカシオのfx-55 PLUSも取り上げる。

## 外観は初代ESシリーズ、パッケージに機能概要も
[で、初代ClassWiz(EX)のクローン機って正直どうなのよ？](https://qiita.com/harycurl/items/2eaad9f4d87b8315ada0)の記事中、UC-800Xとの比較ですでに外観は取り上げたが再掲する。
![fx55plus1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/37cf48af-b41f-44b6-98d9-d83e255d5889.jpeg)
写真ほどではないが、SHIFT機能として書かれている濃い黄色の文字が見づらい。
キーはプラスチックで、カシオ関数電卓各機種と同様に押しやすい。

パッケージ裏面には画面付きの機能概要が掲載されている。
![fx55plus2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/2e986ced-a4be-45ec-b2a8-a6dac882c2a9.jpeg)

この機能概要でほとんど事足りそうだが、手動約分機能を中心に紹介する。

## 手動約分機能
初期設定で約分は手動(Manual)となっている。
上記の見本の通り、手動約分モードでは計算結果も含めて可約分数はそのままの形で、右側に白抜き矢印を伴って表示される。
![fx55plus3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/6596b86f-a76b-47a8-870e-3785ddd2fa27.jpeg)

[Simp]ボタンを押すと、▶Simp の文字列が現れるだけですぐに約分されるわけではない。
このまま[=]を押すと電卓が約数を自動的に判断して約分する。
F=割った数, 約分後の分数 （可約分数であればその右に白抜き矢印）と表示される。
![fx55plus4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/86fa5cf9-8c18-4dbb-80ba-0f771720ebe2.jpeg)

[Simp][=]を繰り返し、既約分数になると右側の白抜き矢印が消える。
![fx55plus5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/c2e8bfe9-63bd-4bcd-9077-d2c99e4c3819.jpeg)

既約分数でさらに[Simp][=]をすると Simplified のメッセージが表示され、結果表示に戻る。
![fx55plus6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/c5ed504f-ec71-4a78-ae45-845ff5ebf47e.jpeg)

[Simp]ボタンを押すと、▶Simp の文字列が現れるだけと説明したが、この後に数字を入力すると、その数で約分する。
![fx55plus10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/b5bc5b97-c974-485e-aa8e-9a4b99a6cafd.jpeg)
約分できない数を入力するとエラーが出る。
![fx55plus11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/c815696c-5e57-4230-9804-94d7cfcf0d95.jpeg)


なお、手動約分モードでは帯分数で入力しても結果が仮分数となり、[$a\frac{b}{c}⇔\frac{d}{c}$]キーを使っても帯分数に戻せない。
![fx55plus7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/ba8cfa56-9c3e-405f-b340-a8da033fe908.jpeg)

手動約分モードと自動約分モードの切り替えは[SET UP]キーで表示されるメニューから 7:Simp → 1:Auto（自動） 2:Manual（手動）と選ぶ。
![fx55plus8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/62bed6be-118d-441c-9648-6ea951a41aa4.jpeg)

## 余り計算
機能概要にある通り、[÷R]演算子で余り計算ができ、結果は 商,R=余り の形で表示される。

## 小数点以下桁数固定
SETUPメニューから 3:Fix を選ぶと0～9桁の指定が可能。
解除するには 4:Norm を選ぶ。Norm 1とNorm 2の違いがわかりやすくなっている。
![fx55plus9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/a04ee59d-53a5-4616-aa0c-cb644ce1f528.jpeg)

## 基本的にはカシオ関数電卓の機能を継承
その他、度分秒機能などもカシオの関数電卓と同様に機能する。

日本の算数学習用電卓やfx-55（7セグ）と比べると、本機は関数電卓（特にESシリーズ）に近い。
逆に言えば、手動約分以外は複数行機の関数電卓で十分代用できると言える。
現地価格も米アマゾン価格で約15ドル（約2200円）と、日本におけるfx-375ES Aとほぼ同じ価格であり、米アマゾンにはもっと安い関数電卓すらある（fx-300ES Plus、約11～13ドル）。
Linucレベル１勉強メモ　＃４４

# 第四章　リポジトリとパッケージ管理

練習問題4.8
yumコマンドを使って、システムにインストール済みのパッケージをすべて最新版にアップデートしたいと思います。実際にアップデートする前に、アップデートされるパッケージの情報を確認したい場合に実行する適切なコマンドを選択してください。

A. yum update-list

B. yum updatepkgs

C. yum update

D. yum check-update

E. yum --list-upgrade

（解答）D

（解説）
yum　updateを実行すると、システムにインストール済みのパッケージがすべて最新版にアップデートされます。その前にアップデートされるパッケージを確認するには、yum check-updateコマンドを実行します。従って、正解は選択肢Dです。選択肢A, B, Eは無効なコマンドです。

yumコマンド<br>CentOSやFedoraでは、APTツールに相当するものとして使います。YUMの設定は、/etc/yum.confと/etc/yum.repos.dディレクトリ以下のファイルで行います。

yumのサブコマンド
* check-update<br>アップデート対象のパッケージリストを表示する
* update<br>指定したパッケージをアップデートする
FlutterでDropdownButtonの選択後にフォーカスを外す

# やりたいこと
[Flutter公式docにある```DropdownButton```のサンプル](https://api.flutter.dev/flutter/material/DropdownButton-class.html#material.DropdownButton.1)がいい例ですが、```DropdownButton```からマウスで項目を選択すると```DropdownButton```にフォーカスが残ります[^1]。これを解除したかっただけなのに意外と解にたどり着けなかったのでメモ。```OnChanged```でフォーカスを外してやればよさそうなのは分かりますが……？
[^1]:```Flutter 3.29.3```時点。[タッチ操作の場合はならない](https://github.com/flutter/flutter/issues/168096)らしく、[この挙動を揃えるPRが出ている](https://github.com/flutter/flutter/pull/168784)みたいです。

# NG例1
```dart
    return DropdownButton<String>(
      onChanged: (value) {
        ...
        FocusScope.of(context).unfocus();
      },
      ...
    );
```

# NG例2
```dart
    return DropdownButton<String>(
      onChanged: (value) {
        ...
        FocusManager.instance.primaryFocus?.unfocus();
      },
      ...
    );
```

# 解の卵
```dart
    return DropdownButton<String>(
      onChanged: (value) {
        ...
        FocusScope.of(context).requestFocus(FocusNode());
      },
      ...
    );
```
動いた！
……のはよいものの、[FocusNodeは適切に破棄されるべきなので代わりに```unfocus```しろ](https://stackoverflow.com/a/56946311)という話もあり。その```unfocus```が期待通り動かないから困っているんだが？？？

# 解
じゃあFocusNodeがちゃんと管理されればいいんでしょ、ということで```hooks```で解決。
```dart
  @override
  Widget build(BuildContext context) {
    final nullFocusNode = useFocusNode();
    return DropdownButton<String>(
      onChanged: (value) {
        ...
        FocusScope.of(context).requestFocus(FocusNode());
      }
      ...
    );
  }
```

所望の動作はできたものの、NG例の2つは何が悪いのか理解できていません。そこはかとなくバグっぽい気もするけど……。
Linucレベル１勉強メモ　＃４３

 # 第四章　リポジトリとパッケージ管理
 
 練習問題4.7
 /bin/bashファイルがどのパッケージからインストールされたかをrpmコマンドで確認したい場合、指定すべきオプションの組み合わせを２つ選択してください。

 A. -q

 B. -i

 C. -f

 D. -p

 E. -e
 
 （解答）A, C

 （解説）
 ファイルがどのパッケージからインストールされたかを確認するには、qオプションで紹介モードを指定し、ファイルのパスをfオプションで指定します。

 * -i<br>パッケージをインストールする
 * -p<br>照会モードで対象としてパッケージファイルを表示する
 * -e<br>パッケージをアンインストールすr
コントローラの責務とデータベース処理の分離

## はじめに
「コントローラとは？」という問いから、実際のコードをもとに、コントローラの役割とデータベース処理の分離について整理する。

---

## コントローラとは何か？

結論から言えば、「リクエストに応じて実行する処理」のこと。
以下のコードで言えば、`app/Routing/routes.php` に定義された匿名関数がそれにあたる。

```php
'path_1' => function (): HTMLRenderer {
  return new HTMLRenderer('view_1');
}
```

https://github.com/ga-techcraft/Online-Image-Hosting-Service

この匿名関数が、特定のリクエスト（例: `/path_1`）に対して、どのようなレスポンスを返すかを定義している。
つまり、「何をするか」を決める処理＝コントローラ。

---

## コードに潜む問題点

次のように、ルート定義の中で直接SQLを扱う場合の問題点について考える。

```php
'api/images/upload' => function (): JSONRenderer {
  $db = new MySQLWrapper();
  $stmt = $db->prepare("INSERT INTO images (image_name, unique_string) VALUES (?, ?)");
  $stmt->bind_param("ss", $imageName, $uniqueString);
  $stmt->execute();
  $stmt->close();
  $db->close();

  return new JSONRenderer([
    'uniqueString' => $uniqueString,
  ]);
}
```

このようにコントローラ内にデータベース処理が書かれている場合、データベースの種類や構造が変わったときに、すべてのコントローラを修正する必要がある。
この状態は、「密結合」と呼ばれ、保守性・再利用性が低くなる要因となる。

---

## 解決策：ヘルパー関数による責務の分離

データベースとのやり取りは、コントローラの外に切り出して、データアクセス層に委譲すべき。


### メリット

* コントローラは「何をしたいか」だけを書ける
* データベースの種類が変わっても、データアクセス層 の中だけを修正すればよい
* テストがしやすくなる（モックによる差し替えが可能）

---

## まとめ

* コントローラとは「リクエストに対して実行する処理」を定義する場所
* コントローラ内でデータベースを直接操作するのは密結合につながる
* データアクセス処理はヘルパー関数や Repository に分離すべき
* これにより、保守性・拡張性・テスト性の高い設計になる

---

## おわりに
明日以降はDAOのコードを0から構築し、データアクセス層についての理解を深める。
GitHub CopilotのTips（VSCode）

GitHub Copilot（VSCodeでの使用）で意外と知らないかもしれないTipsをまとめました！

:::note warn
2025/5/15時点の情報です🙇‍♂️
:::


## 1. 同じワークスペースでチャットを複数動かせる

Copilotの右上の3点リーダーをクリックすると、エディターか新しいウィンドウでチャットが開ける。これを複数回選択すると同時に複数のチャットUIが起動します

それぞれに指示を与えると各々動きます（特にそれぞれが遅くなったりはしてなさそう）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697143/02689a15-f3ad-4ce9-b452-2d35b561986a.png)


以下は紹介用のシンプルな例です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697143/264d57f2-5d49-48cf-b7fa-b12a2c8735f3.png)


## 2. チャットの整理

タスクや話題ごとにチャットを整理するとモデルのトークン枯渇や誤った解釈を軽減できます
不要なチャットを右上の❌で消したり、違う話題の際は+ボタンで新しいチャットを開始したりなど

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697143/f36f3ee0-e52d-4cb8-bb1f-f58196cfa80d.png)

また、AskモードとAgentモードは同じチャットを利用できるので、Askモードで実装を相談→Agentモードで実装を進めてもらうみたいなこともできる

## 3. セマンティック検索

検索ビューには、Copilotによって検索テキストと意味的に関連する結果も表示されます

また、チャットコンテキストの `#searchResults`（検索結果の表示）を使うと、検索結果をCopilotの入力として利用できます

キーワードは分かってないけど内容で検索をしたい時とか便利ですね、あと検索ワードも提案してくれる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697143/a5601078-a15d-471f-81ba-371ebfa8d882.png)

それらしい記述が見つけられませんでしたが、自分はこの機能を利用するために、リモートインデックスを作成する必要がありました↓

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697143/275cb6d2-ee37-4066-ab03-ed26a5960d8d.png)

## 4. チャット応答時に音を鳴らす

`accessibility.signals.chatResponseReceived` のsoundをonにすると、チャット応答時に「フォ↑ン↓」みたいな音が鳴ります

Agentモードとかで終わった時に気付けるのはありがたいです

ただ、鳴る時と鳴らない時があって、よく分かってない🫠

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697143/c79331b2-3bdf-444a-bdc4-0e787b5f9056.png)

accessibilityの項目で他にも音が鳴るタイミングを設定できます

## 5. 一部モデル対応機能

### エージェントモードでの高速編集

一部モデルでエージェントモードでの編集がかなり速くなりました（余裕で体感できるレベル）

#### 対応モデル

- GPT 4.1
- o4-mini
- Claude 3.7 Sonnet
- Claude 3.5 Sonnet

### 画像入力

画像をコンテキストとして渡すことができます

モデルの性能によっては、見た目通りを実装してもらったりと便利かもしれません

#### 対応モデル

- Claude 3.5 Sonnet
- Claude 3.7 Sonnet
- Claude 3.7 Sonnet Thinking
- Gemini 2.0 Flash
- Gemini 2.5 Pro
- GPT-4.1
- GPT-4o
- o4-mini →ドキュメントにありませんでしたが対応してそう

#### 対応している例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697143/0f413f3c-8385-4c6c-baaa-fab10bb45bc4.png)

##### 対応してない例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697143/4d1d0d02-90b0-49ce-9a0e-b587ebe91537.png)

拡張機能（Copilot Vision）としてありましたが、そちらは廃止予定で、Github Copilot Chatの組み込まれているものに置き換えられるみたいです

https://github.com/microsoft/vscode-copilot-vision

## おわりに

読んでいただきありがとうございます！

少しでも参考になれば幸いです🙇‍♂️

## 参考
https://code.visualstudio.com/updates/v1_100#_faster-agent-mode-edits

https://docs.github.com/en/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-your-ide#attaching-images-to-your-chat-prompt

https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_vision-preview

https://code.visualstudio.com/updates/v1_98#_copilot-vision-preview
【Rails】RSpecを使用したコントローラーの単体テスト

# 記事概要
Ruby on Railsのコントローラー単体テストについて、まとめる

# 前提
- Ruby on Railsでアプリケーションを作成している
- アプリにRSpecをインストールしている
- RSpecの設定が完了している

# RSpecとは
https://qiita.com/likapantrip/items/5bff444bf5edfe4f1436

## コントローラーテストコードを書く方針
あるアクションにリクエストを送ったとき、想定通りのレスポンスが生成されるかどうかを確かめる

## Request Spec
RSpecが提供している、コントローラーのテストコードを書くために特化した手法
RSpecの導入が完了していれば使用できる

# 手順(テストファイル作成)
1. モデルのテストファイルを生成するため、下記コマンドを実行する
    ```
    # アプリのディレクトリに移動
    % cd ~/[アプリ名]
    
    % rails g rspec:request [コントローラー名]
    ```
1. `spec/requests/[コントローラー名]_spec.rb`が作成されたことを確認する

# 手順(テストケースの記述)
1. [[コントローラー名]_spec.rb](https://qiita.com/likapantrip/items/e8ef2881b40cd60d7ae3)にテストケースを記述する
    1. 機能別・条件別・テスト詳細別にグループ分けを行う
    1. 保存するデータ(インスタンス)を作成する
    1. テストコードを記述する
        ※各テストコードが想定通りに実行できるかを確認するため、`rails c`コマンドでコンソールを起動して確認を行う

# 手順(テストファイルの実行)
1. テストファイルを実行するため、下記コマンドを実行する
    ```
    # アプリのディレクトリに移動
    % cd ~/[アプリ名]
    
    % bundle exec rspec spec/requests/コントローラー名_spec.rb
    ```
1. ターミナル.appで正常完了していることを確認する
    結果が緑色で表示されれば実行成功

# Ruby on Railsまとめ
https://qiita.com/likapantrip/items/46b43c9d1309b6633f0a
dialog要素の閉じ方をまとめてみた

なんかややこしいので。

||form|.close()|ESCキー|light dismiss|
|:-:|:-:|:-:|:-:|:-:|
|open属性|✔|✔|×|×|
|.showModal()|✔|✔|✔|×|
|closedby="any"|✔|✔|✔|✔|
|closedby="closerequest"|✔|✔|✔|×|
|closedby="none"|✔|✔|×|×|
|(参考)popover属性|×|×|✔|✔|


### 簡単なまとめ

- open属性はややこしくなるので使わない方がいいかも。トップレベルにならないし。
- 現状ではスクリプトでの操作がベター？
- `closedby="any"`で`light dismiss`（背景クリックでのクローズ）ができるようになる
    - が、Safari対応待ちである
    - 現状では`light dismiss`したいのであれば、`popover`が無難かも。
JavaScriptのオブジェクト・プロパティ・メソッドを理解した件

JavaScriptを学んでいると、よく出てくる「オブジェクト」「プロパティ」「メソッド」という言葉。
最初はとっつきにくいですが、イメージがつかめると一気に理解が進みます！

この記事では、具体例を交えながら丁寧に解説していきます！

### ✅ オブジェクト・プロパティ・メソッドとは？
まずは3つの言葉の関係をざっくり整理！

#### ➡️オブジェクト
名前やキーにアクセスできる配列などの複数の属性情報を持ち、データを操作するための様々な機能を持った入れ物、枠組み。
Javascriptには多くのオブジェクトが公開されていますが、主にデータ型に対応した**組み込みオブジェクト**を扱います。

・Stringオブジェクト：文字列を操作するための手段を提供
・Numberオブジェクト：数値を操作するための手段を提供
・Dataオブジェクト：日付を操作するための手段を提供
・Arrayオブジェクト：配列を操作するための手段を提供
・Mapオブジェクト：キー/値からなる連想配列を操作するための手段を提供
・Functionオブジェクト：関数を操作するための手段を提供

…などがあります。

#### ➡️プロパティ
オブジェクトが持つ「値・情報」。そのモノの状態や特性を表します。
#### ➡️メソッド
オブジェクトがで行う「機能・処理」。そのモノを操作したり変換したりします。

**扱う対象（オブジェクト）から何を（プロパティ）どうするか（メソッド）といった概念で、「オブジェクト」から「プロパティを見る or メソッドで操作する」ということになります。**

### ✅️Arrayオブジェクトを例に見る流れ
```
const fruits = ["apple", "banana", "orange"];
```
ここで fruits は Arrayオブジェクト。これに対して…
**🔸プロパティ【length】**
```
console.log(fruits.length);  // 3
```
**🔸メソッド【push()】**
```
fruits.push("grape");
console.log(fruits); 　// ["apple", "banana", "orange", "grape"]
```
配列に要素を追加するという機能。

**💡ポイント**
→ オブジェクトは 自分の中にプロパティ（情報）やメソッド（機能）を持っている！

### ✅️オブジェクトの「型」によって使えるメソッドが変わる！
JavaScriptでは、どんなオブジェクト型かによって、使えるメソッドが変わります。

たとえば…
```
[1, 2, 3].push(4);       // OK：Arrayのメソッド
({ 0: 1, 1: 2 }).push(4); // ❌ エラー：Objectにはpushがない
```
見た目が似ていても、型（Array or Object）が違うとメソッドも違う！

### 💡 まとめ
オブジェクトは **情報（プロパティ）と機能（メソッド）**を持つ箱のようなもの！

オブジェクトの型によって使えるメソッドが決まる。

プロパティの「内容」ではなく、構造や型によって動きが変わる。

### 📕おわりに
JavaScriptのオブジェクトはとても柔軟で、慣れると色んな表現ができるようになります。
はじめは「見慣れない記号や単語」で混乱しやすいですが、基本を一つずつ整理してい来ましょう！
【Rails】[コントローラー名]_spec.rbについて

# 記事概要
Ruby on Railsのコントローラー用単体テストファイルについて、まとめる

# 前提
- Ruby on Railsでアプリケーションを作成している
- アプリにRSpecをインストールしている
- RSpecの設定が完了している

# 基本情報
## ファイルパス
spec/requests/[コントローラー名]_spec.rb

# まとめ(テストケース整理)
```コントローラー名_spec.rb

describe コントローラー名Controller, type: :request do
  describe '[HTTPメソッド #アクション名]' do
    it '[テストケース]' do 
      # テストケースに合わせたテストコードを記述
    end
    it '[テストケース]' do 
      # テストケースに合わせたテストコードを記述
    end
  end
end
```

```tweets_spec.rb
describe TweetsController, type: :request do
  describe 'GET #index' do
    it 'indexアクションにリクエストすると正常にレスポンスが返ってくる' do 
      # テストケースに合わせたテストコードを記述
    end
    it 'indexアクションにリクエストするとレスポンスに投稿済みのツイートのテキストが存在する' do 
      # テストケースに合わせたテストコードを記述
    end
  end

  describe 'GET #show' do
    it 'showアクションにリクエストすると正常にレスポンスが返ってくる' do 
      # テストケースに合わせたテストコードを記述
    end
    it 'showアクションにリクエストするとレスポンスに投稿済みのツイートのテキストが存在する' do 
      # テストケースに合わせたテストコードを記述
    end
  end
end
```

# まとめ(インスタンス生成)
- [FactoryBot(Gem)](https://qiita.com/likapantrip/items/1dedea14ed93c37053c4)を使用する
    ```user_spec.rb
    RSpec.describe User, type: :model do
      before do
        # インスタンス生成
        @user = FactoryBot.create(:user)
        
        # Active Storageが紐づいている場合、sleepを入れる
        sleep 0.1 
      end
      
      # 省略
      it '[テストケース]' do
        # before処理実行後に処理
      end
      # 省略
    end
    ```
- FactoryBot(Gem)を使用しない
    ```user_spec.rb
    RSpec.describe User, type: :model do
      # 省略
      it '[テストケース]' do
        # インスタンス生成
        user = User.new(nickname: 'test', email: 'test@example', password: '000000', password_confirmation: '000000')
        # 処理
      end
      # 省略
    end
    ```

# RSpec
https://qiita.com/likapantrip/items/5bff444bf5edfe4f1436
Tableauデータ抽出の心得

Tableauを作成して、他人に送付する場合、データがTableauに含まれると、Talbeauファイル１個だけ送付して便利になります。

データがTableauに含めるように、データの抽出が可能です。それでも単純に抽出だけではなく、初心者ではよく戸惑う点を含めて説明いたします。

**１、抽出しなくて、ライブのままで保存する。**
  　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118029/38436349-eba4-4851-8d8f-7de2febb70d3.png)
  
　**①twbファイルとして保存する。**
 　この場合、保存したTableauファイルにデータが含んでいないので、データファイルが消える場合、Tableauファイルを開くと、画面がうまく表示できません。
  　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118029/666095c8-d610-45e2-824d-3cb15b9655bf.png)

 　**②twbxファイルとして保存する。**
  　この場合、データファイルをTempフォルダーにコピーして保存しています。
  　下記画面でデータファイルの場所を確認できます。
   　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118029/9ed8fc03-7704-4224-bcad-d6b44c829a71.png)
   　
   　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118029/8ce6d730-df4a-41c5-b754-eec732f0028a.png)

   　元のデータファイルを削除しても、Tableauファイルが通常通り開くことは可能です。
   　ただし、Tempフォルダに保存したファイルを削除したら、Tableauファイルを開くと、画面がうまく表示できません。

**２、抽出して保存する。**
  　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118029/88b5fff6-51d1-43f5-8dde-8593ddbc16d3.png)

　**①twbファイルとして保存する。**
 　この場合、保存したTableauファイルにデータが含んでいないですが、データをhyperファイルに保存する。
  　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118029/64047b63-760d-4bd4-befa-b0348e91d168.png)
  　元データファイルを削除したとしても、hyperファイルが存在すれば、開くことが可能です。
  　ただし、hyperファイルが削除されたら、Tableauファイルを開くと、画面がうまく表示できません。
  　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118029/beaffd1c-ed3a-405c-9831-7c4c2e74fc7b.png)

  
 　**<font color="Red">②twbxファイルとして保存する。</font>**
  　この場合、データがTableauファイルに保存されます。
  　もとデータファイルを削除したとしても、Tableauファイルがうまく開けます。
   　Tableauファイルを他人に送付したとしても、任意の場所で開けます。
  　※この場合、hyperファイルが存在しないです。
  　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118029/f4ff1e02-7781-47d9-a3ae-c8aaa020f708.png)

  　ちなみに、この場合はデータファイルの確認ができません。
  　「データソース」画面を開くとしても、データが見えないです。
  　データを確認したい場合、ビュー画面の左に、「データの表示」アイコンより確認可能です。
  　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2118029/75e7ee2c-33fa-4c0d-9898-8361aa386ca2.png)
🌟これからIT学習を始める方必見🌟


こんばんは、韓国在住の日本人sanaです！

「ITを勉強したいけど、何から始めればいいの？」
「専門用語がむずかしくて、ついていけない…😢」

そんな初心者の方に！
今回はIT学習のスタートラインで「これだけは知っておくと安心！」という内容を簡単に紹介します！


🧭まずは知っておきたい3つの分野🌈

① プログラミング💻
パソコンに「こうしてね！」と命令する言葉をつくることです！
🔧 例：「Python（パイソン）」「JavaScript（ジャバスクリプト）」等

📌 ポイント：最初はPythonがやさしくておすすめです。。🐍✨


② Web（ウェブ）制作🖼️
私たちが見ているウェブサイトをつくるお仕事！
🎨 デザインも、文字の動きも、すべてITの力でつくられています

📌 ポイント：HTML / CSS / JavaScript の3兄弟が登場！👨‍👩‍👦

③ データベース📊
いろんな情報を「きれいに整理して保管する」技術！
🍎 たとえば、ネットショップの「商品一覧」や「注文履歴」など

📌 ポイント：「SQL（エスキューエル）」という言語で操作します✨




| 用語        | 意味               | ひとことメモ📝         |
| --------- | ---------------- | ---------------- |
| バグ（Bug）   | プログラムのミスや不具合🐛   | バグがあると作動Ｘ💥   |
| コード（Code） | プログラムの文章📄       | プログラミングで書くもの✍️ |
| フロントエンド   | サイトの見た目をつくる部分🌼  | ユーザーが見るところ👀✨    |
| バックエンド    | サイトの裏側で動く仕組み🧩   | ログイン処理とか、ここが活躍🔥 |
| デバッグ      | バグを見つけてなおす作業🔍🐞 | コードを書いたらセットで必要💪 |


安心してit学習始めましょう！💪🌈
難しそうに見えるITの世界も、ひとつひとつ学べばぜんぜん大丈夫です！✨
自分のペースで、コツコツと進めていきましょう🍀

アンニョン～！