OmniAICreator/Qiita-1.07M huggingface dataset:
リーダブルコード（第10章）の学び

## はじめに

この章では、設計において大切な考え方が紹介されていた。

> 「無関係の下位問題を解決する」

一見難しそうな表現だけど、実際にどういうことかを自分の言葉で整理してみる。

## 関数やクラスの目標を明確にする

コードを書くとき、「この関数（またはクラス）の目的は何か？」を明確にする。

関数の中で「本来の目的」以外の処理も一緒に書いてしまい、それは実は「下位問題を解決」してしまっているケースがある。

たとえば、

* 入力を整える
* ソートする

といった処理が、「目的そのもの」ではなく「目的を達成するための材料づくり」だったりする。

そういう処理は関数から切り出して、別の関数にしておくことで、コードの見通しがよくなる。

## 終わりに

すごくシンプルな考え方だけど、「関係ない下位問題を別にする」という発想はこれまで意識してこなかった。

これだけでコードの見通しが格段に良くなる感覚があって、使わない手はないという感じ。

これからどんどん取り入れていきたい。
Polars DataFrameからBigqueryにデータを投入する

# 1.はじめに
* PolarsのDataFrameからBigQueryに直接データを入れられる！
* 今まで気づかなかったのでショック

# 2.問題 
* 従来、Polarsでデータを加工した後にBigQueryにデータをロードする際には、一度jsonlなどに出して、GCSにいれる、その後、jsonlを指定してBigQueryにロードというムーブをしていたが、ちょっと面倒。
* pandasではやる方法があるので、Polarsでもあるのかと思い見ると、[ある](https://docs.pola.rs/user-guide/io/bigquery/)！


# 2.コード
* これだけ。dfはPolars DataFrame
* colaboratoryからやる場合は、認証を通してから、destinationをPROJECT_ID.DATASET.TABLE_NAMEの３階層に。


```python
#@title 最初１回実行（認証） 
from google.colab import auth 
auth.authenticate_user()
```

```python
#@title polars to BQ
from google.cloud import bigquery
import io

client = bigquery.Client()

# Write DataFrame to stream as parquet file; does not hit disk
with io.BytesIO() as stream:
    df.write_parquet(stream)
    stream.seek(0)
    parquet_options = bigquery.ParquetOptions()
    parquet_options.enable_list_inference = True
    job = client.load_table_from_file(
        stream,
        destination='PROJECT_ID.DATASET.TABLE_NAME',
        project='PROJECT_ID',
        job_config=bigquery.LoadJobConfig(
            source_format=bigquery.SourceFormat.PARQUET,
            parquet_options=parquet_options,
            write_disposition=bigquery.WriteDisposition.WRITE_APPEND,
        ),
    )
job.result()  # Waits for the job to complete

```

# 3.注意点
* カラム名が日本語だと対応してくれないので、renameにしておく。
【Vue.js】トーストで表示するエラーの状態をPiniaで管理

# はじめに
REST APIのエラー時、ステータスコード及びエラーメッセージをユーザーにトーストで通知したい。

https://qiita.com/nkaito0119/items/d964c5424e753a92a93f

上記の記事でコンポーザブルによる実装を検討したが、2階層のデータの受け渡しをPropsで行っていることやページを遷移した際もデータを保持したいことなどを考慮し、ストアライブラリであるPiniaを用いた実装を行う。


# Pinia

https://pinia.vuejs.org/

- Vue3のストア(Store)ライブラリでコンポーネントをまたいで状態を共有、管理できる
- データへの変更、加工処理もまとめて管理できる
- Propsでは親子関係のコンポーネント間のデータを受け渡ししかできなかったが、全てのコンポーネントでデータを共有できる
- キャラクターがかわいいね

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1589041/eaff6402-0078-4634-9249-ba6b29c059e9.png)

- 以前はVuexが使われたいたが、現在はメンテナンスモードで新規機能は追加されない

# 前提条件
- 既にPiniaをインストール済みのプロジェクト
- `main.ts`で`app.use(createPinia())`を呼んでいる


# Storeの作成
- 一意のid 'error' を指定
- `state`
    - データ本体
        - `status`: HTTPレスポンスのステータス
        - `message`: HTTPレスポンスのエラーメッセージ
    - 初期値を設定しておく
- `actions`
    - データの変更処理
        - `set`: 引数として`status`と`message`を受け取り更新
        - `clear`: 状態を初期化
- `getters`
    - データの状態を基に計算された値を取得
        - `isSet`: 現在エラーが設定されているかを判定
        - `status`が0以上または`message`が空でない場合`true`

``` ts:stores/error.ts
import { defineStore } from 'pinia'

export const useError = defineStore('error', {
  state: () => ({
    status: -1,
    message: '',
  }),
  actions: {
    set(status: number, message: string) {
      this.status = status
      this.message = message
    },
  },
  getters: {
    isSet: (state) => state.status >= 0 && state.message !== '',
  },
})
```


# コンポーネントからのStoreの利用
``` vue:App.vue
<templete>
// isSetがtrueの場合トーストを表示
<div v-if="error.isSet" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
  <div class="toast-header">
    <img src="..." class="rounded me-2" alt="...">
    <strong class="me-auto">Bootstrap</strong>
    <small>11 mins ago</small>
    <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
  </div>
  <div class="toast-body">
    Hello, world! This is a toast message.
  </div>
</div>
</templete>

<script setup lang="ts">
// defineStore()の結果をインポート
import { useError } from '@/stores/error.ts'

// インポートしたuseErrorを関数として実行し、その結果を変数として格納
// 変数がStoreのオブジェクトととなる
const error = useError()

.
.
.
// REST API呼び出し部分でエラーが発生した場合ステータスとエラーメッセージをStoreにセット
error.set(res.status, res.error.message)
</script>
```

## stateのリセット
- stateの状態を初期値に戻す場合は以下を利用できる
```
error.$reset()
```

## Vue.js Devtools
- ブラウザの拡張機能でVue.js Devtoolsがインストールされていれば、開発者ツールのVueタブの中にPiniaタブがある
- ストア内の状態を確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1589041/ea5798a5-ea3a-4931-86ca-8d83af24587e.png)
【25卒】新卒エンジニアの気持ち

## はじめに
お疲れ様です。米田です！
新卒として入社してから早くも3か月目になって研修も終盤となり、社会人もこれからだな～と実感しています。

さて、今回は私が今思っていることとその解決策について吐き出そうと思います。

## なにが分かるの？
- 先輩社員
    - 新卒が何を考えてるかわかります!
    - 話のネタになったり寄り添えたりできるかも
- 25卒の同期
    - 同じように悩んでる人もいるよ～
    - 解決の一助になったら嬉しいです
- 大学生
    - 社会人のリアルが分かります
    - より社会人が身近に感じるかも

## 悩んでいる話
### 学び
エンジニアとして勉強は一生続けていくものだと考えています。流行りの言語があったり、新しい技術が出てきたり、おもしろいツールが増えたり...
それらの使い方や、そもそものそういった情報のキャッチアップも勉強と言えます。
ちょっと勉強をサボるとすぐついていけなくなるくらい最近のITの流れは速いと思っています。面白い時代に生まれたな～！

**...いまは若くてやる気あるけど、40年以上勉強を続けられるか？**
**勉強あんまりしてこなかったから勉強方法確立してないし...**

### 趣味
私は筋トレが趣味です。仕事が終わってからほぼ毎日ジムへ行って1～2時間トレーニングをしています。ずっと座り仕事なので身体的な負担はなく、研修中はとくに責任もないので精神的な疲れもないので集中して筋トレできています！嬉しい！

**実務が始まったらプレッシャーで疲れまくっちゃうかな...**

### 人間関係
入社してから2か月間、新卒でまとめて研修がありました。そのおかげで同期みんなと仲良く、配属されてもお互い支えあっています！いい環境！

**...先輩とはどう仲良くなれば良いの？**

### 漠然とした不安
これらに加えてなんとなくの言葉にできない不安があります。
わからない単語が飛び交う社内、基本って書いてあるのに全然理解できない基本情報技術者試験の勉強（本当に基本？）
情報系の大学出身ですが**大学でちゃんと勉強していなかったことを後悔する日々が続いています...**

## これからこう頑張っていく！
### 仕事じゃなくて趣味
エンジニアリングを仕事ではなく趣味としてとらえるようにします！
毎日仕事をやると考えたらだいぶしんどいです。ただ、趣味を毎日やるのは苦ではないです。むしろ楽しい！しかも趣味をやりながらお金ももらえる！楽しい人生！
そう考えると一生続く勉強も、趣味のための情報収集になり、ご飯を食べながら動画を観たり通勤中に記事を見るのも当たり前になりますね。気づいたらナレッジがどんどんたまっているかも？

こういう考え方に拒否感を持つ人もいると思いますが、一回試してみてダメだったら違う考え方を見つけましょう。

### よく寝る
責任が増えたときの心労を心配していましたが、やっぱり寝ることが一番メンタルに良いです。筋トレの情報を探していても睡眠は大事とよく聞きます。忙しくなっても睡眠を一番に考えることで心労を少しでも軽減しながら仕事と趣味が両立できるのではと思います。最低7時間は寝るように心がけます！

### 挑戦と失敗を繰り返す
私は失敗にビビりすぎる節があります。ただ失敗をすることが成長につながるとも思っています。
そして**弊社は文化として挑戦を歓迎しており、失敗も許容しています**。しっかりと意図をもって挑戦すれば失敗しても怒られることはありません。いい会社ですね～
自分の成長のため、新卒1年目の免罪符があるうちに挑戦と失敗を繰り返そうと思います。

### 先輩をご飯に誘う
先輩と仲良くなる方法はまだ確立できていません。
ただ、やはりご飯を一緒に食べることが仲良くなりやすいかと思っています。
私はご飯に誘うため、Slackのワークフローで自分のtimesに参加した方をランチに誘うようにしました。

