OmniAICreator/Qiita-1.07M huggingface dataset:
fastlane 実行時に表示されるプラグイン概要を消す

プラグインを追加した状態で fastlane を実行すると、レーン一覧の前に毎回こんなの⬇️⬇️⬇️が表示されて「邪魔だなぁ」と思ってました。

下記は [Firebase App Distribution](https://firebase.google.com/docs/app-distribution/android/distribute-fastlane?hl=ja) のプラグインを追加した状態。

```
% bundle exec fastlane

[✔] 🚀 
+------------------------------------------------------------------------------------------------------+
|                                             Used plugins                                             |
+-------------------------------------------+---------+------------------------------------------------+
| Plugin                                    | Version | Action                                         |
+-------------------------------------------+---------+------------------------------------------------+
| fastlane-plugin-firebase_app_distribution | 0.7.4   | firebase_app_distribution_add_testers,         |
|                                           |         | firebase_app_distribution_get_udids,           |
|                                           |         | firebase_app_distribution_create_group,        |
|                                           |         | firebase_app_distribution_delete_group,        |
|                                           |         | firebase_app_distribution,                     |
|                                           |         | firebase_app_distribution_get_latest_release,  |
|                                           |         | firebase_app_distribution_remove_testers       |
+-------------------------------------------+---------+------------------------------------------------+
```

これを消すには、

`FASTLANE_HIDE_PLUGINS_TABLE` という環境変数の値に `yes` を設定します。

```bash: fastlane/.env
FASTLANE_HIDE_PLUGINS_TABLE = true
```

この状態で fastlane を実行すると...

```
% bundle exec fastlane

[✔] 🚀 
[16:10:09]: Welcome to fastlane! Here's what your app is set up to do:
+---------------------------------------------------------------------------+
|                          Available lanes to run                           |
+--------+--------------------+---------------------------------------------+
| Number | Lane Name          | Description                                 |
+--------+--------------------+---------------------------------------------+
| 1      | test               | Unit Test                                   |
| 2      | beta               | Submit a new Beta Build to Crashlytics Beta |
| 3      | deploy             | Deploy a new version to the Google Play     |
| 0      | cancel             | No selection, exit fastlane!                |
+--------+--------------------+---------------------------------------------+
[16:10:09]: Which number would you like to run?
```

出なくなりました！！

## 参考

公式ドキュメントに書いてありました！

>To disable the plugins summary table printed at the beginning, set the FASTLANE_HIDE_PLUGINS_TABLE environment variable to true.

Configuring fastlane - Output environment variables
https://docs.fastlane.tools/advanced/fastlane/
virtualboxからVSCodeでのコンテナ接続まで


[VirtualBoxとは既存のOS上で、別のOSを実行するのに使う仮想環境（仮想マシン）を構築するためのオープンソースソフトウェア](https://www.kagoya.jp/howto/it-glossary/server/virtualbox/)

コンテナ等はまだ関係なく仮想環境を構築するためだけのもの


[Docker MachineとはDocker Machine は仮想マシン上に Docker Engine をインストールするツールであり、 docker-machine コマンドを使ってホストを管理します](https://docs.docker.jp/machine/overview.html#id5)

仮想マシン上にDockerをホストを作成しDockerを使えるようにするもの。
また、仮想マシン上にあるDockerコンテナを操作するもの。


VirtualBoxが入っている前提でVirtualBox上にDocker Engineがインストールされた仮想マシンを作成するコマンド
```
docker-machine create --driver virtualbox vir_machine 
//vir_machineがvirtualbox上に作成される
//--driverのオプションを省略した場合はデフォルトの仮想環境が選択される
```

以下主なコマンドと説明
```
1. `docker-machine create <name>` - 新しいDocker Machineを作成します
2. `docker-machine start <name>` - Docker Machineを起動します
3. `docker-machine stop <name>` - Docker Machineを停止します
4. `docker-machine restart <name>` - Docker Machineを再起動します
5. `docker-machine rm <name>` - Docker Machineを削除します
6. `docker-machine ls` - 現在あるDocker Machinesを一覧表示します
7. `docker-machine env <name>` - Docker Machineの環境変数を出力します
8. `docker-machine ssh <name>` - Docker MachineにSSH接続します
9. `docker-machine ip <name>` - Docker MachineのIPアドレスを出力します
10. `docker-machine inspect <name>` - Docker Machineの詳細情報をJSON形式で出力します
11. `docker-machine scp <source> <destination>` - Docker Machine間でファイルをコピーします
12. `docker-machine upgrade <name>` - Docker Machineをアップグレードします

```

作成した仮想マシン上のDockerホストの情報(tcpアドレスなど)の確認＆シェルへの設定
```
docker-machine env my-docker-machine
eval $(docker-machine env my-docker-machine)
```

docker-machine envのサンプル(chatGPTで出力)
```
# 例えばmy-docker-machineコマンドが出力する可能性がある内容
$ docker-machine env my-docker-machine

# Docker環境変数を設定するexportコマンドの群れ
# DOCKER_TLS_VERIFY - Docker hostと通信する際にTLS検証を有効化するかどうかを指示する
export DOCKER_TLS_VERIFY="1"

# DOCKER_HOST - Docker daemonへの接続情報を含む
export DOCKER_HOST="tcp://192.168.99.100:2376"

# DOCKER_CERT_PATH - TLS認証に使用する証明書のパス
export DOCKER_CERT_PATH="/Users/user/.docker/machine/machines/my-docker-machine"

# DOCKER_MACHINE_NAME - 現在選択されているDocker Machineの名前
export DOCKER_MACHINE_NAME="my-docker-machine"
```

ここまではターミナルでの作業
ここからはvscodeでの作業

VSCodeのsettings.jsonに仮想マシンの情報を記述(envで吐き出した内容)
VSCodeのDev Container拡張機能を使用しコンテナを作成、接続
Amazon Bedrock正式リリースの公式ブログを日本語で簡潔にまとめました

これです。英語ですし長いですよね。サマりました。

https://aws.amazon.com/jp/blogs/aws/amazon-bedrock-is-now-generally-available-build-and-scale-generative-ai-applications-with-foundation-models/


# 内容まとめ

## はじめに

- 本日（※米国時間9/28）、Amazon Bedrockが一般提供（GA）となった。
- 4月にアナウンスされていた各社提供の基盤モデル（AI21 Labs, Anthropic, Cohere, Stability AI, Amazon）に加え、Meta社のLlama 2モデルもまもなく提供予定。


### Bedrockのおさらい

- サーバーレスのためインフラ管理不要
- Bedrockは基盤モデルをプライベートにカスタムできる（ファインチューニング、RAG等）
- Bedrock Agent機能もプレビューで提供中

https://aws.amazon.com/jp/blogs/aws/preview-enable-foundation-models-to-complete-tasks-with-agents-for-amazon-bedrock/

- CloudWatchで利用状況メトリクスの可視化が可能
- CloudTrailでAPI利用の監査ロギング、トラブルシュートが可能
- GDPR準拠のアプリ開発や、HIPAA規制の機密なシステムにも利用できる


## 実際に使ってみる

### Bedrockの始め方

- マネコンやAWS SDKのほか、OSSフレームワーク（LangChain等）から基盤モデルを利用可能
- マネコンのBedrockコンソールから基盤モデルを選べる。最初にアクセスの有効化が必要
- Playground機能でCohere, Claudeなどのお試し例も掲載あり
- 設定可能な推論パラメーターの紹介もあり（Temperature, Top P, Top K, Maximum Length, Max Tokens）


### APIからの使い方

- AWS SDK for Python（Boto3）を例にした利用手順の紹介
- `list_foundation_models()` で利用可能な基盤モデルの一覧出力ができる
- `InvokeModel` APIでBedrockのインターフェースを呼び出せる
    - Jurassic-2モデルを使ったサンプルコードの紹介
- 同じく `InvokeModel` APIでEnbeddingモデルの呼び出しも可能
    - Amazon Titan Embeddingsモデルを使ったサンプルコードの紹介
- `InvokeModelWithResponseStream` APIを使えばモデルの出力を非同期にストリームできる


# シビアなエンタープライズ要件にも対応

### データ保護とネットワークセキュリティ

- Bedrockで使用するデータはAWSアカウント内でプライベートに保つことが可能
- サービス改善のためにユーザーのデータを読み取ったりすることもない
- データはAPIを処理するリージョン内に留まる
- すべてのデータは暗号化される（最低でもTLS 1.2による転送中の暗号化や、KMSによる保存時のAES-256暗号化）
- PrivateLink用のVPCエンドポイントを用いてVPCと安全に接続できる


### ガバナンスと監視

- IAMによる権限管理が可能
- アクティビティはCloudTrailログに保存される
- `AWS/Bedrock` 名前空間でCloudWatchへのメトリクス送信が可能
    - InputTokenCount、OutputTokenCount、InvocationLatency、Invocations等
- ディメンションでモデルIDを指定したフィルタリングもできる



# 一般提供開始にあたって

### 料金

- 入出力トークン数をベースに請求が発生する。画像生成モデルは生成した画像単位での請求
- 価格設定は2種類
    - オンデマンド：最低料金なしで使った分だけ課金
    - プロビジョニング：大規模利用向け。利用期間をコミットする代わりにスループットを保証できる（分間の入出力トークン最大数）

https://aws.amazon.com/jp/bedrock/pricing/


### もう使えますよ！！

- US East (N. Virginia), US West (Oregon) リージョンで利用可能
- 引き続きプレビュー提供となるもの
    - Amazon Titan Text ファミリーのテキスト生成モデル
    - Stability AI の Stable Diffusion XL画像生成モデル
    - Agents for Amazon Bedrock
- Coming soon!
    - Llama 2の13B & 70Bパラメーターモデルがまもなく登場予定。ファインチューニングにも対応


# おわりに

まもなく公式の和訳ブログも出てくれるかと思いますが、もし不備等あればお知らせくださいますと幸いです🙇‍♂️
IBM i駆け出し日記：VS CodeでIBM iを触る~設定編~

# VS codeとは
Visual Studio Code（通称：VS Code）は、Microsoftが提供する無料の統合開発環境（IDE）の一つです。

拡張機能を入れればIBM iもVS codeからコンパイルできたり、コード編集できたりするんです！

GUIベースの開発コンソールはRDiが既にありますが、VS Codeは無料で使えます。
(RDiの方ができることが多い上にIBMサポートがついているのでおすすめではありますが)

とりま「GUIベースでIBM iの開発やってみたい」という方にVS codeはおすすめです。

# 手順
## VS codeのインストール
ここからVS codeのインストールできます
https://code.visualstudio.com/download

### Macユーザーの場合

1. Mac用のVS Codeをダウンロード: ダウンロードページで、"macOS"と書かれたボタンをクリックして、VS Codeの.dmgファイルをダウンロードします。

2. インストール: ダウンロードが完了したら、ダウンロードした.dmgファイルをクリックして、VS Codeをインストールします。インストールウィンドウに従って操作してください。

3. アプリケーションにドラッグ&ドロップ: インストールが完了すると、VS Codeアプリケーションを「アプリケーション」フォルダにドラッグ&ドロップして、VS Codeをアプリケーションフォルダに移動します。

4. VS Codeを起動: アプリケーションフォルダからVisual Studio Codeを起動します。


### Windowsユーザーの場合
1. Windows用のVS Codeをダウンロード: ダウンロードページで、"Windows"と書かれたボタンをクリックして、VS Codeのインストーラー（.exeファイル）をダウンロードします。

2. インストール: ダウンロードが完了したら、ダウンロードしたインストーラー（.exeファイル）をダブルクリックして、VS Codeをインストールします。インストールウィザードに従って操作してください。

2. VS Codeを起動: インストールが完了すると、VS Codeを起動できます。通常、スタートメニューやデスクトップにショートカットアイコンが作成されます。

## VS codeをを日本語に設定する
左の拡張機能アイコンをクリックすると検索タブが開きます。
そこに**Japanese Language Pack for Visual Studio Code**と入力し、こちらをインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/4f8a3dde-5618-fff4-c7d2-797fdcc81133.png)

インストールが終わりVS codeを再起動すると、日本語設定になります。

## 拡張機能のインストール
VS codeとIBM iを接続するためにこの拡張機能を導入する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/9e79874a-39e6-7cf9-b0e9-abd431510ccb.png)

日本語機能をイントールした時と同様にこの拡張機能もインストールします。

こちらは拡張機能パックみたいなもので、インストールするといろいろな拡張機能がインストールされます。
その中でもCode for IBM iという拡張機能を用いてIBM iとVS codeを接続していきます。
![png 2023-09-29 at 15.24.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/11d037f5-2a45-859a-2c41-e5e6b2c35dc3.png)

IBM i DevelopmentPackの詳細：
https://marketplace.visualstudio.com/items?itemName=HalcyonTechLtd.ibm-i-development-pack&ssr=false#overview

## IBM iと接続
### 5250画面での操作
まずSSH接続ができるように5250画面上からサーバージョブを開始します。
```
STRTCPSVR *SSHD
```
### VS codeでの操作
メニューバーの一番下、サーバーマークからIBM iとの接続設定をします。

SERVERSの＋ボタンをクリックし、接続したいIBM iの情報を入力します。
Connection Name：VS codeで表示する際の任意の名前
Host or IP Addless：接続する区画の情報
Port：接続する際に使用するポート(SSH接続は22ポートなのでこのままで基本的にOKのはず)
UsernameとPassword：IBM iにサインオンする時のものを入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/676d1e94-16af-45b7-aae5-79489e452d97.png)


