OmniAICreator/Qiita-1.07M huggingface dataset:
AWSのストレージサービスについて

# きっかけ
AWSのストレージサービスといえばS3の印象が強かったですが資格勉強を進めていくうちに他にも様々なストレージサービスがあることを知りました。
Amazon E〇Sのような名称のものが多くごっちゃになってしまうことがあるので今回はそれを整理するために作成しました。

---

## 目次


以下について(特にS3,EBS)まとめています。

・Amazon **S3**：**S**imple **S**torage **S**ervice
・Amazon **EBS**：**E**lastic **B**lock **S**tore
・Amazon **EFS**：**E**lastic **F**ile **S**ystem
・Amazon FSx for Windows File Server
・AWS Backup

---

## 詳細


### Amazon S3(以下「S3」と表記)


完全マネージド型のオブジェクトストレージ

**特徴**
・ストレージ容量が無制限であり、残りの容量の確保や調達を気にする必要がありません。

・耐久性が非常に高いです。選択したリージョン内の複数のAZに保存されることで自動的に冗長化します。S3の耐久性はイレブンナイン(99.999999999%)

・インターネット経由(HTTP/HTTPS)でのアクセスになるので基本的に世界中のどこからでもアクセスができます。

料金やセキュリティ等も気になる方は下記をご参照ください。

https://aws.amazon.com/jp/s3/security/

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

### Amazon EBS(以下「EBS」と表記)


EC2インスタンスにアタッチして使うブロックストレージボリューム

**特徴**
・必要な時に必要な容量を確保して使用できます。不要になれば削除も可能です。

・単一のAZ内の複数のサーバーにデータがレプリケートされる。(複製)

・永続的にデータが保存されます。一時保存のインスタンスストアとは対照的です。

・スナップショット機能があります。スナップショットの保存先はS3なので自動的に冗長化されます。

・4つのボリュームタイプがあり、秒間当たりのI/Oアクセス数に差があります。使い始めてからもオンラインで変更が可能です。
<性能順に上から記載します>
1.プロビジョンドIOPS SSD(io2)
2.汎用SSD(gp2,gp3)
3.スループット最適化HDD
4.Cold HDD



### Amazon EFS(以下「EFS」と表記)


共有ファイルとして利用することができます。
EBSと違い複数のAZに保管することもでき、複数のEC2インスタンスにマウントすることも可能です。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313236383334382f36363234633066332d633034352d643463362d353934302d6663393135323632343539622e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806884/f8461aa2-28a6-be2e-db5a-4f0f4be7a3cc.png)

参考元：https://recipe.kc-cloud.jp/archives/11974/

### Amazon FSx for Windows File Server


WindowsではSMBプロトコルでFSx for Windows File Serverを使用します。
※SMB(Server Message Block)…コンピュータネットワーク上でファイルやプリンタを共有するための通信プロトコル


### AWS Backup


S3,EBS,EFS,FSxなどを一元的にバックアップするフルマネージドなサービスです。サービスごとに行っていたバックアップの作業がこれにより統合されました。


## 最後に
こちらでは大雑把な自分なりの解釈をお伝えして終わろうと思います。
間違いや付け足しがあればお気軽にコメント下さい。

**S3**：AWSストレージサービスの代表格。何でも無制限に入れられる上に高耐久なオブジェクトストレージ。

**EBS**：EC2にくっつけるブロックストレージ。

**EFS**：ファイルストレージ。EBSに比べて複数のAZ、EC2に保存、接続を行う。

**Amazon FSx for Windows File Server**：SMBプロトコルでファイルサーバーを使うときはコレ

**AWS Backup**：サービスのバックアップを一元的に管理するサービス。統合。
おいしいコーヒーが飲みたかった

おはようございます！こんにちは！こんばんは！

今年、某化学メーカーに入社し、絶賛研修中のきりんと申します！

　当社は、化学屋さんのお力添えになるよう、努力努力の日々を送っています。ここ最近では、ITにも力を入れていこう！という流れから、今年度より、IT研修なるものを取り入れています。

 　その中で、社内でも実際に用いられているPower系ソフトを用い、自分の生活でのお困りごとを解決してみようのコーナーがあり、さらにその成果についての記事を書いてみようということで今に至る次第です。


　今回作った（作ろうとした）ものは、おいしいコーヒーをおすすめしてくれるBotです。なぜこれを作ろうと思ったかといいますと、友人からコーヒーメーカーをもらいまして、もらったはいいもののコーヒー豆の種類なんぞてんでわからず、おすすめのコーヒー豆をおすすめしてくれたら参考になるなと思い立ったからです。
 　制作時間はわずか1日しかなかったので、完成までは到達できていませんが、現時点の成果をご紹介いたします。




***タイトル：おいしいコーヒーが飲みたかった***
〈使用ツール〉
・Power Apps
・Power Automate
・Dify


　思い描いた構想としては、Power Appsに「今の気分」を入力すると、それがPower Auomateに送られます。そして、Power Automateに組み込んだDifyが気分を認識し、気分にあったコーヒー豆を選んで教えてくれるというものです。

  　Difyで出力してもらおうとしていた回答は以下の感じです。
   
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810393/07aedeaa-f3e5-79ce-a9a7-86118dbe6d5d.png)



　この流れをPower Automateで組もうとしました。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810393/4c326352-ff5a-8b86-77f0-0c4be7987f24.png)

　JSON解析以降のアクションがよくわからず、求めていた回答以外の文字れ列も含まれてしまい、結局その改善がうまくいかずに完成を待たずしてタイムアップとなってしまいました．．．（救援求む）


## ～まとめ～
　今回はPower Automateを主軸に作成を行い、残念ながら完成までは到達できませんでした。それでも難しい知識がなくとも、それとなく作成にとりかかることができ、なかなか楽しい経験をすることができました。
謎の挙動をするFactoryBotの作り方

しょーもなく、はたまたネタでもないですが、1時間弱苦しめられたので記す

# 事象

下記コードを実行したときに、`user_id`と`group_id`は同じIDになる想定だったが、なぜか違う値になり混乱していました（変数名は適当なんで気にしないでください）

```ruby
create(:table_name, user_id: user.id, group_id: user.id, other_group_id: other_group.id)
```

しかも面白いことに、`group_id: 'xxx'`と入れてもそれは反映されず、なぜか数値が返ってきます。はて？？？？？？

# 調査内容

## コードをデバッグ

とりあえずprintデバッグを進めると、`other_group.id`の値がでていることがわかりました（？）


はて？？？？？？？

## DDLを調べる

テーブル構造が間違えているのでは？と思い調べましたが大丈夫でした。はて？

## モデルを調べてみる


あーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー


```ruby:とあるモデル
   self.table_name = 'xxx'
   belongs_to :other_group, foreign_key: 'group_id'
```

`other_group_id`というカラムがあるのに、`group_id`を外部キーにしてました！！！なるほど！



# 結論

- FactoryBotは悪くない
- 徹夜はいけない
- とりあえず誰かよんで事象を説明してみる
    - それやったら10分ぐらいで解決した。感謝
【2 次元上のいもす法の練習問題】 練習問題 (paizaランク C 相当)

#### 問題

https://paiza.jp/works/mondai/prefix_sum_problems_advanced/prefix_sum_problems_advanced__2dimos_practice?language_uid=r

#### 解答

うっす。:raised_hand::cow:
今回の問題はかなり楽しくできました。RPGゲームとかの範囲攻撃はこんな感じで作られてんのかな。

大まかな流れとしては

1. **敵の配列作成**
1. **魔法範囲を作成**
1. **総ダメージ量の配列作成**
1. **敵の体力と総ダメージ量を比較して、カウント**

でやりました。久しぶりにAIを使わずに、自力で解けた気がする...
できれば関数定義もしたいのですが、それはゆっくりやればいいかな

#### 参考文献

https://imoz.jp/algorithms/imos_method.html

```php
<?php
    list($n, $q, $m) = explode(" ", trim(fgets(STDIN)));
    
    $sRow = array_fill(0, $n+1, 0);
    $s = array_fill(0, $n+1, $sRow);
    
    
    // 敵の配列作成
    for($i = 0; $i < $n; $i++) {
        $enemy[$i] = explode(" ", trim(fgets(STDIN)));
    }
    
    // 正方形領域の座標取得、魔法範囲配列の作成
    for($i = 0; $i < $q; $i++) {
        // 座標取得
        list($x1, $y1) = explode(" ",trim(fgets(STDIN)));
        
        // 魔法発動座標
        $x_a[] = $x1-1;
        $y_a[] = $y1-1;
        
        // 発動範囲
        $s[$y_a[$i]][$x_a[$i]]++;
        $s[$y_a[$i]+$m][$x_a[$i]]--;
        $s[$y_a[$i]+$m][$x_a[$i]+$m]++;
        $s[$y_a[$i]][$x_a[$i]+$m]--;
        
    }
    
    // 魔法を打ち終わった時点での総ダメージ量
    
    // 横方向の累積和
    for($i = 0; $i < $n+1; $i++) {
        for($j = 1; $j < $n+1; $j++) {
            $s[$i][$j] += $s[$i][$j-1];
        }
    }
    
    // 縦方向の累積和
    for($i = 1; $i < $n + 1; $i++) {
        for($j = 0; $j < $n + 1; $j++) {
            $s[$i][$j] += $s[$i - 1][$j];
        }
    }
    
    // 倒した敵の数
    $enemy_death = 0;
    
    // 敵の体力と魔法のダメージを比較して、0以下になったら倒したので、カウント
    for($i = 0; $i < $n; $i++) {
        for($j = 0; $j < $n; $j++) {
            if($enemy[$i][$j] - $s[$i][$j] <= 0) {
                $enemy_death++;
            }
        }
    }
    
    echo $enemy_death;

?>
```
ビジュアルプログラミングでアルゴリズムの学習ができる話

