OmniAICreator/Qiita-1.07M huggingface dataset:
Go言語とは？Googleが生み出したシンプル＆高速な言語を自分なりにまとめてみた

![golang.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3848466/1e5cd9a5-f8fc-e4a9-b939-8ce0eebecd88.png)



# はじめに
とある企業様のGoのインターンに行きたい！ということでGo初学者ではありますが自分なりにまとめてみました！
※認識違いがあればコメントなど頂けると嬉しいです！

# Goを使用している代表的なサービスを知ることでGoを身近に感じることができる！
以下はGo言語を使用しているサービスの一部です

1.AWA
2.YouTube
3.メルカリ
4.ぐるなび
5.Gunosy
などなど

使ったことのあるサービスばかり！
というわけで
# Go言語とは
Go言語（Golang）は、2009年(リリースは2012年)にGoogle社が開発したプログラミング言語です。その特徴はシンプルさ、スピード、そして並行処理の強力さにあります

ちなみにプログラミング言語の人気指標https://www.tiobe.com/tiobe-index/  (Tiobe-Index)でトップ10にも選ばれるほど人気な言語のひとつです！

この記事では、Go言語の概要や歴史的背景、設計者たちが目指した「Goらしさ」そしてメリット、デメリットなどについて解説します！
また、Go言語がどのようにして注目を集めているのかもご紹介します！

# Go言語の設計者たち
Go言語は以下の3人の開発者によって設計されました：
・Robert Griesemer
・Rob Pike
・Ken Thompson

特に**Ken Thompson氏**は**UNIX**と**C言語**の生みの親とも言える存在！
Go言語は、こうした長年の経験を持つエンジニアたちが「現代に適したプログラミング言語」を目指して作り上げたものです

# Go言語の誕生と目的（歴史的背景）
Go言語は、Google内で「プログラミングの環境を改善する」ことを目的として開発されたプログラミング言語です

近年、技術の進歩に伴ってWebアプリやサービスが高度化するのに比例して「内部のコードの複雑化」、「システム開発の生産効率の低下」が問題となり、その解決手段として**もっと手軽に効率よくコーディングができる言語**としてシンプルさを追求したGo言語が開発されました

そう！　シンプルさを追求＝理解しやすい＝**初学者におすすめの言語**！というメリットもあります！

# Go言語のメリット
<details><summary>メリット一覧</summary>

**1. シンプルな文法**
Go言語は設計思想として「シンプルさ」を重視しているため、クラスや継承といった複雑な構文を排除し、直感的で読みやすいコードを書くことができる

**2.効率的なメモリ管理**
ガベージコレクション（GC）[^1]が標準で搭載されており、不要になったメモリを自動的に解放してくれる

**3.高速なコンパイルと実行**
Goは静的型付け言語[^2]でありながら、非常に高速なコンパイル速度を持つ

**4.並行処理が簡単に実装可能**
Go独自の軽量スレッドである「goroutine（ゴルーチン）[^3]」と「channel（チャネル）[^4]」を使用して、並行処理を簡単に実現できる

**5.DockerやKubernetesとの親和性**
Goは、クラウドネイティブなツールであるDockerやKubernetesの実装にも使用されています。これらの技術と組み合わせた開発に最適

**6.学習コストが低い**
シンプルな構文のため、初心者に扱いやすい言語

</details>

# Go言語のデメリット
<details><summary>デメリット一覧</summary>

**1.柔軟性の低さ**
Goはシンプルさを重視しているため、柔軟な機能が制限

**2.ライブラリやフレームワークが他言語に劣る**
PythonやJavaScriptと比べると、ライブラリやフレームワークが劣る

**3.動的な型付けがない**
Goは静的型付けの言語であるため、動的型付けの利便性を活用したい場合には不向き

</details>

# ChatGPT o1-previewが考えるGoの将来性
GPTに投げてみました！

質問内容：**o1-previewが考えるGo言語の将来性について教えて**

o1-previewの回答

<details><summary>回答</summary>
Go言語（Golang）は、そのシンプルさ、高いパフォーマンス、そして優れた並行処理のサポートにより、近年着実に人気を高めています。クラウドサービス、マイクロサービスアーキテクチャ、システムプログラミングなど、多くの分野で広く利用されています。

将来性について言えば、Go言語は引き続き有望であると考えられます。主要な企業による採用が増えており、コミュニティも活発に成長しています。豊富な標準ライブラリと強力なツールチェーンにより、開発者は効率的に高品質なソフトウェアを構築できます。

技術のトレンドがスケーラビリティや効率性を重視する中、Go言語の特徴は業界のニーズと合致しています。そのため、今後もクラウドインフラストラクチャ、ネットワークプログラミング、バックエンド開発などの分野で重要な役割を果たし続けるでしょう。

</details>

Goは業界のニーズに合ってるらしい！！
[^1]:**ガベージコレクション（GC）**: 使わなくなったメモリを自動で片付けてくれるお掃除ロボットのような機能
[^2]:**静的型付け言語** : 変数の型がコンパイル時に決定されるプログラミング言語のこと。変数やデータの型が明確に指定されるため、型の安全性が高く、プログラムのミスを防ぐ助けになる。
[^3]:**goroutine（ゴルーチン）**: 同時に動かすことのできる軽いスレッドのようなもの
[^4]:**channel（チャネル）**: ゴルーチン同士がデータをやり取りするための道具
# 最後に
記事を見ていただきありがとうございました！
まったく0の知識からなのでまだまだ曖昧ですが、一つずつ消化できるように頑張ります！
認識違いがあればコメントいただくと嬉しいです！
Goを使えるエンジニアになりたい！

**つぶやき**
二郎系ラーメンというものにはまってしまった。。。
店名 : 歴史を刻め **←** おすすめです！
Pyinstallerで実行ファイルを生成したときだけ、Pillowライブラリがimportエラーになる現象

#### 環境
python 3.11.9
openpyxl 3.1.5
windows 11 pro

### 課題
ソースファイル内でimageファイルを取り扱うために
``` from openpyxl.drawing.image import Image```
<code> img = Image(imgFilePath) </code>
という使い方をしていた。

そのままVSC上から実行はできるのに、pipenvにて必要なモジュールを入れ、pyinstaller main.py -onefileで実行ファイルを作成し、exeファイルを使用すると以下のエラーが起こってしまった。

> ImportError: You must install Pillow to fetch image object

### 解決
実行ファイルを作成する際にコマンドを
> pyinstaller main.py -onefile -hidden_import="Pillow"

としたところ、問題なく実行できた。

** 事前にpipenv install Pilow をしていたかもしれない

openpyxlでimageを取り扱う際に、内部でPillowのライブラリを使用しているらしい。
Pillowは名称が変わりPILとされていることもあり、調査が一瞬滞った。
Pyinstallerはビルド時に自動でモジュールをソースから解析するらしいけれど、PillowはPyinstallerと互換性がなく、手動でimportする必要があるらしい。
その手動importを可能にするのがhidden_importオプションになっている。