情報を入力し終わったらConnectを押し、接続します。

:::note warn
STRTCPSVR *SSHDでSSH接続ができるようにしておいてください
:::
これで接続準備は完了です、次回は機能詳細について書く予定です。
SQLiteのメモ

SQLiteで日付の計算①

~~~
--yyyy形式のデータに１年加算する
SELECT strftime('%Y', date(your_column || '-01-01')) AS fiscal_year
~~~
<br>

<br>
前のレコードと比較するには、SQLiteの窓関数（Window Function）を使用して、前のレコードの値を現在-のレコードと一緒に取得することができます。具体的には、LAG関数を使用します。以下は、前のレコードと比較するクエリの例です：

~~~
SELECT
    strftime('%Y', date(your_column || '-01-01')) AS fiscal_year,
    LAG(strftime('%Y', date(your_column || '-01-01'))) OVER (ORDER BY your_column) AS previous_fiscal_year
FROM your_table;
~~~

<br>
SQLiteでインデックスの一覧を表示する

~~~
SELECT name, tbl_name, sql
FROM sqlite_master
WHERE type = 'index';
~~~
【HTML 学習】文章の表示＜ｐ＞タグ

## ｐは何の略か
段落を表すタグ「ｐ」タグは「paragraph」の略で、にほんごにすると、「段落」。そのまんま。

ｐタグを使うことでながながとした文章も段落が分かれてみやすくなる。（正確にはｐタグ意外でも使えるタグはあるが、文章を書くときの基本はｐタグ）

🟩ｐタグなし🟩
今日はam６：００に起きました。いつもならam5:00に目が覚めて活動するのですが、今週初めから体調を崩して毎日寝つけない日が続いたことが原因でしょう。朝活はできませんでしたが、いつもの起床時間より１時間遅かっただけなので、自分のことを褒めてあげてもいいかなと思いました。

🟩ｐタグあり🟩
今日はam６：００に起きました。

いつもならam5:00に目が覚めて活動するのですが、今週初めから体調を崩して毎日寝つけない日が続いたことが原因でしょう。

朝活はできませんでしたが、いつもの起床時間より１時間遅かっただけなので、自分のことを褒めてあげてもいいかなと思いました。

## ｐタグを使うことのメリット
ｐタグにすることによって各要素との余白の調整が可能になるので、ユーザーの **文章の見やすさ** というアクセシビリティを向上させることにつながる。


## ｐタグ使用上の注意
ｐタグで空白を表現しない。
ｐタグで空白を表現しすると、読み上げ機能を使用する人を混乱させる可能性がある。
IaCのツール選定において考えたいこと

# はじめに
IaC（Infrastructure as Code）は今や必須と言っても過言でないくらい浸透しているアーキテクチャだと思います。（個人の主観）私の対応するお客様の中でも利用数は多く、むしろIaCやらないと仕事任せられないくらいの姿勢でくるお客様もいらっしゃいます。ただIaCを実現するには、単にツールを導入すればよいだけではなく、導入前から様々な製品を比較検討する必要があります。これは当たり前と言えば当たり前の事実ですが、何も考えずにこのツール入れればいいんでしょ。といった安易な考えの元ツールを入れてみたけど使いこなせない。イメージと違ったみたいなお客様も多くいらっしゃったので、個人的なノウハウ含めて検討の際に考えておきたい事を書きたいと思います。

# IaCのメリット・デメリット
簡単に言うと同じような構成のシステムの焼きまわしが用意にできるので、構築コストが圧倒的に手動と比べて削減できます。しかしながら、導入するにあたり利用者に学習コストがかかったり、運用ルールを明確に定めていない場合実機とテンプレートに**差異**が発生してしまい差異が発生した場合の取り込みはどのように実施するのかを予めルール化しておかないと運用が破綻します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/198480/87761599-ae22-b113-5148-783bc6c59951.png)

# IaCの市場
調査会社の分析によると中小企業よりも大企業の方が利用率が高い傾向がある事が判明しました。
これは考えてみればごく当たり前で、中小企業のように複数サービスがサイロ化されておらずかつシステム規模の小さいものに対して、わざわざIaCを導入してもあまりメリットが少ないからです。逆に大企業のようにエコシステムが複数あり、システム規模が大きいものが各部門ごとにそれぞれあるような場合、IaCを使う恩恵が大きいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/198480/2f4376b9-b21f-ff1d-78aa-797c9246e3f4.png)

# 導入にあたり考えること

主に重要な3点に絞って記載しました。
詳しくは以下資料を参照ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/198480/5b8f8045-5fe7-4942-aa18-52632c7e159a.png)

# 各ツールの役割
例えばツールを導入するといってもそのツールがどこまでをカバーしているのかを考えないといけません。
プラットフォームを管理するツールなのか？OSやミドルを管理するシステムなのか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/198480/a74deae3-a51a-47e7-0abf-fb572905317c.png)

ツールによってライセンスや対応言語、動作するプラットフォームの制約等もありますのでこれらを勘案して検討する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/198480/c937de1e-1d83-c6eb-7fbc-6f5bb497bfb1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/198480/e360d0db-e9c0-c518-67c7-5fa86100cefe.png)

# 最後に
少し込み入った話をしましたが、導入のきっかけは各社それぞれあるのでPoCから入るのであればザックバランに使ってみるのもありかと思います。例えばですが、ある会社様では、社内にHCLの有識者がいたためにTerraform一択でやりたいといったお客様もいらっしゃいました。そういったきっかけを元にIaCに取り組むのもありかと考えます。