# はじめに
皆さんビジュアルプログラミングってご存じでしょうか？
名前を聞いたことがある方でも実際に触れた経験のある方は、そこまで多くないのではないでしょうか。

ビジュアルプログラミングとは、いわゆるテキストプログラミングとは違います,,,
文字でプログラミングを行うのではなく、ブロックと呼ばれるものを使用しながらプログラミングを行います！
有名なビジュアルプログラミングにはScratchと呼ばれるものがあり、
今では小学校の学習で取り入れている学校もあるほどです。

では、なぜビジュアルプログラミングが学習されているのでしょうか？

# ビジュアルプログラミングの有用性

学習されている理由として、難しいプログラミング言語を覚えなくていいという点があげられます！

この特徴はプログラミング初学者にとっては非常に有用なものです。
プログラミングを学習する上で壁となりうるものは大きく2つあると思ってます。個人的に,,,

まず1つ目が、プログラミング独特の考え方との壁です。
これは実際にコードを書く際ではアルゴリズムを組み立てるところに当たります。
日常的にプログラムを書く人には、アルゴリズムを組み立てるのに必要な論理的思考力が多くの場合備わっているため、途方に暮れることはあまりないと思います。
ただ、プログラムを組んだことのない人からすると何をすればよいのか分からなくなることがあります,,,

次に2つ目が、プログラミング言語の習得という壁です。
これは言わずもがです,,,今まで見たことのないものを覚える以上は相当の労力を費やします。
しかも、言語によって差異があり初めてのユーザにとっては非常に扱うのが難しいものです。


これらの壁を２つ同時に解消するのは非常に難易度が高いです,,,
そこで直感的に扱えるビジュアルプログラミングを学習することで1つ目の壁であるアルゴリズムを組み立てる壁を解消することができます！
アルゴリズムを組み立てられるようになり、どういう風に作ればよいかが分かればプログラミング言語を覚える際もハードルが少し低くなります。
ですので、最初にビジュアルプログラミングを学習することで学習者にとっての道しるべになってくれます！


もちろん経験者の方にとってもアルゴリズムというのは非常に重要なものです！
気が向いたときに暇つぶし程度で気軽に取り組むだけでも面白く学習ができると思います！

# まとめ
ビジュアルプログラミングは直感的な操作で学習ができます！
アルゴリズムを組み立てることに特化した学習方法です。
初学者にお勧めですが、経験者でも楽しくできるはず,,,
お時間あるときに少しでも楽しんでみてください！
ChatGPT-3.5先生へ「醤油とめんつゆの違いを教えて下さい。」(全て回答省略)

# ChatGPT-3.5先生へ(１行づつ)
User

醤油とめんつゆの違いを教えて下さい。

めんつゆのおすすめの品名を教えて下さい。

めんつゆのおすすめの品名をランキング順に教えて下さい。

めんつゆのおすすめの品名をランキング順に教えて下さい。日本語で。


# ChatGPT-3.5先生へ(4行を一度に)

# google先生へ
(同じ)



# (2024-06-09追加)ChatGPT-3.5先生へ
User
めんつゆの商品名をおすすめランキング順に教えて下さい。メーカー名とJANコードと100ml当たり塩分量を追加して、markdown表形式のソースコードを教えて下さい。

| ランキング | 商品名             | メーカー名 | JANコード        | 100ml当たりの塩分量 |
|------------|--------------------|------------|------------------|--------------------|
| 1          | ミツカン 追いがつおつゆ   | ミツカン        | 4902106828520     | 7.0g               |
| 2          | ヤマサ 昆布つゆ        | ヤマサ        | 4903001014023     | 6.5g               |
| 3          | キッコーマン つゆ 3倍濃縮  | キッコーマン    | 4901515120083     | 7.1g               |
| 4          | にんべん つゆの素      | にんべん      | 4902381004565     | 6.8g               |
| 5          | ヒガシマル うどんスープ | ヒガシマル     | 4902475232016     | 6.9g               |
| 6          | ヒガシマル 丸大豆つゆ   | ヒガシマル     | 4902475262013     | 6.7g               |
| 7          | キッコーマン 特選つゆ    | キッコーマン    | 4901515120021     | 7.2g               |
| 8          | ヤマキ 鰹つゆ          | ヤマキ        | 4903065032092     | 6.4g               |
| 9          | にんべん 黄金つゆ       | にんべん      | 4902381004572     | 6.8g               |
| 10         | ヤマサ 焼きあごつゆ    | ヤマサ        | 4903001014160     | 6.6g               |
化合物名しりとり作ってみた

## 化学メーカー社員が研修でアプリ作成に取り組んだ話
私は某化学メーカーに勤めている会社員である。
今回、IT研修の一環でDifyというアプリを習ったので、これを使って「化合物名しりとり」を作成してみた。

# 化合物名しりとり???
その名の通り好きな化合物を送ったらしりとりで返してくれるbotである。

なぜそんなものを作ろうと思ったか。
学生時代の学会帰り、渋滞に見舞われた際に研究室メンバーでやった「化学縛りしりとり」が意外にも楽しかったからである。

そこで、しりとりbotを作れば1人でいるときの暇つぶしになるのではないかと思い立った。今回はDifyとChat GPTを用いて化合物の名前でしりとりできるアプリを作ってみた。

## 実際に作ってみた ##
今回はChat GPTとしりとりをしたいのでモデルを"Chat GPT4o"を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810292/d6ea1813-c86d-396c-3c20-c618ccdaa8af.png)

続いて、手順の部分にChat GPTに対する命令を書いていく。
以下のような命令を与えてみる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810292/1ef96921-2ebd-06e4-63e4-db7395c035e8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810292/3bf272da-232f-0b07-8cd9-bd95101a725b.png)

これだけではChat GPTの精度に不安があるので、さらにコンテキスト部分に化合物名を大量に挙げたリストを貼っておく。これで少々マニアックな化合物名にも対応できると期待。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810292/75e2efd3-da95-565b-4a7a-922e617dacd9.png)


## いざ、しりとり ##
手始めにアンモニアをChat GPTに投げてみる。
どう返してくるか...


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810292/b251127f-a5d1-cd72-6803-4069fc8439f2.png)


んん??

アルデヒドは化合物名じゃない...

気分を変えてアセトアニリドを投げかけてみよう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810292/4d4bda6b-1157-f58f-8b00-64e1e3d9484a.png)

いや、あまりにもやる気がなさすぎないかこのAI...


酢酸ナトリウムでどうだ...？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810292/a784f954-6a94-06c9-4ef0-02676c72ea3f.png)

???
!?!&%&'%$+?

あれぇ???
おかしいおかしい。
とうとうしりとりが成立しなくなった。


## まとめ
その後いろいろと試した結果、
1. カタカナの化合物ならなんとか化合物名でしりとりしてくれることがわかった (たまに「ルビー」とか返してくるけど)。
2. 漢字が入っていると難しい。
読み方が色々あるからだろうか？結局理由は謎...。
後々、化合物名を英語表記にしたほうがしりとりさせやすかったかなと反省した。
こういうのでいいんだよって人、ポンコツさを楽しみたい人はやってみてください。
https://udify.app/chat/mPr22j3vWNl5b6Gu

とはいえ、ITに全く詳しくない自分でもこういったChat botを作れるのだととても感動した。
少しずつ触っていけば生活や仕事に役立つシステムも作れそう。
色々と遊んでみよう。


## おまけ
こちらが「ん」でおわる単語を投げると...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810292/a053dbe8-9df3-457e-8a56-351c60ab79a0.png)
腹立つね！

おわり
[T-DASH] IE mode in Edge でテスト自動化する

# Outline

IE (IE mode in Edge)で動作検証をしたいニーズがたまにある。
T-DASHは標準サポートはchrome、firefox、edgeである。

そのため、本記事ではIEで動作検証を行えるための解説になる。


https://service.valtes.co.jp/t-dash/?

# 事前準備

## Edgeの設定

Edgeの設定を開く

「Internet Exploreモード(IE モード)でサイトの再読み込みを許可」を「許可」にする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/3eb931d3-32ae-c902-2f7a-9a71039bfd06.png)


## レジストリ変更

regedit を用いて、いくつか設定変更する必要がある。

```
コンピューター\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main
```
TabProcGrowth = 0 (DWORD)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/20793331-13a2-abd8-bbcc-a26edbbd82b2.png)

```
コンピューター\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main
```
Isolation = PMIL (String)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/056beb0b-906c-661f-6df1-bab96027a739.png)



```
コンピューター\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones
```
2500 = 3 (DWORD)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/47ef6b54-f753-d65c-a714-300d78d28c65.png)


## IEDriverServer

以下サイトから、The Internet Explorer Driver Server 32 bit Windows IE  をダウンロードする。

https://www.selenium.dev/downloads/

その後、任意のパスに配置する

例
```
C:\DevTools\Selenium
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/d5241f47-1207-e207-3b09-53525212b676.png)


# T-DASH

## カスタム動作

以下設定を、browser.yamlのファイル名で保存する
```
ACT-CAT-CUSTOM-29a71344-d653-4ca5-9cdf-746b517bd3b2:
  action_category_name: browser
  icon: ''
  color: '#a05c3e'
  custom_data:
    file_name: browser
    pip_list: []
    library_list:
    - SeleniumLibrary
  actions:
    ACT-CUSTOM-06e4bac0-c174-43cc-9ff9-7de107c2d8de:
      action_name: iemodeで開く
      action_type: operation
      action_format: iemodeでURL「設定値1」を開く
      action_note: ''
      action_args:
      - value1
      action_def:
      - - Set Test Variable
        - ${IEDriver}
        - C:/DevTools/Selenium/IEDriverServer.exe
      - - Set Test Variable
        - ${Edge}
        - C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe
      - - Open Browser
        - ${value1}
        - ie
        - executable_path=${IEDriver}
        - options=attach_to_edge_chrome=True;ignore_protected_mode_settings = True;edge_executable_path="${Edge}"
      - - Maximize Browser Window
