OmniAICreator/Qiita-1.07M huggingface dataset:
class_attribute

# クラスの属性値を変更することができる(自分自身、自分のサブクラスができる）
>class_attributeメソッドは、1つ以上の継承可能なクラスの属性を宣言します。そのクラス属性は、その下のどの階層でも上書き可能です。

### 1つ以上の継承可能なクラスの属性を宣言
```rb
irb(main):001:1* class A
irb(main):002:1*   class_attribute(:some_attribute, default: 1)
irb(main):003:0> end
=> [:some_attribute]
irb(main):004:0> A.some_attribute
=> 1
...
irb(main):006:0> class B < A; end
=> nil
irb(main):007:0> class C < A; end
=> nil
irb(main):008:0> A.some_attribute
=> 1
irb(main):009:0> B.some_attribute
=> 1
irb(main):010:0> C.some_attribute
=> 1
irb(main):011:0> C.some_attribute = 2
=> 2
irb(main):012:0> C.some_attribute
=> 2
irb(main):013:0> B.some_attribute
=> 1
```

### クラスでオーバーライドできる
>これらの属性はインスタンスのレベルでアクセスまたはオーバーライドできます。

```rb
irb(main):014:0> a = A.new
=> #<A:0x000000010ceac7e0>
irb(main):015:0> a.some_attribute
=> 1
irb(main):016:0> b = B.new
=> #<B:0x000000010c5d30b0>
irb(main):017:0> b.some_attribute
=> 1
irb(main):018:0> c = C.new
=> #<C:0x000000010cdb4a18>
irb(main):019:0> c.some_attribute
=> 2
```

### インスタンスのクラス属性値の書き込みを不可能
```rb
irb(main):001:1* class A
irb(main):002:1*   class_attribute(:some_attribute, default: 1, instance_writer: false)
irb(main):003:0> end
=> [:some_attribute]
irb(main):004:0> A.some_attribute = 3
=> 3
irb(main):005:0> a = A.new
=> #<A:0x0000000114603230>
irb(main):006:0> a.some_attribute
=> 3
irb(main):007:0> a.some_attribute = 4
(irb):7:in `<main>': undefined method `some_attribute=' for #<A:0x0000000114603230> (NoMethodError)

a.some_attribute = 4
 ^^^^^^^^^^^^^^^^^
Did you mean?  some_attribute
```
### インスタンスのクラスの属性値の読み込みを不可能
```rb
irb(main):001:1* class A
irb(main):002:1*   class_attribute(:some_attribute, instance_reader: false)
irb(main):003:0> end
=> [:some_attribute]
irb(main):004:0> a = A.new
=> #<A:0x00000001087184b0>
irb(main):005:0> a.some_attribute
(irb):5:in `<main>': undefined method `some_attribute' for #<A:0x00000001087184b0> (NoMethodError)

a.some_attribute
 ^^^^^^^^^^^^^^^
Did you mean?  some_attribute=
```

https://railsguides.jp/active_support_core_extensions.html#:~:text=1%20%E3%82%B3%E3%82%A2%E6%8B%A1%E5%BC%B5,x%20%23%20NoMethodError
Swift カスタム型のイニシャライザにオプショナル型を含める際のメモ

## カスタム型のイニシャライザの気づきが合ったのでメモ
イニシャライザをたくさん用意して最低限でもインスタンス生成できるように工夫していた。
メソッドの引数にデフォルト引数を定義することで、イニシャライザを含めメソッドの多重定義より見通しが良くなることに気づいたので、記事にしました。（みんなはすぐ気がついていたはず）

## イニシャライザにオプショナル型を含める場合
オプショナル型のプロパティをイニシャライザに含める場合
定義はnameはString型、ageはInt?型と仮定すると、こうなる
```
struct Human:Codable,Equatable, Hashable{
    var name: String
    var age: Int?

    init(name: String,
         age: Int? = nil
    ) {
        self.name = name
        self.age = age
    }
}
```
インスタンスは、ageがあってもなくてもいい。
```
Human(name:"太郎",age:40)
Human(name:"花子")
```
でも、こう書いてもいい。イニシャライザを引数ごとに複数用意する。
```
struct Human:Codable,Equatable, Hashable{
    var name: String
    var age: Int?

    //引数が明確な値のみ代入することを明記する
    init(name: String
    ) {
        self.name = name
    }
    //オプショナル型の引数はインスタンス生成時に入力するか選べる
    init(name: String,
         age: Int? = nil
    ) {
        self.name = name
        self.age = age
    }
}
```

## 使い分けについての個人的意見
あくまで個人の意見であり、使ってみた感想に過ぎません。
オプショナル型の場合、デフォルトで引数nilを渡す呼び出しがいいのか？
多重定義が良いのか？

**わざわざ言い立てるほどでもない気がするけど、こうやって記事にでもしないと記憶に定着しないからこうして記事にしている。**

使い分けのミソがイマイチわからない。
どっちでもいいんじゃないか。
ただ確実に前者のほうがコード量が少なくて、後々プロパティを増やす減らすなど対処ができたときに出戻りが少ない。
チームで開発する場合、設計が定まってから行うことがほとんどだと思われるので、前者のみを採用するのがいいと思った。
しかし、個人で開発する場合においては、後者でいくつも多重定義しておいて、設計が定まってきた段階で、前者に切り替えるのが良いかなと思った。
一方で、複数のイニシャライザが用意されていたほうが、オプショナル型への気付きがしやすい気もした。
感想は以上です。

```swift:BookMarkInfo.swift
struct BookMarkInfo:Codable,Equatable, Hashable{
    var title: String
    var description: String
    var urlString: String
    var iconUrlString:String?
    var iconData:Data?

    init(title: String,
         description: String,
         urlString: String,
         iconUrlString: String? = nil,
         iconData:Data? = nil
    ) {
        self.title = title
        self.description = description
        self.urlString = urlString
        self.iconUrlString = iconUrlString
        self.iconData = iconData
    }
}
```
## 気づいたきっかけ
Swiftのドキュメントを読んでいても、デフォルト引数というのがメジャーなのかなと感じた。
例えば、resizableモデファイはデフォルトでcapInsets及びresizingModeの引数を渡しているので、呼び出すときはresizingMode()だけで成立してしまう。
```
    public func resizable(capInsets: EdgeInsets = EdgeInsets(), resizingMode: Image.ResizingMode = .stretch) -> Image