<img width=100% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3487407/f051b825-d80b-445d-9783-df2966d08a25.png">

**先輩社員へ**
もちろん人によりますが、飲み会やご飯など行きたがっている人は多いと思います。迷っていたらぜひ誘ってみてください～

## 終わりに
ワクワクと不安でいっぱいですが、基本何とかなると思っています。
私は研修があんまりうまくいかなくて早速落ち込み気味ですが、実務はこれからなので、力を入れすぎず適度に頑張ろうと思います！
【Salesforce】スケジュールトリガーフローでメールが送られない原因と対処法

## 🔍 はじめに

Salesforceの「スケジュールトリガーフロー」&「オブジェクトおよび検索条件を選択」で「メール送信」アクションを使っても、**なぜかメールが送られない**…そんな経験はありませんか？

手動実行やデバッグではメールが届くのに、**スケジュール実行では沈黙**。

その原因は高確率で、**自動化プロセスユーザーの送信者アドレス設定漏れ**です。

この記事では、実際の調査ログやSalesforce公式の仕様に基づいて、**確実にメールを飛ばすための対策**を解説します。

---

## ✅ この記事の要点

* スケジュールトリガーフローは「自動化プロセスユーザー」として実行される
* このユーザーにはデフォルトでメールアドレスがなく、メール送信が失敗することがある
* **組織全体のメールアドレス（OrgWideEmailAddress）を設定し、メール送信アクションで明示的に指定する**ことで問題解決
* 「デバッグで飛ぶけどスケジュールで飛ばない」現象は、ユーザー実行と自動化ユーザーの差によるもの

---

## 🧪 解決ステップ

| ステップ | 内容                                                                                  |
| ---- | ----------------------------------------------------------------------------------- |
| ①    | **OrgWideEmailAddressを設定**：「設定」→「組織全体のメールアドレス」から送信元アドレスを追加・検証                                      |
| ②    | **自動化プロセスユーザーにメールアドレスを設定**：「設定」→「プロセス自動化設定」→ `自動化プロセスユーザーのメールアドレス` に検証済みOrgWideEmailAddressを入力     |
| ③    | **メール送信アクションにOrgWideEmailAddressを明示的に指定**：「送信者タイプ」＝ `OrgWideEmailAddress`、「送信者メールアドレス」＝ `OrgWideEmailAddressアドレス` |
| ④    | **配信設定を確認**：「設定」→「配信可能設定」→ `すべてのメール` になっているか確認                                      |
| ⑤    | **スケジュール実行で確認**：ログまたはChatter/テストメールで送信確認                                            |

---

## 📖 背景と分析

### 💡 なぜ「手動実行」ではメールが飛ぶのに「スケジュール」では飛ばないの？

それは**実行ユーザーの違い**です。

* 手動 or デバッグ：ログイン中のあなた（メールアドレスあり）が実行 → メールOK
* スケジュール実行：`自動化プロセスユーザー`（デフォルトでメールアドレスなし） → メールNG

---

## 📌 補足ポイント

* **メールが飛ばないときのチェックリスト**：

  * 送信者タイプと送信者アドレスは設定されているか？
  * OrgWideEmailAddressが検証済みか？
  * スパムフィルタに引っかかってないか？
  * フローが本当に実行されているか？（ログ確認）

---

## 📝 まとめ

「フロー作ったのにメールが飛ばない！」という場合、焦る前に **OrgWideEmailAddressと送信者設定**をチェックしましょう。

スケジュール実行時は手動実行とは別世界。**自動化ユーザーには自動化なりの設定が必要**です。

「メールが送れない」でハマってしまう前に、この記事が誰かの助けになれば幸いです！
Jetpack Composeの最新アップデートまとめ（2025年5月版）

## はじめに

Jetpack Composeは、Android UI開発を効率化するためのモダンなフレームワークです。  
この記事では、2025年5月にリリースされたJetpack Composeのアップデートの中から、開発体験を向上させる注目ポイントをピックアップして紹介します。


## 1. Pausable Composition

一時的にUIの再構成（Recomposition）を止めることができる新機能です。  
パフォーマンス改善や一時停止時の状態保持に役立ちます。

```kotlin
val pausedState = remember { mutableStateOf(false) }

if (!pausedState.value) {
    CompositionLocalProvider(...) {
        // UI更新処理
    }
}
```

### ポイント
- 明示的にComposeの再構成を制御できる
- アプリの状態管理や省リソース設計に有効

## 2. LazyLayout Prefetchの導入

`LazyColumn`や`LazyRow`などのレイジーレイアウトで、**スクロール前にデータを事前読み込み**できる仕組みが導入されました。

```kotlin
LazyColumn(
    prefetchPolicy = PrefetchPolicy.Default
) {
    items(list) { item ->
        ItemView(item)
    }
}
```

### ポイント
- スムーズなスクロール体験を実現
- スクロール中のカクつきを防止できる

## 3. 新しいModifierとLintの強化

今回のアップデートでは、以下のような改善も含まれています。

- `Modifier.keyInput()` の追加 → キーボード操作に対応しやすく
- Compose専用Lintチェックが増加 → コーディングミスの早期発見が可能に

## おわりに

今回のアップデートでは、Jetpack Composeの柔軟性・効率性がさらに向上しました。  
日常的にComposeを使っている方はもちろん、これから導入を検討している方にもおすすめの内容です。
Next.js技術まとめ：エコシステムと周辺技術の整理

## 1. はじめに

本記事では、Next.jsを中心としたエコシステムを俯瞰的に整理し、どのような技術と組み合わせて活用されているのかをまとめます。筆者自身も現在学習中の立場であり、復習や今後の実践に役立つような内容を意識しています。

## 2. Next.jsとは？

Next.jsとは、Reactベースのフレームワークでフルスタック志向のものです。
静的生成・サーバサイドレンダリングに両対応したものにもなります。

## 3. エコシステム概要図

#### UI・フロントエンド

| 技術 | 役割 |
|:-:|:-:|
|React   | ベースライブラリ  |
|Tailwind CSS   | スタイリング  |
|shadcn/ui | UIコンポーネント(Tailwind CSS連携) |

#### ルーティング/データ取得

| 機能 | 説明 |
|:-:|:-:|
| App Router  | Next.js 13+のルーティング方式  |
| getStaticProps  | 静的生成向け  |
| getServerSideProps | SSR向け |
| API Routes | サーバサイド処理 |

#### 開発支援・周辺ツール

| ツール | 用途 |
|:-:|:-:|
| TypeScript  | 型安全な開発  |
| EsLint/Prettier  | コード成型と静的解析  |
| Vercel | デプロイ先 |

#### 認証・セキュリティ

| ライブラリ | 概要 |
|:-:|:-:|
| next-auth | 認証ライブラリ  |
| Clerk / Auth0  | より高度な認証管理  |


#### 状態管理

| ライブラリ | 用途 |
|:-:|:-:|
| Zustand  | 軽量な状態管理  |
| Redux Toolkit  | 複雑な状態管理  |
| React Query | サーバー状態管理 |


## 4. よく使用する構成例

- Next.js(App Router)
- TypeScript
- Tailwind CSS
- Next-Auth
- Vercel

## 5. 今後の学習・発展トピック

- tRPC/GraphQL
- CMS との連携

## 6. まとめ

Next.jsは、Reactの枠を超えたフルスタックなフレームワークとして、近年ますます注目を集めています。ただし、未経験の立場から見ると、大規模開発やチーム開発での運用には設計力や周辺知識が必要とされると感じます。

今後も実践を通して、より深く理解を深めていきたいと思います。


※初投稿の記事になります。不慣れな点もあるかと思いますが、ご指摘・ご助言いただけると嬉しいです！
概念モデルとしての法〜星型森モデルの簡略化




---

🌟 星型森モデルとは？――法の森の新たなかたちを一望する

> 「法とは、根を張る神樹のような存在ではないか」
そう考えたとき、星と森が浮かびました。




---

はじめに：なぜ“星型森モデル”なのか？

現代社会において法体系はますます複雑さを増し、制度や価値観も変化し続けています。
そんななか、「憲法を星に見立て、そのまわりに神樹として各法域が立つ」――そんなイメージから生まれたのが星型森モデルです。

このモデルは、既存の法体系を「森」として視覚的・構造的に理解しやすくし、
かつ、多様性・時代の流れ・人間の営みを包括的に捉えられるよう設計されています。


---

モデルの全体像（要点）

中央に輝く星（憲法）
　価値の根源であり、全体を照らす光。

その周囲に立つ神樹（各法領域）
　民法、刑法、行政法など、それぞれが独自の根・幹・葉を持つ。

地表に広がる湖と流れ落ちる滝（価値観・時代・技術の変化）
　法は固定されたものではなく、社会の流動性に応じて水のように姿を変える。

それらを包む“森”という全体観
　法と社会、価値観、個人、未来とのつながりを含意。



---

今後の展望

本記事はあくまで概観に過ぎません。
詳細な構成や背景、想定問答、図解による説明などは、以下の記事にて順次公開中です：

🌱 詳細連載第1章：星型森モデル 起源と発想の原点

🌳 法の神樹構成図（図解予定）

🌊 湖と滝の意味するもの（技術・価値観・時代の波）

🤖 AI法の位置づけ（未来法との接続）



---

最後に

星型森モデルは、ひとつの「物語」であると同時に、現実社会における法の捉え直しでもあります。
読んでくださった方の中に、少しでも「なるほど」と感じるものがあれば、これほど嬉しいことはありません。


---

📌 関連リンク

本記事作成者ページ：Qiita - chenglaia24

詳細記事一覧：シリーズ一覧ページ



---
【チーム開発/Git】Git pull時の実施が必要なコマンドについて

## git pullした際のメッセージ
GitHubからクローンを実施して、リモートのdevelopブランチを反映するために、git pullした際に下記のようなメッセージが発生することがある。