```

次に、作成されたChromeOpti.yamlをT-DASHの動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートし、実際にインポートされた設定内容を開く


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/3e3e3351-4383-8593-dd4d-08008827527f.png)

## テストケース
「ie modeで開く」のカスタム動作を呼び出す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/94f96818-7739-de93-9b52-1e8666f9615f.png)


## テスト実行

下図のように、ie modeでedgeが立ち上がる。
なお、テキスト入力などの操作は、不安定で遅くなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/a1d1df5d-9e2e-b7de-b158-e1a7185056a9.png)
スマブラSP対戦管理ツールを作ってみた！


## 概要
今回は自分用の**スマブラSP対戦管理ツール**を作成してみました
## 背景
会社はPowerAppsを用いて私生活に活かせそうなアプリを開発することにしました

そこで、現在私が打ち込んでいる「**大乱闘スマッシュブラザーズSP**」の対戦管理ツールを作成したいと思いました
## 目的
実は既にスマブラの対戦管理ツールは既に存在します
>クマメイトツール
>https://kumamate.net/

こちらのツールは非常に使いやすく愛用しているのですが、追加したい機能があったので自分用に新しく作ってみました

また戦績を色々と分析しやすいようなデータの取得を行いたいと考えました


> ほしい機能
>- 対戦相手のレート
>- Excelのデータ

## 仕様ツール
今回は**PowerApps**を使って、Excelにデータを送れるようにしました
また、扱いやすいようにスマホ用のUIを使用しました

## 使用画面
使う画面はこのようになっています。
![スマブラ（編集）.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810299/324ce7bb-3273-026b-1f6b-1febd7bc5ae5.png)


一覧から相手キャラや自分のキャラを**選択**することができます
![スマブラ（選択）.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810299/c8995ba5-07f8-cadc-333b-6a75ea5e4ad9.png)

> スマブラSPはキャラが多い（なんと87体！）ので、
**ファイター検索**を行うこともできます！
> ![スマブラ（検索）.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810299/4c81e88f-bad2-fde0-aa2d-59189976484e.png)

勝敗のほかに**対戦相手のレート帯**を選択できます
![スマブラ（完成）.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810299/c1a09eac-440a-8dfc-fca0-acfb103370b5.png)

最終的にはコントローラーボタンを押すとExcelに**データが格納**します！
![スマブラ（Excel）.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810299/46201240-0d14-55c0-09bb-f49fbb019d48.png)

このように得られたExcelのデータをもとに、苦手キャラを知るきっかけに使っていきたいと考えています

## 苦労した点
最初はキャラ選択を一覧で表示していたのですが、かなり使い勝手が悪かったので検索をできるようにしました
しかし、検索システムを作るのがかなり難しかったため、ChatGPTの助けを借りながら作成しました

今後もアプリ開発の時はChatGPTを積極的に使っていこうと思います

## まとめ
今回はスマブラSP対戦管理ツールを作っていきました

本当は、ステージ選択も入れようと思っていたのですが入れるのを忘れていました笑
ステージや他の欲しい機能などはこれからアップデートしていこうと考えています！
ツンデレAIにスマブラを指導してもらった！！


## 概要
今回行ったのは**ChatGPTを用いたスマブラSPのキャラ対策アプリ**の開発です！

## 背景
今回はAIを利用したアプリを作ることにしました
そこでは自分の好きなアプリを作っていいとのことだったので自分が打ち込んでいるゲームである「**大乱闘スマッシュブラザーズSP**」の対戦用のキャラ対策ツールを作ってもらいました

## 使用ツール
今回は**Dify**を使って作成しました

回答するAIは**ChatGPT‐4o**を使用しました
従来の3.5に比べて質問に対してかなり細かく答えてくれた印象です！

また、回答の学習にはスマブラ最上位プレイヤーの方のブログを使用させていただきました。
> スマブラSP用私的スマブラノートver13.0.0
> https://rizemelon.hatenablog.com/entry/2019/12/10/055458

また各ファイターの技に関しましては、発生フレームと（個人的に）対策が必要な技の情報を学習に入れました
## 使い方
シンプルにチャットに質問を投げるだけ！
そうすると少しツンデレなAIが答えてくれます！

## 使用画面
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810299/b0ff72df-e61a-7e27-7985-09790898e7f7.png)
実際の画面はこんな感じです。
今回はマリオをキャラとして選びましたが、戦いかたや注意する技も優しく(？)教えてくれます。

残念ながら少し用語が適していないこともあります・・・
>コンボ→連携

>ジャストガード→エッジガード

しかし、実際に対戦をしているかのような**適切な指導**も行ってくれます！
(指導の内容はスマブラ最上位プレイヤーの方の意見をもとに回答しています)
## 苦労した点
AIにスマブラの学習させるのが大変でした・・・

最初はデータをコンテキストに入れて保存していたのですが、友人からサイトのURLを入れるだけで良いと教えてもらったことで簡単になりました！

しかし、サイトの情報だけでは学習が足りず普段使っている用語ではなくなってしまいました（今後の改善点）

## 最後に
今回作ったキャラ対策アプリを使って実際に対戦に活かしてみようかと思います！
また、今後は自分なりの対策なども盛り込み、より自分用にカスタマイズしたチャットBotアプリに育てたいです！
任意のコミットまで戻る

# 注意:point_right:
今回のコマンド、forse push (git push -f)は破壊的です。実行したら巻き戻した分が消えてしまいます。
そんなときに↓を使ったら安心！！
https://qiita.com/y_tt_y/items/a59f83eba5afb5752287
これをやったあとに以下のコマンドをご使用ください。

# 戻る方法

↓ハッシュ値（Githubで確認する場合）
![スクリーンショット 2024-06-07 11.28.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760972/7ef97268-0362-cee6-8193-e008f98eff17.png)
↓ハッシュ値（ターミナルで確認する場合）
```
git log --oneline
```
```
git reset --mixed 戻りたいコミットのハッシュ値
```

output
```
Unstaged chenges after reset: 
M       ~~
UserInterfaceState.xcuserstate
```

```
git add 変更したファイル
```
```
git commit -m "メッセージ"
```
```
git push origin ブランチ名
```
エラーが出る　
```
 ! [rejected]        ブランチ名 -> ブランチ名 (non-fast-forward)
error: failed to push some refs to 'git@github.com:hogehoge/fugafuga.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
```
```
git push -f origi ブランチ名
```
Githubに反映されているか確認して
成功！！

# 例
今回は、「巻き戻してTest2」まで戻ります。
![スクリーンショット 2024-06-07 11.33.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760972/ee133f94-bca2-5d95-d758-83028c27bb3c.png)
```
git reset --mixed 35c7f68
```
output
```
Unstaged chenges after reset: 
M       ~~
UserInterfaceState.xcuserstate
```
```
git add .
```
若しくは
```
git add　変更したファイル
```
```
git commit -m "巻き戻しテスト"
```
```
git push origin ブランチ名
```
```
 ! [rejected]        ブランチ名 -> ブランチ名 (non-fast-forward)
error: failed to push some refs to 'git@github.com:hogehoge/fugafuga.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
```
```
git push -f origin ブランチ名
```
output
```
To github.com:~/~.git
 + ~~