```

## 疑問に感じたこと

この場合だと、frame()では、widthとheightがnilになってしまうと思った。
```
@inlinable nonisolated public func frame(width: CGFloat? = nil, height: CGFloat? = nil, alignment: Alignment = .center) -> some View
```
しかし、frameはだいたいコード書いている人が必要な値を埋め込むもしくは周りの成約でサイズは流動的に変わるからいいのかな。

内容がスカスカですが以上です。
設定を永続的に保存する(インポート/エクスポート)

# sWebTool 実践編

設定を外部ファイルに永続的に保存する/外部ファイルから読み出す(インポート/エクスポート)

## はじめに

[sWebTool](https://qiita.com/tomoki0sanaki/items/b8f571ae296a32f7b434)([sWebMachineGun.exe](https://qiita.com/tomoki0sanaki/items/e2b7767551a576b1dbd3)や[sPortRedirector.exe](https://qiita.com/tomoki0sanaki/items/134cea01d1274075b723)等)は、基本的に設定はレジストリに保持しているが、それをXMLファイルにエクスポートできる。

特に、[sWebMachineGun.exe](https://qiita.com/tomoki0sanaki/items/e2b7767551a576b1dbd3)には「[ディレクトリ・トラバーサルを検査する](https://qiita.com/tomoki0sanaki/items/a23d058603c90abec82a)」のような設定を全消しする必要があったりするので、エクスポート/インポート機能は有用だろう。

## アーキテクチャ

![ie001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/4c953f7d-306f-5715-e3fb-442cede05a59.png)

この図のように、アプリケーションの設定は、一旦メモリ上のXMLオブジェクトにしたうえで、レジストリなり、XMLファイルに出力している。
XMLからのインポートも、レジストリからの読み取りも同様な流れで、設定を読み込んでいる

## 画面例

### sWebMachineGun.exeの例

![ie002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/f72e40ee-173d-9962-94e8-36ce21fcf5f5.png)
「GeneralSetting」⇒「Import/Export」

### sPortRedirector.exeの例

![ie003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/73dc145b-1d38-8310-16f4-896937acd529.png)
「Setting」⇒「Import/Export」

### それ以外

大体似たようなグループボタンがあると思う

## 蛇足

### 初期化

[sWebTool](https://qiita.com/tomoki0sanaki/items/b8f571ae296a32f7b434)([sWebMachineGun.exe](https://qiita.com/tomoki0sanaki/items/e2b7767551a576b1dbd3)や[sPortRedirector.exe](https://qiita.com/tomoki0sanaki/items/134cea01d1274075b723)等)は、基本的に(アプリケーションの)レジストリを全消しする機能を有している

この機能によって、レジストリを全消しすることができる。
⇒次回起動時は(レジストリ無しの)初期状態で起動することになる

## 画面例

### sPortRedirector.exeの例

![ie004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/74327b1c-7e57-d433-1389-8a9170e81505.png)
「ファイル」⇒「Init」

### それ以外

画面キャプチャはないけど、
「ファイル」⇒「Init」

# sWebTool Manuals index

[sWebTool Manuals indexに戻る](https://qiita.com/tomoki0sanaki/items/b8f571ae296a32f7b434)
素人「雨が降ってむしゃくしゃしたので、SNSWebアプリつくるしかない」 3/n回

# はじめに
表題の件ですが、つまり、未経験者が転職用のポートフォリオとして、JSP・サーブレットを使用し、土木向けSNSWebアプリ（オンライン公開予定）を作っている連載です。
第1回はこちら
https://qiita.com/necofuwafuwa/items/fc014d1e99e52de617f4
# 今回やったこと
・人のプログラムを読もう
・技術と時間を踏まえて自分の作りたいものを見直そう
・実際にプログラムを書こう

今回はプログラムを読み、書いていく話１号です。
同時進行でお借りしているVPSにApacheやTomcatを入れ、セキュリティを見直し、オンライン公開のためのWebサーバー、アプリケーションサーバーの用意をしています。
ちょっと記事に出力するところで時間がかかっている模様…。**考えをまとめ、日本語に出力することが難しすぎる。**
# 環境
フロントエンド：JSP、CSS等
バックエンド：サーブレット、Java
データベース：PostgreSQL
開発環境：Eclipse
# 人のプログラムを読む
## 読むプログラムの選定
素人なので、どのような分岐が存在して対応を考えなければならないか、具体的な見通しが不明です。適切な挙動も、望ましくない動きになってしまった場合も、セキュリティの面や保守しやすさの面でも、見通しがとても甘いのです。

というわけで、いくつか検索して読んでみます。
しかし、素人なのでプログラム量に対して読む時間がかかりすぎる。
いくつかをブックマークやダウンロードして直ぐに参照できるようしておき、そのうちの１つを主軸に読み、他のプログラムのそれっぽい場所をチラ見して補足的に「こんなやり方もある」と参考にする形をとることにしました。
## 読み方
主軸のプログラム、普通に読むと「Aインスタンスの中、Bインスタンスあるな。C引数だ。メソッドオーバーロードしてるけどどれ！そして戻ってきたDを変数に入れて…？リクエストスコープを使っているがこれには何が入って…？」と迷子になりました。

シーケンス図もどきを使用して整理します。
※作成当初シーケンス図という発想がなく、「スプレッドシートに整理しよう！」と動いていた結果、最終的に「これはシーケンス図では」というところに落ち着きました。そのためもどき。
## シーケンス図もどき
最近サーティファイ2級を受験したので（合格いただきました、やったね！）、各クラスや変数、挙動の記載があるとわかりやすいな…という発想のもと作りました。（その時点シーケンス図というものをうっかり頭から逃し）

+ 各「クラス」、各「メソッド」、「引数」、「戻り値」を一覧（①）にする
+ JSPを１つ選び、上から読む
+ JSP途中サーブレットがいるのでサーブレットのメソッドを読む
+ サーブレット途中JavaBeansがいるのでインスタンス化されたクラス・メソッドをひもとき、「このJavaBeansは何のためにいるんじゃ？」というのを「挙動」という項目で①に追加する
+ JSPを最後まで読んだとき、使用した「クラス」「メソッド」を同じ色で塗る
+ 各項目を全てコピーして別途矢印でどの順番に使用されたか遷移図（②）を作成する
+ アプリケーションスコープやセッションスコープ等が出現したときは別途メモ（③）

図を３つ作ったのは、
①…使用されなかったものがないかの確認や、索引的な使い方をするために、フォルダ・メソッド並び順で一覧としてほしかった
②…どのような手順で処理が行われているか知りたかった
③…今回引数・戻り値以外の細かな変数のメモはしていなかったため、①②では表しづらかった
といった理由です。

少々手間はありますが理解するスピードは格段に上がりました。補足的に見るプログラムもどこを見ればよいか推測が早くなります。
## 自分の作りたいものを再度見直す
転職目標まで時間がないということで、人様のプログラムを理解したところで機能の見直しを行います。

〇最低限設置したい
・アカウント作成（ユーザーID、アカウント名、パスワード）
・ログイン、ログアウト
・投稿（投稿内容、ユーザーとの紐づけ、投稿日時）
・投稿をタイムライン状に並べる
・タイムラインを一定時間ごとに再読み込みする
・可読性や保守性、セキュリティに配慮した設計となっているか確認

〇できれば設置したい
・アカウントがなくてもタイムラインが閲覧できるようにする
・SNSが指定したいくつかのタグのうち1つをつけられるようにし、タグごとに投稿を集計する（数が把握できればよい）
※学習報告アプリのため、頑張った記録が残せればよい
・投稿やアカウントの削除
・CSSでの可読性・操作性のみに配慮した装飾

〇時間が許せば設置したい
・アイコンの設定
・CSSでのおしゃれな装飾
・投稿の検索
・リプライ機能
・絵文字で投稿にリアクションする

現在アカウント作成、ログイン、ログアウト、投稿、タイムライン状に並べる、タイムラインを一定時間ごとに読み込むといった内容ができるプログラムが完成しています。
ここからいったんプログラムの可読性・保守性・セキュリティなどを見直したいと思います。プログラムをきれいにしたら、シーケンス図も作成したいですね。未来の私のために（忘れるため）。

次回はTomcatたちについての記事が先か、プログラムが進むのが先か。ごうご期待！
カジュアル面談を成功させるための質問リスト

# はじめに

カジュアル面談は、企業やチームの雰囲気を知る絶好の機会です。私自身、エンジニアリングマネージャー兼プロジェクトマネージャーとして数年の経験を持ち、次のステップとしてより戦略的な役割を目指しています。自分のスキルや価値観がその企業に合っているかを判断する場でもあります。本記事では、カジュアル面談で企業側に質問すべき内容を以下のテーマごとに整理しました。

カジュアル面談で質問をする際には、一般的に使える質問と個人固有の質問に分けて考えると効率的です。一般的な質問は企業や職種にかかわらず役立つものであり、個人固有の質問は自分の経験や希望に基づく内容を深掘りするためのものです。

## 一般的な質問リスト

### 1. 仕事の進め方に関する質問
仕事の進め方を理解することで、自分の働き方がその企業に合うかを判断できます。

- プロジェクトやタスクの優先順位付けはどのように行っていますか？
- どのようなプロジェクト管理ツールや方法論（アジャイル、ウォーターフォールなど）を使用していますか？
- 新しい取り組みや提案を実行するためのプロセスはどのようになっていますか？
- 緊急対応やトラブルシューティングはどのように進められていますか？

## 2. 組織構成に関する質問
組織の構成や文化は、日々の働きやすさに直結します。

- チームや部署の構成について教えてください。役割分担や人数はどのようになっていますか？
- マネージャーやリーダーの役割は具体的にどのようなものですか？
- エンジニア同士の横のつながりを深めるための施策（勉強会や交流イベントなど）はありますか？
- 昇進やキャリアパスの設計はどのように行われていますか？

## 3. コミュニケーションに関する質問
チーム内外のコミュニケーションの方法を知ることで、働きやすさをイメージできます。

- チームや部署間のコミュニケーションはどのように行われていますか？（ミーティング頻度、ツールなど）
- 意思決定プロセスはどのように進められていますか？
- 上司や同僚との1on1ミーティングはありますか？その頻度や目的は？
- リモートワークの場合、どのようにコミュニケーションを維持していますか？

## 4. 1日の仕事の流れに関する質問
1日の流れを知ることで、具体的な業務内容や生活との両立が想像できます。

- 典型的な1日のスケジュールについて教えてください。
- コアタイムやフレックスタイム制度はありますか？
- ミーティングの頻度や時間帯はどの程度ですか？
- 業務時間外の対応（オンコールや緊急対応）はどのように行われていますか？

### 5. その他の質問

---

## エンジニアリングマネージャーに関連する質問リスト

以下は、エンジニアリングマネージャーとしての私の経験やキャリア目標を基にした質問リストです。同じ立場の方が参考にできる内容となっています。

### 1. 仕事の進め方に関する質問
- 技術的な意思決定はどのように行われていますか？
- プロジェクトの成功基準はどのように設定されていますか？
- リーダーシップポジションとして期待される役割は具体的に何ですか？

### 2. 組織構成に関する質問
- チームの規模やスキル構成について教えてください。
- エンジニアリングチームの育成に向けた取り組みはありますか？
- 部署間の連携を強化するための施策はありますか？

### 3. コミュニケーションに関する質問
- マネージャー間や他部署との定期的なコミュニケーションの場は設けられていますか？
- リモートワーク環境におけるエンジニアリングチームの課題とその解決方法は？

### 4. キャリアに関する質問
- エンジニアリングマネージャーとしてのキャリアパスはどのように設計されていますか？
- 技術的スキルとマネジメントスキルのバランスをどのように評価していますか？
これらの質問を通じて、企業文化や期待をより深く知ることができます。

- 現在の課題やチームが直面している問題について教えてください。
- 入社後3か月間の期待や、最初の目標はどのように設定されていますか？
- 社員がスキルアップや自己成長を図るためのサポート体制はありますか？
- 社内の評価基準やフィードバックプロセスはどのように運用されていますか？

## まとめ

カジュアル面談で企業側に質問することで、仕事内容や組織文化を深く理解するだけでなく、自分がその企業で活躍できるかを判断する材料になります。本記事では、私の職歴や転職活動の背景を前提にした質問も含めてご紹介しましたが、皆さん自身のキャリアや目標に応じて質問をアレンジしてください。また、積極的で具体的な質問をすることで、面談相手に良い印象を与えることもできます。ぜひこの記事を参考に、次のカジュアル面談を有意義なものにしてください！
The variable action '変数を初期化する' of type 'InitializeVariable' cannot be nested in an action of type '条件(品番がNUllかどうか)'.' で失敗しました。


変数を初期化するがハンドでレコードを作られた場合にNullになっていて、たまにエラーになります。
そこで、分岐でnullなら処理をしないようにしたいと思いました。

しかし、保存するとエラーになりますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/61447e46-c753-c619-9f09-77c71a7081b3.png)

エラーメッセージで探したら同じような内容が出てくるけど、読んでも回避策は理解できませんね。
要は、できませんってこと？相変わらず使えないですね。


+ [Flow save failed with code 'InvalidVariableInitialization' and message 'The variable action 'Initialize_variable' of type 'InitializeVariable' cannot be nested in an action of type 'Apply_to_each'.'.](https://community.powerplatform.com/forums/thread/details/?threadid=664bfa8c-36cb-4c7e-aec0-cd730b32b2b6)
+ [ChatGPTから学んだPowerAutomate](https://note.com/owlet_notes/n/n8a8771aee0f1)
+ [PowerAutomate メールの件名の一部を抽出したい](https://teratail.com/questions/2r0n75fd7009vi)
+ [Need Help with Power Automate](https://www.reddit.com/r/MicrosoftFlow/comments/193uzpy/need_help_with_power_automate/?rdt=41200)

# 回避策

結局IFの分岐の中では変数の初期化は使えなかったので、変数の初期化の中でIFを使いました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/1c123943-66d1-9b3a-0682-c7ef684ae5f2.png)


変数を初期化するところの数式

```
IF(empty(triggerOutputs()?['body/OData__x54c1__x756a_']),'_',trim(triggerOutputs()?['body/OData__x54c1__x756a_']))
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/52034ff7-7f2b-41f0-081c-620a43603e1c.png)