# 講演資料
ウェビナーで登壇した際の資料まとめておりますので、興味がありましたらご参照ください。

- 動画
https://www.fsi.co.jp/aws/event/aws_summit2023_seminar04.html

- 資料
https://www.fsi.co.jp/aws/pdf/aws_summit2023_seminar04.pdf
ストレージが肥大化した際にチェックすべきこと

某大学のスパコンでそこまで使っていないはずなのにストレージが満タンだったので、いろいろとキャッシュクリアの方法を探ってみました。

## 1. condaのキャッシュクリア方法

```cmd
$conda clean --all
```
このコマンドを打てばよし。
そのあと4種類くらいのキャッシュに対して消していいか聞かれるのでy(yes)を入力すればやってくれます。

## 2. pipのキャッシュクリア方法

```cmd
$pip cache purge
```
pipのバージョンが20.1以上ならこのコマンドを打てばやってくれるらしいけど、残念ながら私の環境はギリ19でした・・・
```cmd
$pip --version
pip 19.1.1 from /usr/lib/python3.4/site-packages/pip (python 3.4)
```

この場合はホームディレクトリに移って手動で削除する方法がいいらしいです

```cmd
$rm -r ~/.cache/pip
```

ちなみに筆者はこれで10GB以上も空きました...定期的なキャッシュクリアは大事ですね

## 3.Singularityのキャッシュクリア方法

以前Singularityの環境構築にチャレンジしたことがあった（難しすぎて断念）のですが、確認したところSingularityのキャッシュも5GBほどありました。
多分もう使わないと思うのでこれも消しておきました。

```cmd
$module load singularity
$singularity cache clean
$module purge
```

### 参考文献
- https://www.xn--ebkc7kqd.com/entry/pip-cache-purge
- https://weblabo.oscasierra.net/python-anaconda-clean/
- https://docs.sylabs.io/guides/3.1/user-guide/cli/singularity_cache_clean.html
AndroidStudioが起動できない場合の対処

AndroidStudioを久々に起動しようとしたら、
エラーが出て起動できませんでした。
エラーメッセージは「pelades」がどうたらこうたら。

同じような記事があったのですが、
最終的に私の方で回避できた方法を記載します。

ちなみに環境は以下を追加居ました。
Windows11
android-studio-2022.3.1.20-windows.exe

手順①
AndroidStudioを再インストール。

手順②
①で治らない場合の対応。
c:\users\ユーザ名\.android～のフォルダを全て削除。
表示されていない場合は、ファイルオプションで隠しファイルを見えるようにしておく。
AndroidStudioを再インストール。

手順③
②で治らない場合。

C:\Users\ユーザ名\AppData\Roaming\Google\AndroidStudio～のフォルダを削除。
AndroidStudioを再インストール。

これで治らなければ分かりません。

手順②の時点で治ると思ったのですが、
AndroidStudioの起動ログを見たところ、まだpeladesを参照していのた、
環境変数やレジストリも確認したのですが分からず、
結果、Roaming配下のファイルが残っていたのが原因でした。
Databricksにおけるモデルサービングエンドポイントの推論テーブル

[Inference tables for monitoring model serving endpoints \| Databricks on AWS](https://docs.databricks.com/en/machine-learning/model-serving/inference-tables.html) [2023/9/27時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

:::note info
**プレビュー**
本機能は[パブリックプレビュー](https://docs.databricks.com/release-notes/release-types.html)です。
:::

本書では、モデルサービングエンドポイントをモニタリングするための推論テーブルを説明し、期待されるアウトプットと特徴量の制限の詳細を説明します。

# 推論テーブルとは？

推論テーブルは、お使いの[モデルサービングエンドポイント](https://docs.databricks.com/ja/machine-learning/model-serving/index.html)におけるリクエストとレスポンスを自動で捕捉し、Unity CatalogのDeltaテーブルに記録します。MLモデルを監視、デバッグ、改善するためにこのテーブルのデータを後で活用することができます。

例えば、推論テーブルを活用することで以下のようなことを達成することができます:

- お使いのモデルの次のイテレーションの再トレーニングデータセットの作成。
- プロダクションのデータとモデルの品質モニタリングの実施。
- 疑わしい推論の診断とデバッグの実行。
- 再ロードされるべき誤ったラベルのデータの作成。

パブリックプレビューに参加するには、[inference tables preview enrollment form](https://docs.google.com/forms/d/14MGQZxxeLRI7ycmWcU5H1mx6o3AyW7cgucLlfnvha2s/edit)を提出してください。

以下の図では、モデルサービングのワークフローにどのように推論テーブルがフィットするのかを示しています。
![](https://docs.databricks.com/en/_images/inference-table-model-serving-workflow.png)

# Unity Catalog推論テーブルのスキーマ

推論テーブルに記録されるそれぞれのリクエストとレスポンスは、以下のスキーマでDeltaテーブルに書き込まれます:

:::note
**注意**
バッチ入力でエンドポイントを呼び出した場合には、すべてのバッチは1行として記録されます。
:::

| カラム名 | 説明 | 型 |
|:--|:--|:--|
| `databricks_request_id`  | すべてのモデルサービングリクエストに付与されるDatabricks生成のリクエストID  | `STRING`  |
| `client_request_id`  | モデルサービングのリクエストボディで指定できるオプションのクライアント生成のリクエストID。詳細は[client_request_idの指定](https://qiita.com/taka_yayoi/items/bce5df57ae5d90bdf971#client_request_id%E3%81%AE%E6%8C%87%E5%AE%9A)をご覧ください。  | `STRING`  |
| `date`  | モデルサービングのリクエストを受信したUTC日付。  |  `DATE` |
| `timestamp_ms`  | リクエストがモデルサービングエンドポイントに到達した時間を表現するエポックでのタイムスタンプ(ms)  | `LONG`  |
| `status_code`  | モデルから返却されたHTTPステータスコード。  |  `INT` |
| `sampling_fraction`  | リクエストがダウンサンプリングされた際に使用されるサンプリング率。0と1の値を取り、1が入力リクエストの100%が含まれることを意味します。  | `DOUBLE`  |
| `execution_time_ms`  | モデルが推論を行う際に要した実行時間(ms)。ネットワークのレーテンシーオーバーヘッドは含まれず、モデルが予測を行う際に要した時間のみが含まれます。  |`LONG`   |
| `request`  |  モデルサービングエンドポイントに送信された生のJSONボディ。 |  `STRING` |
| `response`  | モデルサービングエンドポイントから返却された生のレスポンスJSONボディ。  | `STRING`  |
| `request_metadata`  | リクエストに関連付けらえたモデルサービングエンドポイントに関するメタデータのマップ。このマップには、エンドポイント名、エンドポイントで使用されているモデル名、モデルバージョンが含まれます。  | `MAP<STRING, STRING>`  |

# 制限

この機能には以下の制限があります:

- 顧客管理キーはサポートされていません。
- 推論テーブルはCPUエンドポイントでのみ動作します。モデルサービングGPUのパブリックプレビューに登録している場合には、カスタムソリューションに関してDatabricks担当者にお問い合わせください。
- AWS PrivateLinkはデフォルトではサポートされません。有効化するにはDatabricks担当者にお問い合わせください。

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)
S3のストレージクラスのメリデリ・料金ついて

# S3のストレージクラスを紹介
こんにちは、開発部のCLです。

S3って一口で言ってもめちゃ種類ありますよね。

- S3 Standard
- S3 Standard-IA
- S3 Intelligent-Tiering
- S3 One-Zone IA
- S3 Glacier Flexible Retrieval
- S3 Glacier Instant Retrieval
- S3 Glacier Deep Archieve


多すぎ、、、😇
毎回忘れるので
それぞれのサービスのメリット、デメリット、コストをざーっくりとまとめてみました。



## S3 Standard
:::note info
メリット
データの高可用性と耐久性があり、高速なアクセスが可能。
:::

:::note warn
デメリット
他のストレージクラスに比べてコストが高め。
:::

料金💰:0.023USD/GB程度。

ザ・スタンダード。
大規模なデータを保存しないのであれば、スタンダードを選んでおけば良い感じですね。



## S3 Standard-IA
:::note info
メリット
高可用性と低遅延のデータアクセスを提供し、低コスト。
:::

:::note warn
デメリット
データアクセスが頻繁でない場合には他のストレージクラスよりもコストが高い。
:::
料金💰:0.0138USD/GB程度

IAっていうのは
"Infrequent Access"（頻度の低いアクセス）の略だそうです。

アクセス頻度が低いデータを保存するのならこちらの方がスタンダードよりお得です。
ただ、アクセス頻度が多くなる場合は、standardより高くなるので注意が必要。


## S3 Intelligent-Tiering
:::note info
メリット
自動的にデータを最適なストレージクラスに移動し、コストを最適化できる。
:::

:::note warn
デメリット
少し遅延がある場合があり、アクセス頻度が予測しにくい。
:::
料金💰:0.0250USD/GB 程度
※ モニタリングおよびオートメーション費用が別途かかるらしいです。

Intelligentは「知的」っていう意味ですね。

「アクセス頻度なんて、読めないし知らんがな」という時に選ぶと、
上記の二つのサービス(StandardとStandard-IA)の両方に上手い具合に
使い分けてくれる、頭のいいヤツ、デキるやつ。




## S3 One-Zone IA
:::note info
メリット
低コストなデータストレージオプション。
:::

:::note warn
デメリット
データが1つのアベイラビリティゾーンにしか存在せず、耐障害性が低い。
:::
料金💰:0.0110USD/GB程度

Standard-IAより更に安い！

でも、**One-Zone**って書いてるようにマルチAZでない(障害に弱い)ので、
「障害起きても、別に問題ないぜ」って場合におすすめです。



*****
こっからは長期保存用のストレージ↓

## S3 Glacier Flexible Retrieval
:::note info
メリット
リストアのオプションが柔軟で、低コスト。
:::

:::note warn
デメリット
リストアに時間がかかる場合があり、アクセスが遅延する。
:::

長期間かつ低頻度アクセス用。(1年に1~2回アクセスくらい)
オプションは3タイプあります。

1\. 迅速取り出し
料金💰:高額(0.033USD/GB程度)
取り出し時間⏲:1～5 分

2\. 標準取り出し
料金💰:低額(0.01USD/GB程度)
取り出し時間⏲:3～5 時間

3\. 大容量取り出し
料金💰:更に低額(0.00275USD/GB程度)
取り出し時間⏲:5～12 時間

お金を積むほど、早くデータを出してくれますね😶‍🌫️


## S3 Glacier Instant Retrieval
:::note info
メリット
アーカイブデータへの高速なアクセスが可能。
:::

:::note warn
デメリット
アーカイブからのデータリストアに高コストかかり、数分かかる。
:::
料金💰:0.03USD/GB程度
取り出し時間⏲:ミリ秒単位

「**S3 Glacier Flexible Retrieval**よりも早くデータをくれ！」
って場合はこちらを選ぶと良いですね。



## S3 Glacier Deep Archive
:::note info
メリット
最低コストのアーカイブオプション。
:::

:::note warn
デメリット
データリストアに非常に長い時間がかかり、非常に遅延する可能性がある。
:::

これは、2つのオプションがあります。
データの取り出しはとても遅いですが、その分安い！

1\. 標準取り出し
料金💰:0.02USD/GB程度
取り出し時間⏲:12 時間以内

2\. 大容量取り出し
料金💰:0.0025USD/GB程度
取り出し時間⏲:48 時間以内

*****

## 最後に
S3ってだけでも種類はたくさんありますね。
私自身、全てのプランを使用したことが無いので、
実際に使ってみた感想だったり、コメントいただけると幸いです！

はつかぜ株式会社では、IT学習や業務に役立つ情報を定期的にお届けしていきたいと思っています。
システム開発のお問い合わせ・ご相談はこちら
https://www.hatsukaze.co.jp/inquire/
IBM i駆け出し日記：新しいNavigator for iで現行システムの状況を見てみる

# Navigator for iとは
IBM i システムの監視と管理のをGUIでできるようにするWeb ベースのインターフェースです。
IBM i の標準機能として提供されているので、追加オプションを購入することなく使用できます。

個人的に実行管理機能が、コマンド無しにGUIで見られるのは大変嬉しい、、
![png 2023-09-28 at 17.38.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/4f149c29-d8c6-2e71-f462-e9441007b437.png)
これ以外にも色々できます、、、初心者にとって優しい、、

ちなみに新しいNavigator for iにはインターフェースの改良による操作性向上、複数システムの管理、IBM i サービス (SQLベース) での情報取得が新機能と追加されています。


# どこから使うの？
以下の URL でアクセスする。
```http://[hostname or IPアドレス]:2002/Navigator```

ACSからでも開くことができます。
![png 2023-09-28 at 17.21.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/4eccf323-6c46-5095-c304-70a9d69ef9ea.png)

IBM iにサインオンする際のユーザーネームとパスワードを用います。

# サインオン後の画面
サインオンすると対象ノードが表示されますので、ダブルクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/2ece30bc-c5b1-80dd-221a-52774bb425ec.png)

ダブルクリックすると、メイン画面にはCPU, システムASP 使用率のグラフが表示され、左側にタスクメニューのアイコンがあるホームページが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/483889c1-f7c6-34b3-4856-754ce8670823.png)


# 現行システムの状況を見る
## システム状況
システム・タスクのシステム状況は、システムのCPU、メモリー、ディスクやジョブの状況を１つの画面で確認することが可能です。左のメニューの「システム」から「システム状況」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/2d0cd92f-331c-4e90-fdd6-3abc2eff53ec.png)


CPU、メモリー、ディスク、ジョブ等の情報は、それぞれがブロックとなって表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/96820150-f615-89da-772b-b4f6c9a3030e.png)


## アクティブジョブ
実行管理機能タスクから「アクティブ・ジョブ」を実行することで、アクティブ・ジョブの一覧が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/5e3f5f26-776d-8b5d-e877-282b158338d6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/e7b0c608-22ab-1e26-a62d-21103631b961.png)

