OmniAICreator/Qiita-1.07M huggingface dataset:
M5NanoC6、秋葉マルツで買った2ボタンで遊ぶ(理系フリマ1207展示予定)


x 過去ログを見よ!!!
x 3.0.7


![o_coq654.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/61b40efb-9900-d463-0342-a32395106763.jpeg)


![o_coq655.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/4c6ca3de-6ea9-b143-21cb-2433473ebf98.jpeg)


![o_coq656.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/a93885e0-06d4-df69-444a-ba693d21c662.jpeg)


![o_coq657.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/d4184e06-50db-9e9d-5322-a98d41694d22.jpeg)



```c++


//2button_test1_M5NanoC6_1


//インクルド
#include <Arduino.h>


//初期化
void setup() {
  // put your setup code here, to run once:

  //GPIOの初期化
  pinMode(19, OUTPUT);
  digitalWrite(19, HIGH);
  pinMode(20, OUTPUT);
  pinMode(1, INPUT);
  pinMode(2, INPUT);

}//setup


//メインループ
void loop() {
  // put your main code here, to run repeatedly:

  int a = digitalRead(1); //ボタンの読み込み
  int b = digitalRead(2); //ボタンの読み込み

  if ( a != 0 && b == 0 ) {

    neopixelWrite(20, 64, 0, 0);

  } else if ( a == 0 && b != 0 ) {

    neopixelWrite(20, 0, 0, 64);

  } else if ( a == 0 && b == 0 ) {

    neopixelWrite(20, 64, 0, 64);

  } else {

    neopixelWrite(20, 0, 0, 0);

  } //endif

  delay(10); // 1 / 100 秒待つ

}//loop


```
Datadogのすごいなぁと思うところ

Datadogで働いてると今まで働いてた会社と違うなぁ、すごいなぁと思う事がたまにあります。
今回はQiitaのアドベントカレンダーなのでリクルーティングPR記事になりすぎない程度に（僕はただのサポートエンジニアです）製品の部分にフォーカスした面白い所をピックアップしました。

### DDSketch
Datadogのトレースメトリクス、つまりウェブリクエストなどの遅延のクォンタイル値はDatadog独自の方法で行っており、
それについては論文を発表してて、Datadog内のData Scientistたちが作った物を使ってます。
https://www.vldb.org/pvldb/vol12/p2195-masson.pdf
https://docs.datadoghq.com/ja/tracing/guide/ddsketch_trace_metrics/

ウェブリクエスト遅延のデータ処理はDatadog特有の課題なのかもしれませんが、こういう風に新しい物を考えて、論文で発表してる会社って中々ないなぁと思いました。

### お客様環境にいれるものはなるべくオープンソース
顧客環境に配置する物はなるべくオープンソースなのもすごい面白いなと思ってます。またオープンソースだからこそ開発チーム以外（たとえば営業や経理でもお客様でも）でもソースコードを見てプルリクを出す事ができるのって不思議だなって思ってます。ちなみにマージされるにはもちろんレビューが発生します。
##### 具体例
Datadog Agent
https://github.com/DataDog/datadog-agent
APMトレーサー
https://github.com/DataDog/dd-trace-java
https://github.com/DataDog/dd-trace-dotnet

### 最新の監視テクノロジー
LLMアプリケーションの監視のテクノロジーをもうすでに提供してるのってスピードが早すぎやしないですか。
https://docs.datadoghq.com/ja/llm_observability/

新しい監視すべき対象が現れたすぐ監視できるのがDatadogのすごい所だと思います。Kubernetesはもちろんの事サーバーレスやマイクロサービスアーキテクチャ全体（APMを通じて）に当たり前に監視手段を提供しているのもすごいなーと思います。

### 最後に
消費者としては中々関心が向かない監視ですが、エンジニアとしてシステムのパフォーマンスを向上をさせたくなったら計測する必要があらわれ、そのタイミングで需要が発生するDatadogの提供するツールたち。開発の一歩目ではない領域でのスタートアップなので（今や全世界5000人以上の大企業ですが）、集まってくるエンジニアのレベルも高く、テクノロジーのレベルが半端ないなと思いますね。

僕らは随時仲間を募集しているので気が向いたら応募してみて下さいー。
https://careers.datadoghq.com/all-jobs/?region_APAC%5B0%5D=APAC&location_APAC%5B0%5D=Tokyo&location_APAC%5B1%5D=Osaka
【Suno AIでつくった楽曲】声でつながるAIとの対談: 挿入曲 #4【動画 3分35秒】【YouTubeチャンネルからの転記です】

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

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

こちらが動画内容です👇

***