また、分岐ではNullの時に _ にしたので、 _の時に後続処理が走らないようにしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/98b03145-3494-df51-7551-6fd7a2e2fa1a.png)
ブルーロックから学ぶ高度情報のゴールの方程式【試験対策】

## はじめに

やあやあ、才能の原石どもよ。
絵心甚八です。

…という冗談はさておき、
皆様ブルーロックのアニメ2期はご覧になられましたでしょうか？
個人的にはアニメ映像もきれいで迫力があり、めちゃくちゃ面白かったです。
また若干ネタバレになってしまいますが、U-20日本代表戦の最後に
潔が**運**の力でシュートを決めたところも痺れました！

ところで、この運のカラクリですが、実は私も体験したことがあります。

それは2021年秋の**データベーススペシャリスト試験**です。
午後Ⅰの問題が難しくて分からない＆時間が足らないの二重苦でしたが、
**運**の力で何とか60点以上の点数を取ることができ、無事に一発合格しました。

なので試験における**運のカラクリ**とは何かを皆様にご紹介したいと思います。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2258693/e213a7ba-df53-b465-33c2-ca49de847654.png)

## 運のカラクリとは
ブルーロックの漫画で紹介されている**運に対する考え方**ですね。
要点をCopilotにまとめさせたものが以下になります。
※おそらくこちらの記事を参考に答えてくれたっぽいのですが、
フルが気になる方はぜひアニメか漫画で確かめてみてください！笑

https://blue-lock-explanation.com/luck/

### 運は「落ちる場所にいる者」にしか舞い降りない
運が良い人は、運が舞い降りる場所にいるため、その運を掴むことができる
例えば、テスト前日にヤマを張って勉強した部分が出題されるのは、準備があったからこそ

### 己の能力を発揮できる場所で待つ
運を掴むためには、自分の能力を最大限に発揮できる場所で待つことが重要です
例えば、実力で解ける問題にヤマを張ることで、運が舞い降りたときに対応できる

### 運は降ってきてから考えても遅い
偶然に対する心構えができていないと、運を掴むことはできません
準備ができていないと、運が舞い降りてもそれを活かすことができない

## 試験における運のカラクリ
上の例で出てしまっていますが、試験でもこの考え方が通用します。
例えば高度情報処理技術者試験の午前問題は、**4割は過去問から出題される**ようになっており
これを知っている方はもちろん過去問を解いて対策を行ってきます。

当たり前の話と思われるかもしれないですが、
事前に対策をしてきたからこそ、当日の試験で見覚えのある問題が出題されていることに気づき、**運が良い**と思えるんですね。
逆に対策を行わなかった方はすべてが初見の問題で**運が落ちてきたことさえ気づかない**はずです。

また午後問題でも同様の考えが通用します。
もちろん午前の時みたく4割ほどは出題されないですが、
それでも過去問から同じ形式の問題が出題されることはちらほらあります。
特にデータベーススペシャリストなどは問題が**データベースだけに限定されている**ので、
**運が落ちてくる可能性は非常に高い**です。

実際にぼくが受験した令和3年度の試験でも運が落ちてきました。
この２つの問題めちゃくちゃ似てないですか？

### 令和3年 午後Ⅰ

問題
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2258693/ef5cd65c-d44d-9d7f-039c-5e2a03a481d8.png)

解答
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2258693/316ac66a-9ffe-f9d3-2c08-7fc5a36e021c.png)

### 平成29年 午後Ⅰ

問題
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2258693/e2bcab91-f39b-4932-c2e5-314bb7502679.png)

解答
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2258693/a109b793-d537-744f-de29-49874a7fd3db.png)

## さいごに（教訓）
入りとずれてしまいましたが、
高度情報処理技術者試験だけに限らず**過去問を解くのはとても大事**です！

見たことのある問題が出題されたとき、
見たことあるぞ？→解答欄を見る→経験則からこれが解答になるんだろうな～→続きの問題を見る→やっぱりそうだ！　というマインドになります。
本当に心と残り時間に余裕が生まれます。笑

なのでぜひ最低5年分は過去問を解いてみてください。
ちなみに過去問の解説が載っている系の参考書で勉強すると理解しやすかったです。（体験談）
ラズパイ　赤外線でエアコンの消し忘れを自動で消す、人がいる時にエアコンの暖房自動ONを実現　ステップ

１．消し忘れ機能の設定。　午前1:00にエアコンを消す。　これは年中使えます。
```
sudo crontab -e
```
中身は以下　Indoor Corgiさんのサンプルを少しアレンジ
0 1 * * * cd /home/pi/ && /usr/local/bin/cgir send aircond_off > /tmp/crona.log 2>&1

２．11度未満ならエアコンの暖房をオンにする。
１）Indoor Corgiさんのサンプルを少しアレンジ。　heater_on.pyで保存＆実行。
いけた。これは夏もいける。　夏になったら追加実装しよう。
```
#!/usr/bin/env python3

import subprocess
from cgsensor import BME280

bme280 = BME280(0x76)  # RPZ-IR-Sensorの基板上センサーを使う場合は0x77にする

# 測定成功
if bme280.forced():
  print('気温: {}°C'.format(bme280.temperature))  # 気温を画面に表示

  # 11度未満なら暖房ON
  if (bme280.temperature < 11):
    print('赤外線送信')
    subprocess.run(['cgir', 'send', 'heater_on'])

# 測定失敗
else:
  print('センサーが検出できませんでした')
```
３．MariaDbにテーブル作成。ルートユーザでログイン。
```
mysql -u root -p 
```
■ＤＢ作成、テーブル作成
```
use miyamodb
create table jinkan_kenchi (id INT NOT NULL PRIMARY KEY, kenchisw DECIMAL(1) unsigned,upd_datetime datetime default(CURRENT_TIMESTAMP));
```
■初期データ作成
```
insert into jinkan_kenchi values (1,０,default);
quit
```
git-credential-managerを使用して複数のGitHubアカウントを使い分ける方法

## はじめに

開発者として、複数のGitHubアカウントを使い分ける必要がある場面に遭遇することがあります。例えば、個人用と仕事用のアカウントを使い分けたり、異なるプロジェクトで異なるアカウントを使用したりする場合です。この記事では、git-credential-managerを使用して、VSCodeのUIとターミナルから複数のGitHubアカウントを簡単に切り替える方法を紹介します。

## 前提条件
本記事は、以下の環境を前提とします。

- macOS
- Homebrew
- Git
- VSCode

## 手順

### 1. git-credential-managerのインストール

まず、Homebrewを使用してgit-credential-managerをインストールします。

```bash
brew install --cask git-credential-manager
```

### 2. グローバル設定の確認

現在のgit-credential-managerの設定を確認します。

```bash
git config --list | grep credential
```

出力例：
```
credential.helper=osxkeychain
credential.helper=
credential.helper=/usr/local/share/gcm-core/git-credential-manager
credential.https://dev.azure.com.usehttppath=true
```

### 3. デフォルトのGitHubアカウントの設定

グローバル設定で、デフォルトで使用するGitHubアカウントのユーザー名を設定します。

```bash
git config --global credential.https://github.com.username your_default_username
```

### 4. リポジトリごとの設定

異なるアカウントを使用したいリポジトリごとに、個別の設定を行います。

```bash
cd /path/to/your/repository
git config credential.https://github.com.username your_other_username
```

### 5. 設定の確認

設定が正しく適用されたか確認します。

グローバル設定：
```bash
git config --global credential.https://github.com.username
```

リポジトリ固有の設定：
```bash
cd /path/to/your/repository
git config credential.https://github.com.username
```

## 使用方法

設定完了後、各リポジトリでgit pushを実行すると、設定したユーザー名に基づいて適切なGitHubアカウントが使用されます。初回のプッシュ時にブラウザでの認証が要求されますが、認証情報は安全に保存され、以降の操作では自動的に使用されます。

## 注意点

1. リポジトリごとの設定は、そのリポジトリのディレクトリ内で行う必要があります。
2. 新しいリポジトリをクローンした場合は、必要に応じて個別の設定を行ってください。
3. 認証に問題が発生した場合は、キーチェーンアクセスアプリで「github.com」に関連する既存の認証情報を削除し、再度プッシュを試みてください。

## まとめ

git-credential-managerを使用することで、複数のGitHubアカウントを簡単に切り替えることができます。この方法により、個人用と仕事用のアカウントを使い分けたり、異なるプロジェクトで異なるアカウントを使用したりすることが容易になります。

