OmniAICreator/Qiita-1.07M huggingface dataset:
VSCodeをキーボードだけで快適に ─ キャレット迷子を防ぐスクロール設定

## はじめに

キーボード操作だけでVSCodeを使いたい時、ちょっとした違和感を覚える場面があります。

`Ctrl + ↑` / `Ctrl + ↓` で画面をスクロールできるものの、**キャレットの位置がスクロール外に残ったままのため、編集のためキーボード操作を行うと、もともとキャレットがあった行に戻ってしまいます。** これを防ぐため、画面のどこか一部をマウスでクリックし、迷子になったキャレットを呼び戻してあげる必要があります。せっかくキーボード操作でスクロールできるのに惜しい。

## 解決方法

`keybindings.json` に以下を追加します:

```json: [ ctrl + p ] keybindings.json
{
    "key": "ctrl+up",
    "command": "editorScroll",
    "args": {
        "to": "up",
        "by": "line",
        "revealCursor": true
    },
    "when": "editorTextFocus"
},

{
    "key": "ctrl+down",
    "command": "editorScroll",
    "args": {
        "to": "down",
        "by": "line",
        "revealCursor": true
    },
    "when": "editorTextFocus"
}
```

### 設定ファイルの開き方

1. `Ctrl + Shift + P` でコマンドパレットを開く
2. `Open Keyboard Shortcuts (JSON)` を選択
3. 開いた `keybindings.json` に追加

## `revealCursor: true` の意味

今回の問題を解決するのが `revealCursor: true` の設定です。これを有効にすると、**スクロールしてもキャレットが画面内に追随する**ようになります。Vimでは当然の挙動ですが、これで同様になります。わざわざこのような設定を内蔵しているのであれば、デフォルトで有効にしておいてほしいですが。

なお、`editor.stickyScroll.enabled` が有効になっている場合、編集再開時にスクロール位置が微妙にずれることがあります。上部にスティッキー表示されるスコープ行の行数が内部的に考慮されてないことが原因のようですが、これを補正する方法は現時点ではなさそうです。
Rustのchronoクレートの文字列からdate型に変換

# 文字列から日付のみ型（NativeDate）に変換する際の注意点

Chronoを使用して日付を処理する際、文字列から日付型変換する時にハマってしまったので、自分用の備忘録としてまとめます。

## 結論

yyyy-mm-dd形式の文字列から日付のみの型に変換したい場合、**NaiveDateTime**ではなく、**NaiveDate**を使用する必要があります。`NaiveDateTime`はエラーとなり、`NaiveDate`を使わないといけません。

## 問題の背景

Chronoライブラリを使うとき、`DateTime`型に変換しようとすることがありますが、日付だけを扱いたい場合は、`DateTime`ではなく、`NaiveDate`を使う必要があります。特に、`NaiveDate`は**タイムゾーン情報を持たない日付のみ**を扱います。

### エラー例

```rust
use chrono::NaiveDateTime;

fn main() {
    let date_str = "2025-03-29";
    let date = NaiveDateTime::parse_from_str(date_str, "%Y-%m-%d");
    
    match date {
        Ok(d) => println!("Parsed date: {}", d),
        Err(e) => println!("Error: {}", e),
    }
}
```

上記のコードでは、`"2025-03-29"`という文字列を`NaiveDateTime`型に変換しようとしています。しかし、`NaiveDateTime`型は日付と時刻の両方を含むため、時刻情報が不足している場合にエラーが発生します。

### 注意点

- **NaiveDateTime**では、時刻も含まれるため、日付のみに変換したい場合は**NaiveDate**を使うことが必須です。
- `NaiveDate`はタイムゾーン情報を持たないため、日付のみを扱いたい場合には非常に便利です。

### 正しい使い方

```rust
use chrono::NaiveDate;

fn main() {
    let date_str = "2025-03-29";
    let date = NaiveDate::parse_from_str(date_str, "%Y-%m-%d");

    match date {
        Ok(d) => println!("Parsed date: {}", d),
        Err(e) => println!("Error: {}", e),
    }
}
```
Codility対策! PHPでコーディングテストを受けるときの注意点

# はじめに
前回はCodilityのコーディングテストを受けるときのポイントをまとめましたが、今回は注意点をまとめていきたいと思います。
コーディングテストでは単純なアルゴリズムだけでなく、データ型の特性に起因するエッジケースも問われる可能性があります。特に **浮動小数点数の精度**や**オーバーフロー**に注意を払わないと思わぬバグの原因になることがあります。

# PHPの数値型について
PHPには主に2つの数値型があります。
- **int型**：整数値（32ビット環境では -2,147,483,648 ～ 2,147,483,647、64ビット環境では -9,223,372,036,854,775,808 ～ 9,223,372,036,854,775,807）

- **float型**：浮動小数点数（IEEE 754規格の倍精度浮動小数点数を使用）

## :white_check_mark: 浮動小数点の精度誤差
PHPのfloatは**64ビットの倍精度浮動小数点数**を使用しており、すべての小数を正確に表現できるわけではありません。
例えば、`0.1 + 0.2 `が`0.3`にならないケースが発生します。

```php
$a = 0.1;
$b = 0.2;

if ($a + $b == 0.3) {
    echo "True";
} else {
    echo "False";
}
// 出力: False
```

#### :writing_hand:回避策
`bcadd()`や`bcmul()`などを使うことで、浮動小数点数の誤差を回避できます。
```php
$a = "0.1";
$b = "0.2";

$result = bcadd($a, $b, 10); // 小数点以下10桁まで計算

echo $result; // 出力: 0.3000000000
```

## :white_check_mark: 整数型のオーバーフロー
PHPは整数型が**64ビット環境**では非常に大きな範囲を扱えますが、**32ビット環境**では比較的小さく、オーバーフローが発生しやすくなります。

```php
$max = PHP_INT_MAX; // 環境依存で最大値を取得
var_dump($max); // 64ビット環境では 9223372036854775807

$result = $max + 1;
var_dump($result); // floatに変換される
```
:warning: 整数が`PHP_INT_MAX`を超えると自動的に`float`に変換され、精度が落ちます。

### :writing_hand:回避策
`gmp_*` 系関数を使うことで、大きな整数を扱うことができます。
```php
$a = gmp_init(PHP_INT_MAX);
$b = gmp_add($a, 1);

echo gmp_strval($b); // 正確な計算が可能
```

## :white_check_mark: 無限大とNaN（Not a Number)
非常に大きな計算や定義できない数値操作を行うと、`INF(無限大)`や `NAN(非数)`となります。
```php
var_dump(1.0e308 * 10); // INF
var_dump(acos(2)); // NAN
```

### :writing_hand:回避策
PHPでは `is_infinite()` や `is_nan()` を使用してチェックできます。
```php
$result = 1.0e308 * 10;
if (is_infinite($result)) {
    echo "無限大になっています";
}
```

## :white_check_mark: 数値変換時の注意点
PHPでは型変換が自動的に行われるため、不正な文字列を数値に変換すると予期しない挙動になります。

```php
var_dump((int)"100abc"); // 100
var_dump((float)"1.2e3"); // 1200
var_dump((int)"abc"); // 0
```

### :writing_hand:回避策
型変換には `filter_var()` を利用すると安全です。
```php
$input = "100abc";
if (filter_var($input, FILTER_VALIDATE_INT) !== false) {
    echo "整数です";
} else {
    echo "整数ではありません";
}
```

# まとめ
コーディング対策だけでなく、浮動小数展の精度誤差、オーバーフローなど気をつけていきましょう。
参考になれば幸いです :apple:
Excel VBA 任意バーコードをエクセルシートに書き出す

### はじめに
任意バーコードをエクセルシートに書き出しを行う

### プロシジャーの説明
ActiveX コントロール機能を使います。VBAにてActiveXのMicrosoft BarCode Contorol 16.0を操作します。定数宣言でマジックナンバー対応にも対応しました。

#### サンプル１ 
``` VB
Option Explicit
    Dim barcodeCtrl As OLEObject
    Dim targetCell As Range
    Dim leftPos As Double
    Dim topPos As Double
    Dim BacodeData As String
    Dim x, y, i, l, m, Startrow, Endrow As Long
    
    ' 列挙型 定数宣言 ※マジックナンバー対応
    Enum バーコード列
        データ = 4
        線表示      ' 連番機能で勝手に5
    End Enum
    
    ' Const 定数宣言 ※マジックナンバー対応
    Const コード種類 = 7
    Const テキスト表示有り = 1
    Const ヘッダーの段 = 1


Sub GenerateBarcodeAtCell7777()
    ' 初期化
    Call FuncDeleteObjectsInColumn
    
    Endrow = Cells(Rows.Count, バーコード列.データ).End(xlUp).Row
    Startrow = ヘッダーの段 + 1
    
    For i = Startrow To Endrow
        BacodeData = Cells(i, バーコード列.データ).Value
        Set targetCell = ActiveSheet.Cells(i, バーコード列.線表示)
        Call FuncBacodesakusei
    Next
    
End Sub

Function FuncBacodesakusei()
    ' セルの左端と上端の位置を取得
    leftPos = targetCell.Left
    topPos = targetCell.Top
    ' シート上にActiveXコントロールを追加（指定した位置に配置）
    Set barcodeCtrl = ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", _
                                                 Link:=False, _
                                                 DisplayAsIcon:=False)
    ' コントロールの位置とサイズをセルに合わせて調整
    With barcodeCtrl
        .Left = leftPos
        .Top = topPos
        .Width = targetCell.Width
        .Height = targetCell.Height
    End With
    ' コントロールのプロパティを設定
    With barcodeCtrl.Object
        .Style = コード種類
        .ShowData = テキスト表示有り
        .Value = BacodeData  ' バーコードの値を設定
    End With
End Function

Function FuncDeleteObjectsInColumn()
    Dim obj As Shape
    Dim targetColumn As Integer
    Dim ws As Worksheet
    
    ' 対象のワークシートを指定（ここではアクティブなシート）
    Set ws = ActiveSheet
    
    ' 対象の列を指定
    targetColumn = バーコード列.線表示
    
    ' シート内の全てのオブジェクトをループ
    For Each obj In ws.Shapes
        ' オブジェクトの左位置が列内にある場合に削除
        If obj.Left >= ws.Columns(targetColumn).Left And _
           obj.Left < ws.Columns(targetColumn + 1).Left Then
            obj.Delete
        End If
    Next obj
End Function
```
GitHubに誤ってpushしたファイルを削除したい