このように5250画面から WRKACTJOBコマンドを実行した時と同様な情報が表示されます。

またWRKACTJOBコマンドにない機能として、「ジョブ待機データの調査」があります。
こんな感じで各ジョブがどんな感じで使用されているのか見ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/0edd809e-ae10-abf4-19b3-32cce8d7f0d0.png)

このように、IBM Navigator for i のアクティブ・ジョブから、簡易的にパフォーマンス状況を調査することができるようになります！

## NVMe情報の表示
Power10では、システムの内蔵ディスクはNVMeのみです。 
NVMe の情報、特に書き込み限界や温度などの情報を確認したいとき、5250エミュレーターのディスク関連コマンドは、NVMe固有の情報には対応していないんですよね、、
(書き込み限界を超えるとディスク交換しないといけない）

そこでIBM Navigator for iを使えば、NVMe 固有の情報の確認可能ができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/4f866e6b-6d5b-e169-4f34-24f5392f43af.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/b9a2e681-a866-f9e6-1444-52c1321d5f4d.png)

上の画像のように、NVMe デバイスの書き込み限界は、Life Remaining (%) カラムで確認できます。





こんな感じでGUIでパフォーマンス状況が見られるのはいいですよね。
標準機能で使えるものなのでぜひ使ってみてください~(^o^)
デモ機製作の舞台裏を覗く - ラズパイとNode-REDでポータブルなデモ機を作る

# デモ機製作の舞台裏を覗く - ラズパイとNode-REDでポータブルなデモ機を作る（第1回）
### 
こんにちは！京セラコミュニケーションシステムの大山です。

久しぶりの投稿となります。2023年7月頃から外観検査AIパッケージという撮影した画像から対象物のキズや汚れ等を異常を検出・分類してくれるAIパッケージとして2種類のデモ機を製作中です。といっても私の担当部分はAIに送るための画像を撮る側ですのでAIのAの字も出てきませんが(笑)
物として見せる側の製作過程をブログに上げてみるのも面白いのではということで失敗したところや苦心したところ、工夫したところなど製作の舞台裏を何回かに分けて投稿していきたいと思います。
今回からGoogleCloudPlatform関連の記事ではありませんがお付き合いいただけると幸いです。

## この記事の対象者
Node-REDでRaspberryPiのGPIOを制御したい方
Node-REDのダッシュボードを使ってみたい方
ラズパイでリレー制御してみたい方
fischertechnikを動かしてみたい方

## デモ機について
デモ機はオンライン検査用とバッチ検査用の2種類を製作中でオンライン検査用は以下写真のfischertechnikを使用して、
バッチ検査については撮像装置のようなもの(ずいぶん曖昧ですが・・)を筐体から作成を進めていきます。
オンライン検査用のfischertechnikが納入されるまで時間があるためバッチ検査用の撮像機から検討を始めてみます。

![Q0100_ﾌｨｯｼｬｰﾃｸﾆｯｸ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/3cd8dbfd-272e-86ea-4e8a-6e423d191897.jpeg)

ドイツのfischertechnik社の製品で知育玩具から工学教育など子供から大人まで幅広い年齢層で活用されている教材模型です。今回オンライン検査用として写真のようなカラーセンサーによる色識別と識別色によって搬送経路をかえるミニ検査ラインをデモ機として使います。
ただしそのままの使用ではなく写真左側の赤い箱(カラーセンサ)を取り外して、撮像用のカメラを設置するなど変更を入れる予定です。
こちらについても今後ご紹介します。

## バッチ検査の撮像機を考えてみる

今回バッチ検査で求められる要件としては以下の通りです。
　・撮像の際、周囲の環境の影響を受けないこと
　・持ち運べる大きさ・重さ

これに基づいて、以下のような筐体を検討しました。
　・全面を覆う箱型
　・ライトを点灯して撮影する
　・ワークを置くための扉設置する
　・あまり大きくしない

上記の要件を考慮し、以下のような筐体を考えてみました。

![Q0100_バッチ検査1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/3267e1b8-e867-933e-697f-98a05519b087.png)

ワークを置くプレートは透明アクリル板でそれ以外のフレーム周りのプレートは黒のアクリル板で周囲の環境の影響を受けないように覆う感じとなります。正面にはワークを置けるよう扉を付けて扉を開けるとワークの設置の際、手元が明るくなるようライトを取り付け予定です。

![Q0100_カメラ.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/75c71f94-384b-e153-c6f8-97041d67d85d.jpeg)

上記写真のズームカメラを3か所に配置して、上横下からワークを撮影するイメージです。(横については左側の1点のみですが・・・)
筐体サイズとしては縦330mm×横230mm×奥行き230㎜ですので取手を付ければ持ち運べるサイズではあるかと思います。

まずはこのイメージのポンチ絵でAIチームメンバーの意見を聞いてみようというところで今回の記事はここまでとなります。
今回は概要についての紹介となりましたが次回から本題であるデモ機の製作過程など舞台裏を投稿していきたいと思います。
ということで次回「バッチ検査ってそういうこと！？」お楽しみに。
[Android] Github Actionsでリリースビルド