この設定により、開発ワークフローがよりスムーズになり、アカウントの切り替えに伴う煩わしさを軽減できます。
声でつながるAIとの対談: 挿入曲 #14 - Jazz, Latin, Piano【Suno AIでつくった楽曲】 v4 & Custom Mode: On 【動画 3分46秒】【YouTubeチャンネルからの転記です】

この記事は、わたしの[YouTubeチャンネル](https://bit.ly/Yamanaka-YouTube "Living without things. 持たない生き方 手放す生き方")にある公開動画を転記しております。
( どこかのタイミングで、プログラミング-Google Apps Script or iPaaS-Zapier をつかって自動転記させる予定です )

転記のための時間コストを少なくしたいので、文字装飾( Markdown記法 )を極力つかわずに書いております。

こちらが動画内容です👇

***

![01 YouTubeサムネイル & 再生中の画像 Suno AI _ 声でつながるAIとの対談_ 挿入曲 #14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386308/cbce949a-0818-cda3-a516-7bc42b67391c.png)




* # 動画URL
    * https://youtu.be/sioWqNvL9M0

<br>

* # 動画タイトル
    * 声でつながるAIとの対談: 挿入曲 #14 - Jazz, Latin, Piano【Suno AIでつくった楽曲】 v4 & Custom Mode: On 【動画 3分46秒】

<br>

* # 動画の説明欄(一部を抜粋)

📅撮影日 = 2025-01-09(木)

Suno AIとは、文章から音楽を生成することができるAI( Text-to-Music-AI )です。
わたしは、2024-04-02(火)に初めてSuno AIで有償プランを契約してから、時々楽曲をつくって遊んでいます。

🎦【Suno AI】文章から音楽を生成するAI( Text-to-Music-AI )で、3分間で2曲、6分間で4曲作りました【試聴可能】1)伴侶の曲 2)税理士の曲【動画 16分11秒】
https://youtu.be/QKfhk4HgQ_g

🎦“Suno AIでつくった楽曲”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghMLdiSVqwvSs_Z5y0H4VGOe

🎦“効果的にSuno AIを活用するヒント”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghPuaNOVZn-N53wVvsBkeHdI


今回は、Suno AIでつくった曲を WAV で出力してから、動画編集いたしました。

“声でつながるAIとの対談”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghOpTHU0rmfXSgjqV1_j6Eao
👆の挿入曲としてつかう予定です。

ぜひ聴いてみてください。
そして、ぜひみなさんも、ご自身の対談、番組、コンテンツのために楽曲をつくってみてください！

作曲日:
2024-12-04(水)

Suno AI 契約の種類:
Pro Plan

Suno AI Version:
v4

楽曲の正式名称:
声でつながるAIとの対談: 挿入曲 #14 - AI Voice Talks: Minimal Melody

Suno AI Library URL:
https://bit.ly/AI-Voice-Talks-Minimal-Melody-14

Custom Mode: On

Audio Inputs: Not Used

Instrumental:


---


Suno AIへの指示文章( プロンプト/Prompt ): Custom Modeの場合は”Style of Music”を指定します。


🇬🇧English

[Jazz][Bossanova][Piano][Orchestra][220 Seconds][Break][Outro]


🇯🇵日本語訳

[ジャズ][ボサノバ][ピアノ][オーケストラ][220秒][ブレイク][アウトロ]


---


Suno AI 公式URL
https://accounts.suno.ai


---


🎥この動画と関連が強いわたしの動画
・“Suno AIでつくった楽曲”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghMLdiSVqwvSs_Z5y0H4VGOe


・“効果的にSuno AIを活用するヒント”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghPuaNOVZn-N53wVvsBkeHdI


・“声でつながるAIとの対談”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghOpTHU0rmfXSgjqV1_j6Eao


🎥Shortened URL for this video | この動画の短縮URL
https://bit.ly/40myBxD
AIXをPowerVSで触ってみた（PowerVSのAIXコンソールアクセス）

## はじめに

IBM i /AIXのクラウド環境であるPowerVS（IBM Power Virtual Server）でAIXを試した時の情報を記載しています。


## PowerVSでAIXをオーダー

IBM Cloudにログインして、AIXをミニマムスペックでオーダーします。
IBM i に比べてAIXは安価ですね！1時間あたり**14円**です！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/6feb0d3d-95a3-5ec0-4dcc-9d4a98faec6b.png)

## AIXのコンソールオープン

状況は**警告**ですが、SRCが**00000000**になったので、コンソールアクセスしてみます。
ここまでオーダーしてから5分ちょっとです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/9cae7758-ac56-43eb-7233-d6569e1510b9.png)

コンソールは右上のメニューからオープンできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/f9d16260-f5be-cd90-0168-84743cdb37c1.png)

コンソールは新規ウィンドウで開きます。
``` ’s Password: ```
というプロンプトが出てますが、空Enterをします。（正しい手順なのか？分かってませんが、経験上の手順です）


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/e31cfb03-b59f-2b2d-1f2e-fbe8bef8e6d6.png)

空エンターすると
```login: ```
のプロンプトが出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/c1a28577-68b7-b7b4-360c-9921052e44f3.png)

rootでログインします・
```login: root```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/e0eaa581-7316-c0b1-f92b-48a2d9729dc0.png)

すると、rootパスワードを設定するように
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/84250794-beaa-4ee7-2c9a-bdd05afbfd1b.png)

備考：パスワードルールがあるので、この条件に合ったパスワードを設定しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/f3541a35-55c1-e4ae-fe55-3f490cf34088.png)

## AIX ログイン

パスワードを設定後、rootでログインできました！
コンソール操作ができるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/80811831-331b-3f31-813f-411a1bb3281b.png)

## コンソールでAIXを触ってみる
AIXはデフォルトシェルがkornShellなので、少し使いずらいです。。（バックスペースキー押しても、削除されず **^？**という文字列が入力されてしまいます。。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/efd4209d-39a6-1ef8-2ff4-cdb52e19302c.png)

そこで、ログインしたらまず、Bashに変更するのがオススメです！
（AIX独自コマンドとかを使う場合は除いて、AIXを体験する場合のオススメです）

bashにするのは
```# bash```
と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524161/d1d51ee5-1fe5-48e0-ae07-75543765063b.png)

これでLinuxと同様にBash環境で操作できるようになります。

今日はここまで。
PC版e-Taxソフトで初めて申請を出した。マイナンバーカードで。そしてエラー。

## 確定申告ではなくて

個人事業の開業申請とかはPCのe-TAXソフトで実施すると最近理解したのでやってみる。

基本的にソフトのメニューにあるヘルプが割と親切なのでOKなのだが、
* 利用者識別番号
* マイナンバーカード

の両方でログインできるようで、このあたりですでに躓いた。
が、どうせなら今時マイナンバーカードでしょ！と意気込んで進めてみた。
下記のようなリンクを参照しながら実施したのでメモ。

https://www.e-tax.nta.go.jp/toiawase/qa/kanbenka/05.htm#tabs_4

### マイナンバーカード方式とは

対義語？はID・パスワード方式。下記のうちどちらかを利用するぽい。
* マイナンバーカード方式
* ID・パスワード方式

https://jiei.com/e-tax/ninsho?form=MG0AV3

私の場合は確定申告書の作成コーナーで初回に電子申告したのだが、どうやらこの時点で自動的にIDパスワード方式となる模様。
その後、e-Taxソフト(WEB版)からマイナンバーカード方式に切り替えた。

### 申請

ソフトのメニューから`ヘルプ`→`基本の操作`
で下記のような流れの説明あり。※は当方のコメント。
このヘルプを頼りに申請すればよかったのでそんなに迷わなかった。

>電子申告の基本的な流れは、以下のとおりです。
>
>e-Taxソフトの起動
↓
利用者ファイルの作成
↓
暗証番号の変更　※スキップ
↓
納税用確認番号の登録　※スキップ
↓
電子証明書の登録　※スキップ
↓
メールアドレス等の登録　※スキップ
↓
秘密の質問と答えの登録　※スキップ
↓
ログアウト
↓
申告・申請等の作成と帳票の選択
↓
基本情報の登録
↓
帳票の編集
↓
電子署名の付与　※このあたりこのあと引っかかる
↓
申告・申請等の送信
↓
受付結果の確認
 

### エラーになった

2024/1/8に申請したが、即刻下記エラーがメッセージボックスに。
→`受付結果`が「エラー情報あり」となっていた。

>HUBH283E:署名用電子証明書が登録されていません。マイナンバーカードをご利用の場合は市区町村の窓口で手続を行ってください。スマホ用電子証明書をご利用の場合はマイナポータルで申請手続をご確認ください。

そんなはずは！とスマホのマイナポータルアプリから確認すると、「未提供」とある。
<img width=200 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916302/3f471f13-2fe6-d185-285e-61d27771e75c.png>
そんなばかな。
`マイナンバーカードを読み取って表示`は「実証開始までお待ちください」のようなメッセージ。ん？

そんなばかな！なので、PCのJPKI利用者ソフトからも確認してみると署名用電子証明書が有効な状態で確認できた。
<img width=400 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916302/9118dfad-81b8-8afc-767a-978060864026.png>
であればPCのe-Taxソフトの`電子証明書の登録`で、この証明書を設定すればよいのではと考えたが、マイナンバーでログインしているので設定できない模様。下記メッセージとなる

>メッセージ表示: SC00X010
>マイナンバーカードを使用してログインしている場合、この機能は利用できません。

上記から予想するに、e-Taxとマイナンバーカード連携に不具合がある気が。
そういえば券面事項入力補助あたりもエラーでできなかったし。
→これに関してはマイナンバーカードセットしてもしなくても同じエラーだったのでデバイス側の不具合かも。