```shell
(base) user@000102-M adf-repo % git pull origin develop
From https://dev.azure.com/xxxx
 * branch            develop    -> FETCH_HEAD
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint:   git config pull.rebase false  # merge
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.
(base) user@adf-repo % git config pull.rebase false
```

詳細については、下記の記事で説明されているので割愛しますが

https://qiita.com/tearoom6/items/0237080aaf2ad46b1963

下記のメッセージがある。

```
fatal: Need to specify how to reconcile divergent branches.
```

このエラーは、ローカルの develop ブランチとリモートの develop ブランチに異なるコミット履歴が存在し、それらをどう統合するか Git が判断できないために表示されるようです。

```
hint:   git config pull.rebase false  # merge
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
```

### `git config pull.rebase false`

>デフォルトの挙動です。git pull に --rebase option を付けずに実行するのと同じです。
標準動作では rebase せずに fast-forward 可能な場合は fast-forward を行い、そうでない場合は、 merge commit を生成

git pullしたときにこのメッセージが表示されたらひとまず
```
git config pull.rebase false
```
を打っておかばよろしいかな。。
InnoSetupでインストール画面を手前に出す。

InnoSetupで久しぶりにインストラーを作ったら、.exeクリックしUAC発動した後にエクスプローラーの後ろにいってしまう（ので行方不明になる）現象が出たので手前に出す方法を試行錯誤しました。

UAC後のウィンドウ復帰はなかなか挙動が難しいので、単一のAPIや単純な方法ではうまくいかなかったのでメモです。

結果としては複数手法の力技です。これに加えてダメならTimerで定期的にフロントに出そうかと思いましたが、そこまでしなくても大丈夫でした。

## 環境

- Windows 11
- InnoSetup v6.4.3

## 方法

以下のコードを[Code]セクションに追加します。

```python

.....

[Code]
const
  SWP_NOMOVE       = $0002;
  SWP_NOSIZE       = $0001;
  TOPMOST_FLAGS    = SWP_NOMOVE or SWP_NOSIZE;
  HWND_TOPMOST     = -1;
  HWND_NOTOPMOST   = -2;

procedure SetWindowPos(
  hWnd: HWND;
  hWndInsertAfter: HWND;
  X, Y, cx, cy: Integer;
  uFlags: UINT
); external 'SetWindowPos@user32.dll stdcall';

procedure SetForegroundWindow(hWnd: HWND); external 'SetForegroundWindow@user32.dll stdcall';
procedure ShowWindow(hWnd: HWND; nCmdShow: Integer); external 'ShowWindow@user32.dll stdcall';
procedure BringWindowToTop(hWnd: HWND); external 'BringWindowToTop@user32.dll stdcall';

// より強力な前面復帰処理
procedure BringWizardToFront();
begin
  // 複数の方法を組み合わせて確実に前面に
  ShowWindow(WizardForm.Handle, 9);  // SW_RESTORE
  BringWindowToTop(WizardForm.Handle);
  SetWindowPos(WizardForm.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
  SetForegroundWindow(WizardForm.Handle);
  SetWindowPos(WizardForm.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
  
  // 少し待ってから再度実行
  Sleep(100);
  SetForegroundWindow(WizardForm.Handle);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
  begin
    BringWizardToFront();
  end;
end;

// UAC後の復帰をより確実にする
procedure CurPageChanged(CurPageID: Integer);
begin
  // どのページでも前面に保持
  BringWizardToFront();
end;
```

## 解説

複数のWindows APIを組み合わせて段階的にウィンドウを前面に持ってきます

1. `ShowWindow(SW_RESTORE)` - ウィンドウを復元
1. `BringWindowToTop()` - Zオーダーの最上位に移動
1. `SetWindowPos(HWND_TOPMOST)` - 一時的に最前面に設定
1. `SetForegroundWindow()` - アクティブウィンドウに設定
1. `SetWindowPos(HWND_NOTOPMOST)` - 最前面から通常状態に戻す
1. `Sleep(100)` + 再度 `SetForegroundWindow()` - 確実性を高める
SwiftUIのSliderの使い方を簡単に説明してみました！

SwiftUIでユーザーに数値を選ばせたいときに便利なのが、Slider。
音量調整や明るさ設定など、アプリに欠かせないUIパーツです！


 基本のSliderの使い方
 ---

 ```swift
struct ContentView: View {
    @State var sliderValue: Double = 0.5   //@Stateで状態（値）を管理

    var body: some View {
        VStack {
            Slider(value: $sliderValue)   //Slider(value: $sliderValue) でスライダーと値をバインド
            Text("値: \(sliderValue)")　//スライドするたびにsliderValueが更新され、表示される数値も変化します

            
        }
        .padding()
    }
}
 ```
![Screenshot 2025-06-05 at 17.40.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977742/b36db78f-9ed8-476d-87bc-f2a60bc189b6.png)

 

最小値・最大値を指定する
----
```swift
  Slider(value: $sliderValue, in: 0...100)
```


ステップ（刻み幅）を設定する
---
```swift
Slider(value: $sliderValue, in: 0...10, step: 1)
```
- step: 1 で 1刻み のスライダーになります（整数しか選べない）



カスタム表示（最小値・最大値のラベル）
---
```swift
Slider(
    value: $sliderValue,
    in: 0...100,
    minimumValueLabel: Text("0"),
    maximumValueLabel: Text("100")
) 
```
**minimumValueLabel**と**maximumValueLabel**を使えば、左右に目盛り表示も可能です


まとめ
--

| 機能            | 記述方法                                          |
| ------------- | --------------------------------------------- |
| 値のバインディング     | `Slider(value: $変数名)`                         |
| 範囲の指定         | `in: 最小値...最大値`                               |
| 刻み幅の指定        | `step: 刻み幅`                                   |
| ラベル付きスライダー    | `Slider { Text("ラベル") }`                      |
| 最小値・最大値ラベルの表示 | `minimumValueLabel` と `maximumValueLabel` を使う |

最後に
--

Silderは、ちょっとした設定で大きく見た目も変わるので、ぜひ自分のアプリで試してみてください！ぜひ参考にしてみてください！ 🤌
Next.jsでTailwind CSSが反映されないことへの対処

# はじめに
原因は初歩的なものだったのですが、同じ部分でつまずいた初心者の方の参考になればと思い記載しておきます。
# 状況
Next.jsでTailwind cssが反映されなかった。

バージョン情報
Next.js: 15
Tailwind css: 3系
# 最初に確認したこと
## Tailwind CSSがインストールされているか
postcssとautoprefixcerもインストールされているか、package.jsonを確認した。
## Tailwind CSSの設定
tailwind.config.jsを確認した。
`App Router`を使用していたため、以下の設定だった。
```tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./app/**/*.{js,jsx,ts,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}
```
## CSSファイルのインポート
`app/layout.jsx`で`./global.css`をインポートしていてパスはあっているか、またglobals.cssの中身は大丈夫かを確認した。
```css:app/globals.css
@tailwind base;
@tailwind components;
@tailwind utilities;
```
## ブラウザコンソールのエラー
特に無かった。
## ターミナルのログ
以下の警告が表示されていた。
```terminal
warn - No utility classes were detected in your source files. If this is unexpected, double-check the `content` option in your Tailwind CSS configuration.
warn - https://tailwindcss.com/docs/content-configuration
```
この警告は、生成AIによると
>Tailwind CSSが`tailwind.config.js`の`content`で指定されたファイル内でユーティリティクラスを検出できなかったことを示しています。

とのこと。
# 原因
Next.jsファイルの作成時に以下の質問がある。
> Would you like your code inside a `src/` directory? No / Yes

今回のファイルを作成時にはYesと回答していた。

そのため、`tailwind.config.js`では以下の設定が必要だった。
```js:tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./src/**/*.{js,jsx,ts,tsx}", // パスを更新
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}
```
修正後はちゃんとTailwind CSSが反映された。
# おわりに
Next.jsを初めて学習していてTailwind CSSにずっと頭を悩ませられていたので、解決できてよかったです。
これからは初歩的な部分に、より注意していきたいと思います。
【クラウド基盤/DevOps】Azure  DevOpsを少し使用してみた備忘と感想

## Azure DevOpsを少し使用してみて
　下記の記事の通りAzureDataFactory(以下ADF)にてパイプラインを実施する機会があった。
パイプラインのコードはjson形式でリポジトリ管理することができる。パイプラインの右上の「{}」という画面からJSONファイルを修正することが可能です。その管理をAzureDevOpsにてリポジトリ管理をすることができる。

https://qiita.com/Life-tech/items/864d8e1a6058ed308b36

Azure DevOpsには「Repo」と呼ばれる「ソール管理」のサービスも含まれているので、そのページ上で
Git Cloneすると、Githubを同じようにgitを扱うことが可能である。

## Azure DevOpsとは
そもそもMicrosoftが提供する開発ライフサイクル管理ツールの統合サービスとのことで、
ソース管理、CI/CD、タスク管理、テスト管理など、開発現場に必要なものをオールインワンで提供します。
今回は「ソース管理」を使用していた。

https://azure.microsoft.com/ja-jp/products/devops/repos/

## Azure DevOpsのcloneについて
下記のように、DevOpsの画面に「glone」のボタンがるので押下することで、ローカルのVS Codeなどでgit cloneするためのURLなどが発行される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/381629/00daf4e1-2751-4782-a310-8b9fd3730b95.png)

## 最後に
Githubのようなgitのホスティングサービスもありますが、Azureのクラウドサービス上でのDevOpsのコード管理についても慣れていきたいですね。
ラプラス変換と留数定理


## ✅ 1. 一次遅れ系の伝達関数

$$
H(s) = \frac{1}{\tau s + 1}
$$

ここで：

* $\tau > 0$：時定数（time constant）

---