https://qiita.com/shimizu-you/items/33735dcdd2f89837704f

こちらで、PR時のビルドチェックを記載しましたが、リリースビルドする方法も記事にしたいと思います。


### 準備

準備として、Githubの設定で、Actions secrets and variablesのsecretsにkey情報を保存します。
保存する情報としては、下記になります。
KEY_ALIAS
KEY_PASSWORD
STORE_PASSWORD
KEYSTORE_BASE64

KEYSTORE_BASE64は、署名書をbase64に変換した文字列を格納します。
下記のコマンドを実施して表示された文字列を保存してください。
```
cat release.keystore | base64
```

### Github Actions

```yml
name: Tag Release

on:
  workflow_dispatch:
    inputs:
      tag:
        required: true

permissions:
  actions: read

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Setup JDK
        uses: actions/setup-java@v3
        with:
          distribution: adopt
          java-version: 17
          cache: gradle
      - name: Setup Gradle
        uses: gradle/gradle-build-action@v2
      - name: Run
        run: echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > ./keystore.jks
      - name: Build With Gradle
        env:
          KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
          KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
          STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
        run: |
          ./gradlew assembleRelease --no-daemon
      - name: Release
        uses: softprops/action-gh-release@v1
        with:
          name: ${{ github.event.inputs.tag }}
          body: ${{ github.event.inputs.tag }}
          tag_name: ${{ github.event.inputs.tag }}
```

### 説明

* workflow_dispatchは、Actionsから直接入力するようにします。こちらでは、タグ名を入力するようにしています。

```
on:
  workflow_dispatch:
    inputs:
      tag:
        required: true
```

* secretsで設定したKEYSTORE_BASE64をjksファイルに保存します。

```
      - name: Run
        run: echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > ./keystore.jks
```

* secretsで設定した値をGithub Actionsの環境変数に書き込みます。

```
      - name: Build With Gradle
        env:
          KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
          KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
          STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
        run: |
          ./gradlew assembleRelease --no-daemon
```

* Githubのタグを作成します。

```
      - name: Release
        uses: softprops/action-gh-release@v1
        with:
          name: ${{ github.event.inputs.tag }}
          body: ${{ github.event.inputs.tag }}
          tag_name: ${{ github.event.inputs.tag }}
```

### Gradle

Gradle側でも設定を行います。
Gradleで、ビルドした際にGithub Actionsの環境変数を読み取ります。

```gradle:build.gradle.kts
    signingConfigs {
        create("release") {
            storeFile = File(rootProject.projectDir, "keystore.jks")
            keyAlias = System.getenv("KEY_ALIAS")
            keyPassword = System.getenv("KEY_PASSWORD")
            storePassword = System.getenv("STORE_PASSWORD")
        }
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            signingConfig = signingConfigs.getByName("release")
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
```

Githubで、タグを作成してもビルドをしてくれる訳ではないので、こちらでビルドとタグ作成をまとめて行えると便利になりますので、参考にしていただければと思います。
e-Govの法令APIで更新法令一覧を取得する_パワークエリで

[以前の](https://qiita.com/gug1msp/items/9b578fbdafbace9e32be)では、e-Govから法令APIで更新法令一覧を**VBA**で取得しましたが、今回は**パワークエリ**でやってみます！
なんとなくVBAでやったけど、そういやパワークエリでもできるはずだよなあと思って！

[追記]
e-GOVのURL変更により修正しました。
`https://laws.e-gov.go.jp`
⇒`https://elaws.e-gov.go.jp`
https://laws.e-gov.go.jp/file/houreiapi_shiyosyo.pdf

# 全体

データ取得するAPIのをカスタム関数としておいて、対象にしたい日付のリストを作成してデータ取得して一覧にしています。

```:ApplData
(date as text) =>
let
    ソース = Xml.Tables(Web.Contents("https://laws.e-gov.go.jp/api/1/updatelawlists/"& (date))),
    Table1 = ソース{1}[Table],
    変更された型 = Table.TransformColumnTypes(Table1,{{"Date", Int64.Type}}),
    LawNameListInfo = 変更された型{0}[LawNameListInfo],
    変更された型1 = Table.TransformColumnTypes(LawNameListInfo,{{"LawTypeName", type text}, {"LawNo", type text}, {"LawName", type text}, {"LawNameKana", type text}, {"OldLawName", type text}, {"PromulgationDate", Int64.Type}, {"AmendName", type text}, {"AmendNo", type text}, {"AmendPromulgationDate", Int64.Type}, {"EnforcementDate", Int64.Type}, {"EnforcementComment", type text}, {"LawId", type text}, {"LawUrl", type text}, {"EnforcementFlg", Int64.Type}, {"AuthFlg", Int64.Type}})
in
    try 変更された型1 otherwise null
```

```:クエリ
let
    ソース = List.Dates(DateTime.Date(DateTime.LocalNow()), 100, #duration(-1, 0, 0, 0)),
    カスタム1 = List.Sort(ソース,  Order.Ascending),
    テーブルに変換済み = Table.FromList(カスタム1, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    削除された文字が挿入されました = Table.AddColumn(テーブルに変換済み, "削除された文字", each Text.Remove(Text.From([Column1], "ja-JP"), {"/"}), type text),
    削除された列 = Table.RemoveColumns(削除された文字が挿入されました,{"Column1"}),
    #"名前が変更された列 " = Table.RenameColumns(削除された列,{{"削除された文字", "日付"}}),
    呼び出されたカスタム関数 = Table.AddColumn(#"名前が変更された列 ", "ApplData", each ApplData([日付])),
    フィルターされた行 = Table.SelectRows(呼び出されたカスタム関数, each [ApplData] <> null),
    #"展開された ApplData" = Table.ExpandTableColumn(フィルターされた行, "ApplData", {"LawTypeName", "LawNo", "LawName", "LawNameKana", "OldLawName", "PromulgationDate", "AmendName", "AmendNo", "AmendPromulgationDate", "EnforcementDate", "EnforcementComment", "LawId", "LawUrl", "EnforcementFlg", "AuthFlg"}, {"LawTypeName", "LawNo", "LawName", "LawNameKana", "OldLawName", "PromulgationDate", "AmendName", "AmendNo", "AmendPromulgationDate", "EnforcementDate", "EnforcementComment", "LawId", "LawUrl", "EnforcementFlg", "AuthFlg"})
in
    #"展開された ApplData"
```

## ApplData
法令APIでデータを取得して必要な部分を取り出している。
`https://laws.e-gov.go.jp/api/1/updatelawlists/`の後ろが8桁の日付で変更したいので関数にする。

## クエリ
必要な日付分のリストを作って、ApplDataを呼び出して全データを一覧に並べている。
この場合だと当日から100日前までを対象にしている。
※対象期間長くするとAPI処理に時間かかる

## 結果
そのままシートに書き出したらこんな風に取得できてる！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2383487/df1277b5-b681-e83f-ce55-d8f28534afb6.png)


# M言語
ほとんど画面ポチポチとかでつくって、M言語分かってないのでおかしな？ムダな？とこもありそう。

# VBAかパワークエリか
単に取得するだけならパワークエリの方がいいのかな。
でも自分的にはVBAの方がそんなに迷わずできた。
たま～～にパワークエリするけど毎回忘れていて調べながらになっちゃうという。

参考
- https://laws.e-gov.go.jp/apitop/
- https://qiita.com/ryokita/items/28887cf45e8c26179ce9
Azure Static Web Apps で静的Webサイトをホスト

静的Webサイトをホストしたいなー、なんとなくAzure出やりたいなと考えていたら良さげなサービスを発見。
その名もAzure Static Web Apps。GitHubにソースコードが入ったrepositoryを準備するだけで自動で静的WebAppのデプロイまでやってくれるらしい。しかも無料のSKUもある。

まずはAzureポータルにログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852911/6c218626-564c-bf5e-8c4a-2976c6ef266f.png)
検索すると出てくるので選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852911/ae965803-03ab-c1f9-13c8-171e12ea9c49.png)
早速つくってみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852911/b00b5725-b498-d89b-f0e4-49199d36eee0.png)
諸々の値を設定するのですが、重要なのはOrganization, Repository, Branchの値。
AzureにGitHubアカウントを連携してあるとここで自分のGitHubのbranchを設定できます。

まずはまだやっていないひとは、AzureとGitHubアカウントを連携しましょう。
また、GitHubでは適当にこれ用のRepositoryを作ります。

すべて終わったらReview+Create。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852911/4179cd7b-4b26-0e17-eea4-d9e82d21a333.png)
完成したらOverviewのURLからサイトにアクセスできます。

ただし、このURLはあまりに味気ないので、自前のドメインに変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852911/df72d0b0-62ed-b8df-4bbf-2a9b9e1d14ed.png)
カスタムドメインから変更可能。

私の場合はお名前.comで購入済みのドメインを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852911/d32debe1-4e31-a2be-ee23-49fd7575f376.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852911/77fc6eab-a682-55de-d23a-189c8020cad6.png)
このTXT形式のレコードをお名前.comのサイトで登録することでドメインの所持証明をします。
以下のようにお名前.comで私はレコードを追加しました。VALUEはAzureポータルからコピペします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852911/31f44219-8805-d295-5dbc-0de0a45a0d47.png)
しばらくすると認証されるので、続けてCNAMEレコードとAレコードをお名前.comのDNSレコードに登録して、自前のドメインでサイトにアクセスできるようになります。