## はじめに

先日、GitHubに誤って`.DS_Storeファイル`をpushしてしまいました。

これからうっかり誤ったファイルをpushしたときに慌てないようにするため  
手順をまとめました。

### .DS_Storeファイルとは


その前に、`.DS_Storeファイル`とは何でしょうか。

フォルダの表示オプション、アイコンの位置などのフォルダのカスタム属性を格納しているファイルのようです。  
https://en.wikipedia.org/wiki/.DS_Store

## 問題

GitHub上に誤って必要のないファイルをあげてしまった。

## 解決方法

手順1. `git rm --cached`コマンドを使う
手順2. `~/.config/git/ignore`にファイル名を記述する
手順3. .gitignoreファイルにファイル名を記述する
手順4. GitHubにpushする

<hr>

### 手順1.`git rm --cached`コマンドを使う

```
	$ git rm --cached .DS_Store
```

上記のコマンドを叩くと、リポジトリ上でこのファイルが削除されます。
しかし、ワークツリー上にはファイルが残ります。

ワークツリーからも削除したい場合は`git rm`コマンドを使います。

ディレクトリの場合は`-r`をつけます。

### 手順2. `~/.config/git/ignore`にファイル名を記述する

ここに記載されたファイルはGitの管理下から外れ、追跡の対象外となります。

.gitignoreファイルとの違いは、各リポジトリによらないグローバルなgitignoreを設定することができます。

.DS_Storeファイルのようなプロジェクトに関係がないファイルはこちらに記載しましょう。

```~/.config/git/ignore
.DS_Store
```


また、GitHubのリポジトリに下記テンプレートがあるので、こちらを`~/.config/git/ignore`にコピペするのも良いですね。