## ✅ 2. ステップ応答：入力 $U(s) = \frac{1}{s}$

出力のラプラス変換：

$$
Y(s) = H(s) U(s) = \frac{1}{s(\tau s + 1)}
$$

---

## ✅ 3. 部分分数分解

$$
\frac{1}{s(\tau s + 1)} = \frac{A}{s} + \frac{B}{\tau s + 1}
$$

両辺に $s(\tau s + 1)$ を掛ける：

$$
1 = A(\tau s + 1) + Bs
$$

係数比較より：

* 定数項：$A = 1$
* $s$ の係数：$A\tau + B = 0 \Rightarrow B = -\tau$

ゆえに：

$$
Y(s) = \frac{1}{s} - \frac{\tau}{\tau s + 1}
$$

---

## ✅ 4. 逆ラプラス変換

$$
\mathcal{L}^{-1}\left[\frac{1}{s}\right] = 1, \quad 
\mathcal{L}^{-1}\left[\frac{1}{\tau s + 1}\right] = e^{-t/\tau}
$$

したがって：

$$
y(t) = 1 - e^{-t/\tau}
$$

---

## ✅ 5. 留数定理による逆ラプラス変換（応用）

$$
Y(s) = \frac{1}{s(\tau s + 1)}
$$

の**逆ラプラス変換**は次の閉曲線積分で与えられる：

$$
y(t) = \frac{1}{2\pi i} \int_{\gamma - i\infty}^{\gamma + i\infty} \frac{1}{s(\tau s + 1)} e^{st} ds
$$

この被積分関数には単純極が2つある：

* $s = 0$
* $s = -\frac{1}{\tau}$

### 各点における留数：

#### 極 $s = 0$ における留数：

$$
\text{Res}_{s=0} \left[ \frac{e^{st}}{s(\tau s + 1)} \right] = \lim_{s \to 0} \frac{e^{st}}{\tau s + 1} = 1
$$

#### 極 $s = -\frac{1}{\tau}$ における留数：

$$
\text{Res}_{s=-\frac{1}{\tau}} \left[ \frac{e^{st}}{s(\tau s + 1)} \right] = \lim_{s \to -\frac{1}{\tau}} \frac{e^{st}}{s} \cdot \frac{1}{\tau (s + \frac{1}{\tau})}
= -\tau e^{-t/\tau}
$$

---

### 留数の和によって：

$$
y(t) = \text{Res}_{s=0} + \text{Res}_{s=-\frac{1}{\tau}} = 1 - e^{-t/\tau}
$$

---

## ✅ 結論

| 項目     | 結果式                             |
| ------ | ------------------------------- |
| 伝達関数   | $H(s) = \frac{1}{\tau s + 1}$   |
| ステップ応答 | $y(t) = 1 - e^{-t/\tau}$        |
| 留数定理   | 極 $s=0$, $s=-\frac{1}{\tau}$ の和 |

---




## 第0章：前提知識（高校〜初等大学数学）

* **0.1 複素数の演算**：加減乗除、極形式、オイラーの公式 $e^{i\theta} = \cos\theta + i\sin\theta$
* **0.2 三角関数・指数関数の復習**
* **0.3 多項式・有理式と因数分解**

---

## 第1章：複素関数の基礎

* **1.1 複素関数とは何か**：$f: \mathbb{C} \to \mathbb{C}$
* **1.2 極限と連続性（複素平面上）**
* **1.3 コーシー–リーマンの条件**：複素微分可能性の必要十分条件
* **1.4 正則関数（holomorphic function）**

  * $\mathbb{C}$ 上の微分可能性 ⇔ 各点で正則

---

## 第2章：複素積分の理論

* **2.1 複素平面の曲線積分**：定義と基本的計算
* **2.2 コーシー積分定理**：単連結領域での正則性による積分の消滅
* **2.3 コーシー積分公式**：

  $$
  f(a) = \frac{1}{2\pi i} \int_{\gamma} \frac{f(z)}{z - a}dz
  $$

---

## 第3章：特異点とLaurent展開

* **3.1 特異点の分類**

  * 除去可能特異点、極、本質的特異点
* **3.2 Laurent級数展開**

  * 正則性と特異性を同時に記述できる形式

  $$
  f(z) = \sum_{n=-\infty}^{\infty} a_n (z - a)^n
  $$
* **3.3 留数の定義**

  * Laurent展開の $a_{-1}$ を「留数（residue）」と定義

---

## 第4章：留数定理（Residue Theorem）

* **4.1 定理の主張**

  $$
  \int_\gamma f(z)\,dz = 2\pi i \sum_{\text{内部の留数}}
  $$

  （$f$ 正則 except isolated singularities inside closed curve $\gamma$）

* **4.2 留数の計算方法**

  * **単純極**：$\operatorname{Res}_{z=a} f(z) = \lim_{z\to a} (z-a)f(z)$
  * **高位極（位数 $n$）**：

  $$
  \operatorname{Res}_{z=a} f(z) = \frac{1}{(n-1)!} \lim_{z\to a} \frac{d^{n-1}}{dz^{n-1}}[(z-a)^n f(z)]
  $$

---

## 第5章：応用と発展

### 5.1 実積分への応用

* 正弦・余弦・無限区間積分の評価（Jordanの補題使用）

### 5.2 逆ラプラス変換への応用（制御工学）

* $F(s)$ の極と留数で応答を求める
* 例：一次遅れ系、二次系の過渡応答

### 5.3 周期関数とFourier級数（正則性を活かした解析）

### 5.4 留数と力学系（線形常微分方程式解法）

* 線形系 $\dot{x} = Ax$ の指数解：$e^{At}$ の行列表現の極展開
* システムの安定性と極配置
【Python】PuLPを用いた最適化

## PuLPの概要とサンプルコードの実行
### PuLPの概要
PuLPは`Python`で実装された混合整数線形計画問題(MILP; Mixed Integer Linear Programming)などを解くにあたって用いられるライブラリです。

https://coin-or.github.io/pulp/


### PuLPのインストール
下記のコマンドを実行することでPyPIからPuLPをダウンロードすることができます。

```
$  pip install PuLP
```

https://pypi.org/project/PuLP/


### PuLPのサンプルコードの実行
PuLPのインストール確認にあたって下記のコードを実行します。

```python
from pulp import *


x = LpVariable("x", 0, 3)
y = LpVariable("y", cat="Binary")


prob = LpProblem("myProblem", LpMinimize)
prob += x + y <= 2
prob += -4*x + y


status = prob.solve()
status = prob.solve(GLPK(msg = 0))

print(LpStatus[status])
print(value(x))
```

https://pypi.org/project/PuLP/

・実行結果
```
Result - Optimal solution found

Objective value:                -8.00000000
Enumerated nodes:               0
Total iterations:               0
Time (CPU seconds):             0.00
Time (Wallclock seconds):       0.00

Option for printingOptions changed from normal to all
Total time (CPU seconds):       0.00   (Wallclock seconds):       0.00

Optimal
2.0
```

上記の問題では下記のような最適化問題について解いています。

```math
\begin{align}
\mathrm{Objective} \quad &: -4x+y \quad \longrightarrow \quad \mathrm{Minimize} \\
\mathrm{Constraint} \quad &: x+y \leq 2, \, 0 \leq x \leq 3
\end{align}
```

この問題の最適解は`x=2`,`y=0`のとき`-4x+y=-8`であるので、最適な結果の出力が得られていることが確認できます。
【データ分析基盤】Azure Data Factory(ADF)について概要を整理してみた

## AzureDataFactory(ADF)とは何か
　でーた分析基盤のプロジェクトにてAzureのADFを使用したので整理していく。AzureのADFは下記の公式マニュアルで説明されている。

https://learn.microsoft.com/ja-jp/azure/data-factory/introduction


>Azure Data Factory は、このようなデータ シナリオを解決するプラットフォームです。 クラウドベースの ETL およびデータ統合サービスを通じて、データの移動と変換を大規模に制御するデータ ドリブンのワークフローを作成できます。 Azure Data Factory を使えば、各種のデータ ストアからデータを取り込むことができるデータ主導型のワークフロー (パイプライン) を作成し、スケジューリングできます。 コンピューティング サービス (Azure HDInsight Hadoop、Azure Databricks、Azure SQL Database など) やデータ フローを使用してデータを変換する複雑な ETL プロセスを視覚的に作成できます。

上記のように記載されており、データを統合管理するクラウドのプラットフォームである。
プロジェクトでは、AzureのBlobに配置されたファイルを整形して、SnowFlakeに登録するETLジョブをADFを使用して構築ていました。


## ADFの実行方法について
ADFの実行方法は下記のサイトでも説明されているが「デバック」ボタンを押すと
パイプラインが実行されて「出力」タブに「パイプライン」を構成する「アクティビティ」の状態が表示される。

https://learn.microsoft.com/ja-jp/azure/data-factory/concepts-pipeline-execution-triggers

「アクティビティ」には、実行時のIDが振られ
そのIDをAzureバッチのログなどで確認すると、stderrやstdoutなどを確認することもできる。

## ADFのアクティビティの設定について
　パイプの下には、カスタムプロパティを定義できる部分があり、それぞれの「アクティビティ」で
 - どのようなコマンドを実行するか?
 - どのリソースをインプットにするか?

などを定義することができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/381629/79a7f2e0-0685-4b06-8638-4dd7eea7d4a4.png)

Azure Batchというタブもあり、このタブでAzureBatchのリンクサービスを指定する。このBatchのサービスで定義されているプール上でパイプラインの処理が動作するイメージである。※プールにはVM(仮想インスタンス)の数やスペックなどが定義されている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/381629/2ca7ba41-cb02-4d1f-8ba3-14bf48aaeb31.png)
CronJobでDeploymentのレプリカ数を変更する