それでは最後にソースコードをGitHub Repositoryの対象ブランチにコミットします。
適当にindex.htmlとBootstrapのテンプレートを組み合わせて配置。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852911/6914bd84-40bb-3b6f-99ca-447cc83cc6a4.png)

こんな感じで見られます。

今後は変更をコミットしてリモートにpushしていくだけで、自動で変更がデプロイされます。
GakuNin RDMで検索出来ないメンバーをプロジェクトに追加する方法

## 要点

* 現時点ではGakuNin RDM内で検索をすると検索者と異なる組織の人やプロジェクトが表示されない。

* 別組織の人をプロジェクトに追加するには、追加したいメンバーの **公開プロフィールのURLまたは末尾のID** を調べ、それを使って検索すれば可能。

* あるいは、**プロジェクトのURL** を調べ、追加したいメンバーの方から直接そのURLを開いてアクセスリクエストを送る、でも可。

## GakuNin RDMとは

[GakuNin RDM](https://rdm.nii.ac.jp) (以下、GRDM) は国立情報学研究所が管理する研究データ管理基盤です。GRDMではデータ管理の単位を「プロジェクト」と呼びます。基本的な使い方は、プロジェクトを新規作成し、そこにメンバーを追加し、メンバー内で共有したいデータを置く、という流れです。

「プロジェクト」といっても研究プロジェクトに対応させる必要はありません。例えば、研究室内のデータ置き場として使う場合は、研究室の教員がプロジェクトを新規作成し、名前は適当に「〇〇研究室データ」などにして、研究室に所属する学生や研究員をメンバーに追加し、研究室内で共有したい研究データを各自で置く、という使い方が出来ます。DropboxやGoogle Driveと同様です。あるいは、自分専用のプロジェクトを作成し、データのバックアップや複数のPC間でのデータ移動に使うことも出来ます。

## メンバーの追加方法

メンバーの追加方法は大きく2通りあります。

1. プロジェクト管理者がメンバーを追加する。
2. プロジェクトに追加したいメンバーの方からプロジェクトに対してアクセス要求を行い、プロジェクト管理者が承認する。

プロジェクトの管理者というのは、そのプロジェクトを作成した人、または、その人が管理者権限を与えた他のメンバーのことです。

1番の方法は、公式ユーザーマニュアルの「[メンバーの追加](https://support.rdm.nii.ac.jp/usermanual/Project-10/)」の項目で詳しく説明されています。対象メンバーがGRDMのアカウントを既に持っているかどうかにより、さらに細かく2つに分かれます。

A. 対象メンバーがGRDMのアカウントを持っている場合
B. 対象メンバーがGRDMのアカウントを持っていない場合

Aの場合は検索して選択、Bの場合はメールアドレスを入力して招待メールを送信、という違いがあります。

## 問題点

ここで問題があります。**対象メンバーがGRDMのアカウントを持っているにも関わらず、検索しても表示されない場合がある** のです。現時点のGRDMの設定では、**検索者と同じ組織に所属する者しか表示されない** ためです。ワイルドカード "\*" を使っても表示されません。例えば、A大学の研究者がB大学の共同研究者をメンバーに追加しようとすると、この問題が発生します。別の事例としては、大学のアカウントとは別にOpenIdPのサブアカウントを追加しようとする場合にも当てはまります[^1]。

[^1]: ちょうど私の所属が変わることになり、自分しか管理者のいないプロジェクトのデータに今後一切アクセス出来なくなる可能性が出てきたため、急遽OpenIdPのアカウントを追加しようとしてこの問題に気付いた、というのが経緯です。

逆に、2番の方法を使って追加対象メンバーの側からプロジェクトを検索してアクセス要求しようとしても、検索でヒットしません。こちらも同様に、自身と同じ組織のプロジェクトしか表示されないためです。

## 解決方法

別組織のメンバーを検索で表示させるには、追加したいメンバーの **公開プロフィールのURLまたは末尾のID** を調べ、それを使って検索すれば可能です。公開プロフィールは、画面右上のユーザー名を押し、プロフィールを選択すると表示されます。公開プロフィールは `https://rdm.nii.ac.jp/XXXXX/` のような形をしています。XXXXX の部分はアカウント毎に異なるIDの部分です。

別の方法もあります。**プロジェクトのURL** を調べ、追加したいメンバーの方から直接そのURLを開いてアクセスリクエストを送り、管理者側で許可する、という方法です。プロジェクトのURLは、メニューバーのプロジェクト名を押したときのアドレスバーに表示されているものです。こちらも `https://rdm.nii.ac.jp/YYYYY/` のような形をしています。

2つ目の方法を使う場合は、予めプロジェクトの「設定」タブより「ユーザーがこのプロジェクトへのアクセスをリクエストできるようにします。」にチェックを入れておいて下さい。
ChatGPT先生と一緒にペアプロ！独学で不安な方も快適なプログラミング学習を実現する

## 2023追記
実際、ChatGPTに慣れてくるとペアプロというよりは丸投げになりますね。
プログラミングの勉強に限らず、本稿の内容を実践する際はまず自分で書いてみて、間違いをお互いに修正し解決していくことを意識してください。
その気になれば丸投げできるので、それは学習ではなくサボりなので気をつけましょう。

---

## 概要
ChatGPT先生とペアプロを行い、独学でプログラミングを学習している方や一人でコードを書くのが不安な方に向けた内容を公開します。
独学で学習する方や一人でのコーディングに不安を感じている方にとって有用な内容となっています。

ペアプロを行った結果、悩んでいたコードが10分でシンプルになったという実話も紹介しています。
また、実務的な意味を踏まえたコメントの書き方も参考になると思います。

最後に、Google先生とChatGPT先生に質問することで勉強することをお勧めするとともに、実務経験者にも質問していることを提案します。

## この記事を読むと学べること
特に独学でプログラミングを勉強する際に不安な方は、ChatGPT先生と一緒にペアプロすることで、短時間でシンプルなコードを書くことができます。
メンテナンスもしやすいコードを作ることができます。

## 本稿でやること
- ChatGPT先生とペアプロしている様子を公開

## 本稿でやらないこと
- ChatGPTの使い方
- ChatGPTの概要とか話
- オチを作る

## 本題
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122800/0b57e763-897c-5dc1-6d48-10d0824e7cc1.png)

（コードが長いので中略）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122800/98176058-4c4b-3fa9-9bc8-521da4793ad1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122800/5fd47014-3839-5999-268b-4bf52434b599.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122800/e771ad15-682b-f8cd-f67b-d11ee06bb196.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122800/7645a594-96b8-b96b-c12c-94118caa529c.png)

私が２時間ぐらい掛けて悩んだクソコードを、デバッグ時間含め10分ぐらい会話するだけでめちゃくちゃシンプルにしてくれました！
各処理をワンライナーで書いているので、こんなお願いをしてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122800/3df985ac-08bd-2981-62bf-723b2b0cbc78.png)

後でメンテナンスする人＝私にも嬉しいサポート付き！
このコメントの書き方は参考になる方も多いかもしれませんが、コメントの内容はコードを見れば分かるじゃん！と思ったので、より実務的な意味に修正が必要ですね。
そこまでChatGPTに頼るな、という話ではありますが。

## プログラミングの勉強はGoogle先生とChatGPT先生に質問してみよう！
一応、私の立場（ITスクール講師）としては、あなたが目指している業界の実務経験者にも質問などなど訊いてほしいなー、とは思いますが、なかなかレスポンスが難しいタイミングもあるので、こういったツールはガンガン活用していくと良いです。
最終的なコードレビューは講師にもお願いしてみると、現場で流した血と汗と涙が混じった意見がもらえると思います。
私が教鞭を執るときはより一層、気をつけようと思いました。

### 提案
業界の相談や履歴書の添削をしてほしいという要望を多くいただきますが、そういった相談もChatGPTに投げてみると面白いかもしれません。
私もですが、ChatGPTに相談しても受かるかどうかは時の運・担当者との相性だったり色々な要因があるので確約しかねますが、気は晴れると思います。
AWS Backupでタグ指定バックアップを行う際の注意点 (BackupSelectionプロパティのListOfTagsとConditionsの違い)

AWS Backup用CloudFormationを作成し、リソースに付与されているタグを指定してバックアップを行った際に、指定通りのバックアップが実行されないことを確認しました。
原因は、`AWS::Backup::BackupSelection` の `ListOfTags` と `Conditions` の違いが十分に理解できていなかったことでした。
ListOfTagsとConditionsは複数条件によって挙動が異なるため、その違いについてまとめます。

## ConditionsとListOfTagsの違い

- **Conditions**: 複数の条件を指定する場合、すべての条件に一致するリソースのみを割り当てます (AND ロジックを使用)。
- **ListOfTags**: 複数の条件を指定する場合は、少なくとも 1 つの条件に一致するすべてのリソースを割り当てます(OR ロジックを使用)。