そうであればということで、
1. マイナンバーカードでログインしていたので、いったん`ログアウト`
1. 利用者識別番号でログインして`電子証明書の登録`
1. 送信済みの帳票を別名保存でもう一度保存しなおし　←これで前回の署名は削除される
1. 保存した帳票を署名して送信

これでOKだった
→`受付結果`が「エラー情報あり」ではなく「受付完了」となった。

### まとめ
e-TAXは利用者識別番号でログインしよう！
一年目でアジャイル開発に参加して感じたこと

# はじめに
私は未経験一年目でアジャイル開発のプロジェクトに参加したわけなのですが参画当時の気持ちは...

 - えっそもそもウォーターフォールすら研修のちゃちな二週間程度のものしかしてませんが！？
 - 一応研修とか資格勉強で学びはしたけど実際の想像とか全然ついてません('◇')

みたいな感じでした。そのあとアジャイル開発の中でもPJで採用している、スクラム開発について少し勉強したのでした。

:::note info
（スクラム開発自体について詳しくは書きませんが、1週を1単位としてメンバー全員で週次の計画を立てて日時の報告会を行いながら作業するイメージです。1週ごとにその週のタスクの進捗や振り返りも確認します。）
:::

## メリット
- 柔軟にタスクが割り振られるので自分が出来そうなところややりたいところを出来る可能性が高い
- 日ごと、週ごとの進捗確認があるのでプロジェクト内で認識ずれがあるまま進みにくい
- 新規の取り組みだと　解像度が上がる→タスク追加➔解像度が上がる、といったループができやすく、見つかったタスクの重要度に応じてすぐ作業も可能
- PMやデータ分析的な役割などコード以外のタスクを行う人もPJにいるので開発以外の視点や作業内容を見られるのが貴重
- SOSを出しやすい

## デメリット

- 頭の中である程度流れがイメージできていないと自分がなぜこのタスクをしているのか分からなくなることがありそう
- アジャイルの多くのプロジェクトの場合完全な分業ではなく、自分がメインでないところでも少し知識や意識を割かないと話し合いができない
- WFだと設計時点で作るような資料がないので開発用の全体像は明示されない。作りながら完成後のイメージの解像度を上げる必要がある

## 所感

- 自分の場合は初PJがアジャイルでよかった。初めの方にはデバッグとかが多いと聞いていたけど自分で動かしてエラーを見て直せたので充実感を得られた気がする
- メンバーやチームの雰囲気によってアジャイルの有効具合は変わってくると思う(せっかく日時、週次の報告会があっても話しにくい雰囲気になってしまうともったいない)
- 今回はすごく良い雰囲気で進められていて、ベテランの方が担当していないタスク等でも広い知識を持っており、その存在もおおきかった
ピギーバック

>全二重データ転送を実現する一つの方法は、これまでのプロトコルのいずれの二つのインスタンスをそれぞれ別々の回線を用いて（、反対方向の）単方向データ・トラフィックに動作させる方法でる。

### データフレームと確認フレームが混ざっている
>このモデルでは、`AからBへのデータ・フレームはAからBへの確認フレームと混合`されている。入力フレームの`kindフィールドを見ることで、受信者はフレームがデータであるか確認通知であるか知る`ことができる。

### 出力データフレームと一緒に制御フレームを送る
>データ・フレームが到着すると、`直ちに個別の制御フレームを送信するのではなく、受信者はネットワーク層が次のパケットを渡してくれるまで待つ`。確認通知は出力データ・フレームに付加される（フレーム・ヘッダーのackフィールドを用いて)。事実上、`確認通知は次の出力データ・フレームにただ乗り`する。出力確認通知を一時的に遅延させて次の出力データ・フレームに引っ掛ける技法は、ピギーバック(piggybacking)として知られる。

### 独立した制御フレームよりもピギーバック・フィールドを使う方が負荷が軽い
>`チャネル帯域をより有効に利用`できることである。フレーム・ヘッダーのackフィールドはほんの数ビット出るが、独立したフレームでは、ヘッダー、確認通知、チェックサムが必要となる。さらに、`送られるフレームが少ないことは、受信側の処理負荷が軽い`ことを通常意味する。次に見るプロトコルでは、`ピギーバック・フィールドはフレーム・ヘッダー中の1ビットしか必要としない`。数ビットより多く必要であることはほとんどない。

### 届くのが遅すぎるとピギーバックされない
>新しいパケットがすぐに到着すれば、確認通知はそれにピギーバックされる。そうでなく、`一定の時間の終わりまでに新しいパケットが到着しなければ、データ・リンク層は単に独立した確認通知フレームを送出`する


https://bookplus.nikkei.com/atcl/catalog/23/03/16/00728/
Claudeでcommand_executorを使う

- npxで起動時に環境変数が渡せなくて困っていた。sh経由で起動したら動いた

```json
{
  "mcpServers": {
	"command-executor": {
	  "command": "/bin/sh",
	  "args": [
		"-c",
		"ALLOWED_COMMANDS=\"git,ls,mkdir,cd,npm,npx,python,cat\" npx github:Sunwood-ai-labs/command-executor-mcp-server"
	  ]
	}
  }
}
```
(QA) Db2 for i テンポラル表でトランザクションIDカラムに日付が記録されない

## Q. Db2 for i テンポラル表で色々な操作をしてもトランザクションID列にタイムスタンプ日付が記録されません。
こんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/e036f3cc-8713-8786-443a-03251b6ef8dd.png)
※注意　以下で掲載したDDL等とは異なるテーブル(PF)のサンプルです…

## A. テーブル作成時のDDLに誤りが見つかりました。

色々調べたところ、下記のように元テーブル、テンポラル表作成時のDDLに誤りがあったようです。

**エラー時のDDL**
```
CREATE TABLE GOMALIB.PRODUCT
(PROD_ID CHAR(6) NOT NULL,
PROD_NAME CHAR(50) NOT NULL,
CAT_ID CHAR(2) NOT NULL,
PRICE INT NOT NULL,
START_TS TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN,
END_TS TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END,
TS_ID TIMESTAMP(12) GENERATED ALWAYS AS TRANSACTION START ID,
CHANGE_TYPE CHAR(1) GENERATED ALWAYS AS (DATA CHANGE OPERATION),
PRIMARY KEY (CAT_ID)
);
```
※TS_ID がタイムスタンプ列です。***TS_ID列にNOT NULLが指定されていませんでした。***
※また、***PERIOD FOR SYSTEM_TIME(START_TS,END_TS)*** というお約束行も記述されておらず。

上記二点を修正して再作成いただきました。

***修正したDDL***
```
CREATE TABLE GOMALIB.PRODUCT
(PROD_ID CHAR(6) NOT NULL,
PROD_NAME CHAR(50) NOT NULL,
CAT_ID CHAR(2) NOT NULL,
PRICE INT NOT NULL,
START_TS TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN,
END_TS TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END,
TS_ID TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS TRANSACTION START ID,
CHANGE_TYPE CHAR(1) GENERATED ALWAYS AS (DATA CHANGE OPERATION),
PERIOD FOR SYSTEM_TIME(START_TS,END_TS),
PRIMARY KEY (CAT_ID)
);
```
※テンポラル表GOMALIB.PROD_HISも同じDDLで作成
続けて元テーブルとテンポラル表を関連付け
```
ALTER TABLE GOMALIB.PRODUCT ADD VERSIONING USE HISTORY TABLE GOMALIB.PROD_HIS;
```

### テスト結果

一応簡単に載せておきます。
実行したSQL
```
INSERT INTO GOMALIB.PRODUCT (PROD_ID,PROD_NAME,CAT_ID,PRICE) VALUES('A00001','FCRキャプレター・シングル','02', 49800);

UPDATE GOMALIB.PRODUCT SET CAT_ID='F3' WHERE PROD_ID ='A00001' ;

COMMIT;
```

SQLで検索すると、、
元テーブルには、、
```
SELECT * FROM GOMALIB.PRODUCT ;
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/5addeaca-e6b8-7374-f73b-0464e377127a.png)

テンポラル表には、、
```
SELECT * FROM GOMALIB.PROD_HIS ;
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/1e434802-b6f5-3b2b-0f7e-e74ab2597859.png)

余談ですが、このサンプルではCHANGE_TYPE で更新タイプをログしています。（I=インサート）

## そもそも TS_IDに指定した、　AS TRANSACTION START ID　とは？

[マニュアルはこちら](https://www.ibm.com/docs/ja/i/7.5?topic=statements-create-table)

以下引用です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/080acf15-afc6-b1ac-dbe0-4adf7bdf3a99.png)

かみ砕くと、テンポラル表で最初にレコードをCreate（Updateのケースもある？変更ステートメントとあるので）した際に、Db2 for i(IBM i)のタイムスタンプが記録される、という事だと思います。

以下の処理を実行した時点でのテンポラル表と履歴表の状態を調べてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/cca80ed9-3c22-c0f2-a1b5-626a408ed96f.png)

・テンポラル表、履歴表とも、START_TSとEND_TSの期間がそのレコードが最新（最終）レコードだった時点を示す。
　※テンポラル表の場合、END_TSは常に9999-12-30となり最新レコードと識別できる
・最新のレコードのSTART_TSの時刻と1つ前の世代レコードのEND_TS が同一になる。（この時刻で最新レコードが置き換わった＝レコードが更新された）
・同じレコード中では、START_TS と TS_IDは必ず同一時刻がセットされる。