# 概要
Kubernetes で特定の時間帯だけ Pod 数を増やしたい場合、CronJob を使って Deployment のレプリカ数を自動で変更できます。
本記事では、kubectl コマンドを実行する CronJob マニフェストのサンプルを紹介します。

# マニフェスト構成

- `nginx-deployment.yaml`: サンプル用の Nginx Deployment マニフェスト
- `scale-cronjob.yaml`: レプリカ数を変更する CronJob マニフェスト
- `rbac.yaml`: CronJob が kubectl を実行できるようにするための RBAC 設定

## nginx-deployment.yaml

``` yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
```

## scale-cronjob.yaml

以下は、毎日午前9時に Nginx Deployment のレプリカ数を3にスケールアップする例です。kubectlが入ったコンテナを使い、kubectlでレプリカ数を変更します。CronJob のスケジュールは CRON 式で指定します。多くのK8sでは JST (日本標準時) は UTC+9 なので、スケジュールを設定する際は注意します。

``` yaml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: scale-nginx-to-3
  namespace: default
spec:
  schedule: "0 0 * * *" # 毎日9時(JST)
  jobTemplate:
    spec:
      template:
        spec:
          serviceAccountName: nginx-scaler
          containers:
          - name: scaler
            image: bitnami/kubectl:latest
            command:
            - /bin/sh
            - -c
            - kubectl scale deployment nginx-deployment --replicas=3 -n default
          restartPolicy: OnFailure
---
apiVersion: batch/v1
kind: CronJob
metadata:
  name: scale-nginx-to-1
  namespace: default
spec:
  schedule: "0 9 * * *" # 毎日18時(JST)
  jobTemplate:
    spec:
      template:
        spec:
          serviceAccountName: nginx-scaler
          containers:
          - name: scaler
            image: bitnami/kubectl:latest
            command:
            - /bin/sh
            - -c
            - kubectl scale deployment nginx-deployment --replicas=1 -n default
          restartPolicy: OnFailure
```

## rbac.yaml

CronJob から kubectl を実行するために、ServiceAccount と必要な権限を付与します。Deployment のレプリカ数を変更するため`deployments`とサブリソースの`deployments/scale`に対し`get`と`patch`権限を持つ Role を作成します。

``` yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-scaler
  namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: nginx-scaler-role
  namespace: default
rules:
- apiGroups: ["apps"]
  resources: ["deployments", "deployments/scale"]
  verbs: ["get", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: nginx-scaler-rolebinding
  namespace: default
subjects:
- kind: ServiceAccount
  name: nginx-scaler
  namespace: default
roleRef:
  kind: Role
  name: nginx-scaler-role
  apiGroup: rbac.authorization.k8s.io
```

# 注意

- CronJob のスケジュール設定はUTCなので日本時間(JST)は-9時間する。
- CronJob のスケジュールはJob用Podを起動する時間です。Deploymentのレプリカ数が変更されるのは、Jobが実行された後になるため若干タイムラグがあります。そのため、スケールさせたい時間よりも早めにスケジュールを設定することをおすすめします。例えば、9時までにスケールアップさせておきたい場合は、8時55分などに設定しておくと良いでしょう。
Spring FrameworkのBeanライフサイクル管理

# Spring FrameworkのBeanライフサイクル管理

## はじめに

Spring FrameworkにおけるBeanのライフサイクル管理は、アプリケーションの動作を理解する上で重要な概念です。この記事では、Beanのライフサイクルの各段階と、それらを制御する方法について詳しく解説します。

## Beanのライフサイクル

Spring FrameworkにおけるBeanのライフサイクルは、以下の主要な段階で構成されています：

1. インスタンス化（Instantiation）
2. プロパティの設定（Population of Properties）
3. 初期化（Initialization）
4. 使用（In Use）
5. 破棄（Destruction）

## ライフサイクルコールバック

### 初期化コールバック

Beanの初期化時に実行されるコールバックには、以下の方法があります：

1. `@PostConstruct`アノテーション
```java
@Component
public class MyBean {
    @PostConstruct
    public void init() {
        // 初期化処理
    }
}
```

2. `InitializingBean`インターフェースの実装
```java
@Component
public class MyBean implements InitializingBean {
    @Override
    public void afterPropertiesSet() {
        // 初期化処理
    }
}
```

3. XML設定での`init-method`指定
```xml
<bean id="myBean" class="com.example.MyBean" init-method="init"/>
```

### 破棄コールバック

Beanの破棄時に実行されるコールバックには、以下の方法があります：

1. `@PreDestroy`アノテーション
```java
@Component
public class MyBean {
    @PreDestroy
    public void cleanup() {
        // クリーンアップ処理
    }
}
```

2. `DisposableBean`インターフェースの実装
```java
@Component
public class MyBean implements DisposableBean {
    @Override
    public void destroy() {
        // クリーンアップ処理
    }
}
```

3. XML設定での`destroy-method`指定
```xml
<bean id="myBean" class="com.example.MyBean" destroy-method="cleanup"/>
```

## 実践的な使用例

### データベース接続の管理

```java
@Component
public class DatabaseConnection {
    private Connection connection;
    
    @PostConstruct
    public void init() {
        // データベース接続の確立
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb");
    }
    
    @PreDestroy
    public void cleanup() {
        // データベース接続のクローズ
        if (connection != null) {
            connection.close();
        }
    }
}
```

### リソースの管理

```java
@Component
public class ResourceManager {
    private List<Resource> resources;
    
    @PostConstruct
    public void init() {
        resources = new ArrayList<>();
        // リソースの初期化
    }
    
    @PreDestroy
    public void cleanup() {
        // リソースの解放
        resources.forEach(Resource::close);
        resources.clear();
    }
}
```

## ベストプラクティス

1. **コールバックの選択**
   - `@PostConstruct`と`@PreDestroy`を優先的に使用
   - インターフェース実装は、特定の要件がある場合のみ使用

2. **初期化順序の考慮**
   - 依存関係のあるBeanの初期化順序に注意
   - `@DependsOn`アノテーションで明示的に順序を指定可能

3. **エラーハンドリング**
   - 初期化時の例外は適切に処理
   - 破棄時の例外はログに記録

4. **リソース管理**
   - リソースの確実な解放
   - メモリリークの防止

## まとめ

Spring FrameworkのBeanライフサイクル管理は、アプリケーションの信頼性と保守性を高める重要な機能です。適切なライフサイクル管理により、リソースの効率的な使用とクリーンアップが可能になります。

## 参考資料

- Spring Framework公式ドキュメント
- Spring Boot Reference Guide
- Spring in Action (Manning Publications)
○aaS用語集


以下○aaSの意味についてまとめた内容