![01 YouTube再生中の画像 Suno AI _ 声でつながるAIとの対談_ 挿入曲 #4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386308/30b7a0e8-7c71-cccf-e641-86f0eeb331e9.png)




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

<br>

* # 動画タイトル
    * 【Suno AIでつくった楽曲】声でつながるAIとの対談: 挿入曲 #4【動画 3分35秒】

<br>

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

📅撮影日 = 2024-11-26(火)

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

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

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

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


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

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

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

作曲日:
2024-11-25(月)

Suno AI 契約の種類:
Pro Plan

Suno AI Version:
v4

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

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

Custom Mode: On

Audio Inputs: Not Used

Instrumental:


---


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


🇬🇧English

[Violin][Jazz][Piano][Swing][220 Seconds][Break][Outro]


🇯🇵日本語訳

[バイオリン][ジャズ][ピアノ][スウィング][220秒][ブレイク][アウトロ]


---


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


---


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


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


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


✓ 🎥Shortened URL for this video | この動画の短縮URL ↙
　https://bit.ly/4i4RFaq
【TryHackMe】The Hacker Methodology：Walkthrough

# 概要

TryHackMe「The Hacker Methodology」のWalkthroughです。

https://tryhackme.com/r/room/hackermethodology

# Task1

## **Q1**.*What is the first phase of the Hacker Methodology*

**A**.**Reconnaissance**

# Task2

## **Q1**.*Who is the CEO of SpaceX?*

**A**.**Elon Musk**

## **Q2**.*Do some research into the tool: sublist3r, what does it list?*

**A**.**subdomains**

## **Q3**.*What is it called when you use Google to look for specific vulnerabilities or to research a specific topic of interest?*

**A**.**Google Dorking**

# Task3

## **Q1**.*What does enumeration help to determine about the target?*

**Hint**.*two words!*

**A**.**Attack Surface**

## **Q2**.*Do some reconnaissance about the tool: Metasploit, what company developed it?*

**A**.**Rapid7**

## **Q3**.*What company developed the technology behind the tool Burp Suite?*

**A**.**portswigger**

# Task4

## **Q1**.*What is one of the primary exploitation tools that pentester(s) use?*

**A**.**Metasploit**

# Task5

## **Q1**.*In Windows what is usually the other target account besides Administrator?*

**A**.**System**

## **Q2**.*What thing related to SSH could allow you to login to another machine (even without knowing the username or password)?*

**Hint**.*SSH ____*

**A**.**Keys**

# Task7

## **Q1**.*What would be the type of reporting that involves a full documentation of all findings within a formal document?*

**A**.**full formal report**

## **Q2**.*What is the other thing that a pentester should provide in a report beyond: the finding name, the finding description, the finding criticality*

**A**.**Remediation recommendation**
GC'sブートキャンプは高い？Unityゲーム開発初心者におすすめの学習リソースを徹底解説



Unityでゲームを作りたいと思ったとき、「どのリソースで学ぶべきか？」と悩む方も多いのではないでしょうか。  
この記事では、「GC'sブートキャンプ」や「スタジオしまづ」、そして無料リソースとして評価が高い「Unity入門の森」を中心に、それぞれの特徴や料金を解説します。

また、最後には初心者に最適なリソースを提案しますので、ぜひ参考にしてください！
→ [Unity入門の森はこちら](https://feynman.co.jp/unityforest/)

---

## GC'sブートキャンプとは？

### 概要
GC'sブートキャンプは、ゲーム制作歴30年以上の経験を持つ「ひろはす」氏が主宰するオンラインスクールです。Unityを基盤に、ゲーム制作の基礎から応用までを学べる実践的なカリキュラムが特徴です。

### 特徴
- **実践重視のカリキュラム**  
  単なる学習ではなく、ゲーム完成をゴールとする内容が提供されています。
- **個別サポート体制**  
  講師から直接フィードバックを受けられるため、初心者でも安心。
- **AI技術を活用**  
  最新ツールを駆使した効率的なゲーム開発を学べます。
- **受講生同士の交流が活発**  
  コミュニティ型の環境でモチベーションを保ちながら学べます。

### 料金
具体的な料金は非公開ですが、**20万～30万円**が相場と推測されます。高額な印象を持たれることもありますが、個別指導や実践的な内容を考慮すると妥当という意見も。

---

## GC'sブートキャンプの信頼性について

### 「怪しい」という噂
GC'sブートキャンプが「怪しい」と言われる理由には以下があります：
1. **料金が非公開**：問い合わせが必要なため、不透明さを感じる方がいる。
2. **積極的な広告**：SNSやYouTubeでの宣伝が「派手すぎる」と思われがち。

### 信頼性を確認するポイント
- **公式サイトでカリキュラムや運営情報を確認**  
  信頼できる運営体制かどうかは公式情報で判断する。
- **第三者のレビューや体験談を見る**  
  受講者の実際の声を確認すると具体的な内容がわかる。

---


## 比較表：もうすこし費用を安くゲームを学びたい！どれを選ぶべき？

| リソース         | 特徴                                   | 料金      |
|------------------|--------------------------------------|---------|
| **GC'sブートキャンプ** | 実践重視、短期間でスキル習得              | 約20万〜30万円 |
| **スタジオしまづ** | コミュニティ型サポート、自由度の高い学習スタイル  | 月額数千円    |
| **Unity入門の森** | 無料で利用可能、基礎から応用まで対応         | 無料～      |

---
## スタジオしまづとは？

### 概要
スタジオしまづは、オンラインサロン形式でUnityやUnreal Engineを学べるサービスです。比較的低コストで学べる点が初心者にとって魅力です。

### 特徴
- **月額数千円からのリーズナブルな料金**
- **Udemy講座の無料クーポン提供**：関連教材も充実。
- **柔軟な学習スタイル**：自分のペースで進められる。

---

## Unity入門の森とは？

### 概要
Unity入門の森は、無料でUnityを学べる初心者向けのチュートリアルサイトです。基礎から実践まで幅広い内容が提供され、独学で始めたい方に最適です。

### 特徴
1. **無料で利用可能**  
   Unityの操作や基礎スキルをゼロコストで学べます。
2. **豊富なチュートリアル**  
   2Dゲーム、3Dゲーム、AIを活用したシステムなど多彩なコンテンツ。
3. **初心者に優しい設計**  
   わかりやすい図解やサンプルコードで学習がスムーズ。


---

## 結論：Unity入門の森で基礎を固めよう
ゲーム開発初心者にとって、「Unity入門の森」はコストゼロでスキルを身につけられる最高のリソースです。基礎を学んだ上で、有料リソース（GC'sブートキャンプやスタジオしまづ）に進むことで、効率的な学習が可能です。

- **まずは無料で気軽に試す**
- **挫折しにくい初心者向けの内容**
- **次のステップへ進むための準備が整う**

ぜひ「Unity入門の森」を活用して、あなたのゲーム開発の旅をスタートしてください！  
→ [Unity入門の森はこちら](https://feynman.co.jp/unityforest/)
FlutterとChatGPTで作る！競馬収支管理アプリの開発記録

今回は、ChatGPTを活用してFlutterでiOSアプリを開発しましたので開発の過程をご紹介します。お題は「競馬の収支管理アプリ」

https://apps.apple.com/jp/app/%E7%AB%B6%E9%A6%AC%E3%83%88%E3%83%A9%E3%83%83%E3%82%AB%E3%83%BC/id6738445272

## お題：競馬の収支管理アプリ

競馬の収支を簡単に管理できるアプリを作成することにしました。競馬を楽しむためには、収支の管理が欠かせません。そこで、自分の好きな競馬を題材にしたアプリ開発に挑戦しました。

## 選定理由

以下の理由から、このお題を選びました：

- **個人的な興味**：自分が興味を持つ題材の方が開発が楽しく、継続しやすいと感じたため。
- **機能の完結性**：アプリ単体で完結する機能を持つことで、開発がシンプルになり、リリース時のハードルを下げられると考えたため。
- **プライバシーの確保**：外部と通信したり位置情報を取得する機能を避けることで、プライバシーポリシーの準備や審査の難易度を下げることができるため。

## 開発の進め方

### 1. アイデアの具体化

まずは、ChatGPTに開発したいアプリの概要と必要な機能、開発環境を相談しました。具体的には以下の通りです：

- **お題**：競馬の収支管理アプリ
- **機能**：
  - 収支の入力
  - 収支の管理
  - 目標設定機能
  - 分析画面
- **開発環境**：
  - MacBook (M2)
  - VSCode
  - Flutter

### 2. ChatGPTの活用

ChatGPTの有料版（ChatGPT-o1）を利用することで、段階的な指示と高精度な回答を得ることができました。具体的には、提案されたコードを実装し、シミュレーターで動作確認を行いました。修正が必要な箇所があれば、再度ChatGPTに相談し、コードの修正と確認を繰り返しました。

### 3. ソースコードの管理

開発が進むにつれてソースコードが増加し、回答の精度が低下することがありました。その際には、以前の記事で紹介したCodeSpoonfeederを活用し、プロジェクト全体を再認識させることで、精度を維持しました。

https://qiita.com/travelclass0606/items/0ad26cbe401311489394

また、ChatGPT-o1の回答には最新情報が反映されていない場合があるため、エラーが発生した際にはChatGPT-4oのWeb検索機能を使って最新の情報を取得し、ChatGPT-o1にフィードバックすることで問題を解決しました。

## iOSアプリのリリース

### 1. Apple Developerへの登録

App Storeでアプリをリリースするためには、Apple Developerに登録する必要があります。登録には年会費(99米ドル)がかかります。

### 2. サポートとプライバシーポリシーの準備

リリース時には、サポート問い合わせ先とプライバシーポリシーのページリンクが求められます。個人開発の場合、これらの準備がめんどくさく感じることもありますが、以下の方法で簡単に対応しました：

- **サポートURL**：X（旧Twitter）に専用アカウントを作成し、そのURLを問い合わせ先として設定

https://x.com/keiba_tracker


- **プライバシーポリシーURL**：Googleドキュメントでプライバシーポリシーを作成し、全員閲覧可能なリンクを設定

https://docs.google.com/document/d/1q6t7XVQzukMQ_El6ktK-2OqUV07KdhvT6kIoUAMeRGs/edit?tab=t.0

結果的にどちらとも問題なく審査を通過しました。

### 3. メールアドレスの管理

個人開発で複数のWebサービスを運営する際、新しいメールアカウントを取得するのは手間ですが、Gmailのエイリアス機能を活用することで効率化しました。例えば、`qiita@gmail.com`に対して、`qiita+webservice@gmail.com`のようにエイリアスを設定すると、同じメールボックスにメールが届きます。長期間運用するサービスには、個別のメールアドレスを取得することを検討しています。

### 4. App Store審査の通過

リリース時に2回のリジェクトを経験しました。

1. **1回目のリジェクト**：
   - **原因**：iPad用のスクリーンショットにiPhone用のスクリーンショットを引き延ばして使用していたため。
   - **対応**：iPad用の正しいスクリーンショットを用意し、再提出。
![3beefba2f0462692c964d7b3e75c8ac7a822a33d.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3892822/8a6eb87c-8cd7-2509-e48e-0cdcab74a81c.png)

2. **2回目のリジェクト**：
   - **原因**：デバッグ用の文字が右上に表示されたままのスクリーンショットを提出していたため。
   - **対応**：デバッグ表示を消去し、テスト中の画面を正しい状態に修正して再提出。
![d39a9f630acdf9b10899b46ee8ab07012718dfad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3892822/55cdfcf0-40c7-ac57-3fb3-91780ed18ec0.png)


最終的に、これらの修正を経て無事に審査を通過し、App Storeにリリースすることができました。

## まとめ

競馬好きの方はもちろん、収支管理アプリをお探しの方はぜひ「競馬トラッカー」をダウンロードしてご利用ください。FlutterとChatGPTを活用することで、効率的かつ楽しくアプリ開発を進めることができました。これからも新しいプロジェクトに挑戦していきますので、応援よろしくお願いします！

---

**アプリはこちらからダウンロードできます**：  
[競馬トラッカー - App Store](https://apps.apple.com/jp/app/%E7%AB%B6%E9%A6%AC%E3%83%88%E3%83%A9%E3%83%83%E3%82%AB%E3%83%BC/id6738445272)

# さいごに

この記事が、FlutterやChatGPTを活用してiOSアプリを開発したいと考えている方の参考になれば幸いです。質問やフィードバックがありましたら、ぜひコメントでお知らせください！
トレイルヘッドで指示された取引先レコードがない？



# Grand Hotels & Resorts

### [Quick Start: Dynamic Forms > Upgrade to Dynamic Forms](https://trailhead.salesforce.com/content/learn/projects/quick-start-dynamic-forms/upgrade-to-dynamic-forms)

この場合は動的フォームを作るだけなので、他の取引先を使えばいい

+ [Unable to see Grand Hotels & Resorts Ltd](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V000079QZFPSA4)


### [Create an Opportunity Record Type for Nonprofit Success Pack (NPSP) >Create and Test a New Opportunity Record Type](https://trailhead.salesforce.com/content/learn/projects/create-an-opportunity-record-type-for-npsp/create-and-test-a-new-opportunity-record-type)

+ [Test the New Opportunity Record Type: I can't find Grand Hotels & Resorts Ltd](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000J6ktk0AB)
iOS document.fonts.onloadingdone is not working


## 対象読者

iOSのブラウザで`onloadingdone`が発火しない人

```js
document.fonts.onloadingdone = () => {
    alert("hogehoge");
};
```

## 解決方法

`document.fonts.ready`を使う。

```js
document.fonts.ready.then(() => {
    alert("hogehoge");
});
```

## 余談

まず以下を見たが、意味がなかった。

https://forum.babylonjs.com/t/ios-document-fonts-onloadingdone-never-returning/28766/1

stack overflowが参考になった。

https://stackoverflow.com/questions/5680013/how-to-be-notified-once-a-web-font-has-loaded
DHCP

# ARPの元となるIPアドレスを取得する
>ARP（あるいは他のインターネット・プロトコル）は、自身のIPアドレスといった基本情報がホストに設定されていることを想定している。

# IPアドレスをDHCPから借りる
>各コンピュータを手動で操作することも可能であるが、面倒であり、また誤りが起きやすい。その解決法としてDHCP(Dynamic Host Configuration Protocol:動的ホスト構成プロトコル）がある。

### DHCPへ赴く
>ARPと同様に、コンピュータはネットワークにIPアドレス要求をブロードキャストする。この動作はDHCP DISCOVERパケットを用いて行う。このパケットは必ずDHCPサーバーへ届く必要がある。DHCPサーバーがネットワークに直接接続されていない場合は、ルーターがDHCPブロードキャストを受信するように設定し、DHCPサーバーがある場所まで転送する

### DHCPがIPアドレスを割り当てる
>サーバーは空いているIPアドレスを割り当て、そのアドレスをDHCO OFFERパケットに乗せてホストへ送り返す(ここでも、ルーターを経由して転送される場合がある）。

### ホストを認識するためにイーサネット・アドレスを用いて識別する
>ホストがIPアドレスを持たない状況でもこの動作を行えるようにするため、サーバーはDHCP DISCOVERパケットで運ばれてきたイーサネット・アドレスを用いてホストを識別する

### DHCPがある期間だけ借す
>ホストがネットワークを離れ、IPアドレスがDHCPさーばーに返却されなければ、そのアドレスは永久に失われることになる。ある程度の期間が経過すると、多くのアドレスが失われることになってしまう。この事態を防ぐために、IPアドレスの割り当ては一定時間のみとする。この仕組みをリース(leasing)と呼ぶ。ホストは、リースが終わる直前に、DHCPの更新を要求しなければならない。

# 他にもインターネット通信を行うためのパラメータも送っている
>インターネットのさまざまなパラメータの設定にも広く使われている。

>設定される情報の一般的な例としては、ネットワーク・マスク、デフォルト・ゲートウェイのIPアドレス、DNSや時間サーバーのIPアドレスなど

# 他の機能も入っている
>限られた機能のみを持つRARPやBOOTPといった初期のプロトコルは、ほとんどがDHCPに置き換えられている。

https://bookplus.nikkei.com/atcl/catalog/23/03/16/00728/
トレブレのロゴの秘密

この記事は [株式会社TRAILBLAZER Advent Calendar 2024](https://qiita.com/advent-calendar/2024/trail-blazer) の2日目の記事です。

---

こんにちは、株式会社TRAILBLAZER ソリューション事業部 部長の直井です。
1日目に続き、2日目の記事も担当します。
今日は会社のロゴについて話そうと思います。

TRAILBLAZER（トレブレ）ってどんな会社？って気になった人は、1日目の記事を読んでみてください。

## **目次**
- [ロゴの紹介](#ロゴの紹介)
- [クイズ](#クイズ)
- [解説編](#解説編)
- [締めの宣伝](#締めの宣伝)

## **ロゴの紹介**
https://www.trail-blazer.co.jp/

弊社のロゴはこんな感じです。

白抜きだと、下の画像。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41577/c5edca93-bda5-5b83-a1cd-bb4cd5fbe157.png)

TRAILBLAZERという名称の上に、線がたくさん引いてあるのが分かると思います。
一直線に引かれていたり、切れ切れになっていたり、ちょっと不思議なデザインですね。

## **クイズ**
ここでいきなりクイズです。
このロゴのデザイン、何を表しているのでしょうか？
1. JR西日本のグループ会社にちなんで線路を表現している。
1. モールス信号でTRAILBLAZERになっている。
1. ASCIIコードでTRAILBLAZERになっている。
1. 目を細めると社長の横顔になっている。

シンキングタイムは10秒で。

チッ
チッ
チッ

はい、終了〜

では、答え合わせを。

## **解説編**
答えは、
ASCIIコードでTRAILBLAZERになっている。
でした。

簡単でしたか？自分は最初モールス信号だと思っていましたｗ

まあ、タグでネタバレしてるんですけどね。

ということで、解説したいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41577/c2764749-543f-3999-18c2-d10dace38308.png)
（弊社ブランドガイドラインより抜粋）

上の図の通り、0を線、1を空白として、ASCIIコードを表現しています。
線のある方が0ってのが、ちょっとだけ違和感ありますが、そこはまあデザイン的な美しさってことで、ご容赦ください。

表にするとこんな感じですね。

| ASCIIコード | アルファベット |
|:-:|:-:|
| 01010100 | T |
| 01010010 | R |
| 01000001 | A |
| 01001001 | I |
| 01001100 | L |
| 01000010 | B |
| 01001100 | L |
| 01000001 | A |
| 01011010 | Z |
| 01000101 | E |
| 01010010 | R |

カッコいいロゴですよね。
自分は~~厨ニっぽくて~~好きです。

## **締めの宣伝**
いかがでしたか？
今回はトレブレのロゴの秘密を紹介してみました。

最後に、トレブレでは一緒に働くメンバーを募集中です。
こんな記事でも興味が出たそこのあなた、ちょっとクリックしてみませんか？

ということで、本日の記事はここまで。
読んでくれたみなさん、ありがとうございましたー

https://hrmos.co/pages/trail-blazer/jobs/2000002

https://hrmos.co/pages/trail-blazer/jobs/2000006

https://hrmos.co/pages/trail-blazer
結局chatGPTって画像をOCRできるの？

:::note alert
この記事は個人の備忘録ですので、正確な情報ではない情報が含まれている可能性があります！
:::


**結論：できます**
（＊OCR・・・画像を文字起こしさせること程度の認識で大丈夫です）

お疲れ様です、steveです。
最近、仕事柄gptのAPIを叩いてOCR走らせることが多いんですが、gptのことはgptに質問することが一番だろうということで、バグが起こったらgptに聞いたりしているのですが、画像をOCRしようとするとこんなレスポンスが来ることがあるんですよね・・・

:::note warn
gptは画像認証はサポートしていません。代わりにテキストタイプを・・・
:::

##
**嘘つけ!!**
確かにgpt-4までのモデルだったらocrする前にgoogleのAPI別個叩いてOCRした文章を読み込ませる必要がありました。でも、

「普通にGPT使う時画像認証できているしそんなはずないやろ・・・」

気持ちわかります。実際に4o以上のmodelを指定していればocrできます。
そこで今回は、gpt-4oでocr回したのに認証受け付けてもらえない場合に確認するべきことを紹介します。

##
**1,base64encodeしてる？**
基本中の基本ですが、画像など、メディアタイプがテキストではないものをリクエストに含める場合、base64encode化して、base64imageのurlを作成する必要があります、基本的に以下のコードでencodeできます（js）

```
const base64Image = Utilities.base64Encode(file.getBlob().getBytes());
const base64ImageUrl = `data:${mimeType};base64,${base64Image}`;
```

このコードの前にmimeType(image/pngやjpegみたいな)を取得しておいてください
##
**2,messagesの記法あってる？**

```
"messages": [{
                "role": "user",
                "content": [
                  {
                    "type": "text",
                    "text": message
                  },
                  {
                    "type": "image_url",
                    "image_url": {
                      "url": base64ImageUrl
                    }
                  }
                ]
              }]
```
プロンプト設計の仕方はこちらで解説しています
https://qiita.com/stevechaiqi0501/items/1cd26a30

**基本は、一つのroleに対して一つのcontentです。**
ヒューショットしたい場合等、プロンプトにこりたい場合は、上記のリンクより、roleについて学習していただけると幸いです。

##

**3,プロンプトごちゃごちゃしてない？**
gptの仕組み上、プロンプトが複雑な場合、トークン数を多く消費します。その過程でimageurlを認識しなくなる可能性があります

##

*4,*modelの設定あってる？**
なぜだかわかりませんが、gptに修正依頼をすると勝手にmodelをgpt-4oからgpt-4に変えられる場合があります。ocrは4o以上のみ対応しているので、modelの設定には留意したいです

##
**JSON出力に指定したらocrできない・・・**
僕はこれが今回の案件における最大の難点でした
普通なら画像認証してくれるのに、プロンプトに「出力はjsonで」とお願いすると非対応だと言われる始末・・・

これができなくて1日ほど開発が遅れました。
どうやら、apiにおいては、以下のようなmodelがあるようですね

**chatgpt-4o-latest**
model = 'chatgpt-4o-latest'
と設定したらjsonでも走ってくれました。

:::note info
結論：やっぱりdocumentは正義ですね
:::
【SAP UI5】WizardStep ステップインジケーターでの遷移を無効化する

## はじめに
&nbsp;本記事は、WizardStepのステップインジケータークリック時のイベントを無効化する方法についてまとめました。
## 経緯
&nbsp;WizardのStepの遷移の制御を独自のメソッド内で nextStep() previousStep()を用いて遷移の処理を記述していましたが、ステップインジケーターをクリックしてページ遷移が行われると、期待するイベントが発火されることなく遷移してしまうという問題がありました。
&nbsp;各ページの遷移ごとに処理内容も異なるため、ステップインジケーターのイベントを取得するのではなく、イベント事態を無効化してしまう方向性で解決することにしました。

## 解決方法
##### ・Wizardのクリック時のイベント関数を上書きする。
```js
this.oWizard = this.getView().byId("wizard")
this.oWizard._getProgressNavigator().ontap = function(){};
```
ただし、この方法だとイベントを無効化しただけであり、以下の画像のように各ステップのクリックすること自体は可能なためユーザを困惑させてしまう可能性があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345291/5bff40e5-c62c-fb03-7e2c-ebcd5ae88248.png)



##### ・カスタムCSSでイベントとカーソルを無効にする。
```css
.sapMWizardProgressNav {
  pointer-events: none;
  cursor: not-allowed;
}
```
この方法であれば、クリックで遷移することもなくカーソルも変わらないため、ユーザにボタンとして認識されることがなくなり、遷移できないと困惑されることはなくなると思われます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345291/f866dc3c-4908-0f3c-96bf-30331f2ad446.png)

## まとめ
クリックイベントのみを無効化するだけでは、クリックできるのに遷移できないとユーザを困惑させてしまう可能性があるため、カスタムCSSでクリックイベントを無効化することで、期待通りの遷移処理を実現することができました。
株式会社TRAILBLAZERってどんな会社？

この記事は [株式会社TRAILBLAZER Advent Calendar 2024](https://qiita.com/advent-calendar/2024/trail-blazer) の1日目の記事です。

---

こんにちは、株式会社TRAILBLAZER ソリューション事業部 部長の直井です。

部長なんて堅苦しい肩書ですが、2024年7月に転職したばかりだったりします。
実際は、組織作ったり、仕事作ったり、手の回らない仕事を担当したり、要するに何でも屋です。

ノリと勢いでメンバ巻き込んでアドベントカレンダーを始めることにしたので、まずは挨拶がてら会社の紹介でもしていこうかなと思います。
お時間あればお付き合い頂けると嬉しいです。

## **目次**
- [TRAILBLAZERってどんな会社なのか](#TRAILBLAZERってどんな会社なのか)
- [ソリューション事業部ってどんなところなのか](#ソリューション事業部ってどんなところなのか)
- [他にどんな部署があるのか](#他にどんな部署があるのか)
- [締めの宣伝](#締めの宣伝)

## **TRAILBLAZERってどんな会社なのか**
https://www.trail-blazer.co.jp/

読み方は「トレイルブレイザー」です。
でも、長いので略して「トレブレ」と呼ぶことがほとんどです。

どんな会社か説明するのが面倒なので、採用情報に書いてある内容を~~丸パクリ~~引用すると
```
クライアントをJR西日本グループに特化したデジタルコンサルティングエージェンシー。
各事業と一体でのデジタル施策の実行支援を担い、データ利活用による事業横断の価値創出を行います。
JR西日本グループのアセットを活用し、課題先進地域で社会的インパクトある仕事に挑戦できます。
組織拡大フェーズで、多様な仲間と共に成長できる環境です。
```

うーん、分かるような分からないような感じですね。

1行ずつ説明していきたいと思います。

### **クライアントをJR西日本グループに特化したデジタルコンサルティングエージェンシー**
トレブレはJR西日本のグループ会社で、~~今のところは~~JR西日本の案件に特化して仕事をしています。
データ分析、DX、プロダクト開発などなど、IT系のかゆいところに手が届く、そんな会社です。
同じグループの自分事として取り組んでいるので、あんまコンサルっぽくはない気がします。

### **各事業と一体でのデジタル施策の実行支援を担い、データ利活用による事業横断の価値創出を行います。**
実際、JR西日本の色んな人たちと一緒に仕事しています。データやアセットを活用して貢献しています。

### **JR西日本グループのアセットを活用し、課題先進地域で社会的インパクトある仕事に挑戦できます。**
課題先進地域ってのは、人口減少みたいな地方が抱える課題の多い地域ですね。
今はまだ西日本のユーザ向けですが、西日本に住んでいたり、西日本に仕事や旅行で来る人たちの助けになるようなプロダクトを作っていきたいと考えています。

### **組織拡大フェーズで、多様な仲間と共に成長できる環境です。**
2023年10月にできたばかりの会社で、毎月色んなバックグラウンドの人が入社しています。
JR西日本という巨大インフラを持った組織のグループ会社でありながら、スタートアップ的でもある、そんなところが面白さかもしれません。

## **ソリューション事業部ってどんなところなのか**
次に、自分が部長やってるソリューション事業部について話したいと思います。

ソリューション事業部は、11月末時点で14名、1名北陸で、残りの半分が関西、もう半分が関東在住です。
全員がフルリモートで仕事をしています。
一応、大阪と東京に拠点がありますが、自分もあんま出社してません。
たまには顔見せるか、みたいな感覚ですね。

メンバの半分が、エンジニア系、残りがPMやPDMやデザイナーです。
案件によってチームを組んで、JR西日本の人たちと仕事をしています。

メンバのバックグラウンドは、自分も含めてネット系メガベンチャー出身者が多いです。
いわゆるプロダクト開発が得意な組織です。

雰囲気は、部長がこんな感じなので、まあ察してくださいｗ

## **他にどんな部署があるのか**
トレブレを立ち上げるきっかけになったデータサイエンティストやDXコンサルを抱えるデータコンサルティング事業部と、
バック・ミドルオフィスを支えてくれている経営企画部
があります。

このアドベントカレンダーはソリューション事業部がメインになるかと思いますが、
後半の方で他の部からも投稿できると良いなーと思っています。

## **締めの宣伝**
いかがでしたか？（まとめサイト風）
今回は株式会社TRAILBLAZER（トレブレ）の紹介をしてみました。
翌日以降も色んなメンバによる記事を発信していこうと思います。

最後に、トレブレでは一緒に働くメンバーを募集中です。
こんな記事でも興味が出たそこのあなた、ちょっとクリックしてみませんか？

ということで、本日の記事はここまで。
読んでくれたみなさん、ありがとうございましたー

https://hrmos.co/pages/trail-blazer/jobs/2000002

https://hrmos.co/pages/trail-blazer/jobs/2000006

https://hrmos.co/pages/trail-blazer
VRChatは技術者の新たな交流ツールだ！

# はじめに
こんにちは、ただのぶたぁです。
本記事ではVRChatの技術的な活用方法に焦点を当てて書いています。

# 本記事の対象者
・VRChat自体興味あるけど手を出せていない方
・技術系のコミュニティが欲しい方
・プログラミングなどに興味がある方

# 自己紹介
- 職業: 学生
- VRChat歴: 2023/12~
- 使用機器: Desktop -> Quest単機 -> PCVR
- 趣味: プログラミング

# VRChatとは
[VRChat](https://hello.vrchat.com/)は簡単に言うとVRChat社が運営する世界最大のソーシャルVRです。

勘違いする方がいらっしゃるかもしれないのですが、**VR機器がないと入れないわけではありません。**
もちろんVR機器は使えるのですが、パソコン一台だけでも入ることができます。

代表的なソーシャルVRとしてクラスター株式会社が運営する[cluster](https://cluster.mu/)、株式会社バーチャルキャストが運営する[Virtual Cast](https://virtualcast.jp/)などが日本では有名ですね。

他のソーシャルVRとVRChatが違うところは圧倒的な人口だと言えます。
clusterやVirtual Castは日本からのアクセスが多いのに対し、VRChatはアメリカを始めとする世界中の国々からアクセスされているという違いがあります。

それぞれ違った良さがあるので気になる方は調べてみてください。

# 最近のVRChat
今年の夏、スタンミさんがVRChatを取り上げたことによりかつてないほどの盛り上がりを見せています。
　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3193775/bf24d816-cade-8e72-3a96-bb2272a49aef.png)

このデータは[Googleトレンド](https://trends.google.co.jp/trends/)を用いてGoogle検索上での人気度の動向を表しています。

このデータを見て分かる通り今年の夏からVRChatの人気が急増しています。
それに伴い、VRChatの人口も増加しています。

初心者向けの情報も増えており、敷居が下がって始めるには絶好のチャンスです。

# なぜ技術系にVRChatをおすすめするのか
人とコミュニケーションを取ることはとても大事です。
色々な情報を知れたり、わからないところを教えてもらったりと様々なメリットがあります。

ですが人と関わりを持つことは簡単ではありません。
そこでVRChatを使うことでそのハードルを下げることができます。
特におすすめなのが[技術学術系集会](https://vrc-ta-hub.com/)です。

2024年11月現在、50個の集会が開催されています。
フロントエンドやバックエンドといった狭い分野から技術分野を問わないものまで様々なものがあります。
私自身も何度か参加したことがあるのですがすごく話しやすかったです。

プログラミング歴1年の私ですが、集会に参加して本当に良かったと感じています。

集会によりますがLT（ライトニングトーク）と呼ばれる短いプレゼンテーションを参加者が行う機会もあります。
これにより、普段触れることのない分野について知るきっかけを得られるのがとても魅力的です。
技術的な視野を広げるのに最適な場だと思います。

これが実際の様子です
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">初めてエンジニア集会にいった記念 <a href="https://t.co/0ymGLOTITZ">pic.twitter.com/0ymGLOTITZ</a></p>&mdash; ただのぶたぁ (@P_tdn2) <a href="https://twitter.com/P_tdn2/status/1842211050676224178?ref_src=twsrc%5Etfw">October 4, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

年齢層も様々で学生の方から本職でプログラマーをやっている方など様々な方がいます。
学生である私にとってプロの方々とお話できる場はとても貴重です。

## 集会の参加の仕方
集会に参加するのは簡単です！以下の手順に従うだけで、気軽に技術集会に参加できます。

1\. [技術学術系集会](https://vrc-ta-hub.com/)にアクセスします

2\. 集会一覧から気になる集会をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3193775/b4d4eb7e-b212-af8e-8e74-f46a52493b15.png)

3\. **参加方法のVRChatグループからグループに参加する**または**主催・副主催の方にフレンド申請をする**
        
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3193775/43a04a65-9b82-250a-8b61-ac384b4807b3.png)

4\. 時間になったらJoinする

**そもそもVRChatのアカウントを持っていない方は[もなよさん](https://monayoblog.com/how-to-get-started-with-vrchat/)の記事を参考に作成からログインまでしましょう**
# コミュニケーション難民へ
VRChatでは様々な人がいます。

地声で喋っている方やボイスチェンジャーを使って喋っている方、無言の方など様々います。
必ずしも喋れなければコミュニケーションを取れないことはありません。

私自身の話をすると最初は人に話しかけることが全然と言っていいほどできませんでした。
初めて半年以上になると触れ合う人も増えてきて始めた当初よりは話しかけられるようになりました。

**慣れの部分も大きいのでコミュ障を理由に諦めなくても大丈夫です**

# 最後に
**VRChatはSteamで無料です。**

私自身も、パソコン一台からVRChatを始めました。
VR機器があれば表現の幅が増えることは確かですが無くても十分楽しめます。

**少しでも興味が湧いたのなら始めてみることを強くお勧めします**

**いつか会える日を楽しみに待っています。
良き技術ライフをお送りください！**
俺的Windows11初期セットアップ

# 設定編
Windows11からUIが変わったものも多いと思います。
昔からWindowsを使っている人には親しみやすいUIに戻す設定をまとめておきます。

## エクスプローラーの右クリックUI
1. 「スタート」を右クリックし、「Windows Powershell (管理者)」をクリック
2. ターミナルが起動したら、以下のコードを入力orコピー&ペースト、Enter
    ``` Powershell
    reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
    ```
3. 「この操作を正しく終了しました。」と表示されたらターミナルを閉じ、再起動

## スタートボタンの左寄せ
設定>個人用設定>タスクバーの動作>タスクバーの配置を左寄せ

## Win+V有効化
【Windows】+【V】のショートカットを押しクリップボードの履歴機能を有効
今後は【Windows】+【V】で過去のクリップボードもいくつか残るのでコピペが捗る！


# ソフトウェア編
やっぱりPCは使いやすいソフト入れてからが本番

[Google日本語入力](https://www.google.co.jp/ime/ )
予測変換が優秀でおすすめ
[Google Chrome](https://www.google.com/intl/ja_jp/chrome/)
Google関連のサービス使うなら間違いない
[Everything](https://www.voidtools.com/)
PC内のファイル検索が爆速でできる
[7Zip](https://7-zip.opensource.jp/)
ファイルの圧縮・解凍におすすめ、右クリックですぐ使えて便利
[VScode(Visual Studio Code)](https://code.visualstudio.com/)
プログラミング、コーディングするなら入れておきたいエディター
AWS資格全制覇！2024年版：ラスベガスを目指して全力疾走

## はじめに

2023年、**AWS Certified Solutions Architect - Professional (SAP-C02)** を取得し、「これでAWS資格ホルダーだ！」と意気揚々としていました。また、この資格取得と、いくつかの幸運が重なり、re:Invent 2023に参加することもできました。
しかしながら、re:Invent 2023で、「AWS資格には“全冠”という称号がある」と知り、その時点で私の挑戦はもう決まっていました。

「次は全資格を取得して、**re:Invent 2024**にも乗り込もう！」

そんな勢いでスタートしたものの、新資格が突然追加されるなど、予想外の出来事もありました。それでも、「次のラスベガスでは、全冠の称号を胸に、AWSファンフェスを楽しむ」という目標がモチベーションとなり、全資格を制覇することができました。

---

## 合格した資格一覧とスケジュール

AWS資格全制覇は長期戦でしたが、計画を立ててコツコツ取り組みました。途中、新資格（AIF-C01、MLA-C01）が追加され、計画変更もありましたが、それもまた良い経験に！

| **資格名**                                 | **試験日**        |
|------------------------------------------|-------------------|
| AWS Certified Solutions Architect - Professional (SAP-C02) | 2023/05/09        |
| AWS Certified Developer - Associate (DVA-C02)             | 2024/03/25        |
| AWS Certified Security - Specialty (SCS-C02)             | 2024/04/15        |
| AWS Certified SysOps Administrator - Associate (SOA-C02)  | 2024/05/03        |
| AWS Certified Machine Learning - Specialty (MLS-C01)      | 2024/06/10        |
| AWS Certified DevOps Engineer - Professional (DOP-C02)    | 2024/07/22        |
| AWS Certified Advanced Networking - Specialty (ANS-C01)   | 2024/08/09        |
| AWS Certified Data Engineer - Associate (DEA-C01)         | 2024/08/17        |
| AWS Certified Solutions Architect - Associate (SAA-C03)   | 2024/09/14        |
| AWS Certified Cloud Practitioner (CLF-C02)                | 2024/09/17        |
| AWS Certified AI Practitioner (AIF-C01)                   | 2024/10/27        |
| AWS Certified Machine Learning Engineer - Associate (MLA-C01) | 2024/11/25        |

---

## 全冠（＝ラスベガス）への挑戦

### 1. **ラスベガス行きをモチベーションに！**

AWS資格全制覇を達成することが、次のラスベガス行きに直結していると信じて取り組みました。re:Invent2024で、全冠を胸に、自信を持ってAWSコミュニティの一員として参加することを最大のモチベーションとしていました。

- **資格取得 = 一つ一つ目標をクリアしていく**：各資格を取得することで、次の資格に向けたステップアップが明確になり、毎日少しずつ前進していくことが実感できました。  
- **スキルが増える = 実務でも役立つ知識の蓄積**：学んだことがすぐに実務で活用できるようになり、自分の成長を実感しながら進むことができました。  
- **ゴール = ラスベガスでの達成感**：全資格を取得し、ラスベガスでAWSの最新技術に触れることを心の中で繰り返し思い描き、進み続けました。

---

### 2. **試験予約で自分を追い込む**

試験日を決めてから学習を進めることで、追い込む感覚を持ち続けました。ラスベガス行きがあるからこそ、試験の日程を決めて自分をその日に合わせて調整したり、毎日少しでも試験内容に触れることを必ず実行しました。

- **毎日少しでも取り組む**：忙しい日々の中でも、試験に向けて毎日少しずつ進むことを心がけました。  
- **試験予約で計画的に進む**：試験日を決めることで、目標を明確にし、自分をその日に合わせることで集中力が高まりました。

---

### 3. **新資格の追加も楽しむ！**

2024年後半、突然新資格（AIF-C01、MLA-C01）の発表があり、計画変更を余儀なくされましたが、それもラスベガスへのサプライズイベントと捉え、楽しむことにしました。

#### 実際にやったこと
- **計画の柔軟な変更**：新資格のために、既に予定していた学習を調整し、効率的に新しい資格対策を行いました。  
- **過去の知識を活用**：特にMachine Learning関連資格の勉強が大いに役立ちました！  
- **短期集中の効率重視**：重要ポイントを絞り込んで、集中して学習を進めました。

最後の数週間はかなりギリギリでしたが、無事に全資格を取得。思いがけないサプライズも含めて、全冠達成の旅が一層素晴らしいものとなりました。

---

## ラスベガスへの旅が待っている！

全資格を制覇し、**re:Invent 2024**に向けてラスベガス行きがいよいよ近づいてきました！  
達成感を全身で感じつつ、AWS愛好者たちとの交流や次なる挑戦が待っていると思うと、ワクワクが止まりません。この1年間の挑戦を通じて、多くを学び、さらに次のステップを目指しています。

---

## 最後に

この記事を読んで、「自分もラスベガスを目指してAWS資格に挑戦したい！」と思っているあなた、ぜひその一歩を踏み出してみてください。  
AWS資格は、ただの試験ではなく、仕事に活かせるスキルを身につけ、挑戦し続けることができる素晴らしい道です。

**目指す場所があるからこそ、頑張れる**。あなたもぜひ、自分だけのAWS学習の旅を始めてみませんか？
ゴール指向評価型言語 idol 入門

idol言語は私が開発した自作言語です。Iconという昔あった言語とその特徴的な仕組みであるゴール指向評価のアイデアに興味を持って、自分でもさっそく実装してみました。

https://github.com/KajizukaTaichi/idol

# そもそもゴール指向評価とは？
Wikipediaの解説が分かりやすかったので引用します。
> Iconの中心的な特徴の1つは制御構造を真理値によるものから、成功か失敗によるものへと変更したことである。このモデルでは、
> ```
> if a < b
> ```
> のような単純な比較は多くの言語のように「もし式全体が真と評価されるならば」 という意味ではなく、「もし処理全体が成功ならば」 というような意味である。この場合は比較が成り立つなら、`<`演算子は成功する。よってIconとその他の言語で実行結果は同じとなる。この方式がより興味深いのは、
> ```
> if a < b < c
> ```
> のような場合である。`<`演算子は、比較が成り立つときは成功であると同時に、二番目の引数を値として返す。したがって、`a < b`の部分を評価して成功すれば、値として`b`を返すので、つづいて`b < c`を評価することになる。当然、評価の時に一度でも失敗すれば、全体として失敗である。 このような比較は、ほとんどの言語ではこのまま記述することができないが、Iconでは可能である。

出典：https://ja.wikipedia.org/wiki/Icon#ゴール指向評価

なるほど、面白いなー（感心）

# idol言語

私のidol言語でもこのように書けます。
```idol:idol
let age = 7;
if (6 <= age <= 12) "小学生"
```


このゴール指向評価の仕組みを逆説的に言えば、普通の`if`文でRustにおける`if let`のようなエラー処理が出来るって事です。

```idol:idol
func { inc n } (n + 1);
if { inc 5 } it else "fault";
if { ink 5 } it else "fault";
```
このコードの場合、2行目は`inc`関数が定義されているので`6`が返されますが、3行目の`ink`は定義されてないので`"fault"`が返ります。

# サンプルコード
お約束のFizzBuzz問題を解くプログラムです。
```idol:idol
func ( fizzbuzz n ) {
    if (n % 15 == 0) "FizzBuzz"
    else {
        if (n % 3 == 0) "Fizz"
        else {
            if (n % 5 == 0) "Buzz"
            else { fault }
        }
    }
};

let i = 1;
while (1 <= i <= 100) {
    print {
        if { fizzbuzz i } it
        else { cast i to text }
    } + new-line;
    let i = i + 1
}
```

# まとめ
ゴール指向評価は個人的に好きで、もっと広く使われて然るべきと思います。
他の言語でもゴール指向評価を採用してるのがあればコメントして教えて頂けると嬉しいです。
idol言語はまだまだ開発途中なのでこれからも機能を追加していくつもりです。

ありがとうございました！
LeetCodeを1日1題解いてみる (day30)

30日目に取り組んだ問題はこちら！
今日はhardに取り組みます！

# 42. Trapping Rain Water

https://leetcode.com/problems/trapping-rain-water/description

## 問題文
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining.

## 僕の回答(失敗作)
```py
class Solution:
    def trap(self, height: List[int]) -> int:
        max_step = max(height)
        list_size = height
        result = 0
        for step in range(1, max_step+1):
            status = -1
            for val in height:
                if val >= step:
                    if status <= 0:
                        # 開始の壁を見つけた
                        status = 0
                    else:
                        # 終わりの壁を見つけた
                        result += status
                        status = 0
                else:
                    if status >= 0:
                        status += 1
        return result
```
処理はうまくいったが、非効率でタイムアウトになってしまった。

## 効率の良い回答例

```py
class Solution:
    def trap(self, height: List[int]) -> int:
        if not height:
            return None

        n = len(height)
        left = 0
        right = n - 1
        left_max, right_max = 0, 0
        water_trapped = 0
        
        while left < right:
            if height[left] <= height[right]:
                if height[left] >= left_max:
                    left_max = height[left]
                else:
                    water_trapped += left_max - height[left]
                left += 1
            else:
                if height[right] >= right_max:
                    right_max = height[right]
                else:
                    water_trapped += right_max - height[right]
                right -= 1

        return water_trapped
```

## コメント
正しい出力は出るが非効率なアルゴリズムになってしまった。hardは自分には無理だと思っていたが、答えを読むと理解はできたので自信がついた。

## 次の問題はこちら!
https://qiita.com/h_y_s_d/items/d11c4e5383e38e553cb7
Ignite の新規機能紹介：Spotify 対応やモーダルの活用

この記事は、Swift Advent Calendar 2024 の2日目の記事になります。

# Ignite とは？
Ignite は、Swift製の静的Webサイトジェネレータです。
try Swift 2024 にて、PaulHudson 氏によって作成されました。

このツールは、ResultBuilder によって、HTML、CSS、JavaScriptの記述を SwiftUI ライクで書けるようにしたものです。

3月に try Swift が開催され、その後も Ignite は活発に PullRequest をマージしていきました。

今回はその中でも、特に大きく変化した新機能、「Spofify対応」と「モーダル」をピックアップして紹介します。

# Spotify の対応

Spotify や YouTube は HTML などに直接リンクカードを貼れるように、できています。

![スクリーンショット 2024-11-24 12.20.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707293/f2460147-6948-4fa0-634e-f015f0f555e9.png)

Ignite でも同様のことができ、サイトに好きなアーティストの曲やアルバムを載せておくことができます。

`Embed` 構造体に、ID, タイトル、スタイルを入力するだけで完成します。

```swift
Embed(spotifyID: "0Gp8MWnUzS5V2lvTr25c2A", title: "星街すいせい", type: .track)
```

![GdHZN2YaUAAxH0A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707293/f445b7b2-22e8-dbc9-0e0c-cbc822aefdfe.png)

また、Spotify 意外にも Vimeo や YouTube も対応することができます。

https://github.com/twostraws/Ignite/pull/29

# モーダル
HTMLでいう `dialog` タグに似たモーダルを提供しています。
しかし、HTML だけでなく、JavaScript のようなスムーズな動きも実現できるのがポイントです。これにより、ユーザーにとって直感的で快適なインタラクションを提供できます。

https://developer.mozilla.org/ja/docs/Web/HTML/Element/dialog

以下のコードで追加することが可能です。

```swift: Modal
Button("Tap Me") {
    ShowModal(id: "myModalId")
}

Modal(id: "myModalId") {
    "Hello, World!"
}
.size(.xLarge)
```

![Ignite-Modal.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707293/57781c1a-553d-dce0-1901-4aa05542d0b2.gif)

モーダルはサイズの変更か可能です。`.size(.large)` など、モーダルサイズを自由にカスタマイズすることができます。

https://github.com/twostraws/Ignite/pull/79

# まとめ
Ignite は、Swift エンジニア向けの Web フレームワークです。
今回紹介したのは、ほんの一例にすぎず、数多くの変更が日々行われています。
ぜひ、自分のWebサイトやブログ作成に Ignite を検討してみて下さい。
ノーコードツールとしてのChatGPT3.5と4o　～spring bootで簡単なアプリに機能追加してもらった　その2～

2024/11/20～11/22の作業メモ

# ChatGPTで簡単なクイズアプリに機能追加してみた。

## 動作イメージ

![20241128_quizapp_02.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3562068/253e4753-27fc-7fce-5681-36d88e040da8.gif)


## 目的
- 自習用のクイズアプリでプログラミングコード関係のクイズを実装したい。
- 無料でChatGPTの4o使えるということで、活用して何か動くものを作りたい。

## 状況
- 前回択複機能追加などしたけど、直ぐに複数行のクイズとか解説が必要になった。
- プログラミングコードを良い感じの見栄えにしたくなった。

https://qiita.com/kubo4ka/items/769923b14023df18489f

↓改善その３

https://qiita.com/kubo4ka/items/20933bc8d6f482f4035c

## 制約
- コードは自分では書かない。提案されたものでDB含めて構築していく。
- 今回の対応は２点。
  - クイズや解説の改行表現機能追加
  - プログラミングコード部分の見栄え機能追加


- ソース

https://github.com/kubo-4ka/quizapp/tree/master

- デモ

https://quizapp-xzmf.onrender.com

## 今回のスムーズで感動した点
- 色々ハイライトのjs提案もしてくれたが、簡易な実装を要望したら、preタグ、codeタグを直接DB登録してしまう対応としてくれた。
- LF変換だけは動的な変換を提案してもらって、手法として動作確認のつもりでそのまま残しておいた。

やっぱりさっと大体動くコードを提案してくれるので、勉強や個人的に利用するアプリであればとても生産性が上がると思う。

以上
【おまけ】Renderに料金に関してお問い合わせした件。番外編

# はじめに
前回？Renderに料金発生の仕組みについてお問い合わせした際、3回目のお問い合わせで「**Contact support**」がうまく利用できずわたわたしてしまったので、その時のお話とこういうコミュニティもあるよ。という事をお伝えしたく。記事にまとめておきたいと思います。
👇前回記事
https://qiita.com/wa-chan222/items/92e010e017891bca46f2


## どういう状況？
前回はフッターにある「**Contact support**」を押すことでチャット形式でお問い合わせが可能でしたがチャット形式ではなくなりました（突然）
人によって異なると思いますが、私の場合Outlookが自動で立ち上がりメールが起動。

Outlookは普段使用していないので「To:」欄に自動表示された問い合わせ先のメールアドレスだけコピーしてYahooメールでメールを作成して送信しました。


## コミュニティでも助けを求めてみる
上記のように普段自分で使用しているメール機能でお問い合わせする前に**Render Community**というものも試してみました。

👇フッター内にある「Community」というものです
[![Image from Gyazo](https://i.gyazo.com/143ff546e8ce9fe8fbf2c1b5b7822e9f.png)](https://gyazo.com/143ff546e8ce9fe8fbf2c1b5b7822e9f)

👇こちらの画面に遷移され**Renderとは別にRender Communityでも新規登録を行います（Git hub連携で簡単ログイン可能です）**
「+New Topic」から困っている内容等入力して「+Create Topic」を押せば完了‼:ok_hand:
[![Image from Gyazo](https://i.gyazo.com/13b23fa5c422d2a577d16748be28a9c0.png)](https://gyazo.com/13b23fa5c422d2a577d16748be28a9c0)


それでもって、コミュニティ機能を使用して質問した内容は翌日には親切な方が回答してくれていました。世界がつながっている・・・。
👇自分のアカウントをクリックすると一番上に矢印マークがあります。これが「返信きてるよ」の合図のようなものです。
[![Image from Gyazo](https://i.gyazo.com/5801bc35449277b34592ef0773d79664.png)](https://i.gyazo.com/5801bc35449277b34592ef0773d79664)

回答してくれたひとの内容を確認し解決したら「Solution」ボタンを押していいね💛マークも押せば完了！！

#### ついでに
ついでに、初めてこちらのコミュニティを利用すると以下のように一時的に投稿できなくなります。
解読してみるにおそらくRender Community側でアカウントの確認を行っているから？
一日ほどでこの問題？は解決しました。
[![Image from Gyazo](https://i.gyazo.com/9675074a6a80ef3ee7f89d13d78ddcc4.png)](https://gyazo.com/9675074a6a80ef3ee7f89d13d78ddcc4)


## 最後にまとめ
分からないことはどんどんきいてみるもの、と思っています。Render Communityを知れてよかったです。すごいコミュニティが活発。（Koyeb Communityよりも活発？）
問い合わせがなぜかチャット形式でなくなったのは焦りましたが、他方法でもわからないことを知れる場所があることはうれしい。
今回の記事が何か参考になれば幸いです。
【Ansible】 handler で複数の処理を実行する

# handler で複数のタスクを実行したい

Ansible Playbook の handler で複数のタスクを実行したいことがあります。
そういうときは、 その handler で実行したいタスクの YAML を tasks/ 配下に置きます。

具体的な例として、 AWS の CloudWatch Agent を停止して設定ファイルを読み込み、再度起動するまでの複数タスクを handler として設定します。

# handler で実行したい複数タスクのファイル

まずは、CloudWatch Agent 再起動処理のタスクの YAML ファイルを作成します。

```yaml:roles/foobar/tasks/restart_cloudwatch_agent.yml
---
# CloudWatch Agent の停止
- name: stop cloudwatch agent
  service: name=amazon-cloudwatch-agent state=stopped

# 設定ファイルの再読み込み
- name: reload config
  shell: /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
  changed_when: false

# CloudWatch Agent の起動
- name: start cloudwatch agent
  service: name=amazon-cloudwatch-agent state=started
```

このファイルを tasks ディレクトリの下に置きます。
名前を restart_cloudwatch_agent.yml としています。

# handler として設定

上記で作成したタスクファイルを handler として定義します。
handlers/main.yml の中で include_tasks を使って先ほど作ったファイルを呼び出します。

```yaml:roles/foobar/handlers/main.yml
---
- name: cloudwatch restart
  include_tasks: restart_cloudwatch_agent.yml
```

# メインのタスクで notify として呼び出し

こうやって定義した handler をメインのタスクから notify で呼び出します。

以下は、設定ファイルを変更したときに CloudWatch Agent を再起動する例です。

```yaml:roles/foobar/tasks/main.yml の一部
- name: cloudwatch-agent configuration
  replace:
    dest: /opt/aws/amazon-cloudwatch-agent/bin/config.json
    regexp: 'ウンタラカンタラ'
    replace: 'うんたらかんたら'
  notify:
    - cloudwatch restart
```

handler で複数タスクを実行したいときは、こんな感じで設定します。
業務効率化について

今から２年目の私が業務効率について話していきます。

<h1>業務効率について思ったこと</h1>
<p>仕事初めて1年から２年目に変わった時、案件先で認められてタスクを１年目より多く振ってくれるようになりました。
しかし、いきなりタスクが増えて手が回らないようになる時が２年目の最初ありました。
そんな時に私は、何とか業務を期限までに終わらせるように工夫して行ってきました。
その方法を下記に記載していきます。</p>

<h2>私が行った業務効率化①</h2>
業務効率化一つ目として、業務終了間際に今日一日の作業をまとめて、作業完了したところと次の日やらないといけないところをまとめるということです。
<br>私は、タスクの管理などの要領がそこまでよくないので、今日のタスクはここまで終わった、次の日はこのタスクと伸ばしていたこのタスクを終わらせるなど、ある程度の明日の予定をMicrosoftWordなどにまとめることで、タスク忘れなどを防止しつつ、整理してタスクを行えるので、効率を上げることができます。
<br>また朝会などで、優先的なタスクが出てきた場合、今残っているタスクの優先度などもわかるため、優先するタスクをどうするかを簡単に聞くことができます。

<h2>私が行った業務効率化②</h2>
業務効率化二つ目として、Excelを利用するときできるだけ関数を使用するです。
１年目の自分はマクロや関数をあんまり使わずに目検で行ったり、手動で作成しているときがありました。
しかし、それだと時間がかかりすぎるのと、目検だとどうしても、誤りを見つけられないときがあります。
なので、ほとんどできる作業は関数を使ったり、マクロを使うようにして作業を行うと、とても効率が上がったのと同時に、数字の誤り、記載ミスなどをほとんど拾うことができるようになりました。
<h3>Excelなどは大学や家でも学べることなので、ぜひ来年から働く人は関数の勉強することを強くお勧めします！！

<h2>私が行った業務効率化③</h2>
最後に行った業務効率化として、わからないことはすぐ上司に聞いたり周りの人に聞いたりすることがとても重要でした。
１年目のころはわからないことを聞くときに、こんなことも亜分からないのかと思われるのが嫌で、一人でずっと考える時間が多かったです。
結局わからないことが一人で分かるようになるのは稀で、それも結構時間がかかります。
なので、分からないことは上司に聞いたほうが業務効率的にも絶対に良いです！！
<br><h3>しかし、どこがわからないのか考えずに上司に聞いても、ちゃんとした答えが返ってくるかはわかりません。
ちゃんとどこがわからないのかなどはしっかり理解してから、上司に聞くことが、ちゃんとした答えが返ってくることや自分の成長にもつながってきます！


<h1>まとめ</h1>
皆さんは業務効率をあげるために、自分が工夫して行っている方法はありますか？
<br>業務効率化について、私が上で言ってきたこと以外にもたくさんあると思います。
<br>私のやり方は合わない人もいるかもしれません。
<br>それでも効率化に悩んでいる人たちの手助けになればいいなと思います。
<br>是非皆さんも自分に合った業務効率化を探していきましょう！！！

以上、ありがとうございました。
VoIPとSIPを通じてRustを勉強する：u-law/a-lawとは

# 音声パケットについて
VoIPなどでデータを送信するときにRTPパケットというものを使用します。
一方wavファイルだと13/14/16ビットのためファイルサイズが大きいことから圧縮して送信します。
G.711で策定されているu-law/a-lawが広く用いられています。
## u-law
リニアPCMの音声を8ビットにしたものです。
北米、日本で使われています。
## A-law
リニアPCMの音声を8ビットにしたものです。
その他の国で使われています。
VoIPとSIPを通じてRustを勉強する：RTPとは

# RTPとは
音声やをリアルタイムに送信するためのデータ送信プロトコルです。
遅延による音質低下の懸念などがありUDPで転送されるケースが多いです

## パケットヘッダー

~~~
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |V=2|P|X|  CC   |M|     PT      |       sequence number         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           timestamp                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           synchronization source (SSRC) identifier            |
   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
   |            contributing source (CSRC) identifiers             |
   |                             ....                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~~~
バージョン：バージョンのこと、現在だとV=2が一般的ですが、1,0も過去にありました。RFC3550だと2固定です。
パディング：パディングバイトがあるかどうか。
拡張：固定ヘッダのあとに拡張データがつきます。CSRCのあとに付きます。
CSRCカウント：固定ヘッダのあとにつく識別子の数です。
マーカー：重要なイベントを示すビットです。
ペイロードタイプ：メディアタイプの識別に使用します。
シーケンス番号：パケットが送信されるたびに１ずつ増えます。
タイムスタンプ：ペイロードデータの先頭が散布りんごされた時間を指します。メディアの再生に使用されます。
SSRC：同期ソースです。
パケットの最初の12バイトは必須です。

# 拡張ヘッダ
~~~
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      defined by profile       |           length              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        header extension                       |
   |                             ....                              |
~~~


# 引用元
[RFC 3550](https://tex2e.github.io/rfc-translater/html/rfc3550.html#5--RTP-Data-Transfer-Protocol)
テキストボックス系のマクロ

テキストボックス系のマクロ
```
'//////////////////////////////////////////////////////////////////////////
'// ■Index■
'// Module4: TextBox
'//////////////////////////////////////////////////////////////////////////

'//////////////////////////////////////////////////////////////////////////
'// ■Index■
'   GetTextBoxText
'   ReplaceTextboxText
'   CreateTextboxFromCellValue
'   SearchTextInTextBoxes
'//////////////////////////////////////////////////////////////////////////

' テキストボックスの値をコピー（未完成）
' GetTextBoxText Macro
' Keyboard Shortcut:-
Sub GetTextBoxText()
'    ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, Selection.Cells(1, 1).Left, Selection.Cells(1, 1).Top, 72, _
'        72).Select
'    Range("I13").Select
'    ActiveCell.FormulaR1C1 = "aaa"
'    ActiveSheet.Shapes.Range(Array("TextBox 2")).Select
'    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = ""
'    Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 3).ParagraphFormat. _
'        FirstLineIndent = 0
'    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 3).Font
'        .NameComplexScript = "+mn-cs"
'        .NameFarEast = "+mn-ea"
'        .Fill.Visible = msoTrue
'        .Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1
'        .Fill.ForeColor.TintAndShade = 0
'        .Fill.ForeColor.Brightness = 0
'        .Fill.Transparency = 0
'        .Fill.Solid
'        .Size = 11
'        .Name = "+mn-lt"
'    End With
'
    Dim intShape As Integer
    Dim s As String
    
    For intShape = 1 To ActiveSheet.Shapes.Count
        If ActiveSheet.Shapes(intShape).Type = msoTextBox Then
            s = s & ActiveSheet.Shapes(intShape).TextFrame.Characters.Text
        End If
    Next
    
    
'    .ActiveCell.Value = s
End Sub

'
' CreateTextboxFromCellValue Macro
' Keyboard Shortcut:-
Sub CreateTextboxFromCellValue()
    Dim intRow As Integer
    Dim s As String
    
    For intRow = 1 To Selection.Rows.Count
        s = Selection.Cells(intRow, 1).Value
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
            Selection.Cells(intRow, 1).Left + Selection.Cells(intRow, 1).Width, Selection.Cells(intRow, 1).Top, 200, 72) _
            .TextFrame.Characters.Text = s
'            Selection.Cells(1, intRow).Left + Selection.Cells(1, intRow).Width, Selection.Cells(0, intRow).Top, 200, 72) _
'            .TextFrame.Characters.Text = s
    Next
End Sub



'
' SearchTextInTextBoxes Macro
' Keyboard Shortcut: Ctrl+Shift+T
Sub SearchTextInTextBoxes()
    frmSearchText.Show
End Sub

```
X広告でクリック単価2000円を達成した件

## Tldr

![スクリーンショット 2024-11-28 23.09.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92647/5b7704c0-dc41-1294-f4b5-1bdc5730c39c.png)

#### クリック単価 2000円！！

## 事の経緯

個人開発をして、検索エンジンを作っているのですが、

https://coffeecup.jp/lp

https://coffeecup.jp/lp2

この検索エンジンの広告を始めようと、今週の月曜日から広告を出稿しました。

はじめの２日はそこそこ順調で、

![スクリーンショット 2024-11-28 23.45.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92647/f6281028-01aa-7f64-e3ef-3c74de0dd8f6.png)

通常通り、180円のクリック単価で閲覧数を獲得できていました（ログを見る限りもっと見られていそうでしたが）が、、、

雲行きが怪しくなったのは、３・４日目。
新しい広告を出して様子を見ようとしていたら、クリック単価は、

![スクリーンショット 2024-11-28 23.47.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92647/8f93a4f2-e913-37e8-f563-c8f097ac372a.png)

424円...
ちょい高い。

そして、本日広告の内容を変えたら、

![スクリーンショット 2024-11-28 23.48.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92647/ca17db45-e613-7291-14fd-77fb82d31255.png)

#### クリック単価 2000円！5クリックで10000円！

庶民にはちょっと高すぎる・・・

ウェブサイトの質の問題なんでしょうかね。。。
それとも広告はコロコロ変えるものではないんでしょうか？
何かご存知の方がいらっしゃったら教えてください。
VoIPとSIPを通じてRustを勉強する

# はじめに
今年のお仕事の棚卸しとしてVoIPとSIPの記事を書いていきたいと思います。
あと現在Rustで開発しているのでRustの勉強もしていこうと考えています。

# VoIP
VoIPとは、Voice over Internet Protocolの略。
インターネット・プロトコルを使用して音声を送信したり、受信したりする伝送技術を指しています。
音声パケットで音声を伝送します。

# IP電話
IP電話はサービスプロバイダーが提供するVoIP技術を使用した音声通信サービス、製品を指します。
050の電話番号の電話ですね。
050の割当を受けるためにはある一定以上の音声品質を安定して保つ必要があるため、自社で音質を管理、制御できるように専用のネットワークを持っています。
IP電話だけでなく既存の固定電話との発着信も可能です。

# インターネット電話
IP電話と同じようなものですが、ISPなどで管理されていないインターネットを利用して音声パケットを伝送します。

# 今後のアドベントカレンダーでは
Rustに興味があることと現在Rustを勉強しているので技術の説明、実装を行っていきます。
電話とかできるといいけど、さすがに厳しそうですねそこまでは。

# 終わりに
記事2日目にして疲れてきた。。。
ChatGPTの力を引き出そう：開発の新しいパートナ

はじめに

テクノロジーの進化が早い現代、効率性と創造性は成功の鍵です。そこで登場するのがChatGPT。OpenAIが提供する会話型AIで、開発者やデータサイエンティスト、クリエイターが日々の課題を解決し、革新的なアイデアを生み出すお手伝いをします。

この記事では、ChatGPTがどのようにしてあなたのワークフローにおける欠かせないツールとなり、時間を節約し、創造性を引き出すサポートをするのかをご紹介します。


ChatGPTとは？

ChatGPTは、OpenAIの高度な自然言語処理技術を活用した大規模言語モデルです。人間のような自然な文章を理解し、生成する能力を持ち、以下のような場面で役立ちます：

- コードのデバッグや最適化
- 定型コードの生成
- 技術ドキュメントの作成
- プロジェクトアイデアのブレインストーミング
- 技術的な質問への回答

経験豊富なエンジニアでも、初心者でも、ChatGPTはあなたのニーズに応じたサポートを提供します。

開発者にとっての主要な活用例**

1. コードのデバッグ**
デバッグは骨の折れる作業です。問題のあるコードと課題をChatGPTに共有するだけで、エラーを分析し、最適な解決策を提案してくれます。たとえば：

```python
# 入力：
def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n - 1)
 問題: 大きなnでスタックオーバーフローが発生する
ChatGPTによる解決策：
def factorial(n):
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

2. 定型コードの生成
APIエンドポイントやテストケースなど、同じようなコードを書くのに飽きていませんか？ChatGPTを使えば、Python、JavaScript、Goなど、さまざまな言語のテンプレートを生成できます。

3. 技術ドキュメントの作成
コードを書くことと同じくらい重要なのが、ドキュメントの作成です。ChatGPTは、READMEや関数の説明、チュートリアルなど、明確で簡潔なドキュメントを作成するのに役立ちます。

ChatGPTを開発ワークフローに活用する方法

1. IDEプラグインの利用
ChatGPT対応のプラグイン（VS Code用など）を使えば、お気に入りのIDE内で直接その機能を利用できます。インラインでコードの提案を受けたり、すばやくバグ修正を行ったり、コーディングの相棒として活躍します。

2. APIでの自動化
OpenAIのAPIを使えば、ChatGPTを自分のツールやワークフローに統合できます。カスタマーサポートの自動化、ウェブサイトの動的コンテンツ生成、サービス用のチャットボット開発などが可能です。

bash
 例: Python APIの利用
import openai

openai.api_key = "your-api-key"

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Pythonで文字列を逆にする関数を書いてください"}]
)

print(response['choices'][0]['message']['content'])

始めるには

ChatGPTを効果的に使うためのステップ：
1. [OpenAI](https://openai.com)でアカウントを作成
2. 無料プランで試してみるか、有料版を購読して高度な機能を利用
3. APIを使ってプロジェクトに統合する、またはスタンドアロンのアシスタントとして活用

まとめ

ChatGPTは単なるチャットボットではありません。生産性を飛躍的に向上させるAIパートナーです。コードのデバッグ、ドキュメント作成、新しいアイデアのブレインストーミングなど、ChatGPTはあなたのサポートを全力で行います。

すでにChatGPTをプロジェクトで活用していますか？コメントでその経験を共有し、他の人々がこの強力なツールを活用するきっかけを作りましょう。

それでは、良いコーディングを！ 🚀