**参考記事：[Db2 for i テンポラル表を簡単に作って試してみた](https://qiita.com/gomAnomalocaris/items/3d9a9559755221a33651)**
GPT-4とGemini - どちらのAIが優れているのか？

## はじめに

AI技術が進化する中で、どのモデルを選ぶかってすごく重要だよね。この記事では、GPT-4とGeminiの特徴をいろいろな観点から分析して、みんなが自分に合ったAIを選べるように手助けするよ。

:::note info

ChatGPTとGeminiは、他のアプリケーションと統合することで多くの機能を提供します。ただし、正確にアプリに実装するには、ApidogのようなAPIツールが必要です。

[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)は、開発者にAPIライフサイクル全体に必要な機能を提供します。コード生成、CI/CD統合、カスタマイズ可能なスクリプトを使って、すぐにアプリを作成できます！
:::

![apidog-client-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/cebf5723-17eb-ee01-c128-bc783f56b10c.png)


### GPT-4の概要

![chatgpt-4-website-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/5ce5b5e1-38ec-9ff6-7882-e9d67bc56245.png)

[GPT-4](https://openai.com/index/gpt-4/)はOpenAIが作ったマルチモーダルな大規模言語モデルで、前のモデルの成功を基にしてる。テキストと画像の入力を処理できるから、いろんなメディアで人間みたいな応答を生成できるんだ。複雑な問題を解決したり、クリエイティブなコンテンツを作ったり、正確な情報を提供したりする能力が高く評価されてるよ。

### Geminiの概要

![gemini-twitter-announcement-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/9f3f273a-da57-7b1d-9f3d-0e0599084113.jpeg)

[Gemini](https://gemini.google.com/)はGoogleが開発したマルチモーダルAIモデルで、テキスト、音声、動画、画像、コードを処理できるんだ。人間の脳の神経プロセスを模倣するTransformerアーキテクチャを使っていて、コンテンツ作成や言語翻訳、複雑な問題解決に最適化されてる。

### 機能比較

ここで、GPT-4とGeminiの主な機能を比べてみよう：

| 機能 | GPT-4 | Gemini |
|:-----------|------------:|:------------:|
| マルチモーダル処理 | テキストと画像 | テキスト、音声、動画、画像、コード |
| テキスト生成 | 高品質なテキスト生成 | 創造的で魅力的なテキスト |
| 言語翻訳 | 強力な翻訳能力 | シームレスな翻訳 |
| 問題解決 | 高度な推論 | 創造的な問題解決 |
| コード生成 | コード生成に優れる | 基本を超えた革新的なコード生成 |
| 統合 | OpenAIのエコシステムで使用 | Google製品と統合 |

### パフォーマンスの比較

ベンチマークテストでは、両モデルが異なる分野で強みを発揮してるよ：

- **一般的な推論**：GeminiがGPT-4 Turboを少し上回る
- **数学的推論**：GPT-4 Turboが複雑な数学問題に強い
- **コード生成**：GPT-4 TurboがPythonコード生成でリード
- **画像理解**：GPT-4 Turboが視覚情報の解釈に優れてる

### 技術的な基盤

GPT-4はMicrosoftのAzure AIスーパーコンピュータを使っていて、効率的にスケールできるんだ。一方、GeminiはGoogleのテンソル処理ユニット（TPU）を利用していて、機械学習タスクに特化してるから、データセンターからモバイルデバイスまで柔軟に対応できる。

### アプリケーションの例

この2つのモデルは、いろんな分野で使われてるよ：

- **GPT-4**：Duolingoのような言語学習ツールやKhan Academyのチュータリングに使われてるし、Be My Eyesみたいなアプリでアクセシビリティをサポートしてる
- **Gemini**：Googleの検索やYouTube、Gmailなど、いろんなサービスを支えてる。マルチモーダルな入力を処理できるから、複雑なタスクにも対応できるんだ

### 安全性と信頼性

OpenAIはGPT-4の安全性を高めるために、前のモデルと比べて不適切なコンテンツの応答を82％減らすことに成功してる。事実の正確性も40％改善されてるよ。Geminiも信頼性を重視してるけど、安全対策についての情報はGPT-4ほど詳しくないかも。

### ApidogでGeminiやChatGPT 4のAPIを活用しよう

[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)のAPIを使えば、ChatGPT 4やGeminiの機能を完全にコントロールできるよ！Gemini APIをApidogで実装する方法についての記事もあるから、ぜひチェックしてみて。

https://apidog.com/jp/blog/google-gemini-api/


### 結論

どちらのAIモデルが「**優れている**」かは、具体的なニーズやアプリケーションによるよ。

- **GPT-4**：数学的推論やコード生成、画像理解に強いから、高い精度と創造性が求められるテキスト出力に向いてる
- **Gemini**：音声や動画処理もできるから、Googleのエコシステムと統合が必要なアプリケーションに最適

最終的には、GPT-4とGeminiの選択は、やりたいことに応じて決めるべきだね。どちらも今のAI技術の最前線を代表していて、それぞれ異なる分野で素晴らしいパフォーマンスを発揮してるよ。

**最後まで読んでくださり、ありがとうございました！
この記事を読んで少しでも理解を深めていただければ幸いです！**
快適な開発環境を作る .zshrc 設定

## はじめに

`zsh` は高機能なシェルであり、カスタマイズ性が非常に高いことで知られています。本記事では、開発効率を向上させるための `.zshrc` 設定を紹介します。この設定を参考に、自分に合った環境を構築してください。

---

## `.zshrc` のサンプルコード

以下は便利な `.zshrc` の設定例です。

```bash
# .zshrc file

# Terminal 設定
export TERM=xterm-256color

# 履歴設定
HISTFILE=~/.zsh_history
HISTSIZE=100000
SAVEHIST=100000

# 言語設定 (root の場合は C)
export LANG=ja_JP.UTF-8
[[ $UID -eq 0 ]] && export LANG=C

# キーバインドを Vi モードに設定
bindkey -v

# プロンプトの設定
autoload -U colors && colors
PROMPT='%F{cyan}%n@%m%f:%F{blue}%~%f %# '

# 補完の有効化
autoload -U compinit && compinit

# エイリアス設定
alias ls="ls --color=auto"
alias la="ls -A"
alias ll="ls -lh"
alias grep="grep --color=auto"
alias vim="nvim"

# エイリアスを拡張する
setopt ALIASES

# ヒストリのオプション
setopt APPEND_HISTORY       # コマンド終了順で履歴を保存
setopt HIST_IGNORE_SPACE    # スペースで始まるコマンドを履歴に保存しない
setopt HIST_REDUCE_BLANKS   # 不要な空白を削除して保存
setopt HIST_VERIFY          # 実行前に履歴展開を確認

# 自動ディレクトリ移動
setopt AUTO_CD

# コマンド補完時にリストアップ
setopt AUTO_LIST

# リスト表示の際の整列
setopt LIST_PACKED
setopt LIST_ROWS_FIRST

# リダイレクト設定
setopt NO_CLOBBER           # ">" のリダイレクトで既存ファイルを上書きしない

# スペルミスを訂正
setopt CORRECT

# 見やすい ls のカラー設定
export LS_COLORS="di=36;49:ln=35;49:so=32;49:pi=33;47:ex=31;49:bd=34;46:cd=34;47"

# Zsh Line Editor (ZLE) の設定
setopt ZLE
setopt PROMPT_SUBST

# 快適な開発のためのオプション
setopt AUTO_MENU            # 自動メニュー補完
setopt UNSET                # 空の変数を空白として扱う
setopt FLOW_CONTROL         # Ctrl+S/Q のフロー制御を無効化
setopt TRANSIENT_RPROMPT    # コマンド実行後に右プロンプトを削除

# 環境変数
export PATH="$HOME/bin:$PATH"
```

---

## 設定内容の解説

### 1. Terminal 設定
`export TERM=xterm-256color` により、ターミナルのカラー表示を有効にします。

### 2. 履歴管理
以下の設定で履歴を便利に管理します：
- `HISTFILE`: 履歴ファイルの保存先を指定。
- `HISTSIZE`/`SAVEHIST`: 履歴の最大保存件数。
- `APPEND_HISTORY`: コマンド終了順で履歴を保存。
- `HIST_IGNORE_SPACE`: スペースで始まるコマンドを履歴に保存しない。

### 3. プロンプトのカスタマイズ
`PROMPT` を設定することで、見やすく情報量の多いプロンプトを表示します。

### 4. エイリアス設定
頻繁に使用するコマンドを短縮形で登録します。
- `ls` コマンドにカラー表示を追加。
- `vim` を `nvim` にマッピング。

### 5. オプションの設定
以下のオプションで作業効率を向上させます：
- `AUTO_CD`: ディレクトリ名だけで移動可能。
- `CORRECT`: コマンドのスペルミスを自動訂正。
- `NO_CLOBBER`: リダイレクト時の上書きを防止。

---

## まとめ

本記事では、Zsh の `.zshrc` をカスタマイズする方法を紹介しました。この設定を利用して、快適なターミナル環境を作りましょう。自分の作業内容や好みに合わせて、さらに改良を加えてください。

何か質問や改善案があれば、コメントでお知らせください！
【TypeScript・JavaScript】配列もオブジェクトであるから配列の中にプロパティが入るという点

# はじめに
* 以下のコードの通り、配列の中にプロパティが入るコードを書いてみた所コンパイルエラーにもならず実行も問題なかった
    * ただ個人的に「配列の中にプロパティが入る？」のが気になったため記事にまとめた

```typescript:sample.ts
let anything: any = [123, '123'];
anything.dummy = "dummy";

console.log(anything);
console.log(typeof anything);
console.log(anything[0]);
console.log(anything[1]);
console.log(anything[2]);
console.log(anything.dummy);
```


```javascript:sample.js
var anything = [123, '123'];
anything.dummy = "dummy";

console.log(anything);
console.log(typeof anything);
console.log(anything[0]);
console.log(anything[1]);
console.log(anything[2]);
console.log(anything.dummy);
```

```bash:実行結果
$ node ./sample.js
[ 123, '123', dummy: 'dummy' ]
object
123
123
undefined
dummy

```

## 気になった箇所
```javascript:気になった箇所
[ 123, '123', dummy: 'dummy' ]
```
* 配列の中にプロパティ(キー&バリュー)があるのに成立しているのが良く分からなかった

## 結論
:::note info
### エラーにはならないが配列の要素として不適切なので使用するべきではない
* 配列もオブジェクトに該当するため、本来の**配列の使い方としては不適切**だが成立する
    * 非プリミティブ型である
* 配列の要素としてみなされないため参照しようとしても参照できない
    * 配列の使い方が出来ないので不適切な記述と言える
:::

* 以下のコードから、
    * 配列の要素として参照しようとしても参照が不可
    * プロパティとして参照しようとすると可能
        * 「配列の要素では無い」と言われているようなモノ
```javascript:
[ 123, '123', dummy: 'dummy' ]

console.log(anything[2]);     //=> undefined
console.log(anything.dummy);  //=> dummy
console.log(anything.length); //=> 2
```
【Microsoft 365】試用テナント登録の手順

# 【Microsoft 365】試用テナント登録の手順

試用環境を準備する手順を記述する。(2024/10 現在) 

## Office 365 E3 の購入

- [Office 365 E3][office365e3] の購入画面で [無料で試す >] リンクをクリックします。  
  ![image-20241003110147768.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/5025571d-d6fe-1daf-d1ce-ffc9ecc05c21.png)

[office365e3]: <https://www.microsoft.com/microsoft-365/enterprise/office-365-e3>

## 1. アカウントセットアップ

1. メールアドレスを入力し [次へ] をクリックします。  
   ![office365e3_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/43fb47d0-0d47-4e11-79db-ee18d10e9613.png)

1. [アカウントのセットアップ] をクリックします。  
   ![image-20241003110836645.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/91aee339-da68-8e5b-6e59-b8c4d8fef274.png)

## 2. 利用者情報の入力

利用者の情報を入力します。  
![office365e3_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/4f0faac1-0a24-4116-6ba4-8ea4849ee062.png)

1. 任意の [姓], [名] を入力する。
   例：[姓] 「テナント」、[名]「管理者」
2. [勤務先の電話番号] に自身の携帯電話を設定
3. [会社名] に会社名を入力
4. [会社の規模] は会社の社員数を選択
5. [国または地域] は [日本] を選択
6. 必須項目を入力したら [次へ] ボタンをクリック

## セキュリティ チェック

[自分にテキスト メッセージを送信 (SMS 認証)] を選択して [確認コードを送信] ボタンをクリックします。
![image-20241003112320650.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/57e04620-dd65-c34e-e749-d457ecd6a947.png)

SMS に送られてきた確認コードを入力し、[確認] ボタンをクリックします。
![image-20241003112436075.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/eed2fcd4-e05b-6750-dc52-22395379e350.png)

## 3. 管理者のアカウントの作成

管理者のアカウントを作成します。   
![office365e3_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/fc6853a3-8f01-4363-8392-5c3071cb145e.png)

1. 任意のユーザー名を入力
1. 推奨候補で表示されているドメイン名を使用するか、任意のドメイン名を入力
1. 任意のパスワードを入力
1. パスワードの確認を入力
1. [次へ] ボタンをクリック

## 4. 支払い方法の追加

ユーザー数は 1 を指定します。※1 を指定しても試用期間中は 25 ライセンス使えます。
![image-20241003113337809.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/d0387a4c-e17d-a9aa-b371-05520c86243a.png)

[お支払い方法の追加] ボタンをクリックしてクレジットカードの情報を入力します。  
![office365e3_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/7b52eaa2-5b17-adc6-4807-7fba0ea72371.png)

設定内容の確認です。[無料版を開始] をクリックします。
![image-20241003114310733.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/1a43288e-cb54-98df-c1e0-2f85a10117a8.png)

## 4. すべての設定が完了しました

完了メッセージが表示されます。  
![image-20241003114437437.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/fcdc5f49-5d82-07e6-fd50-2b3e1085a585.png)


## 試用版サブスクリプションの継続請求の解除

サブスクリプションの継続請求を解除する手順です。

1. [継続請求を編集する] リンクをクリックします
![image-20241003162328491.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/d95000fe-0565-0340-9dc4-1928f69e5872.png)
1. [継続請求] を [オフ] にします
![image-20241003161839606.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/8de0caa5-085f-5c86-f912-4b4c3a281169.png)
1. [はい] をクリックします
![image-20241003161904556.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/921d2a5f-ff63-3308-26dd-2ad681588a81.png)
1. 無効になっていることを確認しています
![image-20241003161930285.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/19b9f352-9ef0-75f2-f86f-481228ea75a1.png)
ITにおける公共調達とは（第一回：公共調達の概要）

### 本記事の対象者について
本記事の対象者は以下となります。
+ プリセールスに興味がある
+ 公共案件に触れ始め
+ その他、お客様との要件のにぎりについて

記事の内容は、ルールの記載などが主となっており、
技術的な要素は少ない記事となっております。

* * *
### はじめに
本ページをご覧いただきありがとうございます。
筆者は、KANGEN Holdings というSES会社に所属しております。

> KANGEN Holidngs
> https://kangen-holdings.co.jp
> ![KANGEN.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950875/66cc76fe-4b4c-d2f5-f2b4-b53e2c6a8e2e.png)

KANGEN Holdings は、エンジニアのスキルアップのために
様々な施作を行なっており、本記事もその1つとなります。

では、第一回目、公共調達（政府調達）について記載させて頂きます。
* * *
### 公共調達（政府調達）のフェーズについて
では、公共調達（政府調達）の流れはどのようななるのか。
基本的に以下の3フェーズとなります。

1. 予算調達
2. 意見招請
3. 入札（調達）

この3つのフェーズについては次回以降に説明させていただきます。
今回は、公共とは何か、調達とは何か、についてスタートしましょう。

* * *
### 公共機関（1）
公共という言葉をIT業界で聞いたことある人、ない人、があると思います。
公共とは、**公共機関**を略したものであり、国や地方自治体が運用する機関となります。
一般的に、**営利目的ではないというのが重要です。**

![zeikin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950875/f3f9598c-cc98-382b-5422-075bbf817f08.png)

* * *
### 公共機関（2）
では、ここで、公共機関と民間企業の違いについてはなんでしょうか？

民間企業と違い、公共機関の運用費に利用されるのは**国民の税金**となるため、公平であり公正である必要があります。
では、公平であり、公正であるためにはどのように公共機関が民間企業に対して仕事を依頼するのか。
それが、**入札制度**です。

![koukyou2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950875/019453f8-ec62-f8b3-e61b-abc759793561.png)

* * *
### 入札制度（1）

入札制度については、公共機関だけでなく民間企業でも使われる手法となりますが、違う点があるとすれば、公共機関ではルールがある、ということです。

1. 一般競争入札であること *引用1
2. 一定金額以上については、特定の手続きが必要 *引用2

![nyuusatu1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950875/872abe40-c415-9a53-77df-3222c64c95b4.png)

* * *
### 入札制度（2）
公共機関という言葉を使っておりますが、公共機関が行うことが公共調達あるいは政府調達となり
その対象となる機関が以下の機関です。

+ 国立大学
+ 中央省庁
+ 独立行政法人
+ その他もろもろ

![nyuusatu2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950875/8ef08335-9234-9113-523d-3ec10e6f29fd.png)

* * *
### 次回予告
公共機関とは何か、公共調達（政府調達）とは何か、ということはご紹介できたと思います。
今回はここまで。
次回は、**予算調達**のお話をさせていただきます。

* * *
### 引用
> *1 WTO政府調達協定
> https://www.mofa.go.jp/mofaj/gaiko/wto/chotatu.html

> *2 政府調達協定及び我が国の自主的措置の定める「基準額」及び「邦貨換算額」
> https://www.mofa.go.jp/mofaj/annai/shocho/chotatsu/kijyungaku.html
AZ-305 学習メモ

# ストレージ
## ストレージアカウント

| ブロックBLOB | 追加BLOB | ページBLOB |
|:--------:|:--------:|:--------:|
| ブロックで構成され、テキストorバイナリファイルの格納と大きいファイルに最適 | 追加操作に最適化されている。ログ記録に最適 | 頻繁なランダムの読み/書き操作に最適。Azure IaaSディスクの基盤になる。VMとDBのOSやdatadiskのようなindexに基づくデータの格納に最適 |

| Standard汎用v2 | PremiumブロックBLOB | PremiumページBLOB | Premiumファイル共有 |
|:--------:|:--------:|:--------:|:--------:|
| L Z G GZ | L Z | L | L Z |
| 最大容量5PiB | 最大容量5PiB  | 最大容量5PiB  | 最大容量100PiB |
|不変ストレージ・階層型名前空間・ライフサイクル（いずれもBLOBのみ）|不変ストレージ・階層型名前空間・ライフサイクル|ページBLOB特化|SMB/NFSをサポート|

## Azure File Sync
SMB、NFS、FTPSなど、Windows Server上で利用するプロトコルを用いてデータにアクセスできる。
### メリット
・クラウドの階層化
→有効にするとよく使うファイルがローカルサーバにキャッシュされ、あまり使わないファイルがクラウドに階層化される。

・マルチサイトアクセスと同期
→任意のオフィスでサーバに加えられた変更は、他のすべてのオフィスのサーバに自動で同期される。

・災害対策
→障害発生したサーバを復旧するには、ローカルのBackupから復元するのではなく、別のサーバを新規にデプロイし、再度Azure File Syncエージェントをインストールする。

・バックアップ
→Azure File SyncはAzure Backupの対象。

## Azure Cosmos DB
読み取りの整合性、可用性、レイテンシ、スループットの間でトレードオフなため、整合性レベルは以下の5種類に分かれている。
|厳密|有界整合性制約|セッション|一貫性のあるプレフィックス|最終的|
|:--------:|:--------:|:--------:|:--------:|:--------:|
|リクエストを同時に処理可能。読み込みは最新versionが表示されることが保証される。通常レイテンシは99%で常に10ms未満だが複数のリージョンにまたがる厳密な整合性で構成されているCosmos DBは保証対象外になる。| 複数のリージョンを持つ単一リージョンに書くとき、データはプライマリリージョンからすべてのセカンダリリージョンにレプリケートされる。複数のリージョンを持つマルチリージョンに書くとき、データは最初に書き込まれたリージョンから他にレプリケートされる。リージョン間のレプリケーションには遅延あり。プライマリでないリージョンは必ずしもグローバルに最新のデータが返されるわけではないが、リージョン内の最新バージョンのデータが返される。|-|-|書き込みはローカルリージョン内の少なくとも3つにレプリケートされ、他のリージョンに非同期レプリケーションされる。クライアントは指定したリージョン内の４つのレプリカのどれかを読む。このレプリカは遅れている可能性があり、古いデータが返されるか、データが返されないことがある。最終的は順序保証がアプリで要求されないときに最適。ex.リツイート、いいね、スレッド化されていないコメントなど。|

# ネットワーク
### プライベートIP
各サブネットの先頭4つと最後の1つはAzureによって予約されている。
### ゲートウェイサブネット
GatewaySubnetという名前のサブネットが必要。/29以上であれば作成はできるが、構成の要件によってはipが不足するので、/27以上が推奨されている。

| Azure Front Door | Traffic Manager | Application Gateway | Load Balancer|
|:--------:|:--------:|:--------:|:--------:|
| グローバル | グローバル | リージョン | リージョンまたはグローバル |
| HTTP(S) | 非HTTP(S) | HTTP(S)| 非HTTP(S) |
|Webアプリ向けのグローバル負荷分散。レート制限、SSLオフロード、パスベースのルーティング、高速フェールオーバー、キャッシュなどのLayer7機能を提供。|DNSベースのトラフィックロードバランサー。負荷分散はドメインレベルでのみ。Azure Front Door ほど高速なフェールオーバーはできない|Layer7の負荷分散機能、WAF機能を提供。パブリックネットワーク空間から、リージョン内のプライベートネットワーク空間でホストされているWebサーバに移行可能。|すべてのUDP,TCP向けの高パフォーマンス、超低待機時間のレイヤー4負荷分散サービス。|

# コンピューティング
## Azure Functions
サーバレスでコードによって関数を実行できる。5つのプランがある。
・Flex従量課金→vnet接続可能。(ネットワークインジェクションと表示される)
・Premium→vnet接続可能。(ネットワークインジェクションと表示される)
・専用
・コンテナー
・従量課金

## Azure Logic Apps
コードを使用せず自動化されたワークフローを実行する。GUIで操作する。コネクタを使用する。コネクタとは、ワークフローを開始するトリガーとタスクを実行する後続のアクションで構成される。

## Azure App Service
App Serviceログでアプリケーションログを有効化すると、ファイルシステムのログを保存できる。
・仮想ネットワーク統合→App Service上のアプリからvnetに接続する機能。
・プライベートエンドポイント→vnet上のサービスからApp Serviceのアプリに接続する機能。
・App Service Environment(ASE)→vnet上にApp Serviceを配置する機能。

# 用語
レイテンシ
→待機時間
【windows】zipの解凍で文字化けする時の対処法

windowsでzipファイルを解凍すると文字化けすることがある

## そんなときは…
1.zipファイルを選択して右クリック
2.「プログラムから開く」から「エクスプローラー」を選択
3.解凍後のファイルが表示されるので内容を確認し、文字化けしていなければフォルダごとコピー
4.任意の場所にペースト

この方法だと文字化けしないことが多い

## 参考
https://answers.microsoft.com/ja-jp/windows/forum/all/zip%E3%82%92%E8%A7%A3%E5%87%8D%E3%81%99%E3%82%8B/81594abd-1115-4e9f-9366-a683d1859bbe
キーボードマニア集合！Tech Beach Meetup vol.10に参加してきました！

# キーボードマニア集合！Tech Beach Meetup vol.10に参加してきました！

こんにちは！株式会社PROMPT-Xの大原です。

今回は、鹿児島のmark MEIZANで開催された「Tech Beach Meetup vol.10」に初参加してきましたので、そのレポートです！

## Tech Beach Meetupって？

「Tech Beach Meetup」は、エンジニアを中心としたカジュアルな交流会で、エンジニアの方はもちろん、エンジニアに興味がある方や、エンジニアと交流したい方も大歓迎！

今回のvol.10のテーマは、私たちエンジニアの相棒である「キーボード」でした。

参加者それぞれがお気に入りのキーボードを持ち寄って、実機を見比べたり、カスタマイズについて語り合ったりする、キーボード好きにはたまらないイベントでした。

## イベント参加レポート

私は愛用している東プレのREALFORCE R3を持参して参加しました。

鹿児島ではなかなか実機に触れる機会が少ないメカニカルキーボードですが、このイベントでは様々な種類のキーボードを実際に触らせていただくことができました。

特に印象的だったのは、普段見かけないようなカスタムキーボードの数々！
みなさんのこだわりポイントを直接聞けたのは、とても貴重な経験でした。
キースイッチの選び方や、打鍵感を追求するためのモディファイなど、知らなかった知識もたくさん得られました。

- ![IMG_1655.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951560/d34e11b1-21d6-8cf2-d5ec-33a76c1a986f.jpeg)

## 次回は AI がテーマ！

次回の[Tech Beach Meetup vol.11では「AIの活用についてシェアしよう！」](https://markmeizan.connpass.com/event/339832/)がテーマとなるそうです。これは私の業務とも関連が深そうなので、ぜひ参加したいと思っています。

## 最後に

`Tech Beach Meetup`は、とても活気があって温かい雰囲気だと感じました。大学生から社会人まで、幅広い層のエンジニアやクリエーター、経営者が集まって知見を共有できる場があるのは素晴らしいですね。

次回のAIをテーマにした会も、どんな話が聞けるか今から楽しみです。鹿児島でエンジニアをされている方、これからエンジニアを目指す方、ぜひ一緒に参加しましょう！

また次回のイベントでお会いしましょう！
2025年におけるreCAPTCHA V3高スコア突破方法

### 2025年におけるreCAPTCHA V3高スコア突破方法

以下は、2025年においてreCAPTCHA V3のトークンスコアを向上させるための実践的な手順です。

---

#### **1. 正確なタスクパラメータを取得：NextCaptcha reCAPTCHA Website Info Detectブラウザ拡張機能を使用**  
- [NextCaptcha reCAPTCHA Website Info Detect](https://nextcaptcha.com/download/devtools.zip)というChrome拡張機能をインストールしてください。  
- 対象のウェブサイトにアクセスすると、この拡張機能が自動的にreCAPTCHAの設定を検出し、`websiteKey`や`pageURL`などの必要な情報を取得します。  
- `action`や`websiteInfo`の値も正確に記録してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792743/7ab54a82-ed37-f8af-806b-1e7319461db5.png)

---

#### **2. 対象サイトのreCAPTCHA設定（websiteInfo）を送信**  
- 拡張機能から取得した情報をNextCaptchaのAPIに送信します。  
- 必要な項目は以下の通りです：
  - `websiteKey`: 対象サイトの公開キー。
  - `pageURL`: 対象ページのURL。
  - `action`: 対象サイトで設定されている特定のアクション名。

---

#### **3. 高品質なプロキシを使用**  
- 成功率を高めるため、以下の条件を満たすプロキシを使用してください：
  - **住宅IP**または高匿名プロキシ（例：LTEBoost、ProxyLine）。  
  - 対象サイトと同じ国のプロキシサーバー。  
- 動的プロキシ（IPの切り替えが可能）を使用することで、IPブロックを回避できます。

---

#### **4. https://nextcaptcha.com/apidocs/get-token メソッドを使用してトークンを取得し送信**  
- NextCaptchaの `get-token` メソッドを使用し、以下のようなパラメータを送信して高スコアトークンを取得します：
  ```json
  {
    "websiteKey": "6LfXXXXXAAAAACqXXXXXXX7sXXXXXX7-XF", 
    "pageURL": "https://example.com", 
    "action": "login"
  }
  ```
- APIのレスポンスには、高スコアの `token` が返されます。これを対象のウェブサイトで使用します。

---

#### **5. コード例**  
以下は、Node.jsを使用してNextCaptcha APIを呼び出す例です：

```javascript
const axios = require('axios');

async function getRecaptchaToken() {
  const data = {
    "clientKey":"your_nextcaptcha_api_key",
    "task": {
        websiteKey: "6LfXXXXXAAAAACqXXXXXXX7sXXXXXX7-XF",
        pageURL: "https://example.com",
        action: "login"
      }
  };

  try {
    const response = await axios.post('https://api-v2.nextcaptcha.com/getToken', data);
    console.log("Token:", response.data);
    return response.data.split('|')[1];
  } catch (error) {
    console.error("Error fetching token:", error);
  }
}

getRecaptchaToken();
```

---

### **まとめ**  
正確なタスクパラメータ、高品質なプロキシ、そしてNextCaptchaのAPIを活用することで、2025年には簡単にreCAPTCHA V3の高スコアを突破できます：  
1. 拡張機能で対象設定を取得し、タスクパラメータを正確に確認する。  
2. websiteInfoを送信し、信頼性の高いプロキシを使用する。  
3. APIを呼び出して高スコアのトークンを取得し、対象サイトで活用する。

詳しくは、NextCaptchaの[公式ドキュメント](https://nextcaptcha.com/apidocs)をご参照ください。