### 参考
[python で Pillow（PIL）を扱う実行ファイルを作る際のエラーについて](https://qiita.com/bellvine/items/6da9f87de15849924025)

[How to manually add PIL module to pyinstaller exe?](https://stackoverflow.com/questions/64057842/how-to-manually-add-pil-module-to-pyinstaller-exe)

[Pyinstaller EXEの実行時にNo module named ...のエラーとなる場合の対処まとめ](https://ssrv.net/tech/python-pyinstaller-no-module/)
Gitでタブキー補完をできるようにする（git-completion）

git-completionを使って、ブランチ名の入力時にタブキー補完をできるようにします。
VSCodeのGUIを使っている場合はあまり使わないんですかね。

# 環境
```
cat /etc/redhat-release
> Red Hat Enterprise Linux release 9.5 (Plow)

git --version
> git version 2.43.5
```

# 手順
* git-completionの取得
```
curl -o ~/.git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
source ~/.git-completion.bash
```

* 設定
```
sudo vi ~/.bashrc

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

source ~/.bashrc
```
【ChatGPT】Eisenhower Matrixで、タスクの優先順位を明確に？するPromptを紹介します。


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

　今回は、Eisenhower Matrixで、タスクの優先順位を明確に？するPromptを紹介します。

:::note info
本記事は、ChatGPT（有料版）
で行なっております。画像は
ありません。　あしからず。
:::
　ChatGPT等の動作状況を知らせる
　　OpenAIのステータスページ。
　　　[OpenAIステータス](https://status.openai.com/)

***
　まずは、ニュース。

　パナソニックが
　　「AI松下幸之助」を
　　　開発しました。

　こちらが、そのニュース記事。
　　[「AI松下幸之助」爆誕　パナが開発](https://www.itmedia.co.jp/news/spv/2411/27/news227.html)

　こちらが、その動画です。
　　[「AI松下幸之助」動画](https://youtu.be/289eDs_2MCw?si=AeTFZuDSZypk7eBj)

　動画では、
　　テキストによる回答を
　　　松下幸之助の画像と声を使って
　　　　リップシンク動画で
　　　　　しゃべらせています。

　“一般公開しない”とのこと。
　　ちと残念😅
***
　さて、本題です。

　今回は、
　　Eisenhower Matrixで、
　　　タスクの優先順位を
　　　　明確に？するPromptを
　　　　　紹介します。

　Eisenhower Matrixとは？
>（Perplexity検索）
>アイゼンハワー・マトリクスは、タスクを「重要かつ緊急」「重要だが緊急ではない」「重要ではないが緊急」「重要でも緊急でもない」の4つに分類する手法です。この方法は、第34代アメリカ大統領ドワイト・D・アイゼンハワーの考え方に基づいており、タスクの優先順位を明確にするために使われます。このマトリクスを用いることで、効率的な時間管理とタスク管理が可能になります。

　Taiyoさんが
　　X-TwitterにPromptを
　　　ポストしてくださいました。
　　　　[Taiyoさんポスト](https://x.com/taiyo_ai_gakuse/status/1861730106710032808?t=VuHtOCNRYCYSTI2yPrqW2A&s=19)

```Text:Eisenhower MatrixでActionPlan作成Prompt
Eisenhower Matrixを使用してタスクの優先順位をつけ、各象限に対して詳細なアクションプランを作成してください。即時対応が必要な緊急かつ重要なタスク、委任または削減できるタスクを特定しましょう。：[ここにタスクを入力]
```

　このままでも
　　いいのですが、
　　　ひと手間掛けて、
　　　　可読性をよくします。

```Text:Eisenhower MatrixでActionPlan作成改善Prompt
1. Eisenhower Matrixを使用して、以下のタスクを優先順位付けしてください。

各象限（緊急かつ重要、重要だが緊急でない、緊急だが重要でない、緊急でも重要でもない）に分類してください。

2. 各象限に該当するタスクについて、以下のような具体的なアクションプランを作成してください。

緊急かつ重要なタスク: 即時対応の計画

重要だが緊急でないタスク: スケジュール化の計画

緊急だが重要でないタスク: 委任する計画

緊急でも重要でもないタスク: 削除または削減の計画

3. 以下がタスクのリストです：[ここにタスクを入力]
```

　どちらも
　　最後の[ここにタスクを入力]に
　　　タスクを入れます。

　引っ越し作業や
　　商品の販促の企画会議を
　　　やってみました。

　単純に、
　　四象限に分けるだけです。

　これだけでもいいのですが、
　　もうひと手間。
```Text:スケジュール調整依頼Prompt
どのような手順を踏むべきでしょうか？
スケジュール調整をお願いします。
```

　これを送信すると、
　　引っ越し作業では
　　　ひと月前からの
　　　　スケジュールを出してくれます。

　　企画会議では
　　　二週間前からの
　　　　スケジュールを出してくれます。

　もちろん、
　　この期間は、
　　　たまたま示されただけです。

　　指定すれば
　　　それに合わせて
　　　　スケジュール調整して
　　　　　くれるはずです。

　　また、
　　　スケジュールには
　　　　ほかの作業が
　　　　　含まれていませんので、
　　　　　　そこも考慮しないと
　　　　　　　ダメですね。

　　　そこは
　　　　人間次第ですかね。

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

　今回は、ここまで。
バージョナブルドキュメントによるドキュメント作成とバージョン管理

バージョナブルドキュメントによるドキュメント作成とバージョン管理

バージョナブルドキュメント(バージョン管理可能なドキュメント)とは、epubファイルとgitを組み合わせて使用することの総称として筆者が名付けました。
epubファイルの構成要素はHTML、CSS、JavaScriptのテキストファイルですのでgitによるバージョン管理が可能です。

epubファイルの作成、編集はSigilを想定しています。
https://sigil-ebook.com/
閲覧はCalibreを想定しています
https://calibre-ebook.com/ja

epubファイルはzip圧縮されているフォルダなので、epubファイルの.epub拡張子を.zipに変更し、各種展開アプリで展開することができます、そしてその展開されたフォルダをgitで管理します。

いままでExcel、Word、PowerPointでドキュメント作成していた人にはこれはうれしい情報でしょう。
Excel、Word、PowerPointではバージョン管理が難しいからです。
脱Excel、脱Word、脱PowerPointが実現できると思います。

筆者が作成したepubファイルの仕様書のサンプルとepubユーティリティをgithubに置いていますので確認してみてください。
このサンプルはデザイン部分をbootstrapで、ER図をmermaid.js(マーメイドjs)で作成しています。

epubの仕様書サンプル(ハンバーガー注文サイトのサンプル仕様書)
https://github.com/fieldflag/hamburger_order_site_db

epubのユーティリティ
https://github.com/fieldflag/epub_util

開発者サイト
http://egg-sandwich.com
どんな会議・イベントも盛り上がるファシリテーションのポイント

モデレータ
藤澤さしみ　さん

・MC(master of ceremony)：全体の進行役、時間、登壇者の発言タイミングなど
・モデレータ：調停役、観客・PDなどの関係における進行を調整
・ファシリテーター：促進役、トーク、それぞれの関係性について盛り上げ
・アクティブな状況であることを保つのがとても大事

・観客、しゃべり手、進行が一体感をもつ進行
ポイント
・観客が聞きたいことが聞けている
・しゃべり手が話したいことが話せている
・規格としての意図が反映されている

Tips
・冒頭：イベント案内で全体の趣旨を合わせる
自己紹介/テーマの説明など
・中盤：内容と期待値の認識を一致させる
・後半：イベント全体を一致させる
・関係者全員の満足につながる調整をする

・しゃべり手の本領を発揮させる進行
ポイント
・相手の気持ちが乗る言葉を早く入れる
・初動の笑いをいかに早く行うか

Tips
・「合ってるよ」という合図
・表情、チャットでも反応を出し続ける
・観客が聞きたいことと、しゃべり手の話したいことがあ一致している認識を持つ
　ーどんどんしゃべり手が乗ってきて、本領発揮できる
・しゃべり手に「気持ちよく」喋ってもらうとクオリティが上がる

・観客が前のめりでイベントに参加するには
観客の種類
・支持者：登壇者を応援したい、シリーズに参加したい
・批評家：仮説を確かめたい、認められたい
・初心者：新しい情報を得たい、自分に合うか確かめたい

・イベント前の事前準備と「用意しない」の美学
用意したものをそのまま話すと冷める
この場をどんな場にしたいかに合わせて場・時間を定義していく

どんな会議も怖くないファシリテーション術
Co-creations
もてけん　さん　

・組織と個人のゴールの重なりを増やし、個人も組織もハッピーな会社へ！
・会議が怖い
ー相手にどう思われてるんだろう
ー責められあたらどうしよう、傷つけちゃったらどうしよう
ーなんとか無難に乗り切ろうというガードが上がる

・ファシリテーションとは温度調整と茎作りにより、なんとかいい感じに持っていくこと
冷たい＞あっためる
ぬるい＞あつくする
まばら＞かき混ぜる
熱すぎ＞クールダウン

・空気づくり：場の感情、意識にフォーカス
初編の背景にある感情や意図
ポジティブもネガティブも両方扱う
現状維持の重力を越える

スクリーンショット 2022-05-19 18.55.11.png
スクリーンショット 2022-05-19 18.58.11.png

・一番大事なのは
不確定なことへの恐ろしさを許容する
必要な準備はあるが、完璧を求めない
不完全さをオープンに＞心理的安全性UP
　みんなで一緒に作る感じ

・チームビルディングは大事
合宿

まとめ

自分がいつもどこができていないのかがわかりました。
ファシリが全てを回すのではなく、ちゃんと MCやモデレータがいる会議の方が順調ということも初めて知りました。
各自で役割が違うということも初めて知りました！！
仕事上の会議になると全員揃うのは無理かもしれないですが、いい感じに良いとこ取りで柔軟に対応できるようになれたら嬉しいと思いました！
QAのキャリアパス・いろんなQAの形

こんにちはあるいはこんばんは
開発本部CTO室QA 1グループマネージャーのアリスです！
ご無沙汰しております！

最近勉強会もあまりせず、申し訳ありません:sob:

今回はテクコンでもお話しした、QAのキャリアについてお話ししてみようと思います！
指摘、質問、大歓迎です！

QAキャリアパス
これを作成した目的としては
キャリアパスがどんなものがあるのかすら知らない人が多い
経歴のある方たちは自分はただエンジニアになりたいという方が多かった
意外とマネジメント系で行きたいという人はいなかった
なので、そもそもどんな道があるのか皆さん知らない！と言うことに気づく
おまけに
既存の評価軸からQAに当てはまるように
既存の評価軸を活用しながらもちゃんとQAを知らない人がみてもわかるようにしたい！

と言う気持ちからでした！
私からするとQAをわからないでQAを評価するのは難しいと思ったからです！
もちろん1次はマネージャーさんなのでQAの方ですが、各部署によってはQAを全く知らないのに評価する必要があったりとかするので、その時に少しでも役に立てばと思いました！

それでは、本文です！

テスター　
作成済みのテストケースを遂行できる
Ad hocにてバグを発見できる

中堅テスター
テスターより知見があるので、質の良いバグを初期段階でたくさん見つけることができる
自分なりにバグを出すためのナレッジを持っている
QAの知識を持ちながら、QAになりたくなくてテスターを続けている場合が多い

テストリーダー　
場合によってはない現場が多い
QAが複数のPJを持っている場合、テスターを管理したり、コミュニケーションをとったりする
QAが忙しくて対応できない部分のフォローを担当

中堅テストリーダー
中堅テスターと同じくQAの知識を持ちながら、QAになりたくなくてテストリーダーで止まっている場合が多い

QA　
たくさんの種類がある
各種類によって求められるスキルも違ってくる
基本的にメジャーなのは「ソフトウェアQA」と「ゲームQA」
基本的にテストケース、テストノート、チェックリストなどの作成ができる
スケジューリング・ステークホルダーとのコミュニケーションなど、いろんな業務を同時にやる必要がある

QAリーダー　
一人でQAを最初から最後まで担当することができる
JSTQBのファウンデーションレベルの知識を持っている
チームの改善、複数PJの同時進行、メンバーのケアなど、QAだけではなくマネジメント的なお仕事もやる

QAエンジニア　QAアナリスト　QAスペシャリスト
より専門的な知識をもち、技術的に開発エンジニアと協力して、品質をあげることができる
開発さんのテストコードを組めたり、読めたり、作成をお手伝いできる
JSTQBのアドバンスレベルの知識を持っている
各種類による専門知識が異なるため、各自の専門知識を持っている
該当専門知識をアウトプットできる（理解している）

アナリストの場合：アナリストの資格をもつか相応する知識をもつ必要がある、
最近JSTQBのアドバンスレベルにアナリストが追加されたので、それ相応の知識を持つか資格をとる

QAマネージャー　QAコンサルタント
基本的にチーム全体のマネジメントの業務ができる
チームの改善や、方向性、ビジョン、振り返りなどで、アドバイスができる
メンバーのキャリアパスの相談ができる
メンバーの特性を把握している
より良い品質をより少ないコストで対応できるように対策ができる
メンバーがより楽できるようなツールを探したり、
楽しくお仕事できるような環境を作る

コンサルの場合：メンバーがいない代わりに開発さんとの連携・コミュニケーションができる
　

QA部部長（名前によっては室長、本部長など）
部を作るためには、ビジョンのことを一緒に考えられる人が４人必要！
（上とイコールではあるが）マネージャorマネージャーできる人が少なくとも4人必要
全く違う方向の未来を描く（ビジョン）マネージャーもぜひ一緒にして、
討論しながら、より良い方向性に向かっていければ最高。
マネージャーさんのフォロー、もっとビジネス的なものが増える？
会社のQAをもっと全社で有効に働けるようなシステムを構築（今一番やりたい）
低コスト高パフォーマンス！！！のための運営方針検討
適切なタイミングで、マネージャー陣と評価指標の見直し（時代が変わるとともにスキルなどもたくさん出てきたりするので）

CQO！
私がなります！（アリス）
俺はCQOになる！！！
まだ世の中にそんなにないものなので、（マイクロソフトのみ）
他のCISOさんとかCTOさんをみながら学んでいきたいと思います！！
（最初になるので、やりたい放題かも？！）

おまけ
別職種への転職・移動

私いの周りの人たちで出してるので、データとしては低めですが、明らかに同じ傾向だったので載せておきます！

コードで書く自動化エンジニア

開発エンジニア

企画（ディレクター）

PM

IT系じゃないところに転職
　- 結果的にQAに戻ってる感じ
　- IT系の移動の場合はそのまま続く率が高い

ここまでです！！

ぜひご活用してみてください！
QUEST ゆたかさ　ワークショップに参加してみた！

こんにちは、あるいはこんばんは！
開発本部CTO室QA1グループのマネージャのALICEです！

村瀬さんのおかげでQUESTセミナーに参加してきましたー！
３セッションでしたが、9AMから5：30PMまでのワークショップで疲れもありましたが、
異業種の方たちと交流でき、話すことができて、とても楽しかったです！

また機会があればぜひ参加したいと思います！
（オフ会も参加予定！！）

今回のセミナーのメインタイトルです！
ワクワク！
スクリーンショット 2023-09-14 13.54.33.png

４つあるタイトルの中私は「ゆたかさ」を選択して参加しました。
他のタイトルも参加できたら参加してみたいです・・！

第１セッション開始ー
ニックネーム：お主
スクリーンショット 2023-09-14 9.25.11.png

ウェルビーイングは主観的なもの
７、８以上だとウェルビーイングの実感が高い
スクリーンショット 2023-09-14 9.46.43.png
質疑応答のためのメモ
（ネットワークの不調で質疑応答できず。。。）
スクリーンショット 2023-09-14 10.13.10.png

ウェルビーイングで生きるということは。

スクリーンショット 2023-09-14 11.17.05.png

次世代に踏み出すということ
スクリーンショット 2023-09-14 11.15.11.png

このセッションでのパワーワード
健全な多重人格
いろんなところに居場所を作って闇堕ちしないようにする

第２セッション開始
ニックネーム：よだ

スクリーンショット 2023-09-14 11.25.38.png

障害があるアーティストさんを支援する
メインはアート
できないをできるにするのではなく、できるものにお金をつける

普通じゃないとこは、可能性である！

ゆたかさ＝自分自身の納得感
すなわち、モヤモヤがない状態

組織が大きくなればなるほど、「自分らしさ」が薄まっていく
規模感は大事だと思う
コミュニケーションは回数が重要

障害の書き方は「漢字」で書いている、気にしすぎなくて良いと思う

覚悟をすることは簡単だけど、覚悟を維持することがとても難しい

ゆたかな未来について
・チャレンジ失敗した人が、またチャレンジできるようになっていたら理想

ラストセッション開始
ニックネーム：れな

スクリーンショット 2023-09-14 13.52.25.png

主に環境周りでの話になるとのこと
今更だけど、刺激！なので載せる（れなさんも）
スクリーンショット 2023-09-14 13.54.33.png

自分がやりたいことと仕事を結びつける
リサイクルという運命の出会い
　・テラサイクル

1.高い技術力を生み出す
2.社会（生活者）と接点を強く持つ
3.未来の新しい文化を作る

私＞社会＞会社

本部長、社長の話に赤ペン入れて改善提案しにいく

1.会社のあるべき姿を提案していく
2.会社からの外圧作り
3.会社の内と外の界面に立つ

私＞会社＞みんな＞社会

環境カウンセラーというのがある
EDS、SDGsに関わるお仕事

ゆたかな生き方についてはれなさんもまだ模索中！
自分の中のいろんな自分・・・・健全な多重人格？！
（セッション１でも出ていたのでとても驚き！）

プランド・ハップンスタンス（Planned Happenstance）

自分がやりたいことを、周りに言わせることで、手伝ってくれる人ができてよかった

ある程度のハードワーク時期は必要
やりたいことがあったらすぐ行動してた。
けど最近は１週間くらい待ってみる。
人脈がたくさんできて、繋いでもらっている
自分も繋げている

夢を見つけるようになってから、モチベとか熱意とかが芽生えた＋会社が大好きかも
なんとなくありたい姿があって、それを目指してアンテナをはって、引っかかったところから進めている
普段から計画して進めているわけではないー

やりたくない、ピンとこない仕事については潔く断る
（企業によってはできないこともあるので注意）
子育てとの両立はとても難しい

TOP、会社の方針のベクトルは合わせるけど、
やり方は自分のやり方で、ちゃんと自分の意見を言う

れなさんのゆたかな社会とは
個人がしっかり選択できるような社会になってほしい、
それが周りの人と繋がっているのがゆたかな社会じゃないかなー

社内でもやもやするものがあったら、それを理解してくれる人を見つける
全然別部署でも大丈夫なので、おすすめ
役職がついてる人も、退勤したらただの人間だと思って接すると良いかも！
自分の中の違和感は他の人も違和感かもしれないので、積極的に話していこう

最後に
ワークショップのメンバーと話した結果、私のnext action
1.　居場所を作るようにする
2.　私がメンバーを心配していることを伝える
3.　私じゃなくても、業務について愚痴ったり、相談できる人が見つかるように交流を広める
4.　役職は関係ないみんな同じメンバーだということを伝える

受講者みんなマイクオフだから真顔のみんなにとは違って、
うなづいたり笑ったりふんふんしたりリアクションしてる私がめっちゃ呼ばれた
ワークショップ（グループ分け）の帰りにあたしがめっちゃ笑顔で帰ってくるので話しかけたくなると言われたw w w
作業効率を向上させるために

社会人2年目になりましたが、昨年同様に、IT技術に触れる機会が少ない現場で業務させていただいております。
そんな中、単純業務の反復業務等々をこなす旅、もっと手順を減らせたのではないかと考えておりました。
IT技術にはあまり触れない現場だからこそ、効率的に丁寧に作業することを念頭に業務をこなしております。
また、日常でもPC作業等で軽作業をこなす際にも、少しでも作業を単純化、効率化を目指すために
私が利用した中で、簡略的、基礎的なもので便利だったものをメモとして記載させていただきます。

---

## 1. マクロ
Excelを使ったデータ入力や資料作成の効率化には、マクロがとても役立ちます。特に私のように専門知識を持たない人でも作成できる**簡易性**が魅力です。

業務でも日常生活でも、繰り返し行う作業に時間を費やすのは数秒でもストレスになります。マクロを活用することで、**効率化とストレス軽減**の両方が実現可能です。

### 実際に利用しているマクロの例

#### ① 特定のホームページへのログインを自動化
- **内容**: Excel上で特定のページに自動遷移し、事前に登録したIDとパスワードを入力。
- **メリット**: 「ブラウザ上でタブを開く」「お気に入りページを探す」といった手間を省き、Excelで一元管理可能。

#### ② 勤務表の自動作成
- **内容**: CSVファイルで出力されたデータを整形し、エクスプローラー上にファイルを作成するマクロを作成中。
- **進捗**: 修正が必要な部分がありますが、形にできそうです。

---

## 2. 3秒敬語
### リンク：[3秒敬語](https://3keigo.com/)
日常的な業務でよく使う敬語表現。メールや資料作成時に、たたき台となる文章を**数秒で敬語に変換**できる便利なツールです。

#### メリット
- 敬語表現の候補をいくつか試せる。
- 短時間で自然な敬語を作れる。

日頃からメールや文書作成で悩むことが多い方にはぜひおすすめです。

---

## 3. リマインダーアプリケーション
1年目の頃はあまり必要性を感じていませんでしたが、業務が増えるにつれその重要性を痛感しました。

#### 活用方法
- 現場業務や自社に関するタスクの管理。
- 日常生活でつい忘れがちなことのリマインド。

私はiPhoneのリマインダーアプリを利用しています。**シンプルながら使い勝手が良い**ので、重宝しています。

---

## 4. ChatGPT
### リンク：[ChatGPT](https://chat.openai.com/)
広く認知されているChatGPTは、**業務効率化**にも役立つ強力なツールです。

#### 利用例
- 調べ物や文章の校閲。
- 議論やアイデア出しの下書き作成。
- マクロやPythonコードの記述補助。

ただし、**機密情報の取り扱いには注意**が必要です。
- 現場や自社の資料などを読み込ませない。
- ChatGPTからの情報漏洩リスクについて認識する。

注意深く活用すれば、業務効率を大きく向上させることができます。

---

## まとめ
私ができる工夫は、どれも**シンプルで取り入れやすい**ものばかりです。知識がない状態でも使用できそうなツールをピックアップし、試すことで、作業時間の短縮やストレス軽減を実現できましたまた、マクロに関しては、入社前より確実にレベルアップしている気がします。
普段の生活からでも、スキルアップを意識することを心掛けていきたいと思います。
Wordの便利なオプション設定について

## はじめに
私は今までWordを使う機会がほとんどなかったのですが便利な設定を知る機会があり、
今後に活かせるよう備忘録として記事にしたいと思います。

## 編集記号の表示設定
- 編集記号とは編集の過程を記号で表すもので、印刷時には表示されない以下のような記号です。編集記号を表示することで文字配置や書式設定が確認しやすくなります。
  - 段落記号（↵）
  - スペースを示す点（·）
  - タブ記号（→）
- 設定方法
  - 「ファイル」＞「オプション」＞「表示」＞「すべての編集記号を表示する」のチェックボックスから設定

## オートコレクトのオプション設定
- オートコレクト機能は予め用意されている以下のような自動変換等の便利機能になります。
  - 「the ...」と入力 → 「The ...」と自動変換
- 設定方法
  - 「ファイル」＞「オプション」＞「文章校正」＞「オートコレクトのオプション」＞「オートコレクトタブ」内の各チェックボックスから設定

## フィールドの網かけ表示設定
- フィールドの網かけ表示はWord機能を使用している箇所(「日付と時刻」を利用して入力した日付、自動挿入される段落番号等)がグレーの網かけで強調される機能になります。
- 設定方法
  - 「ファイル」＞「オプション」＞「詳細設定」＞「構成内容の表示」＞「フィールドの網かけ表示」の右プルダウンメニューから設定

## まとめ
使いやすさを意識することが大事だなと思いました。
今後も便利そうなものがあれば、調べてみようと思います。

## 参考
- https://koneta.nifty.com/koneta_detail/190218000746_1.htm
- https://curio-kumegawa.com/column-word7/
プログラミング学習歴約6ヶ月、実務未経験がポモドーロタイマー作ってみた

どうもこんにちは。ちなっぷです。
（私が何者なのか、少しでも気になってくれた方は[こちら](https://qiita.com/chinap/items/1804ba3ff9a4d001634f)から自己紹介させてください。）

プログラミング学習を開始して約半年が経過したので、現時点での自分の実力のアウトプットととして、**ポモドーロタイマー開発**に挑戦しました。
見てやっても良いぞって方は[こちら](https://pomodoro-topaz-omega.vercel.app/)からぜひ使ってみてください。

![スクリーンショット 2024-11-28 14.37.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3823574/61e3db94-667d-4272-cf34-a59fba6a1919.png)

ちなみに、今回の詳細設計は以下です。
### 概要：
作業 / 休憩のサイクルのポモドーロタイマー
※デフォルトは25分作業 / 5分休憩のサイクルで設定画面にてカスタマイズ可能

### 基本機能：
-タイマー機能（開始 / 停止 / リセット）
-作業 / 休憩の切り替え機能
-サウンド機能（BGM再生）

### その他機能：
-統計機能（1日の作業セッション数表示）
-設定の保存

### 技術スタック：
-React（UI構築）
-TypeScript（型安全性）
-Tailwind CSS（デザイン）
-localStorage（データ保存）

### 差別化ポイント：
-BGM選択（雨音 / 波音 / カフェ環境音）
-音量調整
-タイマー終了時のアラーム
-作業タイマー終了時のストレッチ推奨

ちなみに、実装期間は約3日でした。
完全未経験かつ初めてのアプリ開発なのにこの早さ（遅いと感じる方もいらっしゃると思いますが…）の理由はChatGPTのおかげです。
と言うのも、一つのバグを修正すると違う場所でバグが起きるの繰り返しで、このままだと投げ出してどこかに逃げてしまいそうだったからです。
なので、タイマーの再生停止やリセットに加え、BGM機能等々、色々な機能を付けようとすると複雑化してしまう関数の汎用化などはChatGPTのお知恵を拝借しました。

今回、アプリ開発の要件定義から実装、デプロイ、さらに本ブログでのアナウンスに至る工程を最後まで諦めずに実行できた良い経験となりました。

次回も引き続きChatGPTのお知恵を拝借（効率よく活用）しつつ、どんなものを作ろうかワクワクしております。
Windows通知を活用してPythonプログラム実行中の作業効率アップ！🎉


# プログラムの実行完了を待つのは面倒！
Pythonでコードを実行している間、「このプログラム、もう終わったかな？」と都度確認するのは意外と手間ですよね。その間に別の作業をしたくても、ついプログラムの進捗が気になって集中できない……そんな経験、ありませんか？この記事では、そんな状況を解決してくれる便利なライブラリ `win10toast` をご紹介します！

# win10toast とは？
win10toast は、Windowsの「トースト通知」を簡単に表示できるPythonライブラリです。この通知を使えば、プログラムの実行完了をすぐに教えてくれるので、プログラムが終わるのを待つ時間を有効活用できます。
例えば、長時間かかる処理の間に他の作業をしていても、通知が届けばすぐに気付けるため、作業効率が格段に向上します！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565268/7c9466cf-45b2-5ddd-1698-1982b7c339d0.png" width="60%">

# インストール方法
まずは、win10toast をインストールしましょう。
たったこれだけで準備完了です！
```bash:bash
pip install win10toast
```

### 実装例
以下は、`win10toast`を使った簡単な通知機能の実装例です。
```python: sample.py
import time
from win10toast import ToastNotifier

# 通知オブジェクトの作成
notifier = ToastNotifier()

print("処理を実行中...")
time.sleep(5) 

# 実行完了の通知
notifier.show_toast("実行完了", "Pythonコードが完了しました", duration=5)
```

### 実行結果
プログラムを実行すると、処理が完了したタイミングでトースト通知が表示されます。
また、通知の表示時間は`duration`のパラメータで調節可能です（単位は秒）。

<img src="https://i.gyazo.com/b20d27e1458c65c30d015c9621fbc09f.gif" width="80%">

さらに詳細が知りたい方は公式ドキュメントをご参照ください！

https://pypi.org/project/win10toast/

### 注意点
win10toastはWindows専用のライブラリです。
MacやLinux環境では動作しません。
その場合は別の通知ライブラリ（例：plyer）をご検討ください！

# まとめ
`win10toast`を用いた通知方法をご紹介しました。
ぜひ「待ち時間を有効活用したい！」という方はお試しください！
インライン要素とブロック要素をDivとSpanの比較をもとに説明します。

以下に、前提知識として ブロック要素 と インライン要素 の説明をした上で、divとspanの違いを解説します。

前提知識: ブロック要素とインライン要素

## ブロック要素

	•	他の要素とは別の行に表示され、前後に改行が挿入されます。
	•	親要素の横幅全体を占有します（CSSで幅を変更可能）。
	•	主にレイアウトや大きなコンテナとして使用されます。
	•	主な例<div>, <p>, <h1>～<h6>, <ul>, <ol>, <table> など。

## インライン要素

	•	他の要素と同じ行に表示され、改行されません。
	•	必要な範囲だけを占有し、横に続けて配置されます。
	•	主にテキストやその一部の装飾に使用されます。
	•	主な例<span>, <a>, <strong>, <em>, <img> など。

## divとspanの違い

| 要素の種類 | ブロック要素 | インライン要素 |
|:-:|:-:|:-:|
| 観点  |  div |  span |
|  要素の種類 | ブロック要素  |  インライン要素 |
| 改行されるか  |  改行される | 改行されない  |
| 主な用途  |  レイアウトや大きなまとまりのグループ化に使用 |  テキストやその一部を装飾する場合に使用 |

## div の特徴と例

	1.	ブロック要素
	•	親要素の幅を占有し、他の要素とは別の行に配置されます。
	2.	改行される
	•	div 要素の前後に自動的に改行が挿入されます。
	3.	用途
	•	レイアウト全体やセクションをグループ化するために使用。

## span の特徴と例

	1.	インライン要素
	•	他のテキストと同じ行に配置され、改行されません。
	2.	改行されない
	•	span 要素は周囲のテキストと同じ行内に存在します。
	3.	用途
	•	テキストや一部分を装飾したり、特定の要素にCSSやJavaScriptを適用する際に使用。

## まとめ

| 特徴 |div | span |
|:-:|:-:|:-:|
| 要素の種類  | ブロック要素  | インライン要素  |
| 改行されるか  | 改行される  | 改行されない  |
| 主な用途  | レイアウトやセクションのグループ化  | テキストやその一部の装飾  |

## 覚え方
	•	div は大きな箱（コンテナ全体をまとめるため）。
	•	span はテキストの一部分（小さな装飾や操作に使う）。
xdebugを3.3.2にあげたらsegmentation fault

xdebugを3.3.2にあげたら、うまく動作せずに落ちるようになりました。
```
zsh: segmentation fault  php -S 127.0.0.1:8080
```

## 環境
```
Mac: Sonoma 14.6 (M2pro)
PHP: 8.1.28
```
## 結論
xdebug-3.2.2にダウングレードする。
```
pecl uninstall xdebug
pecl install xdebug-3.2.2
```

#### 場合によってPATHの修正
pecl installの最後に書かれているPATHを設定します。
```
# php.ini
zend_extension = "/opt/homebrew/Cellar/php@8.1/8.1.28/pecl/20210902/xdebug.so"
```

この設定なら修正不要ですね。
```
zend_extension="xdebug.so"
```
【TypeScript】lookup型 と keyof型 の基本

TypeScriptの **lookup型** と **keyof型** について、混乱することがあったので基本的な使い方をまとめました。


## lookup型
**T[K]** という構文を持つ型で、lookup型を使うと、オブジェクトや配列などの型から特定のプロパティやインデックスの型を取り出すことができます。
- #### オブジェクト型においてプロパティに対応する型を取得
オブジェクト型から特定のプロパティを指定して、そのプロパティの型を取得します。
```typescript
type Animals = {
  dog: {
    breed: string;
    isTrained: boolean;
  };
  cat: {
    color: string;
    age: number;
  };
};

type DogDetails = Animals["dog"];
// { breed: string; isTrained: boolean; }

type CatAge = Animals["cat"]["age"]
// number
```
上記の例では、`Animals`型の`dog`プロパティの型と、`cat`プロパティの中の`age`の型を取得しています。

このように、**既存の型を再利用する**のがlookup型の基本的な使い方となります。


- #### 配列/タプル型においてインデックスに対応する型を取得
特定のインデックスを指定して、それに対応する型を取得します。
```typescript
const animals = ['dog', 'cat', 'horse', 'rabbit', 'bird'] as const
// animalsの型は、readonly ['dog', 'cat', 'horse', 'rabbit', 'bird']

type Rabbit = (typeof animals)[3]
// "rabbit"

type Animal = (typeof animals)[number]
// "dog" | "cat" | "horse" | "rabbit" | "bird"
```
上記の例では、変数`animals`の型を **typeof** で取得し、その取得した型に対してインデックスを指定することでそれに対応した`rabbit`型を得ています。
また、**[number]** を指定することにより、すべてのインデックス（要素）に対応する型をユニオン型で取得することができます。


## keyof型
**keyof T** という構文で、オブジェクト型からそのオブジェクトのプロパティ名の型を取得することができます。一般に、keyof型の結果は文字列のリテラル型となります。
```typescript
type Dog = {
  age: number;
  sex: 'male' | 'female' | 'unknown';
  breed: string;
  isTrained: boolean;
};

type DogKeys = keyof Dog;
// "age" | "sex" | "breed" | "isTrained"
```

- #### オブジェクトのプロパティ名全体から型を取得
```typescript
const dog = {
  age: 3,
  sex: 'female',
  breed: 'chihuahua',
  isTrained: true
};

type DogKeys = keyof typeof Dog;
// "age" | "sex" | "breed" | "isTrained"
```
この例では、変数`dog`からオブジェクト型のプロパティ名を文字列のリテラル型として取得しています。


- #### オブジェクトのプロパティ値全体から型を取得
**keyof型** と **lookup型** を組み合わせて、オブジェクトのプロパティ値の型をユニオン型として取得することができます。
```typescript
const dog = {
  age: 3,
  sex: 'female',
  breed: 'chihuahua',
  isTrained: true
};
const cat = {
  age: 5,
  sex: 'male',
  breed: 'american shorthair',
  color: 'white'
} as const;

type ValueOf<T> = T[keyof T]
type DogValues = ValueOf<typeof dog>
// string | number | boolean
type CatValues = ValueOf<typeof cat>
// 5 | "male" | "american shorthair" | "white"
```
ここで注目すべきポイントは **keyof T** です。ここではTがどのような型になるのか決まっていませんが keyof を使うことができます。つまり、keyof は**型引数**に対しても有効に作用します。


##
以上が、lookup型 と keyof型 の基本的な使い方となります。これらを使いこなすことで、型安全を維持しながら柔軟で再利用性の高い型定義が可能になります。また今回は触れませんでしたが、ジェネリクスを用いると、型の制約を動的に設定したり、汎用的な型を作成することが可能になり、より高度な型操作を実現できます。
PythonでWinUI3を使えるwin32more

## アクリル効果使いたい
PythonのGUIでもアクリル効果を使いたいと思っていましたが、出来るのはwinrtアプリ以外だとWinui3でしか出来なさそうでどうすればいいのかとずっと思っていました。
ですが、この前検索したらなんだか出来そうなものがあったので、それを広めるためだけに記事を書いています。

## PythonでWindows Runtimeにアクセス出来るwin32more
と、言うわけで上記の通りです。

Githubプロジェクトページ

https://github.com/ynkdir/py-win32more

上のページにもかいてありますがインストール自体はpip経由で可能です
```
pip -m install win32more
```

Windows app sdkの最新版が必要っぽいので、実行時に以下のページを案内される事があります

https://learn.microsoft.com/ja-jp/windows/apps/windows-app-sdk/downloads

## 使い方
正直よくわからないのですが、基本的にはラッパーライブラリのようですから、C#のコードとか参考にするのではないでしょうか

OCR.pyとかSpeech.pyとかexcel.pyがexampleにあるので、WinUI3を使う以外にも使い道があるのかもしれません。

とりあえず、Githubページのサンプルコードを
```python
from win32more.Microsoft.UI.Xaml.Media import MicaBackdrop
# ⬇
from win32more.Microsoft.UI.Xaml.Media import DesktopAcrylicBackdrop
# ...
        win.SystemBackdrop = MicaBackdrop()
        #⬇
        win.SystemBackdrop = DesktopAcrylicBackdropBackdrop()
```
に変更したらアクリル効果が有効になったので、個人的には幸せです。


xamlコードは

https://apps.microsoft.com/detail/9p3jfpwwdzrc?hl=ja-JP&gl=JP

なんかで調べれば良いのでは無いでしょうか。
stylyでvr その4

# 概要
stylyでvrやってみた。
練習問題やってみた。

# 練習問題
sketchfabのgltfを使え。

# 手順
- styly studioを開く。
- 新規シーンを押す。
- シーンタイトルをtest2にする。
- ARシーンにチェックを入れる。
- シーンを作成を押す。
- アセットボタンを押して、マイアップロードを押す。
- ３Dモデルをアップロードする。
- インサートボタンを押す。
- my uploads >> 3d modelを押す。
- gltfをaddする。
- パブリックボタンを押して、公開する。


# 成果物

https://gallery.styly.cc/scene/a2d6dd6f-6b74-48e7-878e-6fd64943ef19


以上。
ガチの未経験から3か月でSAPとる方法

## 概要
昨日SAPに合格しました。
完全未経験の学がない状態から初めて、3か月で取得できましたので
方法等について記載しようと思います。

## 勉強法
こちらの参考書を購入し、1週間ぐらいかけて読みました。
後ろの方にある問題は解かず、解説だけみました。

https://amzn.asia/d/bdMI11C

その後クラウドライセンスを使い、SAPの問題を解きました。

https://cloud-license.com/

問題を解いていて、感じたのですがSAAと比較すると
難解な文章というか、ぱっと見何いってるんだろ？的なものが多かったです。
ここに対しては、メモ帳等に自分で解読した内容を記載するようにして
なんとか読解できるように練習しました。

問題を2周ほどした後にどうしても理解できない内容がある場合には、
弊社で作成している「ナレコムAIプラットフォーム」という生成AIに
対して質問し理解を深めていきました。

## 試験時の立ち回り
時間が足りないとよく聞いていたのですが、自分の場合は1時間ほど余りました。
方法としては、
1.ぱっと見でわからない問題は飛ばす
2.少しでも怪しいと思ったらフラグを立てる
3.飛ばした問題を解く
4.フラグついているものを解く

この流れでやりました。
時間が足りないと思うと、焦ってしまうので
1週目を1時間ぐらいで終わらせて
残りを3~4に当てたのですが、焦らないですみました。

## まとめ
ネットを旅していると1週間や2週間で取れたという人をみますが、
前提知識がある人の話だと思います。

その話を前提に動くとほぼ取らないと思うので、
時間をつぎ込んでやるのが安パイだと思います。

自分は1か月で行い、平日3時間、土日6時間ぐらい行ってました。
stylyでvr その3

# 概要
stylyでvrやってみた。
練習問題やってみた。

# 練習問題
fbxを使え。

# 手順
- styly studioを開く。
- 新規シーンを押す。
- シーンタイトルをtest1にする。
- VRシーンにチェックを入れる。
- シーンを作成を押す。
- アセットボタンを押して、マイアップロードを押す。
- ３Dモデルをアップロードする。
- インサートボタンを押す。
- my uploads >> 3d modelを押す。
- fbxをaddする。
- パブリックボタンを押して、公開する。

# 成果物

https://gallery.styly.cc/scene/d47977d2-c788-43df-bf82-f2a2441bf274


以上。
新技術人材の定義（データサイエンティスト）について

　コラムをご覧いただきありがとうございます。​

　ニッセイ情報テクノロジー株式会社 プロダクト・サービス事業推進室の吉富と申します。
普段は、当社におけるプロダクト・サービス事業の推進やプロダクト・サービスに関連するデータサイエンス人財の育成、データサイエンスに関連するプロダクト・サービスを中心に担当しております。​今回のコラムとして、人財育成の取り組みにおいて感じたことを徒然なるままに記載したいと思います。​
　​
　プロダクト・サービス事業推進室では、データ分析支援やデータサイエンス技術を活用したソリューション研究を推進しており、データ分析企画からデータ分析、データ分析モデル（AI）構築、さらにはデータ分析基盤の導入を担う人財が所属しております。​

　昨今のAI活用やデータ利活用ニーズの増大を受けてデータサイエンティストの更なる育成を模索しており、日々、人財育成施策を検討実施しています。直近では、2023年度に保険・共済、年金、ヘルスケア領域を中心にソリューションを提供しているNISSAY ITの業務ノウハウやシステムデザイン力、データに精通していることを強みに業界の発展に貢献する人財の育成のために「データサイエンティスト」というキャリアコースを新設しました。​

　この際、データサイエンティストコースを新設するにあたっては、独立行政法人 情報処理推進機構（IPA）と一般社団法人 データサイエンティスト協会の「ビジネス力」「データサイエンス力」「データエンジニアリング力」の3つをスキルを参考にしつつ、NISSAY ITが強みとする業務領域を掛け合わせて人財像を定義しています。​
 

 ![コース画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3933314/c2ca14be-3621-4cee-887b-3dc0d8efda2e.png)


　上記定義以外にもスキルレベル毎の達成イメージの具体化等にも取り組んでます。取り組みの中で、感じたこととしては、企業毎や業務ドメイン毎に様々なデータサイエンティストの人財定義が存在している事です。また、データサイエンティストに限らず、アジャイルやセキュリティ等々、新しい注目技術領域が生まれる中で定義するべき人財像を追加、更新するスピードがあがっている事等を特に感じてます。​

　さて、読者のみなさまの会社では、どんなデータサイエンティストの人財像や新規領域の人財像を描き、日々生まれる注目技術領域等に対応されていってますでしょうか？

 上記定義以外にもスキルレベル毎の達成イメージの具体化等にも取り組んでます。取り組みの中で、感じたこととしては、企業毎や業務ドメイン毎に様々なデータサイエンティストの人財定義が存在している事です。また、データサイエンティストに限らず、アジャイルやセキュリティ等々、新しい注目技術領域が生まれる中で定義するべき人財像を追加、更新するスピードがあがっている事等を特に感じてます。​

　さて、読者のみなさまの会社では、どんなデータサイエンティストの人財像や新規領域の人財像を描き、日々生まれる注目技術領域等に対応されていってますでしょうか？
エクセルのセル最大値最小値の取得方法

=MIN(IF(A1<>"",A1,DATE(9999,12,31)),IF(A3<>"",A3,DATE(9999,12,31)),IF(A5<>"",A5,DATE(9999,12,31)),IF(B2<>"",B2,DATE(9999,12,31)),IF(B4<>"",B4,DATE(9999,12,31)))
Pythonにおけるローカル変数、グローバル変数、クラス変数、インスタンス変数の違い

## 1.ローカル変数
* 定義場所: 関数やメソッドの内部で定義される
* スコープ: 定義された関数やメソッド内でのみ有効。他の関数やメソッドからはアクセスできない
* 特徴: 関数が終了するとメモリから削除される
```python
def example_function():
    local_var = "これはローカル変数です"
    print(local_var)

example_function()  # 出力: これはローカル変数です
```

## 2.グローバル変数
* 定義場所: 関数やクラスの外部で定義される
* スコープ: モジュール内で有効。（つまり、そのグローバル変数が定義されたファイル内）
* ただし、関数内で値を変更する場合は global キーワードが必要
* 特徴: プログラムが終了するまで保持される
```python
global_var = "これはグローバル変数です"

def example_function():
    print(global_var)

example_function()  # 出力: これはグローバル変数です
```

## 3.クラス変数
* 定義場所: クラスの内部、メソッドの外部で定義される
* スコープ: クラス全体で共有され、全てのインスタンスで共通の値を持つ
* 特徴: インスタンスごとに異なる値を持たず、クラス全体で値を共有する
```python
class SampleClass:
    class_var = "クラス変数"  # クラス変数

print(SampleClass.class_var)  # 出力: クラス変数
```



## 4.インスタンス変数
* 定義場所: 各インスタンスごとに保持される変数で、通常 \_\_init\_\_ メソッド内で定義される
* スコープ: 各インスタンス内
* 特徴:インスタンスごとに異なる値を持つ。self.変数名でアクセス可能
```python
class SampleClass:
    def __init__(self, value):
        self.instance_var = value  # インスタンス変数

obj1 = SampleClass("インスタンス1")
obj2 = SampleClass("インスタンス2")

print(obj1.instance_var)  # 出力: インスタンス1
print(obj2.instance_var)  # 出力: インスタンス2
```

:::note info
クラス変数とインスタンス変数の相違点
:::

```python
class ExampleClass:
    class_var = "クラス変数"

example_instance1 = ExampleClass()
example_instance2 = ExampleClass()

# クラス変数のアクセス
print(example_instance1.class_var)  # 出力: クラス変数
print(example_instance2.class_var)  # 出力: クラス変数

# クラス変数の変更
ExampleClass.class_var = "インスタンス変数"
print(example_instance1.class_var)  # 出力: 変更されたクラス変数
print(example_instance2.class_var)  # 出力: 変更されたクラス変数

# インスタンス変数の上書き
example_instance1.class_var = "インスタンス変数で上書き"
print(example_instance1.class_var)  # 出力: インスタンス変数で上書き
print(example_instance2.class_var)  # 出力: 変更されたクラス変数

# クラス変数の再変更
ExampleClass.class_var = "再変更されたクラス変数"
print(example_instance1.class_var)  # 出力: インスタンス変数で上書き
print(example_instance2.class_var)  # 出力: 再変更されたクラス変数
```

## まとめ

| 種類 | 定義場所 | 有効範囲 | 特徴 |
|:-----|:--------|:--------|:-----|
| ローカル変数       | 関数やメソッド内        | 定義された関数の内部         | 外部からアクセス不可、関数終了時に破棄される         |
| グローバル変数     | 関数やクラスの外部      | モジュール内       | 任意のスコープからアクセス可能、変更には global 必須         |
| クラス変数       | クラス内        | クラスおよび全インスタンス         | クラスで共有され、インスタンスごとに同じ値を持つ         |
| インスタンス変数         | \_\_init\_\_ 等のメソッド内          | 各インスタンス           | インスタンスごとに異なる値を持ち、self を介してアクセス         |


## 優先順位
関数やクラスメソッド内での優先順位は以下の通りです： 
ローカル変数 > クラス変数 > グローバル変数
Cloud 初心者が３ヶ月で Google Cloud Professional Cloud Architect に合格した話

# はじめに
Google Cloud Platform（GCP）のProfessional Cloud Architect 試験に無事合格したので、勉強方法と試験に合格するまでの流れをまとめました。この試験は、GCPのクラウドアーキテクチャの専門家としてのスキルを証明する事が出来る資格です。

![スクリーンショット 2023-07-08 10.46.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/420ce2cc-7743-4d42-d3d4-893c9589f339.png)

クラウドアーキテクチャは、現代のテクノロジーにおいてますます重要性を増しています。企業や組織がクラウドベースのソリューションを採用することで、スケーラビリティ、可用性、セキュリティを向上させることができます。その中でも、GCPのProfessional Cloud Architect資格は、実際のビジネスニーズに基づいた優れたクラウドアーキテクチャを設計する能力を評価するための重要なステップです。

この記事では、試験の要件や範囲、出題形式について説明し、合格するための具体的な戦略とヒントを提供します。さらに、私の合格体験や学習プロセスを共有し、成功への道筋を備忘録としてまとめました。

![Professional Cloud Architect](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/3f1276b0-3bb6-6b6f-cc03-b409c4e21bc1.png)

## 自己紹介
2011年頃からゲームなどのコンテンツ開発を始め、2013年10月からパチンコ/パチスロのエンジニアとチームマネージメントを経験しました。2017年9月からソーシャルゲーム開発と運用保守のクライアントエンジニアをしております。

Cloud の開発経験は無いです。

### GCP Professional Cloud Architect 試験受験のきっかけ

E.G.G. Japan（Expert of GCP for Gaming Japan） というゲーム業界で働くエンジニア向けの学習プログラムに参加した事をきっかけに受験しました。

## Professional Cloud Architect試験の概要

Professional Cloud Architects は、組織が Google Cloud 技術を利用できるように支援します。クラウドアーキテクチャと Google Cloud に関する専門的な知識を活かして、ビジネス目標を実現するために、スケーラブルで高可用性を備え、堅牢かつ安全な動的ソリューションを設計、開発、管理します。
Professional Cloud Architect 認定試験では、以下に関する能力が評価されます。

* クラウド ソリューション アーキテクチャの設計と計画
* クラウド ソリューション インフラストラクチャの管理とプロビジョニング
* セキュリティとコンプライアンスに対応した設計
* 技術プロセスやビジネス プロセスの分析と最適化
* クラウド アーキテクチャの実装の管理
* ソリューションとオペレーションの信頼性の確保

https://cloud.google.com/certification/cloud-architect?hl=ja

## 試験の要件と範囲の説明
### 試験の形式と出題スタイルの概要

* 試験時間：2時間
* 受験方法：遠隔監視でオンライン試験かテストセンターでのオンサイト試験
* 受験費用：$200（税別）
* 言語：英語もしくは日本語
* 推奨される経験：業界経験が 3 年以上（Google Cloud を使用したソリューションの設計と管理の経験 1 年以上を含む）

## 学習計画

### スケジュールの設定

#### 1週目：基礎知識の習得。

書店に行き主要なGCP関連の本を購入しました。
- [GCPの教科書](https://amzn.to/49f6lQj)
- [図解即戦力　Google Cloudのしくみと技術がこれ1冊でしっかりわかる教科書](https://amzn.to/3OtCjif)

#### 2〜4週目：CourseraでGCPのサービスを学習。

- [Coursera](https://www.coursera.org/) の動画で学習
- Google Cloud Skills Boost (旧 Qwiklabs) で GCP のサービスのハンズオン

#### 5〜8週目：模擬試験を解いて弱点克服。

公式の模擬試験の内容が全て把握出来るレベルまで問題を解答

https://docs.google.com/forms/d/e/1FAIpQLScpVCxsKSrqMBmqJ4fiYrJfCSlMhJVIFaW_v3MD4xEd6NW0Bw/viewform?hl=ja

#### 9〜12週目：実践的なプロジェクトやシナリオで演習。

- 自分のプロジェクトを構築して学ぶ
概要: 実際に小規模なシステムやアプリケーションを作りながら、GCPの各サービスを学ぶ

- 試験に特化したシナリオ演習
概要: 試験に出題されやすいシナリオを模倣して練習する。特にアーキテクチャ設計問題への対応を強化

# まとめ

今回、Cloud初心者だった私が 3ヶ月でGoogle Cloud Professional Cloud Architect に合格した体験を共有しました。このプロセスを通じて、次のような学びがありました。

**1. 計画的な学習が成功の鍵**
短期間で合格を目指すには、具体的なスケジュールを立てて効率よく進めることが重要です。学習計画を立て、進捗を管理することでモチベーションを維持できます。

**2. 実践を通じたスキル向上**
クラウドの知識は、ただ暗記するだけではなく、実際に触れて試すことで身につきます。Qwiklabsやハンズオンラボは、実践的な理解を深めるのに役立ちました。

**3. 模擬試験の活用**
本番に近い環境で問題を解き、自分の弱点を分析することで、効率よく準備できました。特に、シナリオベースの問題に慣れることが合格のカギでした。

**4. 初心者でも挑戦できる試験**
最初は不安だらけでしたが、適切な教材と継続的な努力があれば、初心者でも合格を目指せると実感しました。

今後の目標として、試験で得た知識を仕事や個人プロジェクトに活かしていきたいと思います。また、より高度な資格や他のクラウドプラットフォームにも挑戦してみたいです。

もしこの記事を読んで、「自分も挑戦してみたい」と感じていただけたなら、ぜひ一歩踏み出してみてください！短期間であっても、努力次第で必ず目標は達成できます。
"phpseclib\Crypt\AES" not found の解決法

# エラー内容
```
Fatal error: Uncaught Error: Class "phpseclib\Crypt\AES" not found in /var/www/html/myapp/fuel/core/classes/crypt.php:438 Stack trace: #0 
```
# 解決方法

1. ```rm composer.lock```
2. composer.jsonファイルに下記の記述を追加
 ```
    "require": {
　　　　～省略～
        "phpseclib/phpseclib": "3.0.0",
        "phpseclib/phpseclib2_compat":"~1.0"
    },
```
3. ```composer install```

参考記事：https://stackoverflow.com/questions/66088906/class-phpseclib-crypt-random-not-found

# 経緯
上記エラーの解決までにかなり時間を費やしたので、メモとして残しておきます。

依存関係エラーで
```"phpseclib/phpseclib": "2.0.0"```がインストールできずに悪戦苦闘していました。
ちなみに他のパッケージファイルのバージョンは以下

```
"require": {
        "php": "^8.0",
        "composer/installers": "~1.0",
        "fuel/core": "dev-1.9/develop#2c8c548a2f9f4aa08ecfe321c3e744d03472479c",
        "fuel/auth": "1.8.*",
        "fuel/email": "1.8.*",
        "fuel/oil": "1.8.*",
        "fuel/orm": "1.8.*",
        "fuel/parser": "1.8.*",
        "fuelphp/upload": "2.0.6"
    },
```
最初は```"phpseclib/phpseclib": "3.0.0"```のみ追加を試みましたがエラーは解決せず・・・

参照記事の通り、```phpseclib/phpseclib:~2.0```と```3.0```を並行して使用したい場合は、```"phpseclib/phpseclib2_compat":"~1.0"```が必要なようです。

phpseclib v3の新しい名前空間を2.0にあわせて変更してくれるファイルのようです。

無事解決できてcookie関係のエラーが出なくなり一安心です。
nkfコマンドを使ったユニークな可読性の高い文字化け

iconvでは再現できません。nkfを使う必要があります。

## 遊び方

* UTF-8日本語文字列をechoし、パイプでnkfに渡す
* nkfはまず `-S` で受けたあと、さらに `-s` をかける
* 結果が中途半端に読める文字化けになる

## サンプル

```
$ echo 'NPMにnkfバグの中途半端な文字化けを実現するモジュールを登録したい' | nkf -S | nkf -s
NPMぃHnkfバグぃ�七�途半竃bぃF文����化けを実現するチuゃNチEッVッHを登錃Cした�⏎

$ echo '登録したい' | nkf -S | nkf -s
癃T錃Cした�⏎

$ echo 'イェーガーマイスター' | nkf -S | nkf -s
めAゃ@ッVゃ�ッVマイゃPゃ\ッV

$ echo '宝生永夢ゥ！
  何故君が適合手術を受けずに……エグゼイドに変身できたのか。
  何故ガシャットを生み出せたのか。
  何故変身後に頭が痛むのかァ！（ｱﾛﾜﾅﾉｰ）
  鏡飛彩:それ以上言うな！
  その答えはただ一つ……。
  花家大我:やめろォォォ！' | nkf -S | nkf -s
宝生氃N夁uめE
何故君が遃D合手術を受けずに � �ゃBめ[ゃVめAドに変�R�Hぃ@きたぃ�か�
何故ゃ�ゃLチvッ�を生ぃ\凃Rせたぃ�か�
何故変�R�H後に頃�が痛�かァ�V��X�A��Z��Z�Z��X�[
鏁B飛�X�D:それ仁E上�B��ぃF
そ�答えぃbただ丁� � ��
芃A它J夃@�も�ろォゃDゃD⏎
```
緯度経度を日本測地系から世界測地系へまとめて変換する方法

こんにちは、堀井です。

今回は、タイトルの通り「緯度経度を日本測地系から世界測地系へまとめて変換する方法」を紹介しようと思います。

例えば、データベースに登録されている日本測地系の緯度経度をまとめて世界測地系に変換して更新したいといった場合に活用できると思いますので、ぜひ参考にしてください。

## 国土地理院を使う
まとめて変換するには国土地理院が提供している変換用のWEBサービスを利用します。

国土地理院は、我が国唯一の国家地図作成機関であり、国土交通省の特別の機関です。
とのことです。

国が関連しているサービスなのであれば　安心して使用できますね。

https://www.gsi.go.jp/syoukai.html

## 変換に必要なファイルを作成

変換したい緯度経度をファイルにまとめて記述します。
適当な場所に「latlon.in」というファイルを作成し、以下のように記述します。

![スクリーンショット 2024-11-27 22.56.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780649/2a18b473-307d-22e2-2dfd-1cd5957faf6b.png)


※１行目は「#」から始まり、２行目以降の緯度経度の間は半角スペースにする必要があります。

## 変換する

それでは実際に変換してみようと思います。

まずはこちらのWEBサービスを開きます。

https://vldb.gsi.go.jp/sokuchi/surveycalc/tky2jgd/main.html

開くとこのような画面が表示されます。

![スクリーンショット 2024-11-27 22.33.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780649/70902697-8e7f-df68-bcdf-57010305df14.png)

左側の「入力値」の「一括計算」タブを開きます。

![スクリーンショット 2024-11-27 22.40.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780649/7c361e37-3df8-8a13-2683-8954f6a7ce96.png)

「ファイルを選択」から先ほど作成した「lonlat.in」を選択します。

![スクリーンショット 2024-11-27 22.44.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780649/b12f0ca8-229c-84e6-d8e4-0264f79972c3.png)

「計算実行」を押すと計算結果が右側に表示され、変換結果がダウンロードされます。

![スクリーンショット 2024-11-27 22.46.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780649/0d20b8a3-5590-735f-4f4b-8c7993ddcb98.png)

出力された「latlon.out」を見てみると変換前と変換後の緯度経度が記述されていることがわかります。

![スクリーンショット 2024-11-27 22.46.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780649/90e56aef-e3c4-2f87-a061-e0d079f3dc74.png)

これで変換ができましたが、これをデータベースに更新しようとしても、更新する際のキーがないので更新ができません。

そんな時に使える裏技があります。

## 緯度経度と顧客コードを紐付ける

これを行うためには、変換に必要なファイルを修正します。
修正したファイルがこのような感じになります。

![スクリーンショット 2024-11-27 22.56.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780649/214fc51b-e867-95d5-fc92-8ec2df467ef2.png)

各緯度経度の右側に半角スペースを開けて顧客コードを記述しておきます。

これを同じように変換すると

![スクリーンショット 2024-11-27 22.59.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780649/2303c9eb-0ead-f5a4-5bbc-26cb3d676fc1.png)

このように変換後の緯度経度の後ろに顧客コードがそのまま記述された状態で出力されてくれます。

この結果を利用すれば顧客コードをキーとしてデータベースの値を更新できそうです。

## 主な注意事項

* 1回につき最大３万件の変換が可能
* 緯度経度は60進法で記述
* 秒の有効桁は小数点以下5桁

## おわりに
今回は緯度経度を日本測地系から世界測地系へまとめて変換する方法を紹介しました。

普段の仕事で使うことはそうないと思いますが、誰かの役に立てば幸いです。

以上、堀井でした。
Windows環境でのClaude Desktop MCP接続エラーの解決方法【2024.11.28】

## 🔍 この記事で分かること
- Claude DesktopでMCPサーバー接続エラーが発生する原因
- 最新の解決方法（2024年11月確認）
- 正しい設定ファイルの書き方
- よくあるトラブルシューティング

## 📌 はじめに
Claude Desktopで「Could not attach to MCP server」というエラーが表示される場合、本記事の手順で解決できます。この問題は特にWindows環境で多く報告されており、主に`npx`コマンドの使用に起因しています。

https://twitter.com/hAru_mAki_ch/status/1861930783910588490

## 🔧 解決手順

### 1. 前提条件の確認
- Claude Desktopがインストールされている
- Node.jsがインストールされている
- 開発者モードが有効になっている

### 2. MCPサーバーのインストール
管理者権限でPowerShellを開き、以下のコマンドを実行します：
```powershell
npm install -g @modelcontextprotocol/server-filesystem
```

### 3. インストール場所の確認
通常、以下のいずれかにインストールされます：
- `C:\Users\[ユーザー名]\AppData\Roaming\npm\node_modules`
- `C:\Program Files\nodejs\node_modules`

次のコマンドで確認できます：
```powershell
ls C:\Users\[ユーザー名]\AppData\Roaming\npm\node_modules
```

### 4. 設定ファイルの修正
`%APPDATA%\Claude\claude_desktop_config.json`を以下のように設定します：

```json
{
  "mcpServers": {
    "filesystem": {
      "command": "node",
      "args": [
        "C:\\Users\\[ユーザー名]\\AppData\\Roaming\\npm\\node_modules\\@modelcontextprotocol\\server-filesystem\\dist\\index.js",
        "C:\\"
      ]
    }
  }
}
```

### 5. 重要な注意点
- パスの区切り文字は必ず`\\`（バックスラッシュ2つ）を使用
- 絶対パスを使用する
- [ユーザー名]は実際のWindowsユーザー名に置き換え
- 最後の`"C:\\"`はアクセスしたいディレクトリを指定

## 🚀 設定後の確認手順
1. Claude Desktopを完全に終了し、再起動
2. 開発者モードで正常に接続されていることを確認


## 🔄 更新履歴
- 2024年11月28日：最新の解決方法を確認・更新
- Windows 11での動作を確認

## 📚 参考リンク
- [Model Context Protocol 公式ドキュメント](https://modelcontextprotocol.io/)
- [GitHub Issue #40](https://github.com/modelcontextprotocol/servers/issues/40)
さまざまなデバイスサイズに対応するレスポンシブなUIをFlutterで実装する方法



アプリを開発する際、さまざまなデバイスサイズや画面の向きに対応するレスポンシブなデザインは欠かせません。Flutterでは、柔軟なレイアウトウィジェットと便利なツールを使うことで、簡単にレスポンシブUIを実装できます。この記事では、初心者向けに以下のポイントを解説します。

---

## **1. MediaQueryの活用法**

`MediaQuery`を使うと、デバイスの画面サイズや向き、解像度にアクセスできます。

### **基本的な使い方**

```dart
@override
Widget build(BuildContext context) {
  final screenWidth = MediaQuery.of(context).size.width;
  final screenHeight = MediaQuery.of(context).size.height;

  return Container(
    width: screenWidth * 0.8, // 画面幅の80%
    height: screenHeight * 0.3, // 画面高さの30%
    color: Colors.blue,
    child: Center(child: Text('レスポンシブUI')),
  );
}
```

### **ポイント**

- 画面サイズに基づいて、動的にウィジェットのサイズや位置を変更できます。
- **例**: スマホでは縦に並べるが、タブレットでは横に並べるレイアウトの切り替え。

---

## **2. FlexibleとExpandedの使い方**

`Flexible`や`Expanded`を使うと、親ウィジェットのスペースを効率的に分割できます。

### **例: Flexible**

`Flexible`は子ウィジェットがスペースを占有する比率を調整します。

```dart
@override
Widget build(BuildContext context) {
  return Row(
    children: [
      Flexible(
        flex: 1,
        child: Container(color: Colors.red),
      ),
      Flexible(
        flex: 2,
        child: Container(color: Colors.green),
      ),
    ],
  );
}
```

- **flex**: スペースを分割する比率を指定。

### **例: Expanded**

`Expanded`は、利用可能なスペースをすべて埋めるように子ウィジェットを拡張します。

```dart
@override
Widget build(BuildContext context) {
  return Column(
    children: [
      Expanded(
        child: Container(color: Colors.blue),
      ),
      Expanded(
        child: Container(color: Colors.yellow),
      ),
    ],
  );
}
```

---

## **3. デバイスの向きに応じたレイアウト変更**

画面の向き（縦向き・横向き）に応じて、異なるレイアウトを実現できます。

### **OrientationBuilderの使用**

`OrientationBuilder`を使うと、向きによってレイアウトを変更できます。

```dart
@override
Widget build(BuildContext context) {
  return OrientationBuilder(
    builder: (context, orientation) {
      return orientation == Orientation.portrait
          ? Column(
              children: [
                Container(height: 100, color: Colors.blue),
                Container(height: 100, color: Colors.green),
              ],
            )
          : Row(
              children: [
                Container(width: 100, color: Colors.blue),
                Container(width: 100, color: Colors.green),
              ],
            );
    },
  );
}
```

---

## **まとめ**

Flutterでは、以下の手法を組み合わせることでレスポンシブUIを簡単に実現できます。

1. **MediaQuery**を使って画面サイズに応じたデザインを作成。
2. **Flexible**や**Expanded**で柔軟なレイアウトを構築。
3. **OrientationBuilder**を活用して、デバイスの向きに応じたUI変更。

これらを使いこなせば、さまざまなデバイスに対応するアプリが作れるようになります。ぜひ試してみてください！
【ごっこ】なりきり"Teslaのボイスアシスタント"で、お墓参りから、バーで葉巻を吸う1日を完全自動運転してもらいました【声でつながるAIとの対談】【動画 11分16秒】【YouTubeチャンネルからの転記です】

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

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

こちらが動画内容です👇

***

![99 サムネイル 【ごっこ】なりきり_Teslaのボイスアシスタント_で、お墓参りから、バーで葉巻を吸う1日を完全自動運転してもらいました【声でつながるAIとの対談】【動画 11分16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386308/bbd1425d-f3a6-2f70-b6e9-22c1a4eb3f53.png)




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

<br>

* # 動画タイトル
    * 【ごっこ】なりきり"Teslaのボイスアシスタント"で、お墓参りから、バーで葉巻を吸う1日を完全自動運転してもらいました【声でつながるAIとの対談】【動画 11分16秒】

<br>

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

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

🔗中島聡　起業家・エンジニア「エンジニアとしての生き方」/ Voicy - 音声プラットフォーム
https://voicy.jp/channel/2627

今回の動画では、中島聡さんがVoicyでされている” #ChatGPTと対談 ”を真似してみました。


🤖今回の使用環境と技術仕様
・使用サービス: ChatGPT
・プラン: Team プラン
・使用モデル: GPT-4 Omni (GPT-4o)
・使用機能: Advanced Voice Mode (高度な音声モード)


💻📱実行プラットフォーム
・ChatGPT: iOS App (iPhoneを使用)
・Trello: Chromeブラウザ (Chromebookを使用)
・MindMeister: Chromeブラウザ (Chromebookを使用)


以下、YouTube Summary with ChatGPT & Claude( Chrome拡張機能 )で、目次と概要を自動生成しました。
https://bit.ly/yt-sum-Chatgpt-Claude


---


動画の目次( タイムスタンプ ):

00:00 - オープニング

00:22 - 企画の紹介: Teslaボイスアシスタントの情報提供

01:59 - 新宿から神奈川県戸塚区にある長福寺へのルート設定: 墓参りを計画

03:34 - 野毛: 餃子の三陽へ移動

04:21 - 渋谷: adidas Brand Center(アディダスブランドセンター)へ移動

04:44 - 葉巻を購入するためのシガーショップ探索

06:08 - 吉祥寺のバー ALBA(アルバ)でリラックスタイム

07:12 - 瞑想(シャバアーサナ)と、マントラとしてのボイスアシスタント活用

09:47 - 家に帰宅し、優しい声で起こされる

10:20 - エンディングと感想


---


動画の概要:

この動画では、Teslaのボイスアシスタントが日常生活をどれだけサポートできるのか、完全自動運転(FSD: Full Self-Driving)のシミュレーションを通じて体験してみました。

ボイスアシスタントの主な役割を、目的地へのルート案内や駐車場の選定、移動中のリラクゼーションサポートと想定してシミュレーションを実施しました。
さらには、お墓参りから、シガーショップの営業時間確認やバー選びまで、Teslaのアシスタントがどこまで対応できるのかを体験していただけます。

[主な内容]

1)Teslaボイスアシスタントの特徴説明

2)ルート設定と移動体験

3)ユニークな指示への対応

4)瞑想タイムのサポート

5)バーでのリラックスタイムを終えて、自動運転で帰宅

この動画を通じて、未来の移動体験がどのように変わっていくのか、その一端を感じていただけるでしょう。
また、Teslaのボイスアシスタントの新しい活用方法についてもヒントが得られるかもしれません。


---


✓ 🎥この動画と関連が強いわたしの動画 ↙
　・“効果的にChatGPTを活用するヒント”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghPfo1c-qmO2ERD7ldSgmblR


　・“中島聡さんの有償メルマガ「週刊 Life is Beautiful」からの学び”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghNvH1-0rrCXIqyAGfS7OTWS


　・“効果的にTrello( トレロ )を活用するヒント”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghOSQ6yPHmqIJDID8qzXvCkL


　・“時間をかけずに効果的な「プレゼンテーションをする」「資料を作る」ヒント”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghN6iYl74YGhDZWNFiIHK5-c


　・“効果的に音声認識入力を活用するヒント”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghOXLLdKCeAncUWQfmKuh8SJ


　・“デモ・マニュアル動画”シリーズ
　https://www.youtube.com/playlist?list=PLpQhBHT4oghMJJv4wKFZDT03S2qmL2pkR


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


✓ 🎥Shortened URL for this video | この動画の短縮URL ↙
　https://bit.ly/4g45BQf
GUDドライバを使ってESP32-S3-DEVKITCでLinux用USB接続2.8インチミニサブディスプレイ

## はじめに
　Raspberry pi picoとPimoroni Pico DisplayからGUDドライバ対応のミニサブディスプレイを作成しました。レポジトリ内を探索していると、ISSUESに興味深い書き込みがありました。
　ili9340用コントローラを搭載したLCDとESP32-S3でもミニサブディスプレイを作成できたとの情報です。pico-gudを移植していて、表示データが多いとクラッシュするので、解決するためのアドバイスを求めています。実際に、どのように動作するのか、ためしてみました。
　本稿には、「LILO&東海道らぐオフラインミーティング 2024-01-28」の発表内容を含みます。
 
https://lilo.connpass.com/event/306590/

## ESP32-S3
　特徴として、OTG（On-The-Go）及びCDC（Communications Device Class）のサポートがあります。このサポートのおかげで、USB接続で利用できるガジェットとして使えます。

https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32s3/esp32-s3-usb-otg/index.html

　私は、Freenove-カメラボードESP32-S3-WROOMを利用しました。
## アプリケーションのビルド
　アプリケーションのビルド法は、レポジトリに記載されています。

https://github.com/affbotics/esp32-usb-monitor

 私はUbuntsu環境で行いましたので、LinuxとMacOS用の手順に従いました。

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-macos-setup.html

 その後、githubのレポジトリをクローンして、README.mdどおりに、対象ボードへの設定、ビルド、ボードへの書き込みを行います。
## 配線
　ここでは、「Freenove-カメラボードESP32-S3-WROOM」を利用する際の注意点を記します。
　レポジトリのREADME.mdの9番目の項目には、以下の表に示すように、USBケーブルとGPIO端子の接続方法が記載されています。
|TFT LCD Connection |ESP32-S3 GPIO |
|-------------------|--------------|
|SCK	|GPIO 7 |
|SDI (MOSI)	|GPIO 6 |
|CS	|GPIO 11 |
|DC	|GPIO 12 |
|Reset	|GPIO 47 |
|Backlight	|GPIO 48 |
|USB D-	|GPIO 19 |
|USB D+	|GPIO 20 |

今回使用しているボードには、USB-OTG用のUSB C端子がありますので、GPIO19とGPIO20に配線せずに、このUSB C端子を使って、Linuxマシンに接続します。
　LCDの接続は、上記の表に従って行います。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693019/b6fe37e7-c60e-99bf-618c-f369513ddf5b.png)

UbuntuのSettingsからDisplaysを表示すると、私のLinuxマシン上では、「WAT 3”」と表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693019/c3bdb958-5ecc-928e-662c-3b7388b67c6e.png)

 
## おわりに
ESP32-S3とLCDの組み合わせで、Linuxマシン用のUSB接続サブディスプレイを作成しました。
　ESP32-S3搭載のボードにはあらかじめ、LCDが接続されているボードもありますので、そのようなボードを使うと、コンパクトにまとまったサブディスプレイを作成できるかと思います。
　7インチぐらいの液晶付きのものがあると、実用度が上がると想像しています。
フロントエンド初級者なりの狭く深く技術を深掘りする方法

# 日本CTO協会24卒 Advent Calendar
日本CTO協会24卒初のAdvent Calendar記念すべき初日です。日本CTO協会24卒では毎月1回輪読会を開催しています。

輪読会では読んでみたい本や議論したい本をピックアップし、講義形式で説明しながら疑問点があったら質問や議論をするというようなスタイルです(1回1時間〜1時間半くらい)。Advent Calendar最終日に輪読会を振り返る記事が投稿予定なので、お楽しみに。

初日ということで色々語りましたが、実は私は日本CTO協会に(まだ)加入していないです。日本CTO協会24卒には若手エンジニアLT会で知り合った[yuhi](https://x.com/yuhi_junior)君が招待してくれました。どこかでちゃんと加入します。多分。

# はじめに
新卒1年目でwebフロントエンドの開発をしています。入社間もないころ、「新卒はいきなり全部を知ろうとせずにまずは狭く深くやっていけ」みたいなことを言われた経験はエンジニアに限らず皆さんあると思います。

その理論はわかっていたとしても、じゃあ実際の業務を通してでどうやって狭く深く、つまり何かしらの技術に対して狭く深く知識をつけていけばいいのか？と特に経験のない人は思うのではないでしょうか。


この記事では、業務を通じてどうやって技術に対して深堀りをしていけばよいのか、私なりに考えて見つけた方法を共有していきます。

# 対象読者
新卒入社前もしくは新卒1,2年目のエンジニア
初心者からどうやって技術の深堀りをしていけばよいのかわからない方

# 入社時の私の経験値
プログラミング経験は2年ほど。独学で主にPythonをやっていて、プログラミングがどういうものかはわかっていてなんとなく書ける程度。

Webフロントエンドの経験は内定者インターンでちょこっとやった。TypeScript/Reactの基礎を勉強して、ちょっとロジックが複雑な機能は書けないけど簡単なコンポーネントなら自力で書けるくらい。

# 深掘りする方法
何かしらのタスクが与えられたとします。ここでは「モーダルを作成する」というタスクを例にしてみましょう。


モーダルの作り方をネットで調べたり、プロジェクト内の既存のコンポーネントに似た実装がないかを調べたりして、どんな流れで作れば良いのかがイメージできた状態とします。

この状態で「**Perplexity AIにモーダルを作る際の注意点を聞く**」ということをします(実際にコードを書き始めてある程度形ができてからでもいいですし、書き始める前でもよいです)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3194838/87e36e0f-0f5c-57f7-f9ed-ed5c0e29eaf8.png)

すると、このようにリンク付きで色々列挙してくれます(画像は一部)。AIに聞かなくても普通にブラウザで検索するでもいいのですが、色んな角度から注意点とリンクをまとめて提示してくれるので個人的にはAIに聞く方が好きです。

これを見ると、「モーダルの外にフォーカスが移らないようにしないといけないのか」、「スクロールバーの挙動も考えないといけないのか」などなど、一回作ったことある人なら知ってるけど、最初はわからないようなことを色々教えてくれます。


AIが列挙してくれた注意点を参照のリンク先の記事を読んで、その中で疑問点があったら検索して…というように繰り返していくと、「モーダル」という一機能を実現するために必要な技術を深く知ることができます。また調べていくと
- divだけで作る
- dialogで作る
- popover属性を使う
- ライブラリを使用する
- divだけで作る場合、a11yの観点で何を意識しないといけないのか

というように、複数の実装方法や周辺知識を知ることができます。


これを色んなタスクごとにやっていくと、狭く深い知識がどこかで繋がり、広くて深い知識になっていきます。この方法で私はフロントエンドにちょっとずつ詳しくなっていきました。

この方法の副産物として、お気に入りの企業の技術ブログが見つかるというのがあります。私はhttps://ics.media/ がお気に入りです。こういった技術ブログの中から業務に関係ないけど気になる記事があったら読んでみて、その中でまた気になる箇所があったら調べて…というように業務起点ではない技術の深堀りができるようになります。

以上のようにして、私は業務を通して狭く深く技術を深堀りしていっています。

# 番外編：普段のキャッチアップ
日常的にはXでキャッチアップしています。フロントエンド界隈の有名な方を片っ端からフォローして、流れてきた記事をchromeのタブで開いておき時間があるときに読んでみる、ということをしています。面白い記事があったら社内のフロントエンドの知見共有チャンネルに投稿しています。


あとは、ZennやQiitaでReactなどのカテゴリで調べて最近話題の記事を読むということもちょこちょこしています。最初は「業務で関連しそうなもの」というように明確な目的を持って調べていましたが、それだと知識が広がりにくいので上記のキャッチアップをして少しずつ自分の知識領域を広げていってます。

# おわりに
この記事ではPerplexity AIを使った初心者なりの技術の深堀り方法を紹介しました。みなさんもぜひ試してみてください！他にも良い知識の広げ方・深め方があれば教えてください！