詳細は [AWS公式ドキュメント](https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/API_BackupSelection.html#API_BackupSelection_Contents) を参照してください。

### Conditionsの例

```
"Conditions": {
  "StringEquals": [
    {"ConditionKey": "aws:ResourceTag/Test", "ConditionValue": "true"},
    {"ConditionKey": "aws:ResourceTag/Prod", "ConditionValue": "true"},
  ]
}
```

- 両方のタグが付与されているリソースのみバックアップされる
- どちらか片方のタグが付与されているリソースはバックアップされない
- 上記の例ではKey: Test、Value: True 及び Key: Prod、Value: true の両方のタグが付与されているリソースのみ対象になります。
  1.Key: Test、Value: TrueとKey: Prod、Value: True両方付与されているリソースがバックアップされる
  2.Key: Test、Value: Trueのみ付与されているリソースはバックアップされない
  3.Key: Prod、Value: Trueのみ付与されているリソースはバックアップされない


### ListOfTagsの例

```
"ListOfTags":[
  {
    "ConditionType":"StringEquals",
    "ConditionKey":"Test",
    "ConditionValue":"True"
  },
  {
    "ConditionType":"StringEquals",
    "ConditionKey":"Prod",
    "ConditionValue":"True"
  }
]
```

- どちらか片方のタグが付与されているリソースがバックアップされる
- 両方のタグが付与されているリソースもバックアップされる
- 上記の例ではKey: Test、Value: True または Key: Prod、Value: True のタグを持つリソースが対象となります。
  1.Key: Test、Value: TrueとKey: Prod、Value: True両方付与されているリソースがバックアップされる
  2.Key: Test、Value: Trueのみ付与されているリソースがバックアップされる
  3.Key: Prod、Value: Trueのみ付与されているリソースがバックアップされる

## 条件が一つの場合のバックアップ対象リソース

Conditions と ListOfTags のどちらを使用しても、条件が一つの場合は、条件に一致するリソースのみがバックアップ対象となります。

### Conditions の例

```
"Conditions": {
  "StringEquals": [
    {"ConditionKey": "aws:ResourceTag/Test", "ConditionValue": "true"},
  ]
}
```

この例では、Key: Test、Value: True に一致するリソースのみがバックアップ対象となります。

### ListOfTags の例

```
"ListOfTags": [
  {
    "ConditionType": "StringEquals",
    "ConditionKey": "Test",
    "ConditionValue": "True"
  }
]
```

この例でも、Key: Test、Value: True に一致するリソースのみがバックアップ対象となります。

## まとめ
タグ指定バックアップを行う際は、複数タグを指定する場合は完全一致を求める場合は `Conditions` を使用し、一部条件一致の場合は `ListOfTags` を使用しましょう。
【ライフハック】mac14.0 Sonomaでexeを実行するならWinにリモートで繋げば良くね？になるまで

Qiitaの下書きを何の気なしに開けたらすごい量あって、消していいのかダメなのかもぱっと見分からなくなったんで履歴機能を使って管理すれば良くね？まで気付いたついでに書き直すことにします。
書き直すとは言っても内容は完全に書き下ろしだし、下書き時点とは全く違う内容なので履歴がぐちゃぐちゃになってしまいますが、まぁ誰も見てないでしょう。
少なくとも、私は見てないです。

---

## 2023年版: macOS Sonoma(14.0)で.exeを実行するならhomebrewでwine入れるのが良さそう
本題です。

### 対象読者
- MacユーザーだけどWindowsアプリ(.exe)を動かしたい
- （業務使用ではないので）無料にこだわりたい
- BootCampだと切り替えが面倒orそこまでやりたくない

今回は珍しくAND条件です。
予めお詫びしておきますと、上記全てを満たした方じゃないとあまり旨味はないと思います。

**※動かすことが目的なので、使用に耐えるかどうかはここでは扱いません。**

### 結論（解決方法）
Windows端末を用意してリモートでつないで解決する事にしました。
Macで実行するわけじゃないけど、Macを使ってWindowsアプリを動かすという目的は達成したしセーフ？

### 前提の確認
結論はタイトルの通りです。
エラーメッセージもセットアップの仕方や環境がまちまちで、動かしたいexeも色々あり、使っているライブラリも違うはずなので動かない理由までは追求していません。

共通しているのは「アプリが指定する通常のセットアップ」「32bit/64bit双方のパターン、exeをそれぞれ実行」ぐらいです。

### 1. リモートで実現する
要はMacとWindowsを繋げてGUIで操作できれば良いので、色々な方法やツールで解決できます。
私は個人利用かつ同一ネットワーク上なのでsplashtopを選択しました。

https://www.splashtop.co.jp/download/

ピンポイントにexeだけを実行する場合は、Steamも使えます。
Steamライブラリ画面からゲームリストの下部に「ゲームを追加」があるので、ここから任意のexeファイルを入れてあげると良いです。
ここで追加するものはゲーム以外も入れられるので、普段windows端末で管理しているアプリを入れておくとSplashtopのショートカット的に扱うことができて便利です。

#### なぜこの方法を採用したのか
今後またMacやwineのアップデートで互換性がなくなってしまったり、そもそも安定しない環境で無理やり実行させるよりは確実製が高く安定するから、ですね。
MacのスペックよりWindowsのスペックの方が高い事もあります。
そのためにネットワークを占有してしまうのは悩みと言えば悩みですが、日常生活で困らなかったので運用次第だと思います。

### 2. homevrew-wine
https://jonkara.com/2022/10/25/homebrew-wine/

全部が全部動くとは思っていませんが、手元にあるインストーラ不要タイプのexeは動いたのでおそらく大丈夫でしょう。
Unityが動いたので多少大きいものでも大丈夫でしょう。
とはいえ、スペックの問題だと思いますが、快適かと言われると微妙なところ。
フォントも特殊なケースだと全く表示されないこともありますし、今後に期待しましょう。
もしかしたら最適な設定があるのかもしれませんが、そこまでは試していません。

### 3. （失敗）Play on Mac
https://www.playonmac.com/en/

当初案はこれを採用するつもりでした。
OSをアップデートする前からPlay on Macを使っていたので何事もなければそのまま動くだろうと思っていたんですが、そんなに簡単な話ではなかったです。
バックアップのために古いアプリを残した状態で新しいバージョンを入れようとしていたのが問題かな、と思って思い切って古いアプリと設定（バーチャルドライブ）も削除して入れ直したため、完全に復旧できなくなりました。
まぁPlay on Macも裏側はWineだと思うので互換性かなんかの問題だろうと勝手に思ってます。
GUIが使えるのは嬉しいので今後のアップデートに期待して待とうと思います。

### 別解： RPGツクールMV製のゲームを安全に遊ぶ
スピンアウトしました。

https://qiita.com/nomurasan/items/6b9404aba4d7a12d0bc5

## ネットワークが使えない環境でも使えるようにしておきたい
私の結論としては、exeファイルをMacで動かすよりネットワークを使ってでもexeの実行が安定する環境を用意してリモートで繋ぐとしていますが、今回wineに乗り換えてMacでexeを実行できる環境を作ったことは無駄だと考えてないです。
移動先でexeを使いたくなるシーンもなくはないと思うので、その時にネットワークが使えない可能性もあるわけで。
私の場合はMacbookなので子供のおもちゃも兼ねており（当初そんなつもりもなかったのですが）、出先などで落ち着かせるためにいつものアプリを起動して静かにしてもらう、なんて使い方もしています。

選択肢を増やす、という観点でできることを増やしておくのは良いと思いました。
複数名のAIエージェントにより、複雑なタスクも対応できるようになりました：AutoGen

AI Agentは最近非常に注目されてる領域です。先月公開されたOpen interpreterは、自動的にコードを作成してもらうために非常に人気となりました。
ですが、多くの状況はAI自身で判断することができず、かなり具体的な指示が必要なので、何度も質問を繰り返して一歩一歩進める必要がありました。

 
その後、1ヶ月も経たないうちに、先日MicrosoftがMulti AI Agent OSS、「AutoGen」を正式にリリースしました。（今githubでtop5トレンドのOSSとなっています）
AutoGenは、複数名のAIエージェントで構成されたOSSです。特徴としては、一人のAIエージェントで作業するではなく、複数名のAIたちが会話する形で協力して作業を進めます。（事前にAIたちそれぞれに役割をpromptで設定します。この前話題になったChatDevと似てます）
今までChatGPT一人で対応できない作業をチームで進めるとうまく実現できるようになりました。

 

例えば⇩のように「このサイトのデータを可視化をしてください」というリクエストに対して、AIたちがディスカッションを行いながら作業します。
![9-29-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556459/3edda2fa-0369-7112-f386-557b5d3a3638.png)


特に面白かったのは、プログラマー役のAIがコード生成中にバグを生じた時、レビュアー役のAIがそれを発見してFBしてあげます。
![9-29-3 FB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556459/63455dc8-1ebf-a283-7f00-f8dd1ac85bb3.png)

プログラマー役のAIがそのFBに基づいて再修正して、改めてレビュアー役からFBをもらいます。FBに問題がなければ、マネージャー役のAIに作成物を渡します。そして、タスクが全部完了した後、マネージャー役のAIが他のAIに「よくやりました」とかのコメントもしたり、人間らしいコミュニケーションも行われるのです。

 
今AutoGenのホームページには、いくつかの利用事例がサンプルとして紹介されています。
![9-29-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556459/dc6e6d01-5ec6-06df-e174-b4924a4fbd65.png)

例えば7人のチームで論文を探してmarkdownテーブルでまとめるとか、結構複雑なタスクでも問題なくできます。
*AI数が多いチームであれば、AIは他のAIに指示も出します。
![9-28-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556459/6d09c3ee-2929-21ca-2a73-0e3577b78b4e.png)


 
興味ある方試してみてください
ホームページ: https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat
github: https://github.com/microsoft/autogen
【仕様検討】Pythonのお勉強も兼ねて、競馬予想AIを作ってみる 【Part2】

長らく放置してしまいましたが、前回の続きです。

仕様の検討ということで、他のサイト様なども参考にしながら、
やりたいことをとりあえず列挙して、そこから内容を煮詰めていけたらと思う。

# 競馬予想AIでやりたいこと
とりあえず予想AIの機能として、盛り込みたいことを列挙してみる。

1. netkeiba.com から、過去のレース情報を取得する
2. 予想するレースの馬場情報・天候・競走馬の情報を取得する
3. レースに出場する競走馬データを取得する
4. 取得したデータ類をデータベースに格納する
5. 過去データを元に学習モデルを作成、レース結果の予想を行う
6. 予想結果と実際の結果を比較し、乖離が大きい場合はモデルを修正する
7. GUIでの操作を可能とする

GUIでの操作は正直後回しでいいのかな?
おおまかに、やりたいことが決まったので、詳細を煮詰めていく。

# 1. netkeiba.com から、過去のレース情報を取得する

過去の情報は開催前日までに、取得することを想定する。

過去の情報の取得と一概に言っても、どの情報を学習に利用するかによって、
取得する内容も変わってくる。

今回、取得予定のデータは以下。
* (レースID) ←学習には使用しない
* 日付時刻 (yyyy/MM/dd hh:mmの形式想定)
* 芝・ダート
* 距離   
* 天候 (晴・曇・小雨・雨の4択?)
* 馬場 (良・鞘重・重
* 着順
* 枠番
* 馬番
* (競走馬ID)←学習には使用しない
* 馬名
* 性齢 （性別と年齢で分割予定)
* 斤量
* 騎手
* タイム (mm:ss:fの形式)
* 上りタイム (ss:fの形式)
* 馬体重 (当日体重と増減量で分割する予定)
* 人気

ここから下の情報については、一旦保留。後々、追加していく予定。
* 着差
* 調教師
* 馬主
* 通過順
* ラップタイム


ここで取得したデータをエンコードして、DBに落とす方向で考える。
どのDBMSを使うかは要検討
(macとWin両方で使うならmysql? 個人的には勝手のわかるSQLSERVERがいいんけど・・・
 Dockerも学ぶの・・・??そうなら、環境全部Dockerに落とし込めよって話になるよな??)

また、エンコードはどの手法を用いるか、実際にデータを取って
試してみた上で最終決定する。

# 2. 予想するレースの馬場情報・天候の情報を取得する

この内容については、開催日当日でないと、取得が難しい内容なので、
当日の予想直前に動かす想定。

開催予定の全レースを取得してもいいが、私の賭け方的に、個別にレースを指定する
パターンが良いかと思うので、開催場所とレースを指定して、取得する方向で考える。

一応、開催場所の全レース取得のパターンと、開催日にある全レースのデータ取得という
パターンも作っておくか・・・?(この2パターンー作る方が楽な説がなくもない)

ここで取得するデータは以下の想定
* (レースID)
* 開催レース場
* 発走予定時間
* 馬場情報
* 枠番
* 馬番
* (競走馬ID)
* 馬名
* 性齢 （性別と年齢で分割予定)
* 斤量
* 騎手
* 馬体重 (当日体重と増減量で分割する予定)
* 人気