[macOS.gitignore](https://github.com/github/gitignore/blob/main/Global/macOS.gitignore)

### 手順3. .gitignoreファイルにファイル名を記述する

プロジェクト由来のファイルであれば、.gitignoreファイルに記述します。  
.DS_Storeのようなプロジェクトに関係が無く、毎回、個人の環境によるファイルを書くのは大変です。

そういったファイルはグローバルなgitignoreに記述していきたいですね。

### 手順4. GitHubにpushする
言うまでもないことですが、最後にGitHubへpushします。

## 終わりに

今回は、うっかりGitHubに上げたくないファイルをpushした時の対処法をまとめました。

最初、グローバルなgitignoreの設定を知らず、リポジトリを作成するたびに.gitignoreファイルが必要なのか？と思っていましたが、そうではありませんでした。

今後も横着せずに楽な方法はないか？を発想して学習していきます。

## 参考
https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E5%A4%89%E6%9B%B4%E5%86%85%E5%AE%B9%E3%81%AE%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%B8%E3%81%AE%E8%A8%98%E9%8C%B2
[Props]viewsでコンポーネントを使ってみる

viewsでコンポーネントを使ってみる
```vue
<template>
  <div>
    <test-title />
    <div>テストテーブル</div>
  </div>
</template>

<script lang="ts">
import { Component, Vue } from "vue-property-decorator";

import TestTitle from "@/components/molecules/TestTitle.vue";

@Component({
  components: {
    TestTitle,
  },
})
export default class testViews extends Vue {}
</script>
```



↓testTitle.vue
```vue
<template>
  <div>タイトルだよ</div>
</template>

<script lang="ts">
export default {};
</script>
```

↓画面表示

タイトルだよ
テストテーブル


**propsを使うとき**

viewsごとにタイトルが違う場合、viewsからコンポーネントにデータを渡す必要がある

```vue
<page-title title="画面ごとのタイトル" />
```

このようなデータの受け渡しのことを**「プロパティ（props）の受け渡し」**または単に**「プロパティのバインディング」**と言います。

具体的には、親コンポーネントから子コンポーネントにデータを渡す方法です。親コンポーネントのテンプレートで、子コンポーネントのタグに対してプロパティ（`title="画面ごとのタイトル"`）を設定することを「プロパティバインディング」と呼びます。

### 詳細：
- **親コンポーネント**: `<page-title title="L画面ごとのタイトル" />`
  - 親コンポーネントは、`title` という名前のプロパティを子コンポーネントに渡します。
- **子コンポーネント**: `@Prop()` で `title` プロパティを受け取ります。
  - 子コンポーネントは、この `title` を受け取って使います。

### 他の表現方法：
- **データのフロー（データフロー）**: 親から子へデータが流れる過程を指します。Vueでは「単方向データフロー」とも言われ、親から子へのデータ渡し（`props`）が基本です。
- **プロパティバインディング**: 親コンポーネントから子コンポーネントにプロパティをバインド（紐付け）すること。

つまり、このデータの受け渡しは「**プロパティの受け渡し**」または「**プロパティバインディング**」と呼ばれます。

### コンポーネント側の書き方

```vue
<template>
  <div>
    <span>{{ title }}</span>
  </div>
</template>

<script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator";

@Component
export default class TestTitle extends Vue {
  @Prop({ required: true })
  title!: string;
}
</script>
```

このコードを一つずつ分解して説明するね！  

---

### **1. `@Prop({ required: true })`**
これは **Vue の親コンポーネントから渡されるプロパティ（props）を定義する** ためのもの。  
具体的には、`title` という名前のプロパティを **「親から必ず渡さなければならない」** というルールを設定している。

```ts
@Prop({ required: true })
```
- **`@Prop(...)`**：親コンポーネントからデータ（props）を受け取るためのデコレーター
- **`{ required: true }`**：この `title` は **必須（required）** なので、親から渡されなかったらエラーになる

---

### **2. `title!: string;`**
これは **TypeScript の型定義** をしている。  

```ts
title!: string;
```
- **`title`**：このコンポーネント内で使うプロパティの名前
- **`!:`**  
  - `!` は「この変数は絶対に値があるから、`undefined` じゃないよ」と TypeScript に伝えるためのもの。  
  - TypeScript の **「プロパティの初期化チェック」** を無効にする役割がある。
- **`: string;`**：この `title` は **文字列（string）** のデータを受け取るよ、という意味

---

### **3. 親コンポーネントからの受け渡し**
この `title` は、親コンポーネントで **次のように値を渡す** と使える。

```vue
<test-title title="これはテストタイトル" />
```
この `title="これはテストタイトル"` の部分が、子コンポーネントの `title` に渡る。

---

### **まとめ**
```ts
@Prop({ required: true }) // 親コンポーネントからのデータを受け取る（必須）
title!: string;           // `title` は必ず存在し、文字列である
```
これによって、親から渡された `title` の値を **子コンポーネントで受け取って使える** ようになる！
DBeaverでのテストデータ管理

# DBeaverでのテストデータ管理

DBeaverを使い始めて1ヶ月が経ちます。テストデータを作成したり、テスト結果を確認したりしていましたが、もっと効率よくテストができないかと思い、DBeaverの使い方を調べてみました。
この投稿は、DBeaverを初めて使う方や、テストデータの作成に時間がかかってしまう方にお勧めです！

## 概要
DBeaverのスクリプト機能を用いて、テストデータを管理する

## 課題
DBeaverは機能が豊富ですが、テーブル編集画面はExcelと比べると使いづらさを感じることがありました。例えば、オートフィル機能がなかったり，セルでの関数が使えなかったり…

### 従来の管理方法
テーブル編集はExcelの方がやりやすいと感じたので，Excelにテーブルごとのシートを作成してテストデータを管理していました。テスト時はExcelで編集したデータを用意してDBeaverにコピーしていました。
DBeaverの「高度なコピー」を使えば，カラム名や元のデータも簡単にExcelにコピーすることができます。この方法でもExcelの作成・編集まではそれなりに楽にできて，Excelにテスト前のデータを残しておけるというメリットもありました。

<small>高度なコピー</small>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512900/242b4e02-4bec-4070-9104-c55d8488e7a7.png" width="50%">

オプションで「Copy header」にチェックを入れるとカラム名もコピーできる
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512900/8d5e1c99-817a-44f6-ba39-df1c245d2f26.png" width="50%">

Excelへの貼り付け
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512900/7452c810-a5c2-4347-b53c-54274a0b41f5.png" width="50%">

しかし，この方法ではDBeaverへのコピー後、Nullが設定されていないことがあります。
その場合、Nullを入れ直す必要があります。
また、テーブルごとにコピペするのでテーブルの量が多い時はかなり大変です。さらに，同じテストをもう一度実行したい時は、この作業を繰り返す必要があり非効率的です。

データ型によっては空白ではエラーになる
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512900/fce5e6f2-dfda-4d92-97b3-d0f820c0d02f.png" width="50%">


## 解決策
DBeaverのSQLスクリプトを管理する機能を用いてテストデータを管理します。
これには以下のメリットが挙げられます。
  - SQLを実行すればすぐにテストデータが作成できるようになる
  - 複数のテーブルも一度のSQLで更新できる
  - Nullを明示的に指定することができる

### やり方
1. **プロジェクトの作成:**
   - DBeaverで新しいプロジェクトを作成し、テストごとにフォルダ名を設定する（例：UserTest）
   <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512900/360aca85-7523-4692-9f6a-00c0b34de08c.png" width="50%">

2. **スクリプトの作成:**
   - Excelで編集したテーブルのデータをAIツールに投げて、1つのSQLスクリプトとして生成してもらう
   - 値がないところにはNULLを設定してもらう
   - データが既に登録済みの場合もあるためアップサートするスクリプトを作成してもらう

3. **スクリプトの保存:**
   - DBeaver左上のSQLから「新しいSQLエディタ」を選択しエディタを開く
   <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512900/6c0441f3-d05d-4841-9620-27e0d79d0363.png" width="50%">
   
   - 生成したスクリプトを貼り付けて、作成したフォルダに名前を付けて保存する（例：test01.sql）
   <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512900/5765a56d-aa0a-4374-8eb1-a3306659350e.png" width="80%">


4. **スクリプトの実行:**
   - スクリプトを実行すれば、テストデータの登録が完了する
   エディタの三角マークかcommand+Enter（WindowsはCtr+Enter）で実行できる

5. **実行結果:**   
   usersテーブル（NULLで指定したところはNULLになっている）

   <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512900/35de277d-e9e1-4791-81ad-df482c309688.png" width="50%">
   
   productsテーブル
   <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512900/1848410a-2457-40e6-a597-3f91f275d8cd.png" width="50%">
   これで次回以降もこのスクリプトを実行すればテストデータを簡単にセットできます！

## 結論
DBeaverを活用することで、手動での操作負担を減らし、効率的かつ安全にテストデータを管理できます。より良い方法や使える機能があれば教えていただけると幸いです。

## さいごに
- **データの保護:** 機密情報を含む場合、AIの使用には十分注意してください
- **バージョン管理:** Gitなどのバージョン管理システムと連携することで、SQLスクリプトの変更履歴を追跡でき、グループ内でのスクリプトの共有が容易に行えます
ダイソーの550円の無線マウスをArchLinuxで動かす。

　ダイソーに無線マウスが330円と550円で売っていた。手持ちの無線マウスもスイッチがチャタリングを起こしているので、少しでも良い方をと思い、330円のは避けて、550円のを買ってきました。最初は動かなかったけど、AURにあるsolaarというパッケージをインストールしたら動きました。Qiitaにはダイソーというタグもあるのね。

 ```
 #### installation
 yay -S solaar
 #### execution
 solaar
 ```

 　solaarを起動した後にワイアレスドングルを挿入する必要があります。リブートしても動きました。wifiが2.4GHz帯、無線マウスも2.4GHz帯ですが、何とか干渉せずにやってくれているようです。
 
 　しかし、さすが安物、手に馴染まない。
複素数平面(その3/3)「2025 慶応義塾大学 理工学部【１】(1)のみ」をAI先生へ、xy平面を使った問題文に書き換えて下さい。

>データ分析の制限に達しました。

・???mathajax わかりませんでした。

:::note info
[(その1/3) sympyとFreeCADで](https://qiita.com/mrrclb48z/items/53217e7e6c0f2222dd6e)
[(その2/3) AI先生へ丸投げ](https://qiita.com/mrrclb48z/items/3b8956be73316f275cb2)
(その3/3) 本ページ
:::

# (再出)オリジナル
**・問題文(mathjax テキスト形式)**
　大学入試数学問題集成 様。いつもお世話になっております。
　2025 慶応義塾大学 理工学部MathJax【１】(1)
　https://mathexamtest.web.fc2.com/2025/202513338/2025133380300mj.html#top-0301
　https://mathexamtest.web.fc2.com/daigakubetumj/13338index.html
　https://mathexamtest.web.fc2.com/index.html

# (本日の)ChatGPT先生へ
```
下記の複素数平面の問題文そのものをxy平面を使った問題文に書き換えて下さい。

<p class="s1level"><a name="q-0301" 
id="q-0301"></a><span 
class="qnum">【１】</span><a 
name="s-0301" id="s-0301"></a><span 
class="shomon1">(1)</span>　複素数平面上で，方程式<math>
<mspace width=".2em"></mspace><mrow><mo rspace=".2em">|</mo><mi>z</mi><mo>+</mo><mi>i</mi>
<mo lspace=".2em">|</mo><mo>=</mo><mn>2</mn><mo>&it;</mo><mo lspace=".2em" rspace=".2em">|</mo>
<mi>z</mi><mo>-</mo><msqrt><mn>3</mn></msqrt><mo lspace=".2em" rspace=".2em">|</mo></mrow>
</math>を満たす点<math>
<mspace width=".2em"></mspace><mi>z</mi><mspace width=".2em"></mspace>
</math>全体が表す図形は，中心が<math>
<mspace width=".2em"></mspace><mrow><mrow class="b1box"><mspace width="1em"></mspace>
<mtext>(ア)</mtext><mspace width="1em"></mspace></mrow><mspace width=".2em"></mspace><mtext>，</mtext></mrow>
</math>半径が<math>
<mspace width=".2em"></mspace><mrow class="b1box"><mspace width="1em"></mspace><mtext>(イ)</mtext>
<mspace width="1em"></mspace></mrow><mspace width=".2em"></mspace>
</math>の円である．
</p>
```
#### 質問リスト
・質問リストの追番は無視して下さい。１個ずつです。
　途中の回答表示は省略しています。
・上記をmathjaxのソースコードで教えて下さい。
```math
<p><strong>【1】</strong> (1)　xy平面上の動点 \((x, y)\) が、次の条件を満たすとする。</p>

\[
|(x, y) - (0, -1)| = 2 |(x, y) - (\sqrt{3}, 0)|
\]

<p>このとき、動点 \((x, y)\) が描く軌跡は、中心が <strong>(ア)</strong> 、半径が <strong>(イ)</strong> の円となる。</p>

<p><strong>(ア)、(イ) に当てはまる値を求めよ。</strong></p>
```
・上記をsympy のソースコードで教えて下さい。
```python
from sympy import symbols, Eq, sqrt, solve

# 点の座標を変数として定義
x, y = symbols('x y')

# 距離の定義（ユークリッド距離）
d1 = sqrt((x - 0)**2 + (y + 1)**2)  # |(x, y) - (0, -1)|
d2 = sqrt((x - sqrt(3))**2 + (y - 0)**2)  # |(x, y) - (√3, 0)|

# 方程式の定義
eq = Eq(d1, 2 * d2)

# 円の方程式を求める
circle_eq = solve(eq, y)
print(circle_eq)
```
・作図もお願いします。

![9cf016cb-f025-4d0f-8543-60cedd625ff3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/7496873a-a4c3-425a-939e-8dbaf0477769.png)

>修正後の結果は、円の中心が (2.31,0.33)半径が 1.33 となりました。

上記を小数表示でなく、分数、無理数表示で。

>データ分析の制限に達しました。

あきらめました。


# Gemini先生へ


# copilot先生へ

# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342)

https://qiita.com/mrrclb48z/items/b6351b48e47bcf6265c0

# いつもと違うおすすめです。

#### Qiita内
＞MathMLの勉強を開始

https://qiita.com/mrrclb48z/items/40ceadf74a7562aaeafa#MathMLの勉強を開始
PDALでLAS/LAZに変換する場合はscaleを設定しましょう

:::note info
要約：PDALでLAS/LAZに変換するときは`scale_x`, `scale_y`, `scale_z`を忘れず設定しましょう
:::
言いたいことは上記のとおりです。 
PDALを使ったファイル形式変換の設定漏れでヒヤッとしたため共有します。

---

点群データのファイル形式を変換する際にPDALを利用することが多いかと思いますが、  
LAS/LAZ形式に変換する際にscaleの設定を忘れると、データによってはXYZ座標の精度が大きく悪化します。

具体例としては以下のコマンドで点群データをPDALでLAS形式に変換します。
```
pdal translate bunnyInt32.e57 bunnyInt32.las
```
その結果、変換後のデータがこのようにスカスカになってしまいました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3770153/92fb6e8d-aa67-4635-9eb0-e5039dc28ff3.png)

これはPDALのLAS変換で使用される、writers.lasの設定値`scale_x`, `scale_y`, `scale_z`が適切に設定されていないことが原因です。（`scale_x`, `scale_y`, `scale_z`のデフォルト値は`0.01`）
https://pdal.io/en/stable/stages/writers.las.html
> Scale to be divided from the X, Y and Z nominal values, respectively, after the offset has been applied. The special value auto can be specified, which causes the writer to select a scale to set the stored values of the dimensions to range from [0, 2147483647]. [Default: .01]


そのため、変換前の点の間隔が`0.01`よりも細かい場合は点の位置が`0.01`間隔に丸められ、上記のようなスカスカな点群データとなってしまいます。  
（複数の点が同じ座標に丸められても重複分の点が削除されるわけでもないためファイルサイズ的にも単純に損）

この場合は、以下のように`writers.las.scale_x,y,z`をより小さい値に設定すればOKです。
```
pdal translate --writers.las.scale_x=0.001 --writers.las.scale_y=0.001 --writers.las.scale_z=0.001 bunnyInt32.e57 bunnyInt32.las
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3770153/5bfd1da3-2c9b-40ca-a591-a520630ff56a.png)

ただ毎回設定するのが面倒くさいので、以下のようにパイプライン用のjsonファイルを用意しておき、
```
{
  "pipeline": [
    "input.e57",
    {
      "type": "writers.las",
      "filename": "output.las",
      "scale_x": 0.001,
      "scale_y": 0.001,
      "scale_z": 0.001
    }
  ]
}
```

`pdal pipeline`で呼び出すのが良いかもしれません。
```
pdal pipeline pipeline.json
```

---
いやまあPDALのチュートリアルにも記載されているので、ツールを利用する前にドキュメントを読めよという話ですが…
> Remember to set offset_x, offset_y, scale_x, and scale_y values to something appropriate if your are storing decimal degree data in LAS files. The special value auto can be used for the offset values, but you should set an explicit value for the scale values to prevent overdriving the precision of the data and disrupting [Compression] with LASzip.
https://pdal.io/en/stable/tutorial/las.html
OCIへのログイン時にMFA認証が失敗した際の対処法

## OCIにログインできなくなってしまった...
OCIにログインする際はスマホのAuthenticatorアプリを利用してMFAの認証を行う必要があるのですが、先日、個人用アカウントで久々にログインしようとしたら、iPhoneの非使用アプリの自動削除機能で、見事Authenticatorアプリが削除されてしまい、OCIにログインできなくなってしまいました（不覚...）。

本来であれば、別の管理者アカウントでファクタのリセットなどを行うところですが、個人用であれば別のアカウントがないケースもざらだと思うので、そういった場合の対処法を今回は紹介できればと思います。

## 対処法
一番簡単な対処法としては、https://www.oracle.com/jp/cloud/ を開き、ライブチャットでOracleの担当者にMFA認証をリセットしてもらう方法です。
ライブチャットなのでリアルタイムで担当者とやり取りすることができるため、わざわざMy Oracle Cloud SupportでService Requestを起票するより手軽かと思います。

※ただし、契約形態、アカウントの種類によってはライブチャットで対応できず、Service Requestを案内される可能性もあります。今回試した環境は、個人用の無償環境になりますのでご留意ください。

### 手順
**①**
[こちらのページ](https://www.oracle.com/jp/cloud/)を開いたら、チャットのアイコンをクリックして、「チャットを開始」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/a3920a32-efa4-4c3e-b242-25a6f5e68ba1.png)

**②**
登録したEmailアドレスを入力し、画像の通り該当箇所にチェックを入れ、「Start chat」をクリックします。その後、「Other Issures」をクリックし、「MFA」と入力します (実際「MFA」と入力しなくても他の単語とか何でも大丈夫です)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/935d8de7-8cca-48b4-a3f5-46ed0c5d083a.png)

**③**
「Chat with a live agent」をクリックすると、担当者とのチャットが始まるので、MFAのリセットが必要なことなどを伝えましょう。
ちなみに私はこんな感じで入力しました。
>Hi, I’m locked out of my Oracle Cloud account because I lost access to my MFA device (I accidentally deleted the authenticator app).  Could you please help me reset my MFA or guide me through the recovery process?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/4ba5dc4b-9a79-4c67-810f-bf80e88b107b.png)

**④**
あとは、担当者から色々と個人情報を共有してほしいと言われるので、対応していきます。
私の場合は、「メールアドレス」「テナンシ名」「アカウントと紐づいている電話番号」「クレジットカードの下4桁と有効期限」の4つがほしいと言われました。

**⑤**
必要な情報を共有したら、「また3時間後にログインして、MFA用の新しいデバイスを登録してみて」と言われました。
また、多要素認証（MFA）のリセットリクエストは平日 (営業日)のみ処理されるそうなので、もしかしたらログインできるようになるまでラグがあるかもしれません。

## まとめ
今回は、OCIへのログイン時にMFA認証が失敗した際のMFAのリセット方法についてご紹介しました。
この記事が少しでも参考になったと思っていただけたら嬉しいです。
今後も役立つ情報を発信していきますので、ぜひまた覗いてみてください。

## 余談
ちなみにですが、OCIのMFA認証の際は、Oracleが提供するOracle Mobile Authenticator (OMA)以外のAuthenticatorアプリを使用することも可能だったりします。
Oracleの[Identity Domainsのドキュメント](https://docs.oracle.com/ja-jp/iaas/Content/Identity/mfa/configure-authentication-factors.htm)を見てみると、以下のような記載があります。
>IAMは、TOTP (時間ベースのワンタイム・パスワード)アルゴリズムの仕様に準拠したサードパーティ認証アプリケーション(Google Authenticatorなど)とも連携します。

例として、Google Authenticatorが挙げられていますが、Microsoft AuthenticatorなどもTOTPアルゴリズムに準拠しているので使えることになります。
Authenticatorアプリを1つにまとめたほうが、管理もしやすくなると思いますのでご参考までに。
ARカメラマンは荷物を減らしたい！ スマホだけで快適に撮影する工夫3選

こんにちは、ARエンジニアのせぎゅです。  
普段はARアプリ開発やARコンテンツ制作の仕事をしており、趣味でもAR作品を制作しています。

趣味で制作したAR作品はこんな感じです。

https://x.com/segur_vita/status/1853757150214173173

旅先などで「この場所、ARと合成したら面白そう！」と思ったとき、カフェでさくっと作品を作って、その日のうちに現地で撮影することもあります。

## AR作品の撮影は“外”が基本！

AR（Augmented Reality）とは、現実世界にCGを重ね合わせる技術です。  
つまり、自宅やオフィスで完結するような作業とは異なり、「現地での撮影」が必要不可欠になります。

しかし、外出先での撮影には制約も多いです。  
特に、以下のような環境制限があります。

- 電源の確保が難しい  
- 高速インターネット回線がないことも多い
- 機材を大量に持ち込むのが困難  

結果的に、**スマホだけで撮影を完結させる**のが効率的になってきます。
そんなARカメラマンとしての外ロケ経験から、便利だったツールや工夫をご紹介します。


## 1. 手ぶれ補正ツール

ARアプリには基本的に手ぶれ補正がありません。  
iPhoneの標準カメラのような自動補正は期待できません。

### ハードウェア（ジンバル）での手ぶれ補正

物理的に補正するにはジンバルを使うのがベストですが、観光地など**自撮り棒が禁止されている場所**では使用できないこともあります。

| <img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/0606a29b-51cd-4219-b9bf-98e027e23761.png" /> |
|:---:|
| 転載元: 国土交通省「自撮り棒禁止ピクトグラム」<br>https://www.mlit.go.jp/kankocho/responsible-traveler/dl/pictogram-001.html |

そもそも荷物が増えますし、終盤で電池が切れて使えなくなることもあります。

### スマホアプリでの手ぶれ補正

そんなときに便利なのが、**ソフトウェアによる手ぶれ補正**です。  
たとえば「CapCut」には有料ですが手ぶれ補正機能があります。スマホアプリなのでPCなしで完結します。
撮影直後にその場で補正できるのが大きなメリットです。「その日のうちにXに投稿したい！」というときにも、強い味方です。

| <img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/263fbe25-ff05-4262-95b6-a8db606696dc.png" /> |
|:---:|
| iPhone版CapCutの手ぶれ補正機能を利用している様子 |

### PCソフトでの手ぶれ補正

macOS標準の「iMovie」も手ぶれ補正が可能です。（無料）  

https://support.apple.com/ja-jp/guide/imovie/mov52b5a78a6/mac

Windowsにも同様のツールがあると思うので、環境に合わせて探してみてください。


## 2. レンタサイクル

撮影スポットを複数まわると、「やっぱり最初の場所を撮り直したい！」と思うこと、ありませんか？  
正直、**必ず起こります。絶対にあります。**

徒歩では往復に体力も時間もかかります。  
そんなときにレンタサイクルがあると、気軽に行ったり来たりできてとても便利です。

### 事前準備が重要！

レンタサイクルのサービスは地域ごとに異なります。  
旅行や出張の**前に**以下を済ませておくとスムーズです。

- アプリのインストール  
- 会員登録やクレカ登録  
- 利用エリアやポートの確認  

現地でこうした手続きをするのは時間のロスになりがち。  
特にクレジットカードのエラー対応などで、貴重な撮影時間が失われることもあります。


## 3. 撮影データの整理術

複数の撮影スポットを巡ると、写真や動画が大量にスマホにたまります。  
数日後に編集しようと見返したとき、「これどこで撮ったっけ…？」となることが多いです。

### アルバムで分類

以下はいずれもアルバム機能があります。

- iPhoneの「写真」アプリ  
- Googleフォト  

**撮影が一段落したら、すぐにアルバムに追加する**習慣をつけると、後からの整理がラクになります。

### 急いでるときの裏ワザ：メモ写真

時間がないときは、目印として指の写真を撮っておくのもおすすめです。

- スポット①：指1本の写真を撮る  
- スポット②：指2本の写真を撮る

こうしておけば、「この写真以降はスポット①だな」と、あとで簡単に区別できます。

| <img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/0f478c33-ac18-476e-b210-13ba16864c33.png" /> |
|:---:|
| 指1本の写真を撮って、写真一覧内の目印にしている様子 |


## さいごに

AR作品の撮影は、移動・撮影・編集とやることが多いですが、**スマホだけでも工夫次第で快適に進められます。**  
これからAR撮影を始めたい方や、ロケの効率を上げたい方の参考になれば嬉しいです。


## 参考リンク

- 国土交通省「自撮り棒禁止ピクトグラム」  
  https://www.mlit.go.jp/kankocho/responsible-traveler/dl/pictogram-001.html
- https://support.apple.com/ja-jp/guide/imovie/mov52b5a78a6/mac
AWS IAM（Identity and Access Management）とは？初心者でもわかる基本と使い方

# AWS IAM（Identity and Access Management）とは？初心者でもわかる基本と使い方

こんにちは。  
最近AWSを使い始めた方の中には、「IAMって何？」と戸惑う方もいるかもしれません。私も最初にAWSを触ったとき、「何となく設定しているけど、正直よくわかってない…」という状態でした。

この記事では、AWS IAMの基本的な考え方から、よく使う設定方法、初心者がハマりやすいポイントまで、できるだけわかりやすく紹介します。

---

## IAMってそもそも何？

IAMは「**Identity and Access Management**」の略で、その名の通り「誰が」「何に」「どこまでアクセスできるか」を管理する仕組みです。

もっとカンタンに言うと、

> **AWSのアカウントを使う人やアプリが、どんな操作をしていいのか？を決めるルール帳**

のようなものです。

---

## ざっくり構成要素

IAMには主に以下のような登場人物がいます：

- **ユーザー（User）**  
　→ 実際にAWSを使う人。自分自身やチームメンバーなど。

- **グループ（Group）**  
　→ ユーザーをまとめて、共通の権限を設定できる単位。

- **ロール（Role）**  
　→ ユーザーではなく、アプリやサービスに割り当てる「仮のID」みたいなもの。EC2やLambdaがAWSを操作するときに使います。

- **ポリシー（Policy）**  
　→ 「この人はS3を読んでいいけど、書き込みは禁止」みたいなルール。JSON形式の設定ファイル。

---

## 初心者向けの使い方ステップ

### 1. ルートユーザーは使わない

AWSアカウントを作成した直後は「ルートユーザー」という全権限持ちのIDが1つあります。でもこれは**普段使いしないのが原則**です。セキュリティ的にとても危険なので、最初に以下の対応をしましょう。

- IAMユーザーを作成  
- 管理者権限（`AdministratorAccess`）を付与  
- ルートユーザーではログインしないようにする

---

### 2. IAMユーザーを作ってみる

マネジメントコンソールで以下の手順で作れます：

1. IAMダッシュボード → 「ユーザー」 → 「ユーザーを追加」  
2. 名前を入力（例：`dev-taro`）  
3. アクセスの種類を選ぶ（通常は「プログラムによるアクセス」「コンソールアクセス」どちらか or 両方）  
4. 権限を付ける（グループ経由 or 直接ポリシー付与）  
5. 作成完了！

---

### 3. 最低限覚えておきたいポリシー

AWSにはたくさんのポリシーがありますが、最初はこれだけ覚えておけばOKです。

| ポリシー名 | 説明 |
|------------|------|
| `AdministratorAccess` | すべての操作が可能（管理者向け） |
| `AmazonS3ReadOnlyAccess` | S3の読み取りのみ可能 |
| `AmazonEC2FullAccess` | EC2の操作がすべて可能 |

---

## ハマりポイント：アクセス拒否（AccessDenied）

よくあるのが、操作しようとしたら「AccessDenied」みたいなエラーが出るケース。

これはだいたい「ポリシーが足りない or 間違ってる」ことが原因です。

- S3にアクセスできない？ → `AmazonS3FullAccess` つけた？
- EC2の操作ができない？ → `AmazonEC2FullAccess` つけた？

慣れるまでは公式ポリシーを付ける→挙動確認→絞り込む、という流れがわかりやすいです。

---

## ベストプラクティス（初心者向け）

- ルートユーザーは基本使わない  
- MFA（多要素認証）をオンにする  
- ユーザーに必要最低限の権限だけを与える  
- 作業用アカウント・閲覧用アカウントなどを使い分ける  

---

## 最後に：IAMは地味だけど超大事

IAMは「設定がちょっとめんどくさい」「エラーも多い」という印象があるかもしれません。でも、AWSの世界ではセキュリティと権限管理がとても大切。慣れてくると「ああ、IAMってすごく理にかなってるな」と思えるようになります。

「なにそれ？」と思いながら設定するより、「あーこれがIAMね」と思えるだけで、AWSの世界がちょっと身近に感じられるはずです。

---

## 参考リンク（公式）

- [IAM ユーザーの作成 - AWS公式](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users_create.html)  
- [ポリシーの概要](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies.html)
「アポロニウスの円を教えて下さい。」をAI先生に聞きました。

**・(本日の)ChatGPT先生が、いつもと違ってステキです。
　もしかしたら、新任の先生かも。
　私はついていけません。**
```
(以下抜粋)
方程式の導出（参考）
【もし希望があれば】
k を動かせるアニメーション版
任意の A, B, k を入力してすぐ描画する関数化
円の中心・半径を直接計算する版
必要なら、このアニメーションを GIF や MP4 として保存するコードも付けられます。
🚀 もし発展させたいなら
…
```
>GPT-4o. の Free プランの制限に達しました。

# (本日の)ChatGPT先生へ
#### 質問リスト
・質問リストの追番は無視して下さい。１個ずつです。途中の回答表示は省略しています。
```
# 質問リスト
1. アポロニウスの円を教えて下さい。
2. 上記をsympyのソースコードで教えて下さい。
3. k を動かせるアニメーション版で
4. 追加で、複素数平面をsympyのソースコードで教えて下さい。
5. 私の質問をMarkdown形式でリスト化して出力して。Markdown形式でリストからアスタリスクは削除して。1行目に、# 質問リスト の文字を出力して。
6. 上記に追番を付けて下さい。
7. 回答リスト形式もお願いします。
8. 質問＋回答セットの一覧 (Q&A形式) もお願いします。
9. 私の質問をMarkdown形式でリスト化して出力して。Markdown形式でリストからアスタリスクは削除して。1行目に、# 質問リスト の文字を出力して。追番も追加して。
10. 全部お願いします。このコメントも含めて下さい。
```
>...では Matplotlib の FuncAnimation を使って、k を動かしながらアポロニウスの円がどう変化するか見えるアニメーション版を作ります。
```python
import sympy as sp
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

# 設定: 点 A, B
A = np.array([0, 0])
B = np.array([4, 0])

# 円の中心・半径を計算する関数
def apollonius_circle(A, B, k):
    a, b = A, B
    d = np.linalg.norm(a - b)
    center = (k**2 * b - a) / (k**2 - 1)
    radius = (k * d) / abs(k**2 - 1)
    return center, radius

# 描画準備
fig, ax = plt.subplots()
circle_artist = plt.Circle((0, 0), 1, fill=False, color='blue')
ax.add_artist(circle_artist)
ax.plot(A[0], A[1], 'ro', label='A')
ax.plot(B[0], B[1], 'go', label='B')
ax.set_xlim(-10, 10)
ax.set_ylim(-10, 10)
ax.set_aspect('equal')
ax.legend()
title = ax.set_title('k = 1')

# アニメーション更新関数
def update(frame):
    k = 0.2 + frame * 0.05  # kを0.2から徐々に増やす
    if abs(k - 1) < 0.1:    # k ≈ 1 のときは飛ばす（円が無限大）
        k += 0.1
    try:
        center, radius = apollonius_circle(A, B, k)
        circle_artist.center = center
        circle_artist.set_radius(radius)
        title.set_text(f'Apollonius Circle (k = {k:.2f})')
    except:
        pass
    return circle_artist, title

# アニメーション実行
ani = FuncAnimation(fig, update, frames=100, interval=100, blit=False)

plt.show()
```
>...今度は 複素数平面 を使ったアポロニウスの円の定義と、SymPy を使ったソースコードをお伝えします。
```python
import sympy as sp
import matplotlib.pyplot as plt

# シンボル定義
z = sp.symbols('z')
a = 0 + 0j  # 点A (複素数)
b = 4 + 0j  # 点B (複素数)
k = 2       # 距離比

# アポロニウスの条件式
eq = sp.Eq(sp.Abs((z - a) / (z - b)), k)

# z = x + iy として実数成分で展開
x, y = sp.symbols('x y', real=True)
z_sub = x + sp.I * y
eq_real = eq.subs(z, z_sub)

# 展開・簡単化
lhs = sp.simplify(sp.Abs((z_sub - a) / (z_sub - b)))
eq_final = sp.Eq(lhs, k)

# 確認
print("複素数平面でのアポロニウスの円の方程式:")
sp.pprint(eq_final)

# グラフ描画
sp.plot_implicit(eq_final, (x, -2, 6), (y, -4, 4))
plt.title(f"Apollonius Circle in Complex Plane (k={k})")
plt.show()
```


# Gemini先生へ


# copilot先生へ

# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342)

https://qiita.com/mrrclb48z/items/b6351b48e47bcf6265c0

# いつもと違うおすすめです。
### wikipedia

https://en.wikipedia.org/wiki/Circles_of_Apollonius

https://ja.wikipedia.org/wiki/アポロニウスの円
Cursor MCPを設定してプライベートリポジトリのPRにアクセスする

## 背景
最近仕事でCursorを使うようになったのですが、使いこなせてる感があんまりしないのでキャッチアップを兼ねて機能の使い方をまとめておくことにしました。

今回はCursor Agentと外部サービスのデータの連携をスムーズに行えるようになるCursor MCPを使ってGithubとのCursorの連携を行います。

[Cursor 公式](https://docs.cursor.com/context/model-context-protocol)


## 設定手順
#### 1. Githubのアクセストークン取得(すでにある場合はskip可)
まず、以下のGithubにAPIアクセスするためのトークンを取得します。


**取得場所**
Settings > Developer settings > Personal access tokens > Fine-granted tokens

※Tokens(classics)の方でも機能はしますが、より細かいアクセス制御ができるのでFine-granted tokensを使用しています。

自分はこんな感じでやってます。
リポジトリを指定したうえで、必要最小限の読み書きの権限を渡しています。現段階ではエージェントが予期せぬ行動を取らないとは保証できないので予防策です。

![スクリーンショット 2025-03-29 17.56.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/965999/8950be32-ec3d-4140-8b92-d50e36043fcb.png)


#### 2. MCPサーバ起動用のシェルスクリプトを作成
MCPサーバーをnpxで起動するためのシェルスクリプトを書いておきます。git管理外であれば場所はどこでもいいと思います。

```sh:run_mcp_server.sh
env GITHUB_PERSONAL_ACCESS_TOKEN=github_pat_XXXXXXXXXXXXXXXXXXXX npx -y @modelcontextprotocol/server-github --stdio
```

#### 3. Cursor Settingsからスクリプトを実行する
MCPサーバを起動するときに、作ったシェルスクリプトを実行するようにコマンドを設定します。名前は任意のもので大丈夫です。

![スクリーンショット 2025-03-29 18.04.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/965999/119c7573-8504-449a-80dc-6956a35c1c82.png)

#### 4. リポジトリを参照できているか確認
トークンにアクセス権限が付与されているプライベートリポジトリにおいて、適当なPRを作ってどんな変更があったかエージェントに聞いてみました。

今回はnextjsのプロジェクトにshadcnというライブラリを入れてます。
**(左下赤枠にある通り、Agentモードを使用することを忘れないようにしてください。)**

![スクリーンショット 2025-03-29 18.26.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/965999/bcb8aca7-6fd8-476b-bd22-93ba63d72954.png)

変更内容も簡潔にまとめてくれました。無事PRにアクセス出来ているようですね。

## 所感
この設定をしておくと
- issueを背景情報としてAgentに与えたうえで、PRの一次レビューをしてもらう
- issueを読みこませて大まかな開発のロードマップを引いてもらう

などなど、日々の開発のサポートをしてくれそうです。まだまだcursorを全然使いこなせてないので今後も継続的にキャッチアップしていきたいです！
SwiftUIボタンに不審な枠ができる

通常このような枠の無いボタンに、枠が出来ていたと報告がありました。

通常
![スクリーンショット 2025-03-29 18.54.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/5a47b20f-8906-449d-b8c4-2b78accbe627.png)

枠有り
![スクリーンショット 2025-03-29 18.54.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/19720938-959b-488f-9d42-e81dc8616815.png)

この二つのコードは全く同じです。

端末の設定でボタンの形がONになっているかもしれません。
# 確認方法
アクセシビリティをクリック
![Simulator Screenshot - iPhone 16 Pro - 2025-03-29 at 18.53.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/93a754e7-a42d-40cd-ae7c-46570805fcbe.png)

画面表示とテキストサイズをクリック
![Simulator Screenshot - iPhone 16 Pro - 2025-03-29 at 18.53.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/fbd6bfb8-63bf-401a-9a40-88d2b77046b5.png)

ボタンの形があるのでここをONにすると確認ができます。
![Simulator Screenshot - iPhone 16 Pro - 2025-03-29 at 18.54.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/6e125b5f-5468-47f3-907d-5fe9dd9e2791.png)
Jaws Days 2025 に行ってきたよ

新米エンジニアの稲穂です。
JAWSDAYSをみなさんご存知ですか？

AWSの勉強会コミュニティJAWS−UGの有志が全国から集まる1年に一度のお祭りです。
AWSの学習応援や、AWSを取り入れている企業様やAWSの支援システムを展開している企業様、
AWS様が協賛し毎年開催されています。今年は3月1日に開催でした。
今回は遅ればせながら参加レポートを記載します。
![promotion-facebook.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4046203/66294e8f-7941-4341-bce0-4ae8ad4ef38b.png)

こちらはサンシャインに向かう通りの垂れ幕です。
![PXL_20250301_082803451.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4046203/9c144cdb-e5f0-4794-a4a5-911c92022777.jpeg)

　私は初参加一人で飛び込んできたんですが、結構なボリュームにLTが目白押しで選べない；
著作権の兼ね合いで画像は挙げられないですが、頭パンパンになるくらい楽しかったです。

　AWSをアメリカ本国で支え続けてきたジェフ様や
代表長崎様のご挨拶を皮切りに皆様のLTがスタート
私は初心者でもわかりやすそうなゆるそうなLTをメインに回っていました。

・IAMの薄い本で爆発的に売れすぎた佐々木さんのLT
少し前ではルートユーザーはつかうな他IAMユーザーを使えというのが定説だったのですが
IAMもう今はユーザーも良くなくてロールで、組織全体で認証許可を制御しようを皮切りに

・肌年齢計測アプリで一躍有名になったポーラのエンジニアお二人による
大昔のPCゲーム実はAWSで遊べちゃうの知ってる？というVM最近吸収したAWSならではの
レガシーシステムのオンプレからクラウド移行提案にも役立ちそうな
ゲーム好きも嬉しいゆるいギークなLTから

チームトポロジー、コミュニケーションやマネジメントを動的にシステムに合わせて進化させようというお話や
地方金融機関、大手企業のAWS導入事例にAI,Badrockのセキュリティ導入事例、
JrチャンピオンさんのセキュリティやAPI、DB管理のベストプラクティス、Iotシステムや地図アプリとAWSの連動、初心者むけmini Secyrity JAWSでもお馴染みクラスメソッド様の７連続LT会まで、テーマ通り初心者でも楽しかったです。

　休憩所にもなっている全国を回るAWSのお祭りトラックコーナーでは
有志の皆さんのお土産おやつコーナーやスタバのコーヒー無料コーナー:coffee:や
参考書籍の交換所や質問掲示板まであって、みなさん初対面同士でも和気藹々AWSが共通言語になってお茶されており楽しそうでした。

私は参加してないのですが事前予約制のアーキテクチャ道場やBildersCardの選手権などもあったそうで次は参加してみたい！🦈

↓画像は会場でもらえた協賛企業様や他の国のJAWSやAWSの皆様のステッカーです。
これの本当は４−５倍協賛の皆様や個人のステッカーや資料がありました。
![PXL_20250329_092127501.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4046203/042aac92-09a6-4a75-8bb6-b9ef1bfc7af5.jpeg)

![PXL_20250329_091833876~2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4046203/3a232fae-9508-4965-a084-014af7a891c6.jpeg)

ペットボトルとお財布だけあれば資料入れる大きなカバンももらえるので何も入りませんでした。次はお財布だけ持っていこう

いつまでも技術の学びに全力投球の皆さんに最前線から元気をもらえる最高の1日でした。

何から始めたらいいかわからない人もまずお祭りに参加してみてもいいかも
人気すぎてキャンセル待ちも多いJAWS DAYS　
AWS学びたい方には楽しいのでぜひ参加をお勧めします。

協賛企業の皆様、有志の皆様、LT登壇の皆様
素敵な学びの時間をありがとうございました。
🔐【まとめ】AWSのセキュリティ系サービス一覧と役割


AWSでは、クラウド環境を安全に保つために多くのセキュリティ関連サービスが提供されています。この記事では、その中でも特に使われることの多い主要なセキュリティサービスを、役割別にわかりやすく解説していきます。

---

## ✅ 目的別：適したセキュリティサービス一覧

| **目的** | **適したサービス例** |
|----------|----------------------|
| AWS内でL7の細かい制御 | AWS WAF |
| 大規模DDoS対策 | AWS Shield Advanced / Cloudflare / Akamai |
| 複数アカウントのポリシー管理 | AWS Firewall Manager |
| 行動監視・検知 | Amazon GuardDuty |
| 脆弱性スキャン | Amazon Inspector |

---

## 🧱 カテゴリ別：セキュリティ系サービスまとめ

| **カテゴリ** | **サービス** | **主な役割** |
|--------------|--------------|--------------|
| ネットワーク防御 | AWS WAF / AWS Shield / AWS Firewall Manager | 攻撃遮断、WAFやShieldの一括管理 |
| 検知・モニタリング | Amazon GuardDuty / AWS CloudTrail / Amazon Detective | 異常検出、操作履歴追跡 |
| 脆弱性管理 | Amazon Inspector | OSやアプリの脆弱性スキャン |
| ID・認証管理 | AWS IAM / AWS SSO / Amazon Cognito | ユーザー管理、アクセス制御 |
| 暗号化・データ保護 | AWS KMS / Secrets Manager / Amazon Macie | 鍵管理、機密情報保護 |
| コンプライアンス対応 | AWS Config / AWS Audit Manager | リソース変更の監査、ガバナンス支援 |

---

## 🛡️ 代表的なセキュリティサービスの詳細

| **サービス** | **セキュリティ層** | **主な機能** | **用途・対象** |
|--------------|--------------------|----------------|----------------|
| AWS WAF | アプリケーション層（Layer 7） | HTTPリクエストの制御、SQLi/XSS対策 | CloudFront, ALB, API Gatewayなど |
| AWS Shield | ネットワーク層（Layer 3/4） | DDoS緩和（SYN flood, UDP reflection等） | CloudFront, ALBなど |
| AWS Firewall Manager | ポリシー層 | WAFやShieldの一括適用と自動管理 | 組織単位での管理 |
| Amazon GuardDuty | 分析・検知層 | 不正アクセス・異常通信の検出 | VPC, S3, IAMなどの挙動を監視 |
| Amazon Inspector | 脆弱性スキャン層 | EC2やECSの脆弱性を自動検出 | ソフトウェアアップデート管理 |

---

## ✍️ まとめ

AWSでは、1つのサービスだけではなく**多層的なセキュリティ対策**が可能です。  
たとえば以下のように組み合わせることで、より堅牢な構成が可能になります。

- ネットワーク層でのDDoS対策（AWS Shield）
- アプリ層での不正リクエスト防止（AWS WAF）
- インフラ全体の挙動検知（Amazon GuardDuty）
- EC2やECSの脆弱性チェック（Amazon Inspector）

「自社に必要なセキュリティ対策ってどこまで？」と悩んだときは、まずこの一覧をチェックして、**目的に応じて必要なサービスを選定**してみましょう！
toFixed() vs Math.round()：小数の丸め方を極める！

小数を M 桁まで丸めるなら Math.round() より toFixed() のほうが断然スマート。技術メモメモ！

## <br>問題: 小数を `M`桁まで表示

📌 仕様
実数 `N` を小数第 `M` 位まで四捨五入
小数部が `M` 位に満たない場合は `0` で埋める

<br>入力例 → 出力例
```
入力:  3.14159 3  
出力:  3.142  
```
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__format_real_number_step4

## <br>NG例: `Math.round()` で分岐すると…
```js
const [N, M] = input.split(" ");
const num = Number(N);
const decimalPlaces = Number(M);
let result = "";

if (decimalPlaces === 1) {
    result = (Math.round(num * 10) / 10).toString();
} else if (decimalPlaces === 2) {
    result = (Math.round(num * 100) / 100).toString();
}
```
😱 問題点

✅ M の値ごとに if 文を分岐 → 可読性最悪
✅ 0 埋め処理がない → 表示がズレる可能性

## <Br>OK例: `toFixed(M)` で一発解決！
```js
const [N,M] = input.split(" ").map(Number);
console.log(N.toFixed(M));
```

🎯 `toFixed(M)` の強み

✔` M` 桁まで四捨五入 → `Math.round()` のような分岐不要
✔ 小数部が足りないときは自動 `0` 埋め

## <br>おまけ: `toFixed()` なしで解決する方法
```js
const [N, M] = input.split(" ");
const num = Number(N);
const decimalPlaces = Number(M);
let result = "";

let result = (Math.round(num * 10**M) / 10**M).toString();
if (!result.includes(".")) result += ".";
result += "0".repeat(M - (result.split(".")[1] || "").length);
console.log(result);
```
📌 何してる？
- `Math.round()` で `M` 位まで四捨五入
- `0` 埋めを手動処理

## <br>結論
🚀 toFixed(M) を使えば 一行で M 桁まで丸められる！
🚀 Math.round() は 0 埋め処理が必要で 冗長になりがち

<br>[僕の失敗談と解決話！](https://paizabeginner.wordpress.com/2025/03/29/paiza%e3%81%a7%e5%9f%ba%e6%9c%ac%e3%83%9e%e3%82%b9%e3%82%bf%e3%83%bc%ef%bc%9a%e5%b0%8f%e6%95%b0%e3%82%92m%e6%a1%81%e3%81%ab%e4%b8%b8%e3%82%81%e3%82%8b%e6%96%b9%e6%b3%95%ef%bc%81tofixed-vs-%e6%9d%a1/)
UnityプロジェクトをGitHubと繋げる方法

初めまして、ばねちと申します。
Qiita投稿始めてみる+初心者の友達への解説用+備忘録として何かしら書いていきたいなと思った次第です。

さて、最近Unityを触り始めたんやが、作ったプロジェクトをGitHubで管理する際途中のPushやらPullやらBranch切るやらはいっぱい触るけど、初期設定はあんまりやらんから忘れがちなので記録として残しときます。

# ざっくり手順
1. [Unityプロジェクトの作成](#Unityプロジェクトの作成)
2. [GitHubでリモートリポジトリの作成](#GitHubでリモートリポジトリの作成)
3. [プロジェクトのディレクトリでコマンドをカチャカチャ](#プロジェクトのディレクトリでコマンドをカチャカチャ)

## Unityプロジェクトの作成
いつも通りUnityHubから**New Project**を押して好きなプロジェクトを作ります。

## GitHubでリモートリポジトリの作成
[GitHub](https://github.com/)へ行き、右上の+ボタンかRepositoriesタブのNewからリモートリポジトリを作成します。
![スクリーンショット 2025-03-29 180230.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4048470/2abb9a52-d8c4-4503-b360-16fd881e8f1e.png)

Repository name、公開設定(Public、Private)を自由に設定し、Add.gitignoreで**Unity**を選択します。
全て設定できたら、Create repositoryを押して作成完了です。
![github.com_new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4048470/f87d31f8-52c7-438f-92de-1cfbe95adbe8.png)

## プロジェクトのディレクトリでコマンドをカチャカチャ
作成したUnityプロジェクトのディレクトリに移動し、以下のコマンドを順に実行します。
```
git init
git remote add origin [リモートリポジトリのURL]
git fetch origin
git checkout -b main origin/main
git add .
git commit -m "first commit"
git push origin master
```

お勉強のため、各コマンドが何をしているのかを細かく見ていきます
### git init
```
git init
```
このコマンドは、ローカルリポジトリの作成を行います。Gitではローカルリポジトリとリモートリポジトリを分けることで、チーム開発や違うPCでの開発をスムーズに行えます。
### git remote add
```
git remote add origin [リモートリポジトリのURL]
```
このコマンドは、git initで作成したローカルリポジトリと、GitHubで作成したリモートリポジトリをつなげることができます。
リモートリポジトリのURLは、作成したリポジトリのここをクリックするとコピーできます。
![スクリーンショット 2025-03-29 182208.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4048470/4653432c-e9b8-40e0-81b9-202719ea7007.png)
### ※5/18追記：git fetch origin と git checkout -b main origin/main
```
git fetch origin
git checkout -b main origin/main
```
このコマンドは、originの最新情報を持ってきて、その後mainという名前のブランチをoriginのmainブランチを基にして作成し移動するものになります。
このコマンドを実行することで、ローカルブランチの名前がmasterになることを防ぎ、確実にリモートと接続（VSCodeのGUIでの操作）が可能になります。

### ステージングとcommit、push
```
git add .
git commit -m "first commit"
git push origin master
```
これらのコマンドはリモートリポジトリに変更を保存するためのコマンドです。
git add . ですべての変更をステージングし、git commitで変更をコミット(ローカルリポジトリに保存)します。この時、後ろのダブルクォーテーションで囲まれたメッセージとともに保存されます。最後にgit pushを行うことで、リモートリポジトリに変更を保存します。
この一連の操作はこれからファイルをどんどん編集していく時にも使用するコマンドなのでしっかり覚えておきましょう。

なお、VSCodeではこれらをコマンドではなくGUIで行えます。
メッセージを入力してコミットボタンを押すと、git commitを行えます。
![スクリーンショット 2025-03-29 183303.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4048470/4314532e-0ca6-42af-b526-f8c84f0d0c84.png)

そうすると、**変更の同期**ボタンが出てくるのでこれを押すとpushすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4048470/8bc464e0-fe77-4c10-a73b-7ad2563386ea.png)

### 変更の同期が出てこない場合
変更の同期のボタンが出てこず、Branchの発行のボタンが出てくる方は以下のコマンドを実行してください
```
git branch --set-upstream-to=origin/main main
```
これで変更の同期が出てくるはずです。

# 最後に
UnityプロジェクトのGitHub接続方法を解説しました。
自分もGitに関してわからないことだらけなので、みんな一緒に勉強しよう！！！

※2025/5/18追記　なんかうまいこと行かなかったので、途中の動作を変更しました。具体的にはgit pull origin mainを削除し、git fetch originとgit checkout -b main origin/mainを実行する形にしました。これにより変更の同期が必ず出るようになるはずです。
オンプレミスとAWSのファイルストレージをつなぐサービスと対応プロトコル



企業のシステムがオンプレミスとクラウドのハイブリッド構成になる中で、**ファイルストレージの連携**が求められるケースが増えています。この記事では、オンプレミスからAWSのストレージへアクセスする際に利用される主なサービスと対応プロトコルを紹介します。

---

### ✅ AWS Storage Gateway（File Gateway）

- **対応プロトコル**: NFS / SMB  
- **用途**: オンプレミスのサーバーからAmazon S3へ、ファイル共有のようにアクセスできる。
- **特徴**: ローカルキャッシュを持つため、高速アクセスが可能。

---

### ✅ Amazon FSx for Windows File Server

- **対応プロトコル**: SMB  
- **用途**: Windows環境でのファイルサーバーをクラウド上で構築。
- **特徴**: Active Directoryと統合でき、オンプレミスからもVPNやDirect Connect経由でアクセス可能。

---

### ✅ Amazon FSx for Lustre

- **対応プロトコル**: Lustre（高性能ファイルシステム）  
- **用途**: 機械学習やHPC（ハイパフォーマンスコンピューティング）用途に最適。
- **特徴**: Amazon S3との統合が可能で、大量のデータを高速処理。

---

### ✅ 安全な接続方法

オンプレミスからクラウドストレージへ直接アクセスする際は、以下のような安全な接続手段を併用します。

- **AWS Direct Connect**：専用線で低遅延・高セキュリティな接続  
- **Site-to-Site VPN**：既存のネットワークから暗号化された安全な通信を確立

---

### まとめ

オンプレミスとAWS間でファイルベースのストレージ連携を行うには、**用途や環境に合ったサービス選定**が重要です。NFSかSMBか、S3ベースかマネージドファイルシステムか、接続方式を含めて最適な構成を検討しましょう。

---
【簿記3級】勘定科目一覧（資産の部）

## はじめに
　簿記3級出題範囲の勘定科目一覧（資産の部）についてまとめてみました。

## 資産の部

### 現金
　硬貨や紙幣などの現金、もしくは他人振り出しの小切手や国債などの銀行ですぐに換金出来るもの。

### 当座預金
　企業や個人事業主向けの、小切手や手形などを用いる決済専用の銀行口座。

### 普通預金
　ATMで出金、入金などが出来る、一般の銀行口座。

### 受取手形
　代金として約束手形を受け取り、期日に手形をお金と引き換える権利。

### 売掛金
　商品を掛けで売った時に、後で代金をもらえる権利。

### 繰越商品
　商品の在庫で、期をまたぐもの。

### 前払金
　手付金、内金など、商品購入時に、先に支払うお金。後に商品を受け取る権利。

### 未収入金
　商品以外の物を後払いで売却した時に、後でお金を受け取る権利。

### 貯蔵品
　切手や文房具など、商品以外の物で、未使用のまま期をまたぐ物。

### 仮払消費税
　商品の購入時に支払った消費税。消費税を納める際に、受け取った消費税から仮払消費税分を相殺出来るので、資産である。税抜方式で記帳するときに用いる。

### 仮払法人税等
　期の途中で概算額として支払う法人税等。法人税等を納める際に、仮払法人税等の分を相殺出来るので、資産である。

### 備品
　固定資産の一つ。パソコンや机など、販売目的でなく、社内で1年以上利用するために購入した物。

### 小口現金
　社内で発生する経費をすぐに精算するために手元に持っておく現金。

### クレジット売掛金
　商品をクレジットカード払いで売った時に、後でクレジットカード会社から代金がもらえる権利。

### 電子記録債権
　商品を掛けで売った時に、その取引の内容を電子化したもの。後に代金を受け取ることの出来る権利。

### 貸付金
　期限や利子を決めて貸すお金。後にお金を受け取る権利。

### 立替金
　取引先や従業員が支払うべき代金を一時的に立て替えたお金。後に代金を受け取ることの出来る権利。

### 仮払金
　支出はしたがその内容が確定出来ていないお金。後に費用に振り替えるための一時的な資産。

### 受取商品券
　商品の販売時に、代金として受け取った商品券。後に換金出来る権利。

### 差入保証金
　敷金など、取引や賃貸借の契約の履行が保証されるよう支払うお金。後に契約通り受け取れる権利。

### 前払利息
　来期の利息のうち、当期に支払済の利息。前払がついている科目は、「後で支払う必要がない」ことを意味するので、資産。

### 前払保険料
　来期の保険料のうち、当期に支払済の保険料。前払がついている科目は、「後で支払う必要がない」ことを意味するので、資産。

### 前払家賃
　来期の家賃のうち、当期に支払済の家賃。前払がついている科目は、「後で支払う必要がない」ことを意味するので、資産。

### 前払地代
　来期の地代のうち、当期に支払済の地代。前払がついている科目は、「後で支払う必要がない」ことを意味するので、資産。

### 前払費用
　来期の費用のうち、当期に支払済の費用。前払がついている科目は、「後で支払う必要がない」ことを意味するので、資産。

### 未収利息
　当期の利息のうち、来期に受け取り予定の利息。未収がついている科目は「後で受け取ることが出来る」ことを意味するので、資産。

### 未収手数料
　当期の手数料のうち、来期に受け取り予定の手数料。未収がついている科目は「後で受け取ることが出来る」ことを意味するので、資産。

### 未収家賃
　当期の家賃のうち、来期に受け取り予定の家賃。未収がついている科目は「後で受け取ることが出来る」ことを意味するので、資産。

### 未収地代
　当期の地代のうち、来期に受け取り予定の地代。未収がついている科目は「後で受け取ることが出来る」ことを意味するので、資産。

### 未収収益
　当期の収益のうち、来期に受け取り予定の収益。未収がついている科目は「後で受け取ることが出来る」ことを意味するので、資産。

### 建物
　固定資産の一つ。社屋や店舗などの、企業が業務上利用する物。

### 土地
　固定資産の一つ。建物や駐車場などのために、企業が業務上利用する土地。

### 車両運搬具
　固定資産の一つ。トラックや営業車などの、企業が業務上利用する車両。

### 定期預金
　引き下ろせるまでの期間が長いが、金利が高い一般の銀行口座。

### 商品
　販売業を営む企業や個人事業主が、営利目的で販売する物。

### 手形貸付金
　借用証書の代わりに、約束手形を受け取り貸し付けたお金。後にお金を受け取ることの出来る権利。

### 従業員貸付金
　自社の従業員に貸し付けたお金。後にお金を受け取ることの出来る権利。

### 役員貸付金
　自社の役員に貸し付けたお金。後にお金を受け取ることの出来る権利。

### 前払手数料
　来期の手数料のうち、当期に支払済の手数料。前払がついている科目は、「後で支払う必要がない」ことを意味するので、資産。

### 減価償却累計額
　固定資産の、これまで計上した減価償却費の累計額。簿記3級上は、資産の部の勘定科目として扱われるが、負債の部と同様、増加すると貸付に、減少すると借方に仕訳する。参考書等によってはその他に分類されることもある。

### 建物減価償却累計額
　建物にかかる減価償却費の累計額。簿記3級上は、資産の部の勘定科目として扱われるが、負債の部と同様、増加すると貸方に、減少すると借方に仕訳する。参考書等によってはその他に分類されることもある。

### 備品減価償却累計額
　備品にかかる減価償却費の累計額。簿記3級上は、資産の部の勘定科目として扱われるが、負債の部と同様、増加すると貸方に、減少すると借方に仕訳する。参考書等によってはその他に分類されることもある。

### 車両運搬具減価償却累計額
　車両運搬具にかかる減価償却費の累計額。簿記3級上は、資産の部の勘定科目として扱われるが、負債の部と同様、増加すると貸方に、減少すると借方に仕訳する。参考書等によってはその他に分類されることもある。

### 貸倒引当金
　取引相手の倒産などで売掛金が回収出来なくなった場合に備えて貯めておくお金。簿記3級上は、資産の部の勘定科目として扱われるが、負債の部と同様、増加すると貸方に、減少すると借方に仕訳する。参考書等によってはその他に分類されることもある。
 

## おわりに
ここまで読んでいただきありがとうございます！

## 参考文献
・アプリケーション
簿記3級  解説付き問題集 - 仕訳入門や学習法も充実 TRIPS LLC
勘定科目一覧　１．資産の部
Goのアドレスとポインタについて

エンジニアに転職して初めてGoを使うことになってのですが、アドレスとポインタという概念がよくわからなかったので簡単にまとめてみました!

## アドレスとポインタとは？
- **アドレス**：変数が存在するメモリ上の場所を「アドレス」
- **ポインタ**：アドレスを格納可能な変数


### アドレスについて
構造体 `Capital` をもとに「ID: 1、Name: 東京」という具体的な値を持つ `japan` という変数を作成するコードを見てみます。
```go
package main

import "fmt"

type Capital struct {
	ID   int
	Name string
}

func main() {
	japan := Capital{ID: 1, Name: "東京"}
    // この時japanという変数と、変数の場所(アドレス)が作成される

	fmt.Println("japanの中身:", japan) 
    // 出力結果　-> japanの中身: {1 東京}     
}
```

このとき、Goでは「japan に格納されたデータがメモリのどこに配置されたか（アドレス）」という情報も自動的に管理されます。
このメモリ上の場所のことを **アドレス** と呼びます。
ちなみにこのアドレスは、プログラムの実行中にRAM上に一時的に割り当てられているものです。  
そのため、アプリを閉じてもう一度開くと、通常は違うアドレスに配置されるようになります。

### ポインタについて
先ほどの例で、ひとつ覚えておきたいポイントがあります。
`japan := Capital{ID: 1, Name: "東京"}` のように値として構造体を代入した場合、japan には「構造体の中身（値そのもの）」が入っているだけで、ポインタのように「自分がどこにあるか（アドレス）」を直接保持しているわけではありません。
つまり、japan は「ID: 1, Name: 東京」というデータをそのまま持っていますが、「この構造体がメモリのどこにあるのか？」というアドレス情報は、Goが内部で自動的に管理しています。
アドレスを取得したい場合は、&japan のようにアドレス演算子を使って明示的に取り出す必要があります。
```go
package main

import "fmt"

type Capital struct {
    ID   int
    Name string
}

func main() {
    japan := &Capital{ID: 1, Name: "東京"}
    // 「&」を使って構造体のアドレスを japan に格納（＝ポインタを作成）
    
    fmt.Println("japan（ポインタ）:", japan) 
    // 出力結果　-> japan（ポインタ）: 0xc000014060
}
```   
このように、&Capital{...} のように & を付けて初期化することで、japan には「ID: 1, Name: 東京」といった値そのものではなく、その値が格納されている場所（アドレス）が入るようになります。
このときの japan は、値ではなくアドレスを持っているので、**「ポインタ」** と呼ばれる変数になります。

### 終わりに
なんとなく理屈はわかったけど、このポインタとアドレスって結局どうやって使われるの？
#### ポインタを使う時
- APIで受け取ったデータを関数で更新するとき（例：DBに保存する前に整形など）
- 大きな構造体を何度も関数に渡す（メモリ節約）
#### ポインタを使わない時
- ログ出力や画面表示だけのためにデータを渡すとき
- 「元の値は壊したくない」けど仮に値を変えてテストや一時的な操作をしたいとき

### おまけ

そういえば、「ID: 1、Name: 東京」という構造体の中の個々の値にもアドレスがありますが、それはどうやって確認すればいいのでしょうか？
    
```go
package main

import "fmt"

type Capital struct {
    ID   int
    Name string
}

func main() {
    japan := Capital{ID: 1, Name: "東京"}

    fmt.Println("japan.ID のアドレス:", &japan.ID)
    // 出力結果　-> japan.ID のアドレス: 0xc000014060
    fmt.Println("japan.Name のアドレス:", &japan.Name)
    // 出力結果　-> japan.Name のアドレス: 0xc000010230
}
```

このように値の前に&をつけることで確認できます。
あれ、これでもいいんじゃない？って思いませんか？
    
```go
func main() {
    japan := &Capital{ID: 1, Name: "東京"}

    fmt.Println("japan.ID のアドレス:", japan.ID)
    // 出力結果　-> japan.ID のアドレス: 1
    fmt.Println("japan.Name のアドレス:", japan.Name)
    // 出力結果　-> japan.Name のアドレス: 東京
}
```

でもこれだとアドレスではなくて値が出力されます。
なぜ？
これはGoの仕様らしいです。
ポインタからでも `japan.ID` のようにドットでアクセスすると、自動的に`*japan.ID`をしたことになって値を取り出してくれるらしいです。
`*` は「**ポインタが指している先の中身を取り出す**」という意味があります。(この操作を「デリファレンス」っていいます。)

例えば以下のコードのように書くと、ポインタのアドレスではなく値を取り出すことができます。

```go
japan := &Capital{ID: 1, Name: "東京"}

fmt.Println("*japan の中身:", *japan)
// 出力結果　-> *japan の中身: {1 東京}
fmt.Println("*japan の中身:", japan)
// 出力結果　-> *japan の中身: 0xc000014060
```
実は、`&`と`*`は逆の役割があります。
- `&` は「アドレスを取得する」
- `*`は「アドレスの先の中身（値）を取り出す」

つまり、
どこにあるのか知りたい → `&`
中身が欲しい → `*`
このシンプルなイメージで使い分けることができます。