```
Githubで確認
![スクリーンショット 2024-06-07 12.14.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760972/f0f4f8dd-dc15-16de-33a7-20cfa5a74db1.png)
「Xcodeを追加テスト」が消え、巻き戻されていることが確認できました。
毎日ABC day15【c++】ABC331 A-C問題解説【ACコード付き】

# AtCoder Beginner Contest 331

https://atcoder.jp/contests/abc331

## A - Tomorrow
$y$ 年 $m$ 月 $d$ 日 の次の日は何年何月何日か。ただし、その歴には一年に $M$ ヶ月存在し、各月が　$M$　日ある。

$d$ を増やした時に月や年に影響がある時に注意。


```cpp
int main()
{
	int M, D, y, m, d;
	cin >> M >> D >> y >> m >> d;
	d++;
	if (d == D + 1)
	{
		m++;
		d = 1;
	}
	if (m == M + 1)
	{
		y++;
		m = 1;
	}
	cout << y << " " << m << " " << d << endl;
	return 0;
}
```

## B - Buy One Carton of Milk
6,8,12個入りの卵が指定の値段で売られている。$N$ 個以上買いたい時に、最小の金額を求めよ、という問題。



```cpp
int main()
{
	int N, S, M, L;
	cin >> N >> S >> M >> L;
	long long ans = 100000000000000;
	for (int i = 0; i <= 17; i++)
	{
		for (int j = 0; j <= 13; j++)
		{
			for (int k = 0; k <= 9; k++)
			{
				long long total = S * i + M * j + L * k;
				if (i * 6 + j * 8 + k * 12 >= N) ans = min(ans, total);
			}
		}
	}
	cout << ans << endl;
	return 0;
}
```
## C - Sum of Numbers Greater Than Me
【永久保存版】コマンドでgit操作

# はじめに
* これまではIDEやSourceTree等のGUIを用いてgit操作を行っていたが、CUIで操作できるようになったほうがかっこいいので本記事を作成する。

## 0.gitの設定を確認する
```
git config [option]
例）git config user.name
　　git config user.email
```

## 1.ローカルの作業ディレクトリに移動する
```
cd [作業ディレクトリ]
```
## 2.Gitを使う作業ディレクトリを宣言する
```
git init
```
## 3.既存のリポジトリからローカルへコピーする
```
git clone
例）git clone https://github.com/test/test.git
```
## 4.反映させるリモートリポジトリを指定する
```
git remote add origin [リモートリポジトリのURL]
例）git remote add origin https://github.com/[ユーザ名]/[リポジトリ名].git
```
## 5.追加・変更したファイルをコミット候補に加える
```
git add [候補に加えたいファイル/ディレクトリ]
例）git add .      （※こちらの例はカレントディレクトリを指定
```
## 6.コミット&メッセージを記載
```
git commit -m '[commitメッセージ]'
例）git commit -m 'テストメッセージ'
```
## 7.開発ブランチの状態を確認する
```
git status
```
## 8.gitにプッシュする
```
git push origin [ブランチ名]
例）git push origin master
```

## ※reject（競合）した場合
```
git pull origin [ブランチ名]
例）git pull origin master
```

## ※変更を破棄したい場合
```
git checkout ディレクトリ名orファイル名
例）git checkout hoge/huga/test.php
　　git checkout .　（カレントディレクトリ配下全ての変更を破棄する
```

## ※差分を確認したい場合
```
git diff (※差分のあるファイルすべてが表示されます
git diff [ファイル名]
例）git diff
　　git diff hoge/fuga/test.php
```

## ※指定のコミットまで戻したい場合
```
git log
git reset --hard [ハッシュ値]
例）git log
　　git reset --hard a44daef9e8201dfaeffe125629ffaef91afaef303a4
```
iOS開発者向けの Developer Roadmaps が公開されてた

# これ

https://roadmap.sh/ios

# 追加されてる!

![スクリーンショット 2024-06-07 11.20.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281147/e7d7a9d1-2ec0-3dd4-4f02-7ff2eb666d9b.png)

https://roadmap.sh/

今までは同じモバイルアプリでもAndroidだけしかなかったりと、[実は長らく求められていた](https://github.com/kamranahmedse/developer-roadmap/issues/3280)

# デベロッパーロードマップとは？

開発者がその界隈を学ぶ際い体系的にどのスキル・技術を学ぶべきかを表したものです。
OSSでアクティブなもの。

# あとがき

- iOSはSwiftUIが出てきたりして何からやればいいのか複雑だったので、他の人にとっても、個人的にもかなりありがたいのかなと思ってます。
- WWDC2024がいよいよ来週から！楽しみ！
Qiita アップデートのお知らせ - 2024年 5月

![Qiitaアップデートのお知らせ 2024年5月](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88/532fc089-afb0-80b0-70a9-31b9b6043c97.png)

## はじめに

Qiitaでは、エンジニアのみなさんからの声をもとに、日々開発を続けています。
この記事では、2024年5月にリリースした内容を紹介します。

Qiitaでアップデートやバグ修正をリリースしたら、[リリースノート](https://qiita.com/release-notes)、[Qiita 公式 X(Twitter)](https://twitter.com/Qiita)、[Qiita Blog](https://blog.qiita.com/)でお知らせしています。

また、Qiitaへの質問や機能の要望などありましたら、[Qiita Discussions](https://github.com/increments/qiita-discussions) へご投稿ください。

## 限定共有投稿でのメンションの通知が相手に送られなくなりました

![記事の公開設定画面のスクリーンショット](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88/63e10f4c-e438-0a06-d9f6-1df4d63b4b15.png)

*2024年5月7日リリース*

記事の公開設定で公開範囲を「限定共有」にした場合、投稿内でのメンションが相手に通知されなくなりました。
公開範囲を「限定共有」から「全体公開」にしたタイミングで、相手にメンションの通知が届きます。
コメント内でのメンションは、今まで通り限定共有投稿の場合も相手に通知が届きます。

## 獲得したバッジが見やすくなりました

![獲得したバッジページの変更前・変更後それぞれのスクリーンショット](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88/658a0f7c-17c5-27c4-7ffe-bb0504d84028.png)

*2024年5月8日リリース*

獲得したバッジが見やすくなるように画像サイズなどを調整しました。

## ストックボタンのアクセシビリティを改善しました

![改善されたストックボタンポップアップのスクリーンショット](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88/fcccc46c-3887-fe35-93f0-66979367e4a5.png)

*2024年5月10日リリース*

ストックボタンとストックカテゴリー編集ポップアップのアクセシビリティを改善しました。

### アクセシビリティの改善点

- ストックボタンの読み上げを変更し、スクリーンリーダー利用時でもストックをしているかどうかがわかるようにしました。
- 一部テキストのコントラスト比が低かった箇所でもAA基準を達成できるように変更しました。
- ポップアップ内の以下の読み上げを改善しました。
  - 閉じるボタンの読み上げ
  - エラー文言の読み上げ
- ポップアップ内にある「カテゴリーを新規作成」ボタンの `disable` がスクリーンリーダー利用時でもわかるようにしました。

### その他UIの改善点

- ポップアップの閉じるボタンにマウスオーバーした際のスタイルを追加しました

## 質問への回答に対するコメントでCodePenが埋め込み可能になりました

![質問への回答に対するコメントでCodePenが埋め込まれたスクリーンショット](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88/0851b803-578e-12ed-1750-bad8b77c66d7.png)

*2024年5月27日リリース*

質問や回答と同様に、回答に対するコメントにもCodePenを埋め込むことができるようになりました。

## ストックページのデザインを変更しました

![ストックページの変更前・変更後のスクリーンショット](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88/4ba85a93-9ec8-b8d0-0043-266ff4356dce.png)


*2024年5月31日リリース*

他のページと一貫したUIになるように以下の変更を行いました。

- レイアウトを2カラムから3カラムに変更しました。
- 左側のナビゲーションをシンプルに、作成したカテゴリのみを表示するようにしました。
【宣言】2年で組織にアウトプット文化を根付かせます！💪

# はじめに

皆さんこんにちは、こんばんわ！HRBrainで新卒エンジニアとして働いているなかじです。😇

今回は、私たちの組織にアウトプット文化を根付かせるための取り組み（**発信盛り上げ隊**）についてお話しします!🙆‍♂️

この記事では、自分たちが行なっている発信盛り上げ活動としての具体的な目標についての記事です！

# なんでこの活動してんの？

正直、初めは、、、

- 人を巻き込めるエンジニアになりたい🤔

- 社内で顔と名前を覚えてもえるように目立つ👏

- バズったら嬉しいから、その体験をみんなにも積んでもらいたいなーとか？🔥

という結構自己満足寄りな気持ちでやっていたのですが、

アドベントカレンダー2023発信盛り上げ以降、少しずつ成果が出てきており、今では、本気で組織にアウトプット文化を根付かせたいなと思っております！💪
発信盛り上げ隊の中で、組織でアウトプットする目的を以下のように位置付けています！

👑 **成長：ブログ執筆やLT登壇を通じて社内メンバーのキャリア支援をし、技術力を向上させる**
社員がブログ執筆やLT、カンファレンスでの登壇を通じてスキルを磨き、社内外からフィードバックを獲得し技術力を向上させる

🔥 **貢献：オープンソースの精神でWeb開発・SaaS開発の知見を共有して業界全体の発展に貢献する**
開発の過程で得た知見やベストプラクティスを技術記事やブログとして公開し、社外にその知見を共有する

⭐️ **認知：HRBrainのプロダクトを広く知ってもらう**
ブログやSNS、LTやカンファレンスでの登壇を通じてHRBrainのプロダクトの認知度を向上させる

👪 **採用：HRBrainという会社を広く知ってもらい、採用に繋げる**
技術的な知見や企業文化を社外に発信することで、HRBrainの魅力を伝え、採用につなげる

4つ軸はあるように見えますが、

アウトプットをすることで、上目指してガンガン成長していこうの「**成長**」と、開発でOSSに依存しているし何か恩返ししようという「**貢献**」の２軸の先に、
ブログを読んでくださるなど、「**認知**」され、その先に、発信に興味を持っていただいた方々の「**採用**」につながるという目的のもと、発信盛り上げ隊は活動しています！

# 💪 発信盛り上げ隊の2024年間目標

:::note info
**目標：積極的なブログ発信文化の強化**
:::

# 💪 積極的なブログ発信文化の強化の定量的目標

### 月間平均投稿数を2倍にする
投稿数が増えれば、積極的なブログ発信ができていると考えています！

### 平均投稿間隔を50％削減
投稿間隔が短くなれば、それだけ頻繁にアウトプットしていることになります！

### カジュアル面談で、ブログ等の技術発信を見たことがある人が全体の30%を超える
この数値が高ければ、私たちのアウトプットが広く認知されていると認識しています！

# 💪 Qiita Engineer Festaの目標

:::note info
**目標：イベントで書いた人が、イベント外で2記事目を投稿したかどうか**
:::

# 💪 イベントで投稿した人が、イベント外で2記事目を投稿したかの定量的目標

イベント参加者が、イベント終了後にも積極的に記事を投稿するようになることを目標としました！

イベントで、0記事であれば、その他で1記事投稿したいなと思ってもらえるようにしたいと思っており、イベントを通じて、参加者が「また投稿したい」と思えるような体験を提供し、アウトプット促進すればいいなと思っています！

なので、Qiita Engineer Festa2024では、記事を書くことが得意な人はもちろん、記事を書いたことがない方や記事執筆が苦手な方向けにしたいと思っています！

# 実際のSlackアナウンス

![スクリーンショット 2024-06-09 5.22.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885098/5bb3ef96-9dc8-a167-acff-7be960d8ed4d.png)

# 💪 今後

今後についてのお話です！
自分たち発信盛り上げ隊での、2年後の発信文化の理想をお話しします！
発信盛り上げ隊の考えは、アウトプットの参加方法は、ただ記事を書くだけではないと思っています！
記事を書けば、それはそれですごくいい事だと思っていますが、**業務中に記事を書くハードルが高い**や、**ネタがなく記事執筆が進まない**といったことは、本当に誰しもが感じることだと思います！
なので、アカウントを開設して、他者のアウトプットをいいねシェアして応援する方もいれば、アウトプットのネタを提供する人だっていていいと思います！🙆‍♂️
また、2人で１記事書くペア記事もあっていいと思います！
そして、自分たちアウトプット盛り上げ隊は、エンジニア間だけでなく、レベニュービジネスサイドの人たちも巻き込んでアウトプットの文化を作っていきたいなと思っています！

記事を書いたから偉いとかではなく、皆が何かしらでアウトプットに関わるそんな組織を自分たちは作りたいと考えており、2年後には、組織にアウトプット文化を根付かせ、何かしら組織に成果は還元したいなと思っています！

新しい取り組みなので、批判されることもあるかもですが、発信盛り上げ隊として今後もアウトプットを盛り上げていきます〜！！！

# おわりに

高い目標を持ち、人を動かし文化を根付かせるチャレンジをすることに、新卒エンジニアから携わることができてすごくやりがいを感じています！

また、そのようなチャレンジができる環境に感謝しています！
これからも積極的にブログ発信を行い、組織全体のアウトプット文化の強化に貢献していきます！

また次回の記事でお会いしましょう👋
RPAロボット開発で個人的に気を付けていること(BizRobo!)

### こんにちは！
### 生き物好きのエンジニア【<font color="red">JPW</font>】です！！
##### 今回は、普段私がBizRobo!で開発をする際に、気を付けていることを3つ挙げようと思います！
##### 最後まで読んでいただければ幸いです！
## １. なるべく人間の動きをベースにロジックを考える
##### ロボットは指示をした動作をします。（当たり前ですが...）
##### 逆に言えば指示した動作しかしてくれません。
例えば
##### 「Chromeのアイコンをクリックする」
　　　　　　　　　　　　↓
##### 「検索ボックスに(東京都の明日の天気)と入力する」
　　　　　　　　　　　　↓
##### 「天気の結果をスクリーンショットする」

という処理をBizRobo!ができる最低限の処理方法で考えてみます。

##### ①まずはchromeのアイコンをクリック。
##### ②その次にテキストボックスにテキストを入力。
##### ③検索ボタンクリック
##### ④検索結果をスクリーンショット
このような流れになります。
しかし、この動作を人間がするとなれば確認をしながら進めませんか？
人間のする動作に置き換えると
##### ①chromeのアイコンをクリック
##### ②chromeの検索画面が立ち上がったことを確認してから文字を入力
##### ③文字が正しく入力できたかを確認し、問題なければ検索ボタンをクリック
##### ④検索結果をスクリーンショット
となります。
人間は想定通りの動きをしているかを確認をしながら、処理を進めます。
ロボットも確認をしてから次の処理が進むように要素を確認する動作を入れると、安定性が格段に上がります。
##### ではロボットでも動作を確認してから進むようにしてみましょう！
##### DAステップで考えてみます。
##### ①Chromeのアイコンをクリック
##### ②chromeが起動したことを「Application Found」で確認
##### ③入力したい検索ボックス(検索したい文字を入力する場所)をクリック
##### ④「Location Found」で対象の検索ボックスの"isKeyboardFocus"属性が"true"になっていることを確認
##### ⑤検索ボックスに文字を入力
##### ⑥「Location Found」で対象の検索ボックスに入力された文字が正しいか"TEXT"属性を確認する。(文字が入力されたら入力された文字がTEXT属性としてツリーに表示される)
##### ⑦検索ボックスをクリック
といった感じになります。
手順は少し増えますが、この動作が人間の動きに近いのでロボットもこの動作に合わせてあげた方が安定性が高まります。

## ２.ブランチの使い方や特性を理解する
##### BizRoboを扱い始めてすぐのころは、ブランチをあまり理解せずに開発をしていました。
##### そのせいでプライベート変数に取得した値が消えてしまい、「何故消えるの！？」となっていました。
##### その時に、ブランチの特性を知りました。
##### ブランチは可読性の為にこまめに分けたりもしますが、注意が必要です。
##### 例えば、エラー発生時の設定を後続スキップに設定していると、その手前で下に派生しているブランチは実行されてしまいます。
##### もし、エラー発生時に移ったブランチに実行したくない処理があったとするとその処理まで実行されてしまうということになります。
##### ブランチをうまく駆使し、エラー発生時の動きを理解することが大切と感じました。
## 3.例外エラーが発生した際の処理
##### 予期せぬエラーが発生した際のエラーハンドリングの一例を紹介します。
##### 参考にしてみてください！
##### BizRoboのワークフローの最初にトライステップを設置します。
##### そのトライステップに例外処理という名前を付けます
##### 例外エラーが発生しそうな処理(DAステップや正規表現を扱う処理など)のエラー処理をThen「次の代替手段を試行」次のステップ「例外処理」に変更し、「API例外」と「エラーとしてログ記録」のチェックボックスにチェックを入れる
##### 最初に作成した例外処理のブランチはログ出力ステップで「例外処理が発生しました」とログを出力するように設定する。
##### このように設定することで、その後の処理に進むことを防ぐことができます。

## 以上です！！
##### 以上の３つが開発時に気を付けていることになります！
##### 少しでも参考になれば幸いです！！
DynamoDBストリームって何？

# はじめに
DynamoDBのストリームについて学ぶ機会があったので、備忘録として記事を書きます。

# DynamoDBストリームとは
DynamoDBストリームとは、DynamoDBの機能の一つで、**テーブルのデータ変更（アイテムの作成、更新、削除）をリアルタイムにキャプチャし、それに基づく処理をトリガーするためのものです**。
DynamoDBストリームを有効にすると、テーブル内のアイテムに対する変更がストリームに記録されます。これにより、変更の内容を順次取得して、様々な用途に利用することができます。
「Stream」の「流れ」という意味の通り、**テーブル内のデータ変更（作成、更新、削除）の連続的な流れをキャプチャし、保存する機能**ということです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2613586/0645c6f1-66b3-381d-f771-6da345c11f69.png)

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Introduction.html

# DynamoDBストリームの主な特徴
- **リアルタイムキャプチャ**:
  テーブル内のアイテム変更をリアルタイムにキャプチャし、処理をトリガーすることができ、DBの更新に伴い、処理を実行させることが可能です。
  
- **変更履歴の保存**
  アイテムの作成、更新、削除の履歴をストリームに保存することができます。
- **順序保証**
同一パーティションキー内の変更は、時系列順に記録されます。
- **利用可能なデータ** 
新しいイメージ、古いイメージ、またはその両方のデータを取得可能です。

# ストリームの利用方法
- **ストリームの有効化**
DynamoDBテーブルでストリームを有効にし、キャプチャするデータタイプ（新しいイメージ、古いイメージ、またはその両方）を選択します。
ストリームを有効化する手順については、以下の記事に書いています。

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Streams.html#Streams.Enabling

https://zenn.dev/collabostyle/articles/3ed9b3440c7d09#%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%82%92%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%99%E3%82%8B

- **ストリームの処理**
AWS Lambdaなどを使用してストリームの変更を処理。Lambda関数はストリームイベントをトリガーとして実行され、必要な処理を実行します。
- **ユースケース**
ユースケースとしては、データのリアルタイム同期、分析、通知システムのトリガー、バックアップおよびリカバリ、データレプリケーションなどがあります。


# 実装における有効活用例
- **注文機能**
ユーザーが注文をした際に、データベースの更新に伴い、注文データをストリームを通じて処理し、支払い確認、在庫引当、配送手配といった一連の処理を自動で呼び出して処理を行う。などの処理が可能です。

- **在庫管理システム**
商品の在庫が更新された際に、DynamoDBストリームを利用してリアルタイムで在庫数をモニタリングします。
例えば、在庫が一定数以下になった場合に自動的に仕入れ発注を行うなどの処理が可能です。また、在庫更新情報を他のシステム（例えば、店舗POSシステムなど）と同期させることもできます。

- **ログ集約システム**
アプリケーションの動作ログやエラーログをDynamoDBテーブルに記録し、DynamoDBストリームを利用してログデータをリアルタイムで収集、処理します。
これにより、ログデータをElasticsearchに転送して可視化し、リアルタイムのモニタリングや障害対応を行うことができます。

- **データ同期**
複数のDynamoDBテーブルや他のデータベース間でデータをリアルタイムに同期するために、DynamoDBストリームを使用します。
例えば、本社のデータベースと各店舗のデータベース間でデータを同期させることで、全体のデータ整合性を保ちながら、リアルタイムで情報を共有できます。

# まとめ
DynamoDBストリームを使用すると、DynamoDBテーブル内のデータ変更（アイテムの作成、更新、削除）をリアルタイムでキャプチャし、それに基づく様々な処理を自動的に実行することができます。
DynamoDBストリームは、様々なユースケースに対応できる強力なツールであり、効率的かつ効果的なアプリケーション開発をサポートしてくれます。

# 最後に
他にも色々な記事を書いているので、よければ読んでいってください！

https://qiita.com/hukuryo/items/97797a91d7e2ee0bcabc

https://qiita.com/hukuryo/items/2c07c52ff3386d5d75b9

https://qiita.com/hukuryo/items/ebeb26823f944f143b11
【ChatGPT＋DALL-E3】PromptフォーマットをそのままDALL-E3に渡したらどうなる？（知見が得られました）


　どうも、カーブミラーです。

　今回は、一昨日（2024/06/05）のうしろの方で、黒猫を描きましたが、そのときのPromptフォーマットをそのままDALL-E3に渡したらどうなる？　という話です。

:::note info
本記事は、ChatGPT（有料版）
＋DALL-E3で行なっております。
画像はあります。　あしからず。
:::

　一昨日（2024/06/05）の
[【ChatGPT＋DALL-E3】画像を二枚出したい（残念談）](https://qiita.com/kabumira/items/bf599fce935106cec4be)
　　のうしろの方で、
　　　黒猫のPromptを
　　　　DALL-E3に渡して、描画させて
　　　　　Promptはどうなるのかを
　　　　　　やってみました。

　結果は、
　　ChatGPTさんが
　　　Promptに盛り付けて
　　　　出してくれました。

　今回は、
　　その続きです。

　まずは
　　やり取りをどうぞ。
　　　ちなみにGPT-4です。
***
***user***
以下のPromptを一切変えずに、DALL-E3に渡してください。

{
"prompt": "黒猫",
"size": "1024x1024",
"n": 1
}

***ChatGPT***
![1717726468741.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457238/70fed65b-2970-2f09-2f62-f43a78dd3648.jpeg)
（全然、黒猫じゃねぇ😅）

***user***
英語プロンプト出力。略さずに和訳。

***ChatGPT***
Sure, here is the detailed English prompt and its translation:

**English Prompt:**
"Black cat"

**Japanese Translation:**
「黒猫」

***user***
再度、最初のPromptでの描画をお願いします。画像がPromptと違うものなので

***ChatGPT***
（ほぼ同じ）

***user***
英語プロンプト出力。略さずに和訳。

***ChatGPT***
以下が英語のプロンプトとその和訳です。

**English Prompt:**
"Black cat"

**Japanese Translation:**
「黒猫」

***user***
黒猫ではなく、白とグレーの猫になりました

***ChatGPT***
（グレーな猫）

***user***
英語プロンプト出力。略さずに和訳。

***ChatGPT***
以下が英語のプロンプトとその和訳です。

**English Prompt:**
"Black cat"

**Japanese Translation:**
「黒猫」
***
　いくらやっても
　　黒猫になりませんねぇ😅

　つまり、
　　Promptの“Cat”だけを取り上げて、
　　　描いているのでしょう。

　……


　あっ、違う！
　　Promptを見てみよう！

　“黒猫”って
　　書いてるじゃないか！
　　　**日本語で！**

　DALL-E3は
　　英語だけしか
　　　知らないんだから
　　　　黒猫を描けるわけが
　　　　　ないじゃん！

　でも“猫”はわかるんか？
　　なら“犬”は？

　出てきました。
　　ビーグル犬が。

　基本的な単語は
　　学習しているんですね。
　　　φ(..)ﾒﾓﾒﾓ

　それはともかく、
　　このフォーマットを使うなら
　　　**英語表記をしなければいけない**、
　　　　ということですね。

　“Black Cat”で描画してみると
　　黒猫が出てきました。

　黒犬も英語にしたら
　　出てきました。

　日本語が通じるから
　　“DALL-E3にも通じる”と
　　　無意識に思っていたんですね。

　人間の無意識は
　　恐ろしいわぁ。

　ちなみに、
　　ドラゴンボールの悟空や
　　　ガンダムを英語で書いてみたけど
　　　　ChatGPTに拒否られました😅

　みなさんの
　　作品制作の糧に
　　　なれば、幸いです。

　今回は、ここまで。
おいらの英語会話学習方法

常日頃からスマホやパソコンは英語表記。Windowsは英語表記にならないため、Macを使用。iPhoneも英語表示が可能。Androidは英語表示が可能かは知らない。聞く音楽もアメリカ人のボーカルに限定している（たまに英国人）。
## NHKのラジオ聞く
どの番組が自分のレベルより少し上か調べる。
https://www.nhk-book.co.jp/text/eigo.html

## ラジオのストリーミングを録音する
ラジオのストリーミングを録音できるアプリをダウンロード・インストールする。
NHKは時々仕様を変えてストリーミングさせないようにするのだが、このアプリはそういった不具合が出てもすぐに治る。
https://github.com/CSReviser/CaptureStream2
Windows版、Mac版、Linux版がある。

## 保存されたオーディオファイルを再生する
オーディオファイルの再生はAudacity。フリーでWindows版、Mac版、Linux版がある。
https://www.audacityteam.org
波形で音声が見えるので、繰り返しのスタート位置とエンド位置を設定することが簡単。

## 番組を聞き取ってノートに会話を書く
手を動かすと記憶に残りやすいと聞く。文字はいっぱい書くので、軽い筆圧で書ける万年筆がおすすめだ。ノートはダイソーのプレミアムノートブック（方眼）。110円なのに52シートもあって、万年筆でも裏写りがなく、滑らかに書けるノートが一部の店に売っている。

![07A385C3-1A8E-47F9-935C-81890DF8DAA7_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274766/cf9678bd-d227-1d98-356b-ff2ee54b7b95.jpeg)

## 習いに行くのと比べて
オーディオファイルだから、何回も同じところを再生させることができる。人間に教えてもらっていたら、気を遣って何回も同じことを言わせることができない。でもNHKの料金を払っておくことが必要だと思われる。
ユーザーに多要素認証

▪️権限セットの作成
![截屏2024-06-07 11.14.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709131/cfb4a654-1a5e-d72e-0cb1-10e15a117c94.png)

▪️システム権限のクリック
![截屏2024-06-07 11.16.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709131/b24c4132-d34a-8aff-1cc1-eb4ef8f1f980.png)

▪️ユユーザーインターフェースログインの多要素認証をcheck boxを入れ置きますね。
![截屏2024-06-07 11.20.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709131/7cff897b-fac2-0250-2b0d-b1177f0c1093.png)

▪️割り当ての管理のクリック
![截屏2024-06-07 11.21.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709131/35e57a7d-e574-04a1-476c-e08e86e17192.png)
該当ユーザーを割り当てします


▪️組織内のすべてのユーザーに対する MFA の有効化!
▪️組織内のすべてのユーザーに MFA を有効にする最も迅速で簡単な方法は、次のとおりです。
[設定] から、[クイック検索] ボックスに Identity と入力し、[ID 検証] を選択します。
[Require multi-factor authentication (MFA) for all direct UI logins to your Salesforce org (Salesforce 組織へのすべての直接 UI ログインに多要素認証 (MFA) が必要)] チェックボックスを選択します。

![截屏2024-06-07 11.24.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709131/72db7cae-4a2d-ce1a-943d-dd8f11c0bb7d.png)


![截屏2024-06-07 11.26.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709131/379abee4-eb8e-025d-e8e3-8341c7913a26.png)

割り当てられたユーザで「接続」のクリック
![截屏2024-06-07 11.28.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709131/e7ceee72-43c3-2c82-4eed-c0a7a46b5c61.png)

![截屏2024-06-07 11.29.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709131/0e2bc9d8-a14e-d398-ba6a-65ed34dbc200.png)

![IMG_0396.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709131/26be09ad-611e-d69d-771b-e335dfb674ef.png)

アカウント追加をクリックし
![IMG_0395.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709131/7556764c-2822-8d73-148f-9e96dd1b84d4.png)

2語の語句を入力し、これで完了です。

ユーザログインし、検証してみてください。
picoGym Exclusive writeup Big Zip

## Big Zip (General Skills)

Unzip this archive and find the flag.
・Download zip file

添付ファイル
・big-zip-files.zip

big-zip-files.zipの中をざっと見てみると大量のテキストファイルがある。おそらく、このどれかにflagが書かれているはず。
まず、`unzip`して`grep`で「pico」の文字列のあるファイル名を特定する。
```
> grep -rl pico ./big-zip-files/*
./big-zip-files/folder_pmbymkjcya/folder_cawigcwvgv/folder_ltdayfmktr/folder_fnpfclfyee/whzxrpivpqld.txt
```
whzxrpivpqld.txtに記述されている文字列を取得すると、
```
> strings whzxrpivpqld.txt
information on the record will last a billion years. Genes and brains and books encode picoCTF{gr3p_15_m4g1c_ef8790dc}
```
flagが得られた。

`picoCTF{gr3p_15_m4g1c_ef8790dc}`
お酒大好きな新入社員がLINE botを作ってみた

## 概要
日々いろいろなお酒を楽しみたい、、、
そんなことを考えた飲酒が生きがいの新入社員が、社内研修でLINE botの作成に挑戦してみました！
その名も「晩酌ジャンキーbot」！！
お勧めのカクテルと合うおつまみをクセ強めに紹介してくれるとても優秀なLINE botです。



![bot QR.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810280/6eb35991-ce5b-9d0c-373a-8d9a5fb048c1.png)

## 使用ツール
・LINE developers
・MAKE
・[カクテルAPI](https://www.thecocktaildb.com/api.php)

## アプリの仕組み

作成したフローはこちら↓

![wee.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810280/3fe015f7-8194-345f-1a86-e3ab0136078b.png)
①Botへ文字が入力される
②カクテルAPIからランダムなカクテル名とその画像がLINEに出力される
③カクテル名を受けとったGPTが少々クセの強い口調で、概要と合うおつまみを解説してくれる
## 使用方法

まず、LINE botにお勧めのカクテルを訪ねます。

![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810280/c6924863-ecf3-6431-4365-99fed9b53c86.jpeg)
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810280/0be24f3d-ef42-7de8-24b8-18dd06a48009.jpeg)
すると、お勧めのカクテルの概要と作り方を写真とともに少々クセ強めに教えてくれます。
さらに、それだけでなく、、、

![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810280/601f2b36-5daf-b170-dbd6-e9b747b4bd9b.jpeg)
![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810280/3f8019f2-4686-6b10-1663-4dbfc1d5fc87.jpeg)
![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810280/56b88973-4028-8c3c-d8a3-151d7b65a848.jpeg)
カクテルの情報を受け取ったGPTが、最適なおつまみその作り方まで教えてくれちゃいます！！

これであなた（私）の日々の晩酌の楽しさ100倍増し！！！！笑
dockerでGPU使ってJohn the Ripperとhashcatでパスワード解析した話

## 一応前提
マシン：win10,グラボはRTX3060Ti
解析対象：pdf
※注意
犯罪行為を助長するものではありません。悪用ダメ・絶対！
## dokerの準備
dockerでGPUの認識を～等の初期部分は割愛しているのでお許しください。ネットの海にやり方は沢山転がっているので、適宜参照して頂ければと思います。
dockerのイメージは`nvcr.io/nvidia/cuda:12.0.1-devel-ubuntu22.04`使っていきます。デフォでnvcc入っているみたいなので。
```
docker run --gpus all -it -d --name ubuntu nvcr.io/nvidia/cuda:12.0.1-devel-ubuntu22.04 bash
```
## john the ripperの準備
```
apt -y install build-essential libssl-dev zlib1g-dev #私はいれたけど必要ないと思う
apt -y install yasm pkg-config libgmp-dev libpcap-dev libbz2-dev #私はいれたけど必要ないと思う
apt -y install nvidia-opencl-dev #私はいれたけど必要ないと思う
apt -y install clinfo ocl-icd-opencl-dev
wget https://github.com/magnumripper/JohnTheRipper/archive/bleeding-jumbo.zip
unzip bleeding-jumbo.zip
```
ここで`clinfo`を確認する。
```
Number of platforms 0
```
何も認識されてない。調べたところ、`pocl-opencl-icd`もいるらしい
```
apt -y install pocl-opencl-icd
```
`clinfo`を確認する。ちゃんと認識されているのがわかる。GPUが認識されていないのが気になるけど...まあどんどん行きましょ。
hashを生成していきます。今回は解析対象としてtest.pdfを用意したよ。
```
perl john-bleeding-jumbo/run/pdf2john.pl test.pdf > pdf.hash
```
`cat pdf.hash`で中身を確認する。
```
test.pdf:$pdf$2*3*128*-1028*1*16*566bfc1f30.........
```
`test.pdf:`部分は解析の時に必要ないので消しておきます。vim大好き人間。
## hashcatのインストール
```
apt -y install hashcat
```
`hashcat -I`でGPUを認識しているかどうか確認する。
OpenCLの方はGPU認識されてなくてもOK。デバイス指定でグラボ指定するので、デバイスの番号だけメモってね。
認識されていたらアルファベット・数字・記号含めて総当たりしていく。
```
hashcat -m 10500 -a 3 -w 4 --session test -o result.txt -d 1 -1 ?a --increment pdf.hash ?1?1?1?1?1?1?1?1?1?1
```
`-a 3`が総当たり、`-d 1`でグラボのデバイスIDを指定している。
詳しくは公式が出しているオプション一覧とか見てね。
hashcatの使い方（オプションなど）はこの方の記事がわかりやすかったです。

https://blog.netwiz.co.jp/hashcat/

こちらの方は神です。めっちゃ助けられた。はやく会いたかった。

https://blog.amedama.jp/entry/zip-password-gpu-brute-force

後は解析結果を見るだけ。

## まとめ
とりあえずパスワードは記号も含めて長く作っとけってことですね。記号まで含めて5桁探索しても数分だったことを考慮しながら...。まあ当たり前ですけど桁が増えるほど指数関数的に探索も増えていくので破られにくくなりますよね。普段意識出来てなかったけど、簡単なものだとすぐ破られちゃうよと危機意識を改めて持つことができました。簡単なパスワードなら解けるからって悪用はダメだよ！
間違えやアドバイスがあればご教示お願いしますm(._.)m


## 余談
本当はJohn the ripperだけで完結するつもりだったんですが、johnくんがどう頑張ってもGPU使ってくれなくて、諦めてhashcat使うことにしました。build周りとかめっちゃ時間取られたのに結局使わなかったの悲しい。だから余計なapt install入っていたりします(「私はいれたけど必要ないと思う」のところ)

## 参考にさせて頂いたもの
https://www.technicalife.net/using-gpu-in-dockerdesktop-windows/

https://github.com/openwall/john/blob/bleeding-jumbo/doc/INSTALL-UBUNTU#L106

https://qiita.com/nabion/items/4c4d4d4119c8586cbd9e

https://github.com/NVIDIA/nvidia-container-toolkit/issues/161

https://elsur.jpn.org/diary/2023/07/25/9479/

https://n-etupirka.net/entry/2022/12/01/180856

https://n-etupirka.net/entry/2022/11/30/184339

https://lonesec.com/2021/12/07/zip_password_security/

https://qiita.com/v_avenger/items/443358029c333a4a6d13

https://koji-genba.hateblo.jp/entry/2022/08/05/145749

https://blog.amedama.jp/entry/zip-password-gpu-brute-force
ubuntu22.04にCertbotをインストールする

### Step 1: Certbotのインストール

1. **必要なリポジトリを追加**
   Certbotをインストールするために、必要なリポジトリを追加します。

   ```bash
   sudo apt update
   sudo apt install software-properties-common -y
   sudo add-apt-repository universe
   sudo add-apt-repository ppa:certbot/certbot
   sudo apt update
   ```

2. **Certbotのインストール**
   ```bash
   sudo apt install certbot python3-certbot-apache -y
   ```

### Step 2: ApacheでのCertbotの設定

1. **Certbotを使ってSSL証明書を取得**
   Certbotを実行して、SSL証明書を取得し、Apacheの設定を自動で行います。

   ```bash
   sudo certbot --apache
   ```

2. **プロンプトに従う**
   Certbotがいくつかの質問をしてくるので、それに従って回答します。以下のような質問が含まれます：
   - メールアドレスの入力（証明書の更新や問題があった場合の連絡先）
   - 利用規約への同意
   - メールの共有に関するオプション
   - 証明書を取得するドメインの選択

3. **証明書の自動更新を確認**
   Certbotはインストール時に自動的にcronジョブを設定して証明書を自動更新するように設定します。正しく設定されているか確認します。

   ```bash
   sudo systemctl status certbot.timer
   ```

   タイマーがアクティブであることを確認してください。

### Step 3: 証明書の手動更新

Certbotは自動的に証明書を更新しますが、手動で更新を確認することもできます。

```bash
sudo certbot renew --dry-run
```

### エラーハンドリング

もし問題が発生した場合、以下のコマンドでCertbotのログを確認できます。

```bash
sudo tail -n 50 /var/log/letsencrypt/letsencrypt.log
```

### 完了

これで、Certbotをインストールし、ApacheでSSL証明書を取得および設定する手順が完了しました。ウェブサイトにアクセスして、HTTPSでアクセスできることを確認してください。ブラウザのアドレスバーに「保護された接続」のアイコンが表示されるはずです。

問題が発生した場合や追加のサポートが必要な場合は、詳細なエラーメッセージと状況を教えてください。追加のサポートを提供します。
DX

# DXとは
企業がビジネス環境の激しい変化に対応し、データとデジタル技術を活用して、顧客や社会のニーズを基に、製品やサービス、ビジネスモデルを変革するとともに、業務そのものや、組織、プロセス、企業文化・風土を変革し、競争上の優位性を確立すること（出所：経済産業省）

ポイントとしては２つあります。
①DXとは、データとデジタル技術を活用して、社会の変化に対応すること
②DXの目的は、稼働削減やコスト削減の先にあるCXとEXの向上


# DXを支えるデジタル技術
ハードウエア、ソフトウエア、クラウド、セキュリティ、ノーコード・ローコード、AI、IoT、ブロックチェーン店Web3、XR
picoGym Exclusive writeup First Find

## First Find (General Skills)

Unzip this archive and find the file named 'uber-secret.txt'
Download zip file

添付ファイル
・files.zip

含まれているファイル数が少なかったため、ファイルは展開せずそのまま順にファイルを探していったら、以下のディレクトリに目的のファイルがあった。
files.zip\files\adequate_books\more_books\.secret\deeper_secrets\deepest_secrets\uber-secret.txt
開いて見るとflagがそのまま書かれていた。

`picoCTF{f1nd_15_f457_ab443fd1}`

おそらく、`unzip`して`find`を使うのが良いのではないかと推察する。
駅すぱあと VBA SDKを使って駅情報を取得する

**本記事はヴァル研究所の支援として作成された記事です**

[駅すぱあとはAPIを公開](https://api-info.ekispert.com/)しており、駅情報や経路探索などをAPI経由で行えます。メソッドはすべてGETメソッドで、情報取得系のみです。レスポンスはJSONまたはXMLで返ってきます。

この駅すぱあと APIを利用しやすくするSDKを開発しはじめました。SDKはVBAで作っており、Excelなどから利用できます（Windowsのみ、macOSでは利用できません）。

まずは駅情報取得APIができたので、その使い方を解説します。

## 必要な情報

SDKを利用する際にはAPIキーが必要です。[無料トライアルがあるので、こちらから取得](https://api-info.ekispert.com/form/trial/)してください。

## 注意点

- SDKはWindowsでのみ動作します
- SDKは非公式です。公式サポートへの問い合わせはご遠慮ください

## ソースコード

SDKのコードは以下のリポジトリにて公開しています。ライセンスはMIT Licenseです。

[EkispertAPIMania/VBA-SDK: Excel VBAなどで動作する駅すぱあと VBA SDKです（Windowsのみ）](https://github.com/EkispertAPIMania/VBA-SDK/tree/main)

## ファイルのインポート

[こちらのリポジトリ](https://github.com/EkispertAPIMania/VBA-SDK)にある `*.cls` と `*.bas` ファイルをすべてインポートします。これらは以下のライブラリを含んでいます。

- [VBA-tools/VBA-Dictionary](https://github.com/VBA-tools/VBA-Dictionary)
- [VBA-tools/VBA-Web: VBA-Web](https://github.com/VBA-tools/VBA-Web)
- [VBA-tools/VBA-JSON](https://github.com/VBA-tools/VBA-JSON)

## 初期化

先ほど取得したAPIキーを使ってSDKを初期化します。

```vb
Dim client As Ekispert
Set client = New Ekispert
client.ApiKey = "YOUR_API_KEY"
```

## 駅情報検索条件の設定

駅情報検索は `StationQuery` を使います。このオブジェクトを取得し、検索条件を設定します。

```vb
Dim Query As StationQuery
Set Query = client.StationQuery()
Query.Name = "東京" ' 駅名で検索
```

検索条件は [駅情報 - 駅すぱあと API Documents 駅データ・経路検索のWebAPI](https://docs.ekispert.com/v1/api/station.html) にあるものを指定できます。なお、駅情報取得には[簡易版（無料版）](https://docs.ekispert.com/v1/api/station/light.html)と有料版があります。現在は有料版のインタフェースのみ対応しています（フラグで無料版にも対応できる形にする予定です）。

## 検索の実行

検索条件を設定したら、検索処理を実行します。結果は `ResultSet` クラスになります。検索がうまくいったかどうかは `ResultSet.Success` の値で判定してください。

```vb
Dim Result As ResultSet
Result = Query.Find()

Debug.Print Result.Success ' True または False
```

### エラーだった場合

もし検索がエラーだった場合は `ResultSet.Error` の中にエラー情報があります（駅すぱあとAPIからのエラーの場合）。

```vb
If Not Result.Success Then
		MsgBox Result.Error.Message
		Exit Sub
End If
```

### 成功した場合

処理が成功した場合、 `ResultSet.Points` の中にポイント情報が入っています。各ポイントには `Station` （駅情報） と `GeoPoint` （位置情報） 、 `Prefecture` （都道府県） プロパティなどがあります。

```vb
Debug.Print Result.Max ' 200（検索結果数）
Debug.Print Result.Points(0).Station.Code ' 22828
Debug.Print Result.Points(0).GeoPoint.Latitude_DD ' 35.678083
Debug.Print Result.Points(0).GeoPoint.Longitude_DD ' 139.770444
Debug.Print Result.Points(0).Prefecture.Name ' 東京都

Dim i As Long

For i = 0 To UBound(Result.Points)
	Debug.Print i & " " & Result.Points(i).Station.Code
Next i
```


## まとめ

駅情報は、経路探索の基本になります。まだ経路探索はできませんが、これから徐々に機能を追加していきます。ぜひお試しください。

何か不具合があれば、Issueにて連絡いただければ対応します（macOSでは動かないので注意してください）。

[EkispertAPIMania/VBA-SDK: Excel VBAなどで動作する駅すぱあと VBA SDKです（Windowsのみ）](https://github.com/EkispertAPIMania/VBA-SDK)
超簡単! Kubernetesデバッグチートシート

## んー、いろいろみたい! BusyBox

```bash
kubectl run -it --rm busybox --image=busybox -- sh
```

まずはBusyBoxを使って、いろんなことをチェックしちゃおう！このコマンドを実行すると、BusyBoxという小さなコンテナを作ってくれるよ。中に入って、色々なツールを使ってトラブルシューティングできるんだ。とっても便利！

## 本当にそのなまえ引けてる？ nslookup

```bash
kubectl run -i --tty dns-test \
  --image=busybox \
  --restart=Never \
  --rm -- nslookup example.com
```

次はnslookupを使って、ちゃんと名前解決できてるかを確認しよう。BusyBoxを使って、「example.com」が正しく引けるかをチェック！もし引けないなら、DNSの設定を見直す必要があるかもね。

---

## ログをチェック！ Stern

```bash
stern <pod-name>
```

ポッドのログを見るのも大事だよね。`stern`を使えば、指定したポッドのログをリアルタイムでチェックできるんだ。しかも複数のポッドのログを同時に見られるから、とっても便利！エラーや警告メッセージがないか、しっかり確認しよう！

## ディープダイブ！kubectl describe

```bash
kubectl describe pod <pod-name>
```

ポッドの詳細情報を知りたいときは、`kubectl describe`がオススメ！これでポッドのステータスやイベントを詳しく見ることができるよ。どこで問題が起きているか、手がかりを探そう！

## ポッドの中に入ろう！kubectl exec

```bash
kubectl exec -it <pod-name> -- /bin/sh
```

ポッドの中に直接入ってトラブルシューティングしたいときは、`kubectl exec`を使おう！このコマンドを実行すれば、指定したポッド内でシェルにアクセスできるんだ。中に入って、問題を詳しく調査しよう！

## これってどういう状態？kubectl get

```bash
kubectl get pods
```

最後に、クラスタ内のリソースの状態をさくっと確認したいときは、`kubectl get`が便利！ポッドやサービスのリストを一目で確認できるよ。クラスタの全体像を把握しよう！

---

## ネットワークを調べるなら！Netshoot

```bash
kubectl run netshoot --rm -it --image nicolaka/netshoot -- /bin/bash
```

ネットワークの問題を詳しく調査したいときは、`netshoot`がオススメ！このコマンドを実行すれば、`netshoot`コンテナの中に入って、豊富なネットワークツールを使えるよ。例えば、`ping`や`traceroute`、`dig`、`curl`などを使って、ネットワークの状態をチェックしよう！

---

## もっと深く調査したいときは！Debug Container

```bash
kubectl debug <pod-name> --image=nicolaka/netshoot
```

既存のポッドに新しいコンテナを追加して、トラブルシューティングを行いたいときは、`kubectl debug`を使おう！このコマンドを実行すれば、指定したポッドに`netshoot`イメージを使ったデバッグ用のコンテナを追加できるんだ。これで、元のポッドを停止せずに詳細な調査ができるよ！
Chat Botで山口県の魅力を伝えます！

みなさん山口県に行ったことはありますか。
「場所はわかるけど行ったことはない」、「福岡や広島に行くときに通り過ぎたことはある」こんな方が多いと思います。
そこで今回は私が大学から大学院にかけての6年間を過ごした。山口県の魅力を伝えるChat Botを作りました。

![e4b27a39477a97188eb428771f542701.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810288/1e25b024-3e80-6b79-5aaa-df1af7a26cc2.jpeg)

https://cloud.dify.ai/app/31e47db7-6948-47cd-87e6-b1fe8f574641/configuration

**コンセプト**
「下関市　観光地」のように「（市町村名）　（キーワード）」を入力すると以下のようにおすすめの観光場所、おすすめポイント、料金、営業時間、交通アクセスを教えてくれ、最後にボケをかましてくれます。
 
 ![スクリーンショット (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810288/aa2648da-32e6-a121-9df1-64bf2c1056aa.png)


**設定手順**
開発ツール：Dify

手順に以下のコードを入力すると完成です

```
ユーザー入力例：
コードをコピーする
【下関】　【グルメ】

プロンプト設計：
ユーザーが以下のように入力した場合：
【A】・・・市町村名
【B】・・・観光地、グルメ、ホテルなどのキーワード
【C】・・・追加キーワード（オプション）
それに基づいて、山口県の特定の市町村にある観光地、グルメスポット、ホテルなどの情報を提供します。必要に応じて追加キーワードも考慮します。情報にはおすすめポイント、料金、営業時間、交通アクセスを含め、最後に軽いジョークを交えます。
入力の解析を基に出力を生成する方法を以下に示します：
1. 市町村名を特定する。
2. キーワードを特定し、該当する情報を提供する。
3. 追加キーワードがある場合、その条件を反映する。
4. おすすめポイント、料金、営業時間、交通アクセスを提供。
5. 最後に軽いジョークを加える。
1~4の出力には以下のリンクを参照にする
【山口の観光地】山口県のおすすめ観光スポット21選！現地スタッフが定番から穴場スポットまで厳選 【楽天トラベル】 (rakuten.co.jp)
【山口のグルメ】一度は食べたい！山口県の絶品ご当地グルメおすすめ18選！名物といえばこれ！ | kurashi-no
【山口のホテル】山口市の人気ホテル10軒｜￥5,448～ (booking.com)

#### 出力例：
【ユーザー入力】

【下関】　【グルメ】
【出力例】


下関市でのグルメ体験をお楽しみください！おすすめは「唐戸市場」です。
おすすめポイント：
新鮮な海産物がたくさん揃い、その場で寿司や海鮮丼を楽しめます。地元の漁師さんが毎日新鮮な魚を提供しており、特に週末の「寿司バトル」が人気です。
料金：
入場無料。寿司や海鮮丼は500円〜2000円程度。
営業時間：
9:00〜15:00（週末は朝市も開催）
交通アクセス：
JR下関駅から徒歩約15分、またはバスで約5分。
ジョーク：
ここでの寿司バトルは、箸より早い手さばきが命です！

### プロンプトの応用例：
#### 【ユーザー入力】

【岩国】　【観光地】　【橋】

【出力例】

岩国市の観光名所「錦帯橋」をご紹介します！
おすすめポイント：
日本三名橋の一つとして知られる錦帯橋は、その美しい木造のアーチが特徴です。季節ごとに異なる景観を楽しめ、特に桜の季節には絶景です。
料金：
渡橋料金：大人300円、子供150円
営業時間：
24時間開放（渡橋料金の支払いは8:00〜17:00）
交通アクセス：
JR岩国駅からバスで約20分、錦帯橋バス停下車すぐ。
ジョーク：
橋を渡るときにバランスを崩さないように、まるで忍者のように歩いてみてください！
```
picoGym Exclusive writeup ASCII Numbers

## ASCII Numbers (General Skills)

Convert the following string of ASCII numbers into a readable string: 0x70 0x69 0x63 0x6f 0x43 0x54 0x46 0x7b 0x34 0x35 0x63 0x31 0x31 0x5f 0x6e 0x30 0x5f 0x71 0x75 0x33 0x35 0x37 0x31 0x30 0x6e 0x35 0x5f 0x31 0x6c 0x6c 0x5f 0x74 0x33 0x31 0x31 0x5f 0x79 0x33 0x5f 0x6e 0x30 0x5f 0x6c 0x31 0x33 0x35 0x5f 0x34 0x34 0x35 0x64 0x34 0x31 0x38 0x30 0x7d 

文字通り16進のASCIIコードを文字列変換すると、
`picoCTF{45c11_n0_qu35710n5_1ll_t311_y3_n0_l135_445d4180}`