一旦このデータで取得して、馬の性齢は予想レースのテーブルには格納せず、
後に出てくる、競走馬テーブルのUPDATEに利用する。

予想データについては、開催日を過ぎたら、消去するような仕組みを構築しておいてもいいかもしれない。
ディスクの圧迫にもつながるからね。

# 3. レースに出場する競走馬データを取得する
競走馬データを取得するとは言うものの、DBのテーブル構成を脳内妄想した感じだと、

'''
競走馬 → 馬とレースの紐づけテーブル → 予想レース
↓
馬とレースの紐づけテーブル
↓
過去のレース

の関係で構築できて、それぞれを競走馬のIDで結合できる。
となれば、競走馬テーブルに必要なデータは、以下のものだけになる。
* 競走馬ID
* 競走馬名
* 性別
* 年齢

年齢については、予想レースのデータを取得した際に、すでに格納されている
年齢から変更があれば更新する。

ざっくりとこんな形で、競走馬データのデータは取得できるのではないかと思う。

# 4. 取得したデータ類をデータベースに格納する
3．でも書いたように、データベースの構造は、妄想段階だが、以下の形を想定している。
競走馬 → 馬とレースの紐づけテーブル → 予想レース
↓
馬とレースの紐づけテーブル
↓
過去のレース

テーブルの中身は1,2,3で記載した物になるので、カラムの内容も必然的に同一になる。

実際に作ってみてかな?

# 5. 過去データを元に学習モデルを作成、レース結果の予想を行う
ここからが、tensorを使ってやっていく部分になる。
まずは過去データを元にモデルを作る過程。

実際できるかどうかは置いといて、芝は芝のモデル。ダートはダートのモデルとして、
2パターンを用意したいと思っている。

余裕があれば、ダート芝関係なく作ったモデルと、芝のみ、ダートのみのデータで作ったモデルで、
評価をしてみるのもありかと思う。これついては余談レベルでの話になるかな?

モデルの作成のための、元データはそれぞれ過去5年分(2017~2021年)のデータを元にする想定。
評価の期間としては1年分(2022年)のデータを用意する。

評価値としては、各馬のタイムと、それをソートして得られる着順を想定。

できたモデルの中で最も的中率高かったモデルを採用。

できたモデルを持って、未来のレースの予想を出力する。

書くのも疲れてきたので、ざっくりとこんな感じということで。

# 6. 予想結果と実際の結果を比較し、乖離が大きい場合はモデルを修正する
予測結果と予測したレースの結果を突合し、どの程度乖離があるかを確認する。

それぞれ予測と実際をDB上にデータとして保持した上で、乖離度を測るような動きにする。

モデルの修正については正直勉強が足りんので、後々加筆します。

# あとがき
あれをやるんなら、これもやらないとできない。
これもやるなら、、、とやることばかりが膨らんでいって、収拾がつかなくなってきている気がする。

それでも、大体の大枠は決まったので、
次回はdockerの環境構築と、docker上でanaconda、tensor、sqlserverを動かす準備をする予定。

早く動かないと秋のGIウィークが終わっちゃう！！

以上
AWSの生成AI基盤「Amazon Bedrock」が一般利用開始

米国時間2023年9月28日に一般利用開始とのこと。
https://aws.amazon.com/jp/blogs/aws/amazon-bedrock-is-now-generally-available-build-and-scale-generative-ai-applications-with-foundation-models/

日本語対応もしているそうなので、近いうちに何かしら触ってみようと思います。
AZ-500合格記(2023/9/29投稿)

# はじめに
この度MicrosoftのAZ-500試験(Azure Security Technologies)を受験してきましたので、勉強した内容と受験した感想を書いておきます。
これから受験される方の参考になれば幸いです。


# 前提
* AZ-900/AZ-104/AZ-700/AZ-305/AZ-204/DP-900は取得済み
* AzureはAPIM、DevOpsを少し触って、VMを作った程度
* AWSの実務経験あり
* AWS認定は全て取っています(詳細は[こちら](https://qiita.com/handy-dd18/items/d21d914bf1c475d777f2))
* Google Cloud認定は5つ取ってます


# 学習内容


## ①試験対策本
AZ-500は珍しく試験対策本が出ていたので、基本的にはこちらを元に学習しました。
最初はMS Learnのラーニングパスを考えていたのですが、必要なラーニングパスの学習想定時間が21時間超えとちょっとボリュームがあったため、もう少し手軽に学習できる対策本にしました。
Azureの認証に関わる部分の知識は薄かったのですが、ざっくり概要を理解するのにはかなり役に立ちました。

- [最短突破 Microsoft Azureセキュリティ テクノロジ[AZ-500]合格教本](https://amzn.asia/d/bMd1wTq)


## ②Udemy
試験対策本を一通り見終わった後は、Udemyの以下の講座を購入して、ひたすら模擬問題を解きました。
Udemyで公開されている模擬問題は大体解説が物足りないので、不足してそうな知識については、MS Learnで再学習することで補いました。

- [AZ-500 Microsoft Azure Security Technologies Practice Tests](https://www.udemy.com/share/109kbQ3@EbOu5x1mgZG1WXNCjMu6RCfbjDfpWDJ5sshbrU2nqW4UBIKEq4BX15O7lo0XaBfo/)


# 受験した感想
思ったよりは難しかったですが、以下に記述するMS Learnを駆使して何とか解ききることができました。

--
他の記事でも言及している方がいましたが、最近マイクロソフト認定試験で試験中にMS Learnにアクセスが可能になりました。
https://techcommunity.microsoft.com/t5/microsoft-learn-blog/introducing-a-new-resource-for-all-role-based-microsoft/ba-p/3500870

MS Learn以外のリンクへはアクセスできないようになっていますが、問題文を読んでMS Learnから文言で検索→該当箇所を確認して回答、ということが実際にできました。
ただ、ケーススタディなどの条件に合わせた回答を行う問題などの答えは当然出てこず、調べ方によっては適切なページがヒットしないことがあったので、全ての問題においてカンニングできるかというと、そういうわけでもないようです。

正誤の確認や微妙に忘れてしまった仕様を調べる用途で使用するのが一番良さそうなので、MS Learn頼りにせず事前勉強は必ず行いましょう。


# 受験結果
合格でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440403/d5761929-e44d-ff7f-11f2-e6f520b37187.png)


# おわりに
AWSもそうですが、クラウドにおいてセキュリティの観点は特に重要になってきますので、試験を通して知識を学べたのは良かったです。

この記事がどなたかの参考になれば幸いです。