```

SaaS (Software as a Service):
ソフトウェアをクラウド上で利用するサービス (CRM、会計ソフトなど)。﻿

PaaS (Platform as a Service):
アプリケーション開発プラットフォームをクラウドで提供するサービス (アプリケーション開発環境など)。﻿

IaaS (Infrastructure as a Service):
インフラストラクチャをクラウドで提供するサービス (仮想サーバー、ストレージなど)。﻿

BaaS (Backup as a Service):
クラウド上でバックアップサービスを提供するサービス。﻿

DaaS (Desktop as a Service):
仮想デスクトップ環境をクラウドで提供するサービス。﻿

AaaS (Analytics as a Service):
データをクラウドで分析するサービス。﻿

CaaS (Container as a Service):
コンテナをクラウドで提供するサービス。﻿

RaaS (Robotics as a Service):
ロボットをクラウドサービスとして提供するサービス。﻿

Maas (Mobility as a Service):
交通手段をクラウドサービスとして提供するサービス。﻿

XaaS(X as a Service):
インターネットを介して提供されるクラウドサービスの総称。
※上記記載したサービスはXaaSに該当するものである
【チーム開発 Git】Git pull時のConflict時のtipsについて

## git pull実施時のConflictについて

実際のプロジェクト活動にて、下記のようにリモートのdevelopブランチをpullしようとするとConflictを起こす時がある。
```shell
git pul origin develop 
```
VS Code上でGithubと連携してファイルを確認すると、pullの際にConflictしたファイルに「!」などがつく。
ファイルを確認してみると、VS Codeでpullした後にConflictが生じると、下記のようにどちらの変更を取り込むかを選択するので受け入れる変更を選択する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/381629/74cd00ca-426b-4a5b-85c9-cb549c7122a5.png)

このような場合は、プロジェクトの作業によって変更された部分なのかなどを確認して
- ファイルの修正
- git pullの実施

を実施していけば問題ない
メモ

```text
混雑度,人気度（%）,金額（$）,経過日数（g内日数）,経過時間（r時間）,合計収入（$）
満員,100→95,50000,1,48分,50000
満員,95→90,50000,2,1時間36分,100000
満員,90→85,45000,3,2時間24分,145000
混雑,85→80,25000,4,3時間12分,170000
混雑,80→75,24000,5,4時間00分,194000
混雑,75→70,23000,6,4時間48分,217000
混雑,70→65,22000,7,5時間36分,239000
混雑,65→60,21000,8,6時間24分,260000
混雑,60→55,20000,9,7時間12分,280000
にぎやか,55→50,10000,10,8時間00分,290000
にぎやか,50→45,9500,11,8時間48分,299500
にぎやか,45→40,9000,12,9時間36分,308500
にぎやか,40→35,8500,13,10時間24分,317000
にぎやか,35→30,8000,14,11時間12分,325000
まばら,30→25,2500,15,12時間00分,327500
まばら,25→20,2200,16,12時間48分,329700
まばら,20→15,2000,17,13時間36分,331700
まばら,15→10,1800,18,14時間24分,333500
ガラガラ,10→5,1600,19,15時間12分,335100
ガラガラ,5→0,1500,20,16時間00分,336600
ガラガラ,0,1500,21,16時間48分,338100
```
jQuery エラー

### Failed to load resource: the server responded with a status of 404 (Not Found)

```php:
  ディレクトリにファイルを入れてない / ファイルのpathミス
  $.getJSON('/jquery/result.json', function(jd) {
　→ そのフォルダにresult.jsonなんか保存してねーよ！
 
  $('#stage').load('/jquery/result.html');
  → そのフォルダにresult.htmlなんか保存してねーよ！
```

### Failed to load resource: the server responded with a status of 404 (Not Found)

```php:
 原因 : サーバーからファイルを開いてない
       ファイルを直接クリックして開いた

 解決策 : vs codeの拡張機能 Live Serverから開く
 　　　　 npmでhttpサーバーをインストールし、開く
```
Linuxをブッ壊すやばすぎるコマンドを実行してみた  rm -rf / 編

# はじめに
Linuxには絶対に実行してはいけない悪魔のコマンドが存在します。
その中で比較的シンプルで理解しやすく、破壊力抜群のLinux危険コマンドを実行してみました。

:::note alert
うｐ主は仮想環境と壊していいLinuxを使っています。
実際の環境では絶対に実行しないでください。
:::

:::note warn
この記事で紹介されているコマンド実行したことによる責任は”一切”取れませんのでご注意ください。
:::

## うｐ主の環境
Windows11の上にバーチャルボックスで仮想環境を作り、
その中のAlmaLinuxでコマンドを実行しました。
|環境詳細|
|:-----------|
|壊していいAlmaLinux|
|VitualBox|
|Windows11|

# これがそのコマンドだぁ
```Linx:linux
rm -rf /
```
:::note alert
今回紹介するコマンドは非常に危険です。
うｐ主は安全対策をして細心の注意を払っています。
実際の環境では絶対に実行しないでください。
:::

このコマンドの意味はLinuxの中にあるデータを確認なしにすべて削除するという意味。

rmはファイルを削除するコマンド。
日常でよく使うがオプションで-rfが付いたことで狂暴化する。

-rは再帰的に削除という意味でフォルダの中のフォルダまですべて消してしまうオプション。

-fは削除するときに出る確認メッセージ(yかNを聞いてくるやつ)を表示しないというオプション

消す対象は「/」
これはルートフォルダを意味していて、Linuxのすべてのファイルを格納する一番上のフォルダという意味。
もちろんこの中にはLinuxを動かすために必要なファイルが入っている。

# 怖さが分かったところで、いざ実行!!
...と行きたいところですが、
フェールセーフ機能が働いてコマンドの実行が阻止されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4105156/8ee4ea45-6ab2-4adb-9e39-32516104c0a8.png)


# 今度こそ実行!!!!

![rm3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4105156/51214720-d878-4bc5-837b-f5f14c0609de.gif)




他のプログラムが使っていたり、許可されていなかったりして、削除できないというメッセージが大量にでてきました。
最終的には壁紙が消えて青一色に!
動画には映っていませんでしたが、コマンドすら消されているので何もできません。
強制的に電源を切ってももちろん壊れているので起動しません。
実際の環境でこれをやらかしたら...
考えたくないくらい恐ろしいことになりそうです。

:::note info
環境によってGIFが動かないことがあります。
うｐ主はスマホで見ると動きませんでした。
:::

# 教訓
Linuxの学習環境では当たり前のようにroot権限でコマンドを実行します。(sudo付ける癖がつくほど)
root権限だと誤爆したときに甚大な被害を出すことがあるので、rootの怖さを改めて実感しました。

# 終わりに
最後にLinuxでroot権限を使うときに出てくる名言で締めます。
<strong>大いなる力には大いなる責任が伴う。</strong>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4105156/5a92e793-62d8-44fc-8fff-697d789fa6a5.png)
【AccessVBA】一括更新のSQL文


# ポイント
* 一括INSERT文
* 一括UPDATE文
* トランザクション

# 一括INSERT文　＆　トランザクション
```vb
Public Function func_aaa() As Boolean
    Dim conn As ADODB.Connection
    Dim strSQL As String
    On Error GoTo ErrorExit  

    func_aaa = False
    
    Set conn = CurrentProject.Connection

    '有効フラグ=Falseになったデータを、履歴テーブルにINSERTして、元テーブルからは削除する処理
    'トランザクション処理によりデータの整合性を保持する

    ' トランザクション開始
    conn.BeginTrans
    
    ' INSERT文
    strSQL = ""
    strSQL = strSQL & "INSERT INTO 顧客マスタ_履歴" & vbCrLf
    strSQL = strSQL & "    (顧客ID, 顧客名, 役職名)" & vbCrLf
    strSQL = strSQL & "SELECT" & vbCrLf
    strSQL = strSQL & "    顧客マスタ.顧客ID" & vbCrLf
    strSQL = strSQL & "    , 顧客マスタ.顧客名" & vbCrLf
    strSQL = strSQL & "    , 役職マスタ.役職名" & vbCrLf
    strSQL = strSQL & "FROM 顧客マスタ" & vbCrLf
    strSQL = strSQL & "LEFT JOIN 役職マスタ ON 顧客マスタ.役職ID = 役職マスタ.役職ID" & vbCrLf 
    strSQL = strSQL & "WHERE 顧客マスタ.有効フラグ = False" & vbCrLf
    conn.Execute strSQL
    
    ' DELETE文
    strSQL = ""
    strSQL = strSQL & "DELETE * FROM 顧客マスタ" & vbCrLf
    strSQL = strSQL & "WHERE 有効フラグ = False" & vbCrLf
    conn.Execute strSQL

    ' 成功したらコミット
    conn.CommitTrans

    func_aaa = True
    
    GoTo EndExit

ErrorExit:
    'エラーのためロールバック
    conn.RollbackTrans
    MsgBox "エラーが発生しました：" & Err.Description, vbCritical
    
EndExit:
    On Error Resume Next
    Exit Function
    
End Function
```

# 一括UPDATE文
```vb
Public Function func_aaa() As Boolean
    Dim conn As ADODB.Connection
    Dim strSQL As String
    On Error GoTo ErrorExit  

    func_aaa = False
    
    Set conn = CurrentProject.Connection
    
    ' UPDATE文
    strSQL = ""
    strSQL = strSQL & "UPDATE 顧客マスタ AS UPD" & vbCrLf
    strSQL = strSQL & "INNER JOIN 役職マスタ AS REF ON UPD.役職ID = REF.役職ID" & vbCrLf    
    strSQL = strSQL & "SET UPD.役職名 = REF.役職名" & vbCrLf
    strSQL = strSQL & "WHERE UPD.有効フラグ = True" & vbCrLf
    conn.Execute strSQL

    func_aaa = True
    
    GoTo EndExit

ErrorExit:
    MsgBox "エラーが発生しました：" & Err.Description, vbCritical
    
EndExit:
    On Error Resume Next
    Exit Function
    
End Function
```

# 補足
一括INSERT文
一括UPDATE文
* 一括INSERT文は３つ以上のテーブルを参照して更新可能
* **一括UPDATE文は２つのテーブルまでしか参照できない**
※ループ処理などの対応が必要となる
なぜ君がエンジニア？？営業マン風の未経験SEから始まる物語

## はじめに
初めまして！新卒・未経験エンジニアのSenaと申します！
今回がブログ、初挑戦となります:sweat:
取り組んでみたは良いものの、未経験のあまり技術的な記事を書くことができなかったので、私がエンジニアを志望した成り行きについて書かせていただこうと思います。
暇つぶしがてらに読んでいただけると幸いです！！

## 今までの人生
私は小学校1年生から剣道をやっており、体を動かすことが大好きなわんぱくマンを22年間突き通してきました:muscle_tone1:
幼少期では生米をむさぼる怪獣、小学校ではとにかく足だけが速い小僧、中・高では剣道に人生を捧げる丸坊主、そんな生活を送る少年でした(笑)
また、普段はポンコツキャラなものの、意外と真面目な部分もあり（笑）、小さい頃から企画やマーケテイングの仕事がしたかった為、人生で初めて勉強を頑張り、大学はギリギリで経営学部に入学しました💦

## 転機
大学でも楽しく剣道をしていた、そんな私に、人生の転機が訪れました！！
みんなが通る道、就職活動です:metal_tone1:
3年生の春時点では、マーケティングや企画職、自身の強みが活かせそうな人材系の就職活動をしていましたが、業界分析をしていくうちに、「転勤」「収入」「市場価値」といった言葉に影響を受け、少しずつIT業界に興味を持つように。
また、現代社会におけるITの重要性や影響力といったところに興味を持ち、この力を身に付ければ、「俺のやりたかったこと全部できる...!（ドンドットット）」と思い、面接を受けるようになりました。面接が進むにつれ、IT業界でエンジニアとして技術・知識を身に付けたいという思いがより強くなり、現在に至ります💻

## 未経験の壁
就職活動の面接はもちろん、大学の友達や会社の同期からも「なんでエンジニアなの？」と問われる日々。実際に働き始めても、ITの難しさや経験者（同期）との大きな壁を感じ、自分の中でも、本当に自分に合った職種なのかという不安がたまーに出てきます。
でも！今はそれ以上にワクワクしています！！
この研修が終わった時に自分はどうなっているんだろうか、あの資格を取ったらこんなのも作れるようになるのかな、など想像がどんどん膨らんでいきます:grin:
だからこそ、この大きな壁を越えられるように！
まずは３つの事を徹底してみようと思います。
１．常に目的意識と逆算思考を持って取り組むこと
→私は同期の1.5倍速で進んでいかないと追いつけない。だからこそ、無駄な時間が無いように、失敗したとしても何かが得られるように、小さいことに対しても目的意識と逆算思考を持って取り組むようにします！
２．とにかく手を動かしてアウトプットを増やす
→講義などを受ける中で、とにかく手を動かしてシステムを作ってみるという行動が貴重あインプットに繋がるということを学びました。未経験だから勉強からと、テキストや動画の視聴に逃げがちになりますが、量は質に転化するという言葉を大切に、積極的にアウトプットしていきます。
３．チャレンジ精神を忘れない
→上記のアウトプットに関してもそうですが、資格の勉強や実務に関しても、いつまでも未経験というレッテルに自分から縛られず、チャレンジ精神を持って取り組むようにします。やってみないとわからないことが沢山ある！


## まとめ
上記で話してきたように、自分が通ってこなかった道、未経験という部分への初めてのチャレンジになりますが、まずは楽しむことを大切に、たくさんの学びを得て、自分の最高地点へと登り続けていきます！！
何か意識したほうがいいことやワンポイントアドバイスなどがあれば、コメントしていただけると幸いです:bow_tone1:
拙い文章になってしまいましたが、最後まで読んでいただきありがとうございました！！
全力投球、頑張ります！！
【未経験者向け】おすすめのIT資格

## はじめに
みなさん、IT資格とってますか？もってますか？
IT資格を持っていると転職で有利になったり、会社からお金がもらえたり、何より自信がついたりと良いことずくめです。
私は現在、２社目のIT企業に在籍してますが、１社目のIT企業に在籍中にいろいろIT資格を取りました。（取らされました）
その中でも、実際に役にたっているなと思う資格を挙げますので、参考にしてみてください。
特に、これから未経験でITエンジニアを目指す方は必見です！

## 基本情報技術者試験

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4074924/7e0c4576-ceef-45e2-8db1-d758d3352551.png" width="200" height="100">

<https://www.ipa.go.jp/shiken/kubun/fe.html>

自分がIT業界に行こうとした上で初めに目指した資格です。
IPAが実施しており、有効期限がないため一度取得すればずっと履歴書に書けます。この試験ではITエンジニアとして働く上で必要な基礎体力のようなことを学べます。
例えば、

- コンピュータ（ハードウェア、ソフトウェア）の基本原理
- IPアドレス、2進数
- OSI参照モデル
- ネットワーク
- データベース、SQL
- セキュリティ
- プログラミングアルゴリズム
- プロジェクトマネジメント
など

基本情報技術者試験では、ITエンジニアなら知っていて当たり前とされることを学べます。資格を取らなくても、ITエンジニアに興味があるなら、基本情報技術者試験の教科書を読んでみることをおすすめします。シンプルに読み物としても面白いです！　ITエンジニアになることを迷っているなら、教科書を読んでみて「面白い！」と思うのか、「難しい…」と思うのかでITエンジニアを目指すのかどうかを決めるのがいいと思います。

はっきり言って、基本情報技術者試験は難しいです！
資格を取れるにこしたことはありませんが、**教科書を読むだけでも十分な価値はあります。** 以下のようなサイトも充実しているので、見てみてください。
<https://www.fe-siken.com/>

## LinuC / LPIC

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4074924/58148ad7-9fa9-4edd-9e47-cf81ab514281.png" width="200" height="100">

実際に現場に入ると、不意にLinuxの操作が必要だったり、Linuxの知識が求められる場面に遭遇します。そんなときにLinuxのことがわからなければ、何をしていいのかわかりません。急にCLIの画面を渡されても何をしたらいいのかわかりません。そんなことにならないように、LinuCやLPICではLinuxの基本知識や基本操作を体系的に学べます。

Linuxの操作を少し見てみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4074924/811ab5ef-15ef-40bd-a560-1c2885efa5fd.png)
上の画像ではこのようなことをしています。
①今のディレクトリに何があるのかを確認
②ディレクトリを２つ作成(dir22,dir33)
③１つのディレクトリ(dir33)のアクセス権を変更
④アクセス権が変更されたことを確認
⑤ファイル(bench.py)をディレクトリ(dir33)の中にコピー
⑥ディレクトリ(dir33)の中にファイル(bench.py)があることを確認

LinuCやLPICの初級資格を学ぶだけでこれくらいの操作はできるようになります。より実務的な資格になります。

LinuCもLPICもLinux技術者向けの資格ですが、LPICは国際標準的な資格、LinuCは日本国内向けの資格です。私はLinuCを取りましたが、どちらも大差ありませんので、どちらでもいいでしょう。

以上、未経験者向けのおすすめのIT資格でした。資格を取ると、客観的に実力を評価できますが、何よりも自分に自信が持てます。何かを成し遂げて、自信を持てるということが大事なことです。自信をつけて、よいエンジニアライフを過ごしましょう！
[VSCode] CodeRabbitのレビューコメントを日本語にする

VSCode拡張機能のCodeRabbitがとても良きです！
これを利用すればAI駆動開発の質が高まりそうです！

ただ、CodeRabbitのレビュー結果ですが、デフォルトだと英語になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435280/b9c4b79b-b50a-48d5-a8c0-eb53ebf99a35.png)

これを日本語にする手順を記載します。

# 日本語にする手順

以下のファイルをプロジェクトのルートディレクトリに作成してください。

```yaml:.coderabbit.yaml
language: "ja-JP"
```

これだけです！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435280/dd17ce17-a1bc-4615-a557-d8788727090f.png)

[.coderabbit.yamlについて](https://docs.coderabbit.ai/getting-started/configure-coderabbit/)

このファイルはCodeRabbitのレビューをGithub Actionで行うときにも読み込まれる設定ファイルです。
今回はlanguageの設定だけですが、CodeRabbitを本格的に運用していく際は作り込んでいくことになると思います。
ゼミで研究していたことと、そこから学んだこと

初めまして、kyoと申します。アンダーバーの後についているpandaは昔一緒に暮らしていた犬の名前です。

軽く自己紹介をしたいと思います。

##### ＃25卒　＃新卒　＃文系　＃未経験　＃経営学　＃駅員バイト　です。
箱根に行くとき、みんな乗るであろう鉄道会社で4年間、駅員のバイトをおこなってました。



　今回、何を書こうかと少し考えたのですが、技術的なことは学んでいる途中なので、今回はゼミで研究していた内容をお話ししようかなと思います。

　ゼミでは、経営学全般を扱っており、マーケティング、会計など分野に分かれておらず、自分自身の興味関心に従って研究できるゼミでした。

そんなゼミで僕は

#### 「キャラクターIPの人気持続性において、組織能力は関与するのか　ーポケモンと妖怪ウォッチの事例からー」

という研究テーマで卒論を執筆しました。

簡単に説明すると

ポケモンを抜かす勢いだった妖怪ウォッチはなぜ、衰退し、第二のポケモンになれなかったのか。ということを、各企業が持つ組織能力に問題があったのではないかということを原因の仮定とし、ライフサイクルマネジメント論とコア・コンピタンス論の両軸から検証するということを行っていました。

結論は、成熟期の戦略のうまさとコア・コンピタンスがあるかないかということに落ち着きました。
（いつかもっと詳しく書きます）

 そんなゼミでの指導教員はビジネス経験もあり、学問だけでなく、ビジネスなどについても教えてくれました。

特に

#### 「これからはAIを使えないとやっていけないから、学生のうちにAIを使えるようにしておきなさい」

と言われ、Geminiを使い倒していました。

英文論文の翻訳、論文の要約、メモをまとめたり、そこからアイデア出しを行ったり、壁打ちしたりなどなど

めちゃくちゃ、使っていました。

AIを使うにあたって、
#### 「AIに的確な指示をできるようになれ」と言われていました。
いまでも、このことは意識しています。

大学での学びが、いまの仕事に直結しているかと言われれば、100％していると言い切れませんが、長い文章を読み、必要な部分を探すであったり、情報の探し方、まとめかたなど、間接的にはものすごく役に立っていると思います。

学ぶことに意味を持たせるのは、自分次第だなとつくづく実感しています。

例えば、日本史の江戸時代について学んで、学んだことで知識を得るだけの人、知識を得るとともに、その知識を応用させて別の事象に応用できた人。この両者を比べると何十倍も差があると思います。

#### これからも、ただ学ぶだけでない学びを行っていきたいと思います。
【正直に言う】コードが書けるだけの人は、現場で邪魔になることがある

## はじめに

5年くらい現場を渡り歩いてきて、ずっと感じてることがある。
現場で本当に仕事ができる人と、 **「コードは書けるけど仕事はできない人」** の差が思った以上にデカい。

そして、これは割と現場の空気を濁らせる原因にもなってる。
今日は少し嫌われる覚悟でこの話を書いてみる。

---

## 「コードは書ける」けど、それだけの人が増えてきた

最近増えてるタイプ。

* 新しいライブラリを次々導入したがる
* 技術的な難しさを嫉しそうに語る
* ベストプラクティス警察
* 「この設計はイケてない」と言うけど、要件の背景は聞いてない
* ChatGPTから出力されたコードをアルゴリズムもわからず自信満々でPR出す

こういう人は、一見優秀に見える。
でも**現場で回らなくなる理由の8割くらいがここにある。**

---

## プロジェクトは「完璧」じゃなく「回る」ことが大事

現場で求められるのは

* 仕様変更に耐えられる柔軟さ
* 他のメンバーが理解できる素直さ
* 予算と経算に収まる現実解
* 空気を読む力

**「ベストよりベター」** がわかる人が強い。
完璧主義は現場を壊す。
**現場は工学じゃなく経済で動いている。**

---

## エンジニアに必要なのは「技術の使い分け」能力

鋭った技術力よりも、

* どの技術を、どの状況で、どの程度使うか
* 誰がその後メンテするか
* 3年後にどうなっているか

**未来のコストまで含めて考えられる人**が現場を救う。

---

## 「理想論」を語る人は、責任を取らない

理想を語るのは簡単。
でも

* 仕様変更を食べ込んで調整し直す
* 先にリスク消しておく
* 他の人が困ったときに助ける

こういう **「地味で泥臭い調整役」** を誰もやりたがらない。
結局、現場で重宝されるのはこういう人たち。

---

## 「技術力」じゃなく「交通整理力」

現場で評価される順は、ぶっちゃけこう。

1. **交通整理力**（要件、調整、落とし所探し）
2. **チーム設計力**（周りが詰まらない設計）
3. **技術力**（技術自体の知識）

**交通整理が上手い人が1人いるだけで、現場の幸福度は劇的に変わる。**

---

## ［結論］「コードが書けるだけ」では現場は回らない

* 技術を語るのは楽しい。
* でも、**現場を回すのは別のスキル。**
* そして、それを身につけるのに5年くらいはかかった。(まだべんきょうちゅう)

---

## おわりに

ここまで書いてきたけど、別に「技術がいらない」とは全く思ってない。
**技術は必要。でも、それを回すスキルの重要度は思ってる以上に高い。**

たぶん、経験ある人はなんとなくわかってくれるんじゃないかな。
新米エンジニアによる新米エンジニアのための情報共有

# お初お目にかかります👀
最近エンジニア人生がスタートした@esukei_8876と申します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3671186/6cb5963d-674f-44a0-aac3-8a663d9e6588.png)


エンジニアとして右も左も分からない中で、毎日勉強させてもろてます。
最近はJava、JavaScript、HTML、CSSのあたりを触っておりますが、これまたさっぱり。
とはいえ、Javaだけは入社前に<font color="#4488ff">**コソ勉**</font>してたので、お陰様で何とかかんとか息をしております。

:::note info
コソ勉と言えば
「俺期末ヤバいわ、全然勉強してないわ(笑)」とか言いながら
83点とか取ってくる輩でお馴染みですね。須らく嫌われ者です。
:::

それはさておき、こんな新米でもちょっとは出来ることが増えてきたので、今日は新米の私が、恐れ多くもプログラミング学習のコツについてお話したいと思います。多分参考にならへん。

**※ちなみに対象は、「これからプログラミング触ってみようかな」みたいな人です。経験者が見ても得しまへん。**

# コツ1：とりま本買ってエエ気分になる
これ、個人的に大事だと思います。
分厚い本とりあえず1冊買ってみましょう。買うだけでOKです。どうせ多分買ったことに満足してしばらくほったらかしになると思いますが、それでOKです。家にあったらいつか気が向いた時に読みます。
「気が向きませんでした？」それは知りまへん。

**真面目に話すと、買うときのコツは**
>**1.イラストが多い本を選ぶ**
    →人間は視覚優位の生物。見た目が良ければその分理解も早い
**2.文字がデカい本を選ぶ**
    →識字へのコストが高く、その分理解するための工数を割けない
**3.その上で、結局有名な本を買っておいたらOK**
    →1,2をすっ飛ばして有名なだけの本を買うと、漏れなく爆死します

まあまずは何でもいいから買ってみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3671186/8775e674-2203-406d-88e7-0dc6c48e85ea.png)

# コツ2：分からんかったら飛ばせ
プログラミングやってたら、訳分からん概念に直面することも多々あります。本当に始めたての人なら、
- 「int」って誰やねん？
- 「while文」って何？？
- 「クラス」とは？梨泰院？？？

こんなんざらですわ。
でも気にする必要はナッシング！（昭和の香り）
「何か聞いたことある」という粒度感で思考をしばらく寝かせておくと、急に意味が理解できる日が来ます、マジで。
このように、とりあえずそれっぽい知識を脳内にブチ込んで熟成させておく考え方は、個人的にすごく有効だと考えていますし、研究や仕事においてブレイクスルーを起こすためにも効果的だと考えています。

ちなみに、この思考方法を一番感覚的かつ的確に言語化されている本があります。お気に入りなので、共有をば。
>思考の整理学(外山滋比古)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3671186/fe124ffa-ef5b-4c3c-99c9-c6410f7cb157.png)

# コツ3：テクニカルタームで遊べ
これ、結構面白い。（まともな人には向いてないです。）
端的に言うと、<font color="#ff0000">**テキトーに用語を使うこと**</font>です。
全然間違った使い方でもいいです、用語とお友達になりましょう。
コツは本当に馬鹿になること。恥も体面もかなぐり捨てるべし。

例）筆者、ある日の会話
トモ「今日マジで何もしてないわ～」
わし「**null**ってことか？？？（爆笑）」
トモ「**配列の初期化**忘れてたわ（爆笑）」
わし「それはマジで**NullPointerException**やわ（爆笑）（全然違う）」
トモ「**例外処理**しちゃった😿（爆笑）」
わし「もうどうしようもないから**throw**するね😿（爆笑）」

こんな感じです。本当に友人とはこんな会話しかしていません。救いようがない。
ちなみに会話としても技術的な内容としても成立していません。

でもこんな感じで話していると、意外と頭に入っていたりするんですよね。
ここまで知能を低下させる必要はないですが、ぜひ周囲の方とお話してみましょう。

****
いかがでしたか？（クソブログ）

まあこんな感じで、プログラミング怖くないよ～ってお話でした。
これから始めてみようかな、という方は是非形から入ってみてください。そこまで恥ずかしいことではないので。

:::note warn
形から入る恥ずかしいケース
5万のキーボードと10冊くらい楽譜買ったけど一曲も弾けない。（実話）
:::


ほなまた
LPIC102 受験記


## 初めに
LPIC101試験に合格してからだいぶ経ってしまったが、
やっとLPIC102試験を合格したので合格までの勉強方法を記事にしたいと思います。
どなたかの参考になれば幸いです。

# LPI認定試験の概要 (LPIC101、LPIC102)
LPIC(Linux Professional Institute Certification)は、Linux技術者としてのスキルを証明する国際的な認定資格です。
レベル1は、Linuxの基本操作やシステム管理の知識を問う初級レベルの試験となっており、以下2つの試験に合格する必要があります。
・LPIC-101 : Linuxの基本コマンド、ファイルシステム、パッケージ管理など
・LPIC-102 : シェルスクリプト、ネットワーク設定、セキュリティ、ユーザー管理など


## 試験情報
試験数 : 101試験と102試験の2つ(どちらの合格も必要)
試験時間 : 各90分
出題数 : 各60分(65%前後で合格)
受験料 : 1科目あたり16,500円(税込)
有効期限 : 5年以内に両方合格する必要あり

## 試験結果
比較的余裕をもって合格できました。


## 学習時間
今回はLPIC101の時とは違い、1か月後に取ると決めて勉強を始めました。
101で勉強の流れ等はわかっていたので、検証を環境を準備して進めました。
平日は、朝に前日の夜に解いた問題を解き、通勤時間には参考書を読み、帰宅後は問題演習といった流れです。
休日は、午前家で行い、午後は気分転換もかねてカフェに行ってました。(コメダ様様です)
平日 : 4時間(ほとんど通勤時間のみ)
休日 : 6時間
日数 : 約1か月
試験申し込みタイミング : 試験勉強を開始と同時に申し込みました。

## 試験対策
・Linux教科書 LPICレベル1 Version5.0 対応  (通称: あずき本)
・Linux教科書 LPICレベル1 スピードマスター問題集 Version5.0 対応  (通称: 白本)
・Ping-t

## 勉強の流れ
### 1. Linux教科書 LPICレベル1 Version5.0 対応  (通称: あずき本)
まずは最初は、あずき本の101試験範囲を読みました。全部理解するよりはこんな事やるのか程度です。
101の時より、かける時間は減らしました。
問題集を解いているときに、あずき本でコマンドを確認する機会が多かったので、この段階では流し読み程度にしました。

### 2. Linux教科書 LPICレベル1 スピードマスター問題集 Version5.0 対応  (通称: 白本)
101の時と同様に進めていきました。わからないコマンドは検証環境で実際に打ってみて確認するようにしました。
あずき本の1週目が終わったら、白本を解きました。解答はノートに記載する形で進め、わからないところはすぐに解答を見て赤ペンでメモリました。
1週目は、解答はノートに記載する形で進め、わからないところはすぐに解答を見て赤ペンでメモリました。(ほとんど赤ペン状態でした。。)
2週目は、1週目のノートを確認して、同様にわからないところは都度赤ペンでメモリました。(1週目よりできてればOK)
3週目は、章ごとに解き、都度解答は見ずに章の最後まで解いてから、回答を確認しました。章を全部正解できるまで次の章にはいかないやり方をしました。

### 3.Ping-t
101の時に絶大な信頼ができたので、102は有料になってしまうのですが、迷わず課金しました。
期待を裏切らず、これだけをやってても大丈夫なくらい試験範囲は網羅されてます。
最強WEB問題集の単元ごとに10問ずつ解いていき、10問全部正解できるまでやり、単元が全て解き終わったタイミングで、章全部の単元を対象に問題を解きました。
各章、上記のように勧め全て終わったら、コマ問をやりました。
Lpicの試験では何問かコマンドを記述したり、オプションを記述するような問題が出題されます。
コマ問はそれの対策のつもりで解きました。

後半は、ずっとping-tを解き、飽きたら気分転換に白本を解いてといった形で試験を迎えました。
ping-tで9割取れれば試験は安心だと思います。

## 試験当日
LPIC101の試験である程度試験までの流れや試験会場(データセンター)はわかっていたので、
前回ほど緊張はしませんでした。
でも、試験の価格が高いので落ちれないという不安はずっとありましたが、ある意味その不安が勉強のモチベーションになっていたかもです。今思うと。

## 反省点
LPIC101に合格して、そのまま勉強を続けて受験したほうが勉強をする癖と、試験の慣れがあったかなと思います。
勢いが大事です。

## 終わりに
ここまで読んでいただいてありがとうございます。
私はLPIC101に合格してから、8か月経って取りました。燃え尽き症候群てやつですww
皆さんできることは、こんなに期間を開けないで受験したほうが少しは楽になるのかなと思います。(101の知識も忘れかけてたため)
こんなやり方で合格したんだとここまで読んでいただいた方の勉強スタイルの参考になれば幸いです。