OmniAICreator/Qiita-1.07M huggingface dataset:
アリババクラウドマーケットプレイス上で新しいGTM機能が発売 - ソリューションエクスプロレーションポータル

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/new-gtm-capability-launch-on-alibaba-cloud-marketplace---solution-exploration-portal_601848?spm=a2c65.11461433.0.0.4ee35355ZBZhi2)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

## ISVチームによる新機能のご紹介
### 解決方案探索ポータルでビジネスの存在感を強化しましょう！

当ISVチームは、プレミアムおよびイノベーションISVパートナー向けに、新しい特長である「解決方案探索ポータル」を提供し、ビジネスの可視性を向上させる機会をご提供いたします。セラー・ポータル内での必要な情報を記入することで、ISVは手軽に専用の解決方案ページを作成し、アリババクラウドマーケットプレイス上で紹介することができます。この自動生成プロセスにより、解決方案ページ作成時の時間を大幅に短縮し、手間を節約できます。構造が整ったプロフェッショナルなページでは、製品の価値を効果的に伝えることで、より高いエンゲージメントと販売成長の可能性が生まれます。

### ISV向け戦略的メリット

成長段階に応じたISVのニーズに合わせた様々な戦略的利益をご提供しています。以下の図でそれぞれのISVレベルが対象となるメリットを要約しています。詳細については、[こちら](https://www.alibabacloud.com/marketplace/isv#J_1419079540)をご覧ください。

![ISV戦略的メリット](https://yqintl.alicdn.com/4958176e97bb2641588a62b9f2cd3b07537ef58f.png)

### 提供されるサービスの概要

- **使いやすいインターフェース:** セラー・ポータル内で簡単なフォームに入力するだけで、あなたの解決方案に関する情報が登録できます。
- **包括的な情報:** 基本情報、特徴的な解決方案のハイライトと価値、顧客事例を含む詳細なページ構成。
- **プロフェッショナルなページレイアウト:** 商品の価値を明確に伝えるように設計された 页面構成。
- **時間と労力の削減:** 解決方案ページの作成にかかる時間を大幅に短縮。
- **エンゲージメント向上:** クリアで簡潔なプレゼンテーションを通じて、顧客とのエンゲージメントを高める。
- **販売増加の可能性:** アリババクラウドマーケットプレイスでの展示を通じて、潜在的な販売増加を促進。

### 今すぐ始めましょう！簡単3ステップ

1. アリババクラウドマーケットプレイスアカウントにログインします。
2. [セラー・ポータル](https://marketplace.alibabacloud.com/msp)にアクセスし、左側のナビゲーションバーから「Go To Marketing」を選択し、「[解決方案セットアップ](https://marketplace.alibabacloud.com/msp?pageKey=solution)」をクリックしてください。
3. 必要な情報を入力し、解決方案ページを審査依頼後、残りは私たちがサポートいたします。

![ステップバイステップガイド](https://yqintl.alicdn.com/de930b4b1f48afc6d9a033c0f766b2ef827f7bac.png)

### 解決方案ページの作成方法

#### ステップ1: 情報フォームの記入

1. 解決方案の数を選択。
   - **1つだけの解決方案がある場合:** 
     - 基本情報を入力。
     ![基本情報](https://yqintl.alicdn.com/bac0d1e36403fc8f7e12ab41539ea6258d3e3ae2.jpeg)
     - 解決方案のハイライトと価値を記述。
     ![ハイライトと価値](https://yqintl.alicdn.com/7aab4a245d957e45f83cf4d272fd4c20413ff6e7.jpeg)
     - 解決方案のアーキテクチャを示す。
     ![アーキテクチャ](https://yqintl.alicdn.com/e484fa3ebbe527f404ba213dd413b471ef169fbd.jpeg)
     - 顧客事例を提供。
     ![顧客事例](https://yqintl.alicdn.com/28334d00e75cf48cd1e3856464777eb1b5068227.jpeg)
   - **複数の解決方案がある場合:** 
     - 同様に基本情報、選ばれる解決方案のハイライトと価値、顧客事例を入力します。

#### ステップ2: 全ての項目を完了したら、プレビューしてから提出してください。

![プレビューと提出](https://yqintl.alicdn.com/cb21b621e1bbd395e2172baede5521a6078aecd8.png)

#### ステップ3: 提出後、PR、法務、マーケットプレイス運用チームによって内部審査が行われます。承認されると、自動的にマーケットプレイスプラットフォームに掲載されます。

![解決方案ページのプレビュー](https://yqintl.alicdn.com/cffc71cea0aa7a34afade824ad7c6b98880b7f01.png)

### 解決方案の向上を目指すあなたへ

今日から始めてみませんか？[セラー・ポータル](https://marketplace.alibabacloud.com/msp?pageKey=solution)にアクセスし、解決方案ページを設定し、広いリーチ、向上した可視性、効率的な販売・マーケティングの恩恵を受けましょう！
Hypermedia Systemsを読んで

# はじめに

こんにちは、Gakken Leap のフロントエンドエンジニアの日下です。

みなさんは htmx をご存知でしょうか。HTML の属性を拡張し、マルチページアプリケーション（MPA）に Javascript を書かずに SPA のような動的な振る舞いをさせることができるライブラリです。

どうやら海外のフロントエンド界隈で人気とのことなのですが、あまり日本では流行っている感じはしません。なぜ人気なのかを調査するため、ライブラリ製作者の書いたオンラインブック「[Hypermedia Systems](https://hypermedia.systems/)」を読みました。

この記事では Hypermedia Systems を読んだ所感を共有したいと思います。

# Hypermedia Systems とは？

語弊はあるかもしれませんが、 Rails 等で作られた昔ながらの MPA をイメージしてもらえれば、それが Hypermedia System です。

ハイパーメディアドリブンなアプリケーションは、HTML を返すサーバーがあり、クライアントはデータをどのように扱うかについての知識を持ちません。

上記の特徴は SPA とは対照的です。SPA では JSON を返すサーバーがあり、クライアントはどのようにデータを活用し画面を更新するかという責務を負います。

SPA は動的な UI を容易に作ることができますが、上記のようにアプリケーションのコードがフロントエンドとバックエンドで分断されることにより、複雑性が上がるという問題点があります。

著者は htmx を活用し、ハイパーメディアドリブンな開発を行うことでアプリケーションをシンプルに保ったまま動的な UI が作れると主張します。

# htmx について

htmx は、HTML 属性を拡張することで、追加の JavaScript を書くことなく動的なウェブアプリケーションを構築できるライブラリです。

## 基本的な仕組み

htmx の特徴は、HTML 属性を通じて非同期リクエストを簡単に実装できることです。以下は典型的な例です：

```html
<button hx-post="/click" hx-target="#result">Click Me</button>
```

このボタンをクリックすると：

- `/click` エンドポイントに POST リクエストを送信
- レスポンスを `#result` 要素に自動的に挿入

上記が Javascript を書かずに実現できます。

## 主な属性

主に以下のような属性があります。

- hx-get, hx-post, hx-put, hx-delete 等、HTTP メソッドに対応した属性
- hx-target、更新する要素を指定する属性
- hx-swap、要素の更新方法をカスタマイズする属性
- hx-trigger、イベントをトリガーとして非同期リクエストを送信する属性
- hx-validate、フォーム入力のインラインバリデーションを実現する属性
- hx-include、追加のフォームデータをリクエストに含める属性

## メリット

- シンプルな実装
- 学習コストの低さ
- パフォーマンスの向上
- サーバーサイドテンプレートとの相性が良い

## デメリット

- 複雑な状態管理が必要なアプリには向かない
  - 例：表計算ソフトのようにセルを更新すると他のセルも自動で変わるような副作用が激しいアプリケーション
- クライアントサイドの柔軟性が低い

# 所感

## デベロッパーエクスペリエンスの観点から

htmx と Hypermedia Systems の考え方は、SPA に慣れ親しんだフロントエンドエンジニアの開発体験を根本的に変える可能性を秘めています。

従来の SPA アーキテクチャでは避けられなかった複雑性を、シンプルな方法で解決できるアプローチです。

モダンな UI/UX を作るためのフロントエンドの学習コストは年を追うことに増していて、ライブラリやフレームワークの全て理解して追いかけ続けるのはとても困難です。

Javascript 疲れという言葉があるようですが、一開発者として共感でき、htmx は魅力的なアプローチに見えました。

htmx を使う方法だと html ベースなので学習コストが低く、メンテナンスが比較的容易なのも嬉しい点です。

## 実際の導入を考えると

ただし、すべてのプロジェクトで即座に htmx に移行できるわけではありません。
特に toC アプリのように UI/UX が重視され、高度なインタラクティビティが求められるアプリケーションだとまだ SPA に軍配が上がるかなと感じます。

htmx を以下のようなケースで特に有効だと考えています：

- 比較的シンプルな業務アプリケーション
- サーバーサイドテンプレートを使用している既存プロジェクト
- パフォーマンスと開発効率を重視するプロジェクト
- 小さなチーム

弊社でも toC 向けのアプリでは SPA を使っていますが、社内向けのシステムでは Hotwire という htmx に似た技術で MPA の UI 改善を行なっています。

# まとめ

昨今のフロントエンドの潮流を見ていると、複雑性をいかに低減するかということが大きなテーマになっているなと感じます。
Hypermedia Systems の考え方は、複雑性低減のためのフロントエンド開発の新しい（というより、古くて新しい）アプローチを提示しています。
htmx は、その選択肢の一つとして、十分に検討する価値のあるライブラリだと思います。

# エンジニア募集中

Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています！！
ぜひお気軽にカジュアル面談へお越しください！！

https://gakken-leap.co.jp/recruit/
Open Source Summit 2024 参加レポート

# Open Source Summit Japan 2024に参加してきました

## イベント概要
Open Source Summit Japanは、オープンソースに関わる知識を共有するLinux Foundation主催の国際的なイベントです。同様のイベントに北米開催のOpen Source Summit NA（North America）、欧州開催のOpen Source Summit EUがあり、日本では例年、"Open Compliance Summit"とあわせて開催されています。

- イベント名：[Open Source Summit Japan 2024](https://events.linuxfoundation.org/open-source-summit-japan/)
- 開催期間：2024年10月28日から10月29日の2日間にかけて開催されました。例年は12月開催ですので、今年は少し早めです。
- 開催形式：東京会場での現地開催です。当日は基調講演のみストリーミング配信で視聴可能でした。なお講演はすべて英語です。
- 費用：筆者は375USDでした（早割あり）。支払い方法はクレジットカード払いのみですのでご注意ください。
- 申し込み方法：前述のイベントHPから参加申し込みが可能です。

## イベント当日の様子
虎ノ門ヒルズのフロアを貸し切って開催されました。入退室は自由で、各セッションの聴講予約などは不要。受付を済ませたら好きなセッションに足を運びます。ただし音楽フェスのように複数のセッションが複数の会議室で同時開催されるため、聴講したいセッションが重複してしまうこともしばしば。スケジューラアプリもイベントHPから案内されていますので、事前にチェックしておくと当日迷わずに済みます（※）。

オープンソースのエコシステムに関する著名人やリーダ企業が一堂に会する場とあって、会場内は非常に国際色豊か。軽食を楽しめるスペースも併設されており、各セッションの合間には参加者同士の活発なコミュニケーションが交わされていました。参加者の多くは技術者や企業のマネジメント層の方々ですので、雰囲気としては自由闊達でオープン。知人間のつながりから知己を得ることもあれば、普段オンラインで議論している方々と実際に顔を合わせる久しぶりの機会にもなり、非常に盛況でした。

※後日Youtube上で[各セッションの録画データ](https://www.youtube.com/playlist?list=PLbzoR-pLrL6pgeachoWRgxjGjIOz6WOCE)が公開されました（なんと104本）。大変有難いです。

### 基調講演
各方面の著名人より、2024年におけるオープンソースの主な出来事の総括や活動報告、展望の共有がありました。

個人的にとても印象に残ったのは、Linux FoundationのExecutive Directorである[Jim Zemlinさんによる基調講演](https://www.youtube.com/watch?v=JJGmSKUb7RQ&list=PLbzoR-pLrL6pgeachoWRgxjGjIOz6WOCE&index=40)。記憶に新しいLinux Kernelコミュニティにおけるメンテナー問題やxz-utilsのバックドアの一件、生成AIのエコシステムに関する展望など、まさに2024年のオープソースの出来事を締め括る講演でした。

### 各セッション
今年も100近いのセッションが行われました。主なテーマは下記の通り。

- AI_dev
- Automotive Linux Summit
- CloudOpen
- ContainerCon
- Critical Software Summit
- Embedded IoT Summit
- LinuxCon
- Open Source Leadership Summit
- Operations Management Summit
- OSPOCon
- SupplyChainSecurityCon


　※当日のスケジュールは[こちら](https://ossaidevjapan24.sched.com/)。資料が公開されているセッションもあります。

## 参加を終えて
今年も相変わらずの活況でした。イベント自体が講演者や他の参加者とのネットワークづくりを支援するよう設計されている（休憩スペースの併設や各セッションのスケジューリングへの配慮など）ので、単なる聴講の場に留まらず、他業種他業界のオープンソースコンプライアンスを担うさまざまな方々と直接議論し、理解を深める場となっていました。Open Source Summit Japanは日本で開催されるオープンソースに関わる国際的なイベントとしては最大級ですので、ご興味のある方はぜひ来年ご参加されてはいかがでしょうか。

なお本イベントへの申し込みは直前でも可能ですが、登録情報が反映されるまで若干時間がかかってしまう場合もあるので、余裕をもって申し込んでおくことをおすすめします。
AWS Lexのサンプル発話で中括弧を使いたい場合の対処法

# はじめに
Lexのサンプル発話において、`{}`中括弧が含まれる文言を登録すると、ビルド時にスロット未定義のエラーが発生します。本記事ではこのような場合の対処法について記載します。

# やりたい事
`{}`中括弧つきの文言をLexのサンプル発話に登録しておき、この文言が入力された際に対象のインテントが選択されるようにしたい。


# 事象

Lexのインテント > サンプル発話（Sample utterances） > に中括弧つきの下記の文言を入力 > Save intent でインテントを保存 > Build にエラー発生。

```:Sample utterances
{サンプルテキスト}
```

```:エラー文言
The slot name 'サンプルテキスト' in utterance '{サンプルテキスト}' for Intent 'test_intent' isn't valid. The slot name doesn't exist. Update the utterance or create a slot named 'サンプルテキスト' and try your request again.
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/0c123ef5-fe6e-945e-8509-b19f8d40337d.png)


# 結論
カスタムスロットに`{}`のつく文言を登録し、この `type` のスロットを対象のインテントで作成します。これをサンプル発話に登録することで対応できます。

# 環境
Lex V2

# 対処法

## 1.カスタムスロットの作成
1.Lexのカスタムスロットを新規作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/2b2e2eb4-aeb5-f3e4-fa6b-7d4710e1e798.png)


2.Value欄に `{サンプルテキスト}` を登録し保存

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/ce5f4e73-d5de-3716-c1b1-8542011f722e.png)


# 2.インテントの作成
## 2.1スロットの追加

1.「Add slot」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/a5f6c415-8e27-c808-a84d-b17b59fdf0f3.png)


2.作成したカスタムスロットタイプを選択

事前に作成しておいたカスタムスロットの `type` を選択して他は任意の値でスロットを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/8e31bd15-2fac-328e-5975-423f4a9b2226.png)

## 2.2サンプル発話にスロットを追加
作成したスロットをサンプル発話に登録します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/68e95422-3291-24bb-6a85-8455251fad18.png)


## 2.3ビルド
インテントを保存しBuild ボタンを押下してビルドを実行。

# 3. 動作確認
ビルドが成功したらLexのTestタブからテスト入力してみます。
下記の文言を入力してみます。
```
{サンプルテキスト}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/efd8c36d-f67c-03ab-cbb6-bb23c61fce21.png)


想定通りのインテントが選択されている事を確認できました。

```:結果
Intent test_intent is fulfilled
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/d4c0d025-d059-a38e-91a8-4fb520b87002.png)

試しに別の文言を入力してみます。
```
ほげほげ
fugafuga
```

これらの文言では `FallbackIntent` が選択されたことを確認できました。

```
Intent FallbackIntent is fulfilled
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/03f1068c-d155-dda6-f275-9a3940d73cbd.png)
【ChatGPT】異分野・異概念を探索するPromptです。


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

　今回は、異分野・異概念を探索するPromptです。

:::note info
本記事は、ChatGPT（Plus版）
で行なっております。

画像はありません。あしからず。
:::
　ChatGPT等の動作状況を知らせる
　　OpenAIのステータスページ。
　　　[OpenAIステータス](https://status.openai.com/)
***
　まずは、ニュースです。

　ChatGPTのプロジェクト機能ですが、
　　OpenAI o1セッション新規作成も
　　　可能になりました。

　やり方は、
　　プロジェクトを開き、
　　　プロジェクト名の下にある
　　　　モデル選択メニューから
　　　　　モデルを選ぶだけです。

　なお、
　　Custom instructionsは
　　　OpenAI o1には適応しない
　　　　らしいです。

　　GPTとは
　　　別系統ですからね。

　[しょーてぃーさんポスト](https://x.com/shoty_k2/status/1868241761749139946?t=6IJdDCHFCxq343mTVCj9LQ&s=19)
***
　さて、【本題】です。

　今回は、
　　概念空間を自由に横断し、
　　　異分野・異概念のつながりを
　　　　探索するPromptです。

　木内さんがポストしてくれた
　　推論モデルの力を
　　　引き出すためのPrompt。
　　　　[木内翔大さんポスト](https://x.com/shota7180/status/1868438728760496393?t=lC-dJGp2Hslx5UKHyGaAqQ&s=19)

　これらは
　　単体で使用するものですが、
　　　まとめてやれるように
　　　　Promptを作成しました。

　問題解決にはなりませんが、
　　問題をさまざまな思考方法で
　　　見てくれます。

　こちらが、そのPromptです。
　　＊＊＊に探求したい問題を
　　　記入して送信してください。
```Text:異分野・異概念を探索するPrompt
問題=「＊＊＊」

あなたのタスクは、与えられた問題について深く思考し、概念空間を横断しながら解決の可能性を探索することです。以下のガイドラインに従って思考を進めてください：

1. 問題を他の分野の視点から再解釈してください。
2. この問題を解決するために必要な新しい仮説を提案してください。
3. 問題を小さな要素に分解し、それぞれを独立して考慮してください。
4. 問題の解決において、予想される障害や制約を特定してください。
5. 制約を克服するための革新的なアプローチを提案してください。
6. 問題解決が社会や他分野に与える影響を考えてください。
7. 別の時間軸や状況でこの問題がどのように変化するかを想像してください。
8. 最後に、関連する分野や概念との新しいつながりを見つけ、統合的な解決策を考案してください。

このプロセスを順を追って実行し、思考を深めてください。
```

　総合的なまとめが必要ならば、
　　以下を使ってください。
```Text:総合的なまとめ出力Prompt
総合的にまとめてください。
```

　いろんな考え方があるのだな、と
　　感心しました。

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

　今回は、ここまで。
WindowsServerOSでSSL/TLSにおける脆弱な暗号化方式・ハッシュアルゴリズムでRC4を無効化する

## はじめに
- こちらの記事で紹介したように、**WindowsServerOSでもやんややんやセキュリティについて言われる**ので、対応したメモを残します。今回はRC4を無効化します

https://qiita.com/sattyo_domei/items/c10f27e8afdec956bc34

https://qiita.com/sattyo_domei/items/1d891cd0b0a2da36f67a

# 推奨されないRC4のS無効化(サーバサイド)
- 対象OS：WindowsServer2016/2019(2022もいけるはずですが、自己責任でお願いします)

- 以下レジストリ―キーを作成する
```
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Ciphers\RC4 128/128
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Ciphers\RC4 40/128
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Ciphers\RC4 56/128
```

- それぞれのキーで`"Enabled"`の`"dword"`の値を`"00000000"`に設定する

## 参考
- 基本はやっぱりMicrosoftの公式ドキュメント！

https://support.microsoft.com/ja-jp/help/2868725/microsoft-security-advisory-update-for-disabling-rc4
情シス：モーニングルーティーン

エンジニアとして働いて何年か経ちましたが、
改めて考えてみるとモーニングルーティーンが自分にあるなと思ったので共有します！
もし同じようなモーニングルーティーンがあれば教えていただけると嬉しいです！！


## モーニングルーティーン
### 1. [情シスSlack](https://corp-engr.jp/)巡回。障害情報収集。
情シスSlackで未読のものを確認し、主に障害情報を収集しています。
またそのほかにもHotなITニュースを確認したり、みなさんがアンテナを張っていることに対して軽く情報収集したりしています。
私は障害情報以外にもMicrosoft関係の製品の他社事例を見たりしています。

:::note info
情シスSlackとは
情シスのためのSlackコミュニティで、毎日様々な会社の環境情報や、障害情報など多岐にわたるカテゴリから情報を見つけることができます。
:::

### 2. ITニュースサイト閲覧

#### ITmedia

https://www.itmedia.co.jp/

個人的に一番見るサイトです。
IT関連のニュースが偏りなくまんべんなく記載されており、見やすいのでおすすめです。


#### Gigazine

https://gigazine.net/

情シスSlackでもよく見られている印象です。
ITmediaよりもちょっと俗っぽい印象。


#### Gizmodo

https://www.gizmodo.jp/

スマートフォン、コンピューター、家電などガジェットやテクノロジーに関する記事が多いサイトです。
ガジェットオタクにはたまらないと思います。

### 3. Microsoftのサービスの正常性見る
下記Learnにもあるように、Microsoft 365 管理センターの [サービス正常性] ページで確認することができます。
障害が起きていたら、社内に展開しています。

https://learn.microsoft.com/ja-jp/microsoft-365/enterprise/view-service-health?view=o365-worldwide

### 4. 使ってる製品の障害情報確認。（非公式のやつ）
非公式のサイトにはなりますが、下記のサイトで現在起こっている障害をリアルタイムで確認することができます。
自社で使っている製品の障害情報を確認しています。

https://downdetector.jp/?_gl=1*7sf0q*_up*MQ..*_ga*MTI4NzY3MzExMi4xNzMyNzgxODI4*_ga_0PZM58H213*MTczMjc4MTgyOC4xLjEuMTczMjc4MTg4Mi4wLjAuMA

### 5. メール確認
これはみなさんも実施されていることだと思うので割愛します。

### 6. ヘルプデスク対応
問い合わせが来ていることが多いので、簡単なものから対応してゆっくり頭の運動をしていきます。


----------------------------------------------------------------------------------------
私のモーニングルーティーンは上記の感じです！
朝は頭が回らないのでゆっくりスタートが基本です💦
みなさんもルーティーンもあれば教えてください！
kintone でフォームをダウンロードする PHP プログラム

kintone でフォーム（レイアウトとプロパティ）をダウンロードする PHP プログラムを作りました。前回記事の PHP 版です。

実行すると、
　　フォーム_レイアウト_123.txt
　　フォーム_プロパティ_123.txt
の2つのテキストファイルを作成します（数字は指定したアプリID）。

「sample.cybozu.com」や「UserName:YourPassWord」はお使いの環境に合わせて変更してください。

ダウンロードした JSON データを見やすい形式にしてファイル保存しています。JSON_UNESCAPED_UNICODE が無いと日本語文字が Unicode エスケープ表記で表示されてしまいます。JSON_UNESCAPED_SLASHES は「￥/>」を「/>」にするために指定しています。
　

```php:07_form_layout_properties.php
<?php
$appno = "123";
//$appno = "124";
//$appno = "125";
//$appno = "126";

$text = 'UserName:YourPassWord';

$option = array(
    'http'=>array(
        'method'=>"GET",
        'header'=>"Host: sample.cybozu.com:443\r\n" .
                  "X-Cybozu-Authorization: " . base64_encode($text) . "\r\n",
                  "Content-Type: application/json\r\n"
    )
);

$context = stream_context_create($option);

$response_layout = file_get_contents("https://sample.cybozu.com/k/v1/app/form/layout.json?app=" . $appno , false, $context);

if ($response_layout !== false) {
    $decodedJson = json_decode($response_layout, true);
    $prettyJson = json_encode($decodedJson, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
    file_put_contents("フォーム_レイアウト_" . $appno . ".txt", $prettyJson);
    echo "フォーム_レイアウト_" . $appno . ".txt\n";
} else {
    echo "データの取得に失敗しました。\n";
}

$response_properties = file_get_contents("https://sample.cybozu.com/k/v1/app/form/fields.json?app=" . $appno , false, $context);

if ($response_properties !== false) {
    $decodedJson = json_decode($response_properties, true);
    $prettyJson = json_encode($decodedJson, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
    file_put_contents("フォーム_プロパティ_" . $appno . ".txt", $prettyJson);
    echo "フォーム_プロパティ_" . $appno . ".txt\n";
} else {
    echo "データの取得に失敗しました。\n";
}
?>
```

　
以下は、「フォームの設計情報を取得する」のプログラムです。出力ファイルは、
　　フォーム_デザイン_123.txt
になります（数字は指定したアプリID）。フォームの設計情報には、レイアウトとプロパティの両方が含まれています。
　

```php:10_form_design.php
<?php
$appno = "123";
//$appno = "124";
//$appno = "125";
//$appno = "126";

$text = 'UserName:YourPassWord';

$option = array(
    'http'=>array(
        'method'=>"GET",
        'header'=>"Host: sample.cybozu.com:443\r\n" .
                  "X-Cybozu-Authorization: " . base64_encode($text) . "\r\n",
                  "Content-Type: application/json\r\n"
    )
);

$context = stream_context_create($option);

$response_design = file_get_contents("https://sample.cybozu.com/k/v1/form.json?app=" . $appno , false, $context);

if ($response_design !== false) {
    $decodedJson = json_decode($response_design, true);
    $prettyJson = json_encode($decodedJson, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
    file_put_contents("フォーム_デザイン_" . $appno . ".txt", $prettyJson);
    echo "フォーム_デザイン_" . $appno . ".txt\n";
} else {
    echo "データの取得に失敗しました。\n";
}
?>
```
稼働中サービスのAurora MySQLにインデックスを作成した体験談

# はじめに

この投稿は、アイスタイル [Advent Calendar 2024](https://qiita.com/advent-calendar/2024/istyle) の18日目の記事です。

アイスタイルのDBREグループに所属している新卒2年目のisomです :hatching_chick:

アイスタイルでは、さまざまなデータベースを活用していますが、その中の一つとしてAmazon Aurora MySQLを使用しています。

この記事では、稼働中のサービスにメンテナンス時間を設けることなく、Aurora MySQLにインデックスを追加した際の体験談を共有します。


# 過去のインデックスの作成の事例

以前、オンプレミスのMySQL環境（バージョン：8.0.23）で、メンテナンス時間を設けずにインデックスを追加した際に、**メタデータロック**が原因で障害が発生したことがありました。

当時はオンラインDDLを使用しているので、問題が起きないと考えていました。

しかし、本番でインデックス作成クエリを実行したところ、メタデータロックの取得時に、実行中の更新クエリーの完了をインデックス作成クエリが待ち、後続のクエリが全て実行待ち状態になる現象が発生してしまいました。その結果、30分ほどユーザーにサービスが提供できない状態が発生してしまいました。


そのため、今回は安全にインデックスの作成ができるように下記の対応を行いました。


# 今回の対応

障害を防ぐために以下の3つの対応を行いました。

## 1. lock_wait_timeout の設定

MySQLの設定において、`lock_wait_timeout` を設定することで、他のプロセスとロックが競合した際に、すぐにインデックスの追加クエリがエラーを返すように変更しました。これにより、ロック待ちのプロセスがシステム全体に影響を及ぼすリスクを軽減できました。
[※ドキュメント](https://dev.mysql.com/doc/refman/8.0/ja/server-system-variables.html#sysvar_lock_wait_timeout)

`lock_wait_timeout`のデフォルト値は、31536000秒で設定されています。
下記のクエリで現在の設定の確認ができます。
```SQL:lock_wait_timeoutの設定の確認
SHOW VARIABLES LIKE 'lock_wait_timeout';
```

今回はlock_wait_timeoutを1秒に変更して実行しました。

```SQL:lock_wait_timeoutの変更
SET SESSION lock_wait_timeout=1;
```
## 2. インデックス作成前にロックの確認
インデックスを作成前に下記のクエリを実行し、ロックがないかの確認をおこないました。
```SQL:ロックの確認
SELECT
ml.OBJECT_TYPE,
ml.OBJECT_SCHEMA,
ml.OBJECT_NAME,
ml.LOCK_TYPE,
ml.LOCK_DURATION,
ml.LOCK_STATUS,
ml.OWNER_THREAD_ID,
t.PROCESSLIST_ID
FROM
performance_schema.metadata_locks ml
JOIN performance_schema.threads t ON ml.OWNER_THREAD_ID = t.THREAD_ID
WHERE
ml.OBJECT_NAME = 'テーブル名' --テーブル名を記載
AND ml.LOCK_STATUS = 'GRANTED';
```

## 3. ステージ環境での検証

本番環境と同等の負荷を再現するために、ステージング環境で実際の読み書き負荷をシミュレーションしながら検証を実施しました。

- 事前に想定されるトラフィックを再現。
- メタデータロックの発生や他プロセスへの影響を確認。

これらの検証を通じて、安全にインデックスを追加できることを確認し、本番環境で実行しました。

# 本番環境でインデックス作成した結果

下記が実際に本番環境で作成した際の結果となります。

### サーバ構成
インスタンスクラス：db.r6g.xlarge
台数：更新系1台、参照系1台


### 作成時間
| テーブル名 | 行数 | 秒数 |
|:-:|:-:|:-:|
| Aテーブル  | 21,249,957行 | 3分48秒  |
| Bテーブル | 43,959,517行  | 4分45秒 |
|  Cテーブル |  64,185,737行 | 7分16秒  |

### メトリクス

#### CPUUtilization
![2024-12-16-16-50-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651971/6c6a9311-bbd9-6a4d-189a-3da81cf2bffb.png)



#### WriteLatency
![2024-12-16-16-57-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651971/83434bf7-02d9-3c61-e93f-60bd5b26ef26.png)


#### WriteIOPS
![2024-12-16-16-59-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651971/5d435d99-fa80-3ff4-2038-11d837f19d92.png)



#### ReadIOPS
![2024-12-16-16-52-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651971/f520f11d-91c5-bc9d-6486-1dedb3574ffb.png)


# まとめ
上記の対応を経て、サービスを停止することなく本番環境でインデックスの追加を無事に完了することができました。

最後まで読んでいただき、ありがとうございました！
この記事が、同じような課題に取り組む方々のお役に立てれば幸いです:sparkles:
"Failed to send CA Event for app launch measurements for ca_event_type~" や xcodeでのenergy impact がzeroになる場合の対処法

## はじめに
xcodeでの実機ビルドテストをしている場合に発生したエラー(警告⚠️)

```
Failed to send CA Event for app launch measurements for ca_event_type: 1 event_name: com.apple.app_launch_measurement.ExtendedLaunchMetrics
```
私の場合では、実機でのビルドは成功しているが実機のパフォーマンス状況の読み取りに一部問題があるため発生していた。



![スクリーンショット 2024-12-16 11.36.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875272/4cd7dc3f-5e11-0529-143a-71de92d95d41.png)



## 対処法について
・実機の再起動
・xcodeを開き上のメニューバーから product→ clean build folder を選択

上記の２つに取り組んだら警告は消えたが、根本的な解決ではないため場合によっては再度発生する。
ipadやmacを持ち出し、別のwifiに繋いだら発生するような気がする。
エラーではなく警告であるため、実機の操作性に影響する場合はほとんど無いかもしない。
prepend でクラスメソッドをオーバーライドする

# やりたいこと

[Module#prepend](https://docs.ruby-lang.org/ja/latest/method/Module/i/prepend.html) でクラスメソッドをオーバーライドしたい。

# 方法

クラスメソッドは [Class](https://docs.ruby-lang.org/ja/latest/class/Class.html) オブジェクトの特異クラス (singleton class) に定義されたメソッドなので、[Object#singleton_class](https://docs.ruby-lang.org/ja/latest/method/Object/i/singleton_class.html) を使って特異クラスに対して prepend すればよい。

```rb
class YoYo
end

YoYo.name
#=> "YoYo"

YoYo.singleton_class.prepend(
  Module.new do
    def name = "#{super()} 🪀"
  end
)

YoYo.name
#=> "YoYo 🪀"
```

# バージョン情報

```shell-session
$ ruby -v
ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [arm64-darwin24]
```
Python3.10.12で動作が保証できるnumpy/matplotlib/pandasのversionメモ

## 結論

numpy, matplotlib, pandasの依存関係が破壊された時のために安定して動いた時のversionをメモする

```sh
❯ pip3 freeze | grep -e matplot -e numpy -e pandas
matplotlib==3.5.0
matplotlib-inline==0.1.6
numpy==1.26.4
pandas==2.2.3
```

installするときには下記を叩く。

```
pip3 install matplotlib==3.5.0 matplotlib-inline==0.1.6 numpy==1.26.4 pandas==2.2.3
```
### 動作検証

ほんとうはサンプルをいろいろ動かすべきだが今の所それっぽく動くので一旦これでメモする。

```py
import pandas as pd
import numpy as np
import matplotlib as mt
```


### その他の調整memo（自分の環境でだけ必要だった可能性有）

```
 pip3 install numexpr==2.8.4 bottleneck==1.3.6
```
ホスピタリティを大切に

# **はじめに**
エンジニアという分野において、女性は未だ少数派であることが多い現実。
しかし、それだけに女性エンジニアたちは多くの可能性を秘めていると、ひしひしと感じます。
特に、キャリアを築いている女性にとって、その日々は挑戦の連続です。

# **女性エンジニアとしての道を歩む**
エンジニアリングの世界で女性が少数派であることは、時に孤独感や疎外感を伴います。
チームの中での意見が軽視されたり、プロジェクトにおける役割が限られたりする場面もありました。しかし、これを障害と捉えるか、挑戦と捉えるかは、自分次第です。
私も最初は、自分のアイデアが男性中心のチームで受け入れられるのが難しいと感じました。でも、データや成功事例を持ち込んで発言を強化することで、次第に信頼を得られるようになりました。どのような環境にせよ、他者の視点を理解し、共感を示すといった、ホスピタリティの精神が重要です。 意見を交わす際に相手の背景を尊重し、相手が求める情報を提供することで、建設的な対話が生まれます。

# **親の介護とキャリアの両立**
介護は時間やエネルギーを大きく消耗する一方で、キャリアも人生において重要な柱です。
親の健康状態や日常的なサポートを管理しながら、仕事で成果を上げる必要がある状況は、ストレスを伴います。
私自身、母親の介護が必要になったとき、大きな壁に直面しました。フルタイムのエンジニアとして働きながら、介護のための時間をどのように捻出するかが最大の課題でした。しかし、ここで助けとなったのは 「できることに集中し、不可能を嘆かない」 という考え方です。イギリスの物理学者スティーブン・ホーキング博士の「人生はできることに集中することであり、できないことを悔やむことではない」という言葉に強く心打たれ、とても大切にしています。

# **効率化とリソース活用の工夫**
介護と仕事を両立させるには、次のような実践が役立ちます。

:::note info
1.スケジュールの可視化
家族の予定や介護タスクを仕事の予定と同じレベルで管理しました。GoogleカレンダーやToDoリストアプリを活用して視覚化することで、スムーズな進行が可能になりました。
2.外部リソースの活用
地域の介護支援サービスや、信頼できる家事代行サービスを利用しました。これにより、限られた時間の中で自分の役割を軽減し、仕事への集中力を維持することができました。
3.リモートワークの選択肢
コロナ禍以降、リモートワークの選択肢が増えたことは非常に助けになりました。通勤時間を削減することで介護の時間を確保し、柔軟な働き方が可能になったのです。
:::
ホスピタリティの視点 から見れば、介護もまた「相手に安心と満足を与える行動」と捉えることができます。親の尊厳を守り、できる限りの快適さを提供する姿勢は、エンジニアリングにおけるユーザーファーストの精神にも通じるものがあります。

# **自分自身のケアを忘れない**
自分自身の健康や心の平穏を保つことも非常に重要です。長時間の業務や介護の負担で疲れ果ててしまうと、両方を続けることが難しくなります。
小さな「リフレッシュ」の実践として私は次のような小さな工夫を取り入れています。

:::note info
•朝5分間の瞑想でリセット
•週末の散歩やお気に入りの本を読む時間を確保
•親しい友人とのオンライン通話で息抜き
:::
これらは一見小さなことに思えますが、日々の心の安定に大きな影響を与えてくれました。「自分が満たされて初めて他者を満たせる」という考えに至ることができたのです。

# **女性エンジニアだからこそできること**
女性ならではの視点や経験は、業界に多角的な価値をもたらすと感じています。実際に、親の介護を通じて学んだ効率化や思いやりの精神は、チームワークやプロジェクトマネジメントにも役立っています。あるプロジェクトで、介護の経験を活かして「ユーザーの使いやすさ」に特化した製品設計を提案したところ、チームから高く評価された経験があります。介護者としての視点が、エンドユーザーへの深い共感を生み、より良い製品開発につながったのです。

# **未来の女性エンジニアへのメッセージ**
エンジニアリングの世界で求められるのは、問題解決能力だけでなく、人間性や共感力も含まれます。ホスピタリティの精神を持ちながら、自分自身と周囲を大切にし、仕事や家庭に全力で向き合うこと。それが、40歳の独身女性エンジニアとして、私が見出した「自分らしい生き方」の形です。
クラウドワークスに入社して感じたこと

:::note info
この記事は クラウドワークス グループ [Advent Calendar 2024](https://qiita.com/advent-calendar/2024/crowdworks) シリーズ2 の16日目の記事です。
:::

## はじめに
こんにちは。
クラウドワークスでデザイン基盤チームのフロントエンドエンジニアとして働いている @noraku と申します。
2024年10月中旬にjoinしましたのでまだ2か月ほどしか経っておりませんが、この間に感じたり、学んだことを書きたいと思います。

##  自分のこと
前職では5人ほどのフロントエンドエンジニアチームでリーダーをつとめておりました。それまではほぼプレイヤー、または単独での仕事が多かったため、チームマネジメントに関わらせてもらったのは前職が初めてでした。プレイヤーの時には知ることができなかった視点や、チームで成長するにはどうしたら良いか、エンジニアの生産性をどう可視化するかなど様々なことを学ばせていただき、自分のキャリアにおいてとても貴重な経験を積ませて頂きました。

## 入社後に感じたこと

### カルチャーについて

90日オンボーディングという会社のカルチャーを学ぶ仕組みがあります。
この仕組みがとても手厚く、自分がこの会社でどのように仕事をしていくかを想像しやすくなりましたし、実際日々の業務を進める上でも助けとなっています。また、クラウドワークスが経験してきた問題の解決方法や働き方の知恵がまとまっているソリューションブックというものがあるのですが、こちらを読むと会社が問題に直面した時にどのような考え方をし、どのような方向性をとって解決するかがよく理解できます。そのときにならないとわからないこともありますが、ある程度会社としての方向性がわかる、ということは心理的安全性につながると思います。

### サービスウォークスルー

サービスウォークスルーとは自分が担当するサービスの機能をスプレッドシートに沿って一通り体験し、感想や気になったところなどを体験記として執筆する取り組みです。
- 実施者は実装に入る前にサービスの機能をよく知ることができるし、実際にサービスを初めて使うユーザーの体験ができる。
- 読み手は体験記からサービスのどういったところに改善点や伸び代があるか知ることができる

といった形で実施者と読み手両方にメリットがあるものになっていて、すごくいい仕組みだなぁと感じました。

### 質問や発言がしやすい

朝会など全体でのイベントでもそうですが、色々なところでみんなが自主的にコメント、発言をしています。
なので疑問に思ったことや質問などをする際のハードルが低く、また必ず誰かが答えてくれるので安心感があります。
自分もよく真似しているのですが、実装中の進捗をスレッドにして書いたりもしています。
その中でつまづいている部分をぼやくと、通りすがった人がアドバイスをしてくれて解決することもあります。
自分のような新参者にとっては、自分が今何をやっていて、どこにつまづいているかを「報告」のような堅苦しい形式ではなく「つぶやき」として発信できるのはとても助かるなぁと感じています。また、それを見てくれる人がいるという安心感もあってとても作業がしやすいです。

### 今の業務に関して

現在はデザイン基盤チームというデザイナーとエンジニアが所属するチームでお仕事をしています。
主にUIコンポーネントライブラリを作成しているのですが、これまでは元々仕様や目的が決まっているコンポーネントを作成することが多かったのに対し、これから使われる想定の汎用的なコンポーネントの作成は考慮すべきことなどが全然違い、また違った難しさがあります。
しかしデザイナーが同じチームに所属していることで、デザイン面でのフィードバックや用意すべきパターン、アクセシビリティで考慮することなどを相談しやすく、実装面で「これもあった方がいいかもしれない」と思った時もすぐに連携ができ、とてもやりやすいと感じています。
フロントエンドにおいてデザイナーとの連携は切り離せないものなので、そのためにチームを横断しなくて良い、というのは非常に助かるなぁと実感しております。

## おわりに

以上が現在までに自分が感じたことになります。
まだ2か月しかたっていないということもあり、これから色々な経験をすることで、逆にマイナスに感じる部分なども出てくるだろうと思っていますが、不思議とクラウドワークスでなら乗り越えられそうだと思っています。
それは前述したカルチャーの背景だったり、現在関わらせていただいてる方々の人柄だったり色々な理由がありますが、総合して非常に恵まれた環境であることを感じているからです。この環境を活かし切れるかどうかはこれからの自分の頑張りにかかっていると思いますので、引き続き日々成長を心がけて進んでいきたいと思います。
OpenAI Embeddingの複数テキスト入力と埋め込み次元の削減

# はじめに
Embeddingはテキストをベクトルで表すことができる技術で、検索やレコメンドなどで活用されます。今回はOpenAIの[ドキュメント](https://platform.openai.com/docs/guides/embeddings)をもとに備忘録としてまとめます。

# OpenAIのEmbeddingの使い方
1. OpenAIの[API keys](https://platform.openai.com/settings/organization/api-keys)からAPI keyを取得します
1. 環境変数に`OPENAI_API_KEY`を設定します
1. OpenAIライブラリをインストールします
    ```
    pip install openai
    ```
1. Pythonで実装します
    ```
    from openai import OpenAI
    client = OpenAI()
    
    response = client.embeddings.create(
      input="Your text string goes here",
      model="text-embedding-3-small"
    )
    
    print(response.data[0].embedding)
    ```
テキストの最大トークン数は8192という制限があるので注意が必要です。

# 複数テキストの入力
`input`には複数のテキストを与えることができます。
```
response = client.embeddings.create(
    input=["input1", "input2", "input3"],
    model="text-embedding-3-small"
)
```
テキストの最大トークン数の制限はありますが、入力可能な最大件数はOpenAIのドキュメントには記載されていませんでした。そこで、試しに100文字の文字列を1000件入力してみましたが、4秒未満で実行が完了しました。恐らく内部でバッチ処理やメモリを考慮した切り分けがなされており、最大件数は気にする必要がないのではないかと勝手に解釈しています。（ただし、RPMやTPMといったリクエスト数やトークン数に関する制限は別途あるので注意が必要です。）

# 埋め込み次元の削減
埋め込み次元の削減により、費用削減や計算速度向上などの効果があります。例えば、検索システムでは埋め込み次元が大きいとベクトルストアの費用が高くなります。OpenAIのEmbeddingモデルの中では`text-embedding-3-small`と`text-embedding-3-large`が次元削減に対応しており、引数に`dimensions`を指定することができます。
```
response = client.embeddings.create(
    input="hello",
    model="text-embedding-3-large",
    dimensions=4
)
print(response) # [-0.9203252196311951, -0.2836061120033264, 0.14934176206588745, 0.22420111298561096]
```
これらのモデルの場合、`dimensions`は1以上3072以下を指定することができます。ただし上例のように4まで小さくすると品質が悪化してしまうため、128くらいが良いのではないかと思います。（[Matryoshka Representation Learning](https://arxiv.org/abs/2205.13147)という論文では、ここまで次元を小さくしてもそれほど性能悪化しないことが報告されています。）
ちなみに`text-embedding-ada-002`は埋め込み次元の削減に対応していないのでご注意ください。

# ドキュメントには実装例が豊富にある
OpenAIのEmbeddingsの[ドキュメント](https://platform.openai.com/docs/guides/embeddings)には「埋め込みベースの検索を使用した質問応答」「2Dでのデータ視覚化」「クラスタリング」など用途ごとの実装例が豊富に紹介されています。

# その他
### ノルム1に正規化されている
OpenAIのEmbeddingモデルはすべて、ベクトルの長さであるノルムが1に正規化されています。そのため、cos類似度と内積が一致します。

### カットオフは2021年9月まで
`text-embedding-3-small`と`text-embedding-3-large`は2021年9月までの情報を学習しています。それ以降の情報は上手く表現できないことがあります。
技術カンファレンスのススメ

:::note info
この記事は [クラウドワークス グループ Advent Calendar 2024](https://qiita.com/advent-calendar/2024/crowdworks) シーズン3の20日目の記事です。
:::

# はじめに
こんにちは。2024年11月からクラウドワークスグループへ参画した株式会社インゲートにて、バックエンドエンジニアとして働く@m-imamura0227です。

2024年現在、ITエンジニアとして働き始めておよそ10年近く経っているのですが、
今年になって初めて技術カンファレンスというものに参加しました。
(スピーカーとして登壇したわけではなく、一般参加者としての参加です)

具体的には、以下3つのカンファレンスに参加しました。
- [Developers Summit 2024 Summer](https://event.shoeisha.jp/devsumi/20240723) (以下、デブサミ)
- [Developers CAREER Boost 2024](https://event.shoeisha.jp/devboost/20241207)　(以下、デブキャリ)
- [JJUG CCC 2024 Fall](https://ccc2024fall.java-users.jp/) (以下、JJUG CCC)

いずれのカンファレンスも非常に楽しく、大変有意義なものでした。

技術カンファレンスに参加するまでは、「こういったカンファレンスは優秀な技術者の方々…いわゆる、"つよつよエンジニア"の方々が主に対象のものなんだろうな」と、なんとなく思っていました。
しかし、実際に参加してみて、決してそんなことはなかったと身をもって知ることができました。

そこでこの記事では、主に以下のような方々をターゲットに、
私が感じた「技術カンファレンスに参加することで得られるメリット」をまとめたいと思います。
- 技術カンファレンスに参加したことがない
- 興味はあるが、参加のハードルがなんとなく高そうだと感じている

技術カンファレンスに参加したことのない方がこの記事を読み、
心理的なハードルを下げて頂くとともに、少しでも興味を持っていただけたら幸いです。


## 課題解決のための知見を、当事者から直接得ることができる
過去に発生した課題や問題に対して、どのように対応したのか、
そのプロセスも含めた知見を当事者から直接聞くことが出来ました。

例えば、以下のようなお話が特に印象に残っています。
- 技術的負債へどのように立ち向かおうとしているか
- チームのエース的存在が抜けてしまった穴をどのように埋めたか
- 知見不足・開発メンバーのスキルばらつきをAI等を利用して解決した話

また、そういった現場で発生する課題や問題だけでなく、
社内教育や、エンジニアとしてのキャリアに関するお話を聞くことも出来ました。
具体的には、以下のようなお話が特に印象に残っています
- オブジェクト指向プログラミングの教え方・学び方
- 計画的偶発性理論に従った、キャリアの駆け上がり方
- 自分に使える時間が少なくなっていく人生における、マインドセットを持つことの重要性

カンファレンスで登壇されている方々は、皆さん優秀なエンジニアの方々ばかりです。
そういった方々から、ご自身の経験を通じて得られた知見を直接聞くことができるのは、非常にありがたいことだと思います。

また、こうした実例から、今まさに自身が直面している課題に対し、アプローチのヒントを得ることもできると思います。

## モチベーションがあがる
様々な技術の情報に触れられるので、スキルアップに対するモチベーションがあがります。
いずれのカンファレンスもとても盛り上がっており、
そういう熱気みたいなものを直に感じられるのも、モチベーションの向上に繋がると感じました。

カンファレンスには、終了後に懇親会が開かれているものもあります。
一般参加者同士はもちろん、スピーカーの方々とも交流できるため、非常によい刺激を得られると感じました。

## 様々なエンジニアの方々とコミュニケーションをとることができる
これまで述べましたとおり、スピーカーの方々は皆様非常に優秀なエンジニアの方ばかりですし、著名なエンジニアの方々も多数参加されております。
また、一般参加されている方々も、技術の話を聞いたり・話したりするのが好きな方々達です。
カンファレンスは、そういった方々と直接交流できる、非常に良い機会です。

それをきっかけに、何かしらのコラボレーションであったり、キャリア形成につなげられるかもしれません。

実際に弊社では、過去デブサミの懇親会をきっかけに知り合った他企業の方をお招きして(※)、弊社にて講演を実施頂くに至った事例もあります。
（※ 招致を実施してくださったのは私ではなく、同僚の方です）

私は正直人見知りですぐに話しかけに行けないタイプの人間ですが、
勇気を出して話しかけた方々は皆様大変よくしてくださいました。スピーカーの方と会話できたのも大変有意義でした。

## 計画的偶発性理論における、偶然の種をまく
突然ですが、計画的偶発性理論という言葉をご存知でしょうか。
内容の詳細に関してはこちらでは紹介しませんが、簡単にいうと
「キャリアを左右するようなチャンスは偶然にして訪れるが、そのチャンスが訪れるよう、自ら進んで行動する必要がある」
というのが自分のざっくりとした理解です。
（偉そうに言っていますが、自分も直近で参加した「デブキャリ」でこの言葉を知りました）

知見の獲得・視野の拡大・人脈作り…などなど、そういったことが一同に実現可能なこの技術カンファレンスという場は、まさに計画的偶発性理論における「チャンス」を迎え入れるための行動をとるのに、非常に有効な場だと感じました。

ここで一つだけ、実際にデブキャリで行われた講演の資料をご紹介させてください。
（一般に公開頂いている資料です）

計画的偶発性理論の話も交えつつ、エンジニアのキャリアについて、合同会社 Have Fun Tech代表の曽根 壮大さんが素晴らしい講演をされておりました。
ご興味ある方はぜひ一度ご覧になってみてください。

https://speakerdeck.com/soudai/career-anchor-drive

# 最後に

カンファレンスはとても楽しく、有意義な時間を過ごせます。
特に経験の浅い方や、若手の方にぜひ参加いただきたいと感じました。
必ず、色々な刺激を得られることと思います。

行ってみたいけど探すのが面倒だ、という方は、取り急ぎ2025年2月13日~14日に開かれる、デブサミこと、Developers Summitに足を運んでみてはいかがでしょうか？

- [Developers Summit 2025](https://event.shoeisha.jp/devsumi/20250213) 

デブサミはITエンジニア向けのカンファレンスの中でも最大規模のもので、
講演テーマも多岐にわたるので、興味のあるものが必ず一つはあると思います。

これを読んでくださった方が、少しでも技術カンファレンスに興味を持っていただき、
あわよくば、参加への第一歩を踏み出して頂けたらとても嬉しいです。

最後まで読んでいただきありがとうございました。
DELL Updating your firmware 0%のまま進行不能→解決した例

# 症状 
　DELL のデスクトップPCを再起動した際に、
「
Updating your firmware
⚠ Do not power down your system.
Flash Progress
0%
」
のような画面が現れ、一切動かない。
　電源ボタンを長押ししたりshift + 電源ボタンを押したりしても反応せず、コンセントをぶち抜いて5分経過後に再び接続しても同じ画面が表示される。

# 解決
　PCに接続されていたUSBを取り除いた。今回、原因だったUSBはtp-linkのbluetooth 5.0アダプターのようだ。

# 理由
　ファームウエア更新中にUSBデバイスが干渉していた可能性が高いと思います。特に今回はbluetooth機能を増設したようなものなので、本来のシステム構成と異なっていたのが原因だと考えられます。

# ひとこと
　調べてみると、この症状は他のDELL製PCでも頻繁に起こる問題らしい。
　DELLさん、ファームウエア更新中はusbとのシリアル通信を一度断ち切ってもいいのではないでしょうか。

### システム情報
システムモデル：　Optiplex 7010 SFF
OS： Windows11　Pro
BIOS モード：　UEFI
BIOS バージョン：　Dell Inc. 1.17.0, 2024/08/09 (解決後のもの)
マザーボード：　Intel Q77 Express/LGA1155
AWS Certified AI Practitioner（AIF）対策：PCA（主成分分析）

# PCA（主成分分析）

***<font color="MediumVioletRed">『データをシンプルにして理解しやすくするために使われる次元削減の手法』</font>***


- データを圧縮しつつ、そのデータが持つ主要な情報を残します。
- 多次元のデータをなるべく情報を失わないように低次元のデータに落とし込みます。

これにより、データ量を節約できるので計算を高速化でき、またデータが解釈しやすくなるというメリットがあリます。

### PCAを使って、りんごの特徴を分析した場合

**第1主成分**
- りんごの「サイズ」と「重量」に関する要素が強く反映
- りんごの大きさや重さの違いがデータの中で最も大きな分散を生む

**第2主成分**
- りんごの「色」
- 外見的な色の違いも、かなりのバリエーションを持つ特徴

**第3主成分**
- 「糖度」や「酸味」といった味の要素
- 消費者にとって重要ですが、サイズや色に比べてデータの分散に対する寄与は少ない

:::note info
PCA = Primary Component Analysis　
:::
今年リリースされた注目機能あれこれ

今年もあっという間に12月:coffee:

1年を振り返り、独断と偏見でBoxからリリースされた機能のうち、ハイライトをいくつかご紹介します！
まだ使ったことない！しらなかった！という方はぜひ確認してみてくださいね。新機能以外に既存の機能のUpdateもお伝えします！

# 新機能編
### <font color="red">Box AI　</font>
今年3月にEnterprise Plusプランをお使いのお客様へ正式リリースされました。現在（2024年12月）以下のような機能が提供されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620733/4ef3e826-9e04-1d34-180b-5284095cb7cf.png)


今後さらに機能が拡張されていきますので、チェックしてください:relaxed:

AIでいうと、Box for Slack でも実は生成AIの機能が24年から使えるようになりました！
#### 参照:Box AI for Slack
https://support.box.com/hc/ja/articles/30754152990099-Box-AI-for-Slack

利用条件がありますが、もし企業でBox（Enterprise Plusプラン）もSlackも契約しているよ！という場合には試してみてくださいね。弊社Box JapanもBox for Slackを愛用していますが、Slackでやり取りしたファイル（Boxに保存）に対して、生成AIへ要約やまとめをお願いするときに使っています



### <font color="red"> Box Hubs </font>
Box内に保存したファイルを探す時は皆さんどうしていますか？
ファイル名やフォルダ名で探す方が多いと思いますが、よく閲覧するファイルはコレクション機能を使ってピン止めしておくこともありますが、
##### 参照：コレクション機能　https://support.box.com/hc/ja/articles/360048730094　

Box Hubsを使うと、プロジェクト単位など目的に応じたサイトが作れるようになりました。こんな感じ↓

https://cloud.box.com/s/58o46qo67d6lgcteavfxed71r1dja0g0



Youtubeにも概要動画が公開されています。
よかったらご覧ください👀
https://youtu.be/gUJzV7QGxEk?si=CO3vAGobqka8JVt0


最後に、
Enterprise Plusプランを契約してないし、Box AIは使えないよーというそんなあなた、そして、Box Hubsはまだ社内で機能が解放されてないよーというそんなあなたもきっと使えるそんなUpdateを1つ紹介します。
### <font color="red">Box Noteの外部リンクのプレビュー</font>

BoxNote内にリンクを張ると、そのリンク先が、外部でも（例：YoutubeやGoogle Mapなど）、サムネイル表示できたり、動画をそのままBoxNoteで再生することが可能になりました。意外と？いや、とても便利です。
知らなかった方はぜひ使ってみてくださいね。

①Youtubeの動画共有リンクをBoxNoteへ貼り付けし、
「プレビューとして表示をクリック」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620733/18e4c8a0-ff4b-257f-3cb0-acf825481c64.png)


②BoxNote内からそのまま動画を再生可能（音量や速度調節ももちろん可）
![スクリーンショット 2024-12-16 110109.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620733/e8548054-34a3-7080-f0f3-38176f52e67b.png)



#### 参照：https://support.box.com/hc/ja/articles/33941543043731

※補足：Box内にある資料や動画のリンクをBoxNoteにはると、これまでも資料のトップページや動画のプレビューができました。

以上です
AWS Certified AI Practitioner（AIF）対策：インテリジェントドキュメント処理 (IDP)

# インテリジェントドキュメント処理 (IDP)

***<font color="MediumVioletRed">『非構造化または半構造化ドキュメントから情報を自動的に抽出し、分類、整理するための手法』</font>***

これにより、従来の手動でのデータ入力プロセスが効率化され、業務の自動化が可能になります。

特に、ドキュメントベースのワークフローを持つ企業において、IDP はコスト削減や業務の迅速化に貢献します。

### 非構造化データの例

-  **<font color="MediumBlue">請求書</font>**
-  **<font color="MediumBlue">契約書</font>**
-  **<font color="MediumBlue">領収書</font>**
Reactクリーンアップ関数がよくわからなかったので調べてみた

この記事は海洋大技術系サークルAdvent Calendar 2024 の16日目のものです！

参考にした記事：

https://qiita.com/TaikiTkwkbysh/items/4fc32a3268d958ba218f

https://takamints.hatenablog.jp/entry/cleanup-an-async-use-effect-hook-of-react-function-componet#:~:text=%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97%E9%96%A2%E6%95%B0%E3%81%AF%E5%89%AF%E4%BD%9C%E7%94%A8%E3%83%95%E3%83%83%E3%82%AF%E3%81%8C%E8%BF%94%E3%81%99%E9%96%A2%E6%95%B0%E3%81%A7%E3%81%99,%E3%81%9F%E6%99%82%E3%81%AB%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82&text=%E3%81%A8%E3%81%84%E3%81%86%E3%81%93%E3%81%A8%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99,%E3%81%95%E3%82%8C%E3%82%8B%E3%81%A8%E3%81%84%E3%81%86%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82

https://zenn.dev/yodaka/articles/7c3dca006eba7d

## 背景
今回、useEffect内で実行される非同期関数に対して処理を行い、そこでの結果に対して返す内容を変えるという処理を記述する必要があった。

自力で実装しようとしたところ、useEffectが２回実行され、また正しく画面遷移ができなかったので、対策としてChatGPTに聞いたところ、クリーンアップ関数が提示された。

実際にコードを動かしてみると、期待通りの挙動になっていたが、コードの理解ができなかった。といった具合です

## 調べてみた結果
調べた結果、クリーンアップ関数とは、画面がクリーンアップ、つまり画面の更新時・コンポーネントのライフサイクルが終わる時に実行されるものである。

これを使用することで、もし何かエラーが発生した時や、画面を更新するときに何か処理を追加できるようになる。

## まとめ
今回は、クリーンアップ関数についてまとめてみました。

今回クリーンアップ関数について調べた経緯は、[この記事](https://qiita.com/Doragon-RH/items/0371ab729f2ce732224d)　で、書いています。
若手エンジニアがプロジェクトの見積もりでやってよかったこと

# はじめに

こんにちは、新卒でバックエンドエンジニアをしていますなかじです！

アドベントカレンダー18日目の記事です！

https://qiita.com/advent-calendar/2024/hrbrain

ついこのあいだまで、新規事業の開発を行っていたのですが、現在既存のプロダクトのプロジェクトをゴリゴリやっています！

インターンから働き始めて、見積もりをすることが多く、今回はプロジェクト見積もりから実装を行ったのですが、順調に進んでおり、そこでプロジェクト初期の頃にやってよかったなーと思うことをご紹介します！

# プロジェクトについて

ここで言うプロジェクトとは、やや不確実性の高めの要件がまだ完全に固まっていなかったり、技術的に未知な要素が多かったりするプロジェクトのことを言っています！

私が担当したプロジェクトも、初期段階では、要求はあるが仕様が不明確で、この日には機能は必ずリリースしないといけないとう状況でした！

そんな状況で取り組んでよかったことを3つ紹介します！

# よかったこと

:::note info
- **機能単位で分けてリリースできないか考えて見積もりを立てたこと**
- **期限を基準にタイムラインを引かなかったこと**
- **目標を決め、機能単位でお触り会を実施すること**
:::

## 1️⃣ 機能単位で分けてリリースできないか考えて見積もりを立てたこと

プロジェクトでは、最初に「いつまでにこの機能ができていないといけない」と言う期限が決まっていることが多いです！

しかし、依頼されるタスクの粒度としては、「プロダクトの〇〇機能がほしい」、「プロダクトのこの機能で〇〇できるように拡張したい」と比較的ざっくりしたものが依頼されました。

そこで、着手する際には1週間ほどかけプロダクトを理解し、依頼されたタスクの粒度から、タスク分解しました。

そのタスク分解の粒度を、触るファイルで競合は起きないかや、フィーチャフラグなどを利用し分割リリースできないかを考慮した上、**機能単位で分けてリリースできるか**を重視して考えたことが良かった点だと思っています！

最終的なタスクの粒度は、タスクが1スプリントで終わりそうな粒度まで細分化することを心がけました！（実際できていたかわからないですが）

## 2️⃣ 期限を基準にタイムラインを引かなかったこと

当初は、期限を基準にタイムラインを引こうとしていました。

期限を基準にタイムラインを引くとは、たとえば「12月25日までにこの機能を完成させなければならない」という期限を起点に、そこから逆算してタスクを配置する方法です。（多分あるあるだと思います！）

しかし、「**期限に縛られず、タイムラインをひいたほうがいい**」と先輩エンジニアのアドバイスをいただきました。

タスク細分化後、現在からタイムラインを引いていき、その上で「何日オーバーしそうか」「どれくらいヘルプがあれば間に合いそうか」を検討しました。**ヘルプのためのチーム全体のリソースを考慮**できたのは、今思えば、とても良かったと思います。

もし、期限通りにタイムラインを引いていたら、今頃、遅れが積み重なり、全く間に合わない未来がうっすら見えていました。💦


## 3️⃣ 目標を決め、機能単位でお触り会を実施すること

どのプロジェクトでもあるあるですが、長期間になってくると途中で目標を見失いがちです！

そこで、今回のプロジェクトの見積もりは半年だったので、3ヶ月ごとに明確なスコープを設定し、「この期間でここまでは絶対やり切るぞ！」という基準を設けました。

新規プロダクトにいたときも、感じたのですが、長期のプロジェクトでは、機能単位でお触り会を実施することはすごくいいなと思っています！

お触り会とは、普段の開発チームとは別に、CSなどビジネス側の人に触っていただく会のことです！

お触り会が目標になって、良い一段と目標を追いやすくなる気がしています！

# まとめ

半年という長期間で不確実性の高いプロジェクトに取り組む中で、以下の3つの工夫を行いました

:::note info
- 機能単位で分けてリリースできないか考えて見積もりを立てたこと
- 期限を基準にタイムラインを引かなかったこと
- 目標を決め、機能単位でお触り会を実施すること
:::

これらの施策をしたことで、柔軟に進められる環境を整えることができたなと思っています！

同じような状況にある方の参考になれば幸いです！

# PR

株式会社HRBrainでは、一緒に働く仲間を募集しています！
興味を持っていただけた方はぜひ弊社の採用ページをご確認ください！

https://www.hrbrain.co.jp/recruit
コード行数計測ツール「cloc」を使ったステップ数の出し方

# ステップ数とは？
プログラムの規模を測る際の目安となる指標のひとつ
要はソースコードの行数

機能1個に対してのコード量/ファイル量を算出
改修のボリューム感は毎回、前回出したステップ数と比較する
★開発の規模を知ることができる

### ◆改修単位でのステップ数
1. 改修対象のマジリクをクリック
2. 変更をクリック
3. 右上の[変更ファイル数/追加コード数/削除コード数]

### ◆システム全体のステップ数
ターミナルで**cloc**を使って算出

# 「cloc」とは

「cloc」は様々な言語のコード行数を **「空行数」、「コメント行数」、「論理LOC」** に分類して計測してくれるオープンソースのツール。
コミット間の差分比較では **「修正行」、「追加行」、「削除行」** に分類して計測することができる。

### 1.インストール
初めて使う場合、最初にインストールする。
```
% brew install cloc
```

### 2.clocを叩く
```
% cloc app resources database tests config --vcs=git
```

↓こんな感じで返ってくる
```
$ cloc sample-java-project
      12 text files.
      12 unique files.                              
       4 files ignored.

github.com/AlDanial/cloc v 1.74  T=0.09 s (99.8 files/s, 7683.5 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Ant                              1             22              9            197
XML                              4             52             79            159
Java                             3             16             34             73
Markdown                         1             10              0             42
-------------------------------------------------------------------------------
SUM:                             9            100            122            471
-------------------------------------------------------------------------------
```

files →現時点での総ファイル数
code →現時点での総コード数


### 3. まとめ
改修単位でのステップ数とシステム全体のステップ数を合わせて改修規模を算出することができる
改修前：前回報告した改修後合計
改修規模：追加ステップ数＋削除ステップ数
増減：改修後合計ー改修前総ステップ数
改修後合計：cloc実行後のcode
【Go】クエリビルダーとORMの違いを調べてみた

# はじめに

こんにちは、新卒でバックエンドエンジニアをしていますなかじです！

アドベントカレンダー17日目の記事です！

https://qiita.com/advent-calendar/2024/hrbrain

Go言語でデータベース操作を行う際に、主に使用されるツールには「クエリビルダー」と「ORM」があります。

自分自身、実際の違いを理解していなかったので、まとめてみようと思います！

この記事では、GoにおけるクエリビルダーとORMの違いについて、実例を使って解説している記事です！

# クエリビルダーとORMの違い

**クエリビルダー**

SQLのクエリ文を生成するために用意された一連のメソッド。

クエリビルダーは、データベースに対するSQLクエリをコードで簡単に構築できるライブラリです。

`goqu`の一例ですが、with句やサブクエリなどの複雑化したクエリなど、ある程度スマートにかけますよね！

```go
sql, _, _ = goqu.From("derived").
	With("intermed", goqu.From("test").Select(goqu.Star()).Where(goqu.C("x").Gte(5))).
	With("derived", goqu.From("intermed").Select(goqu.Star()).Where(goqu.C("x").Lt(10))).
	Select(goqu.Star()).
	ToSQL()
fmt.Println(sql)



// 出力結果(見やすさのため改行)
WITH intermed AS (
    SELECT * FROM "test" 
    WHERE ("x" >= 5)
), 
derived AS (
    SELECT * FROM "intermed" 
    WHERE ("x" < 10)
) SELECT * FROM "derived"
```
**ORM**

ORMは、「Object-Relational Mapping」の略で、Goのオブジェクトとリレーショナルデータベースの対応関係を自動でマッピングすることができます！

なので、DBのスキーマを見て、自動でGoのオブジェクト型を生成してくれるものがあったり、クエリビルダーの機能以外にも機能があります！

SELECTなどのRead処理するときに、その結果を格納するために必要なGoのオブジェクト型を自動生成してくれるのは、すごくありがたいですよね！

gormを例に挙げると、クエリビルダー以外にも多くの機能がありそうですね！

>- Full-Featured ORM
>- Associations (Has One, Has Many, Belongs To, Many To Many, Polymorphism, Single-table inheritance)
>- Hooks (Before/After Create/Save/Update/Delete/Find)
>- Eager loading with Preload, Joins
>- Transactions, Nested Transactions, Save Point, RollbackTo to Saved Point
>- Context, Prepared Statement Mode, DryRun Mode
>- Batch Insert, FindInBatches, Find To Map
>- SQL Builder, Upsert, Locking, Optimizer/Index/Comment Hints, NamedArg, Search/Update/Create with SQL Expr
>- Composite Primary Key
>- Auto Migrations
>- Logger
>- Extendable, flexible plugin API: Database Resolver (Multiple Databases, Read/Write Splitting) / Prometheus…
>- Every feature comes with tests
>- Developer Friendly


ORMの機能にSQLクエリを組み立てるクエリビルダーの機能があり、内包されているイメージですね！

※ライブラリごとで、得意不得意あると思います！

## goのクエリビルダー

調べると、Goで使用されるクエリビルダーのライブラリには以下があります。

- `goqu` https://github.com/doug-martin/goqu
- `Squirrel` https://github.com/Masterminds/squirrel
- `sqlf` https://github.com/leporo/sqlf

## goのORM

調べると、Goで使用されるORMライブラリには以下があります。

- `gorm` https://github.com/go-gorm/gorm
- `beego` https://github.com/beego/beego
- `sqlx` https://github.com/jmoiron/sqlx

https://github.com/d-tsuji/awesome-go-orms

# HRBrain内の現状のORMの採用状況を紹介(2024/12/17)

[フューチャーさんのブログ](https://future-architect.github.io/articles/20210726a/)の項目を参考にして、HRBrain内の現状のORMの採用状況について、調べてみました！

現在、HRBrainでは以下ライブラリを使っています！

- `gorm` https://github.com/go-gorm/gorm
- `sqlc` https://github.com/sqlc-dev/sqlc
- `sqlx` https://github.com/jmoiron/sqlx
- `sqlboiler` https://github.com/volatiletech/sqlboiler
- `goqu` https://github.com/doug-martin/goqu

それぞれのチーム状況に応じた技術選定だと思うので、それぞれの良さがあり、あまり不満を聞いたことはないです！🙆

# まとめ

浅い記事になってしまいましたが、クエリビルダーとORMの違いをざっと調べてみました！

それぞれのライブラリに特徴があって、すごくおもしろいなと感じました！

また、次回の記事でお会いしましょう！👋

# 参考

https://future-architect.github.io/articles/20210726a/

# PR

株式会社HRBrainでは、一緒に働く仲間を募集しています！
興味を持っていただけた方はぜひ弊社の採用ページをご確認ください！

https://www.hrbrain.co.jp/recruit
KEKサマチャレのススメ

# はじめに
　こんにちは。あるいはこんばんは。
　本日は物理学生の皆さんに学部3年生向けのイベントを紹介したいと思います。
　毎年夏、筑波の高エネルギー加速器研究機構(KEK)で開催されるサマーチャレンジ（サマチャレ）というイベントを紹介したいと思います。


# 自己紹介
　まず簡単に自己紹介だけさせていただきます。私は院生なのですが、今年から九大に来たため、physikyuにも今年からの参加です。
 　研究室ではレーザーを使った物性研究をしています。学部でもレーザーを使った結晶構造の作成をしていたので光学畑の人間ですが、素粒子にも興味があってサマチャレに参加しました。


# イベント概要
　サマチャレには大まかに分けると3つの内容があります。

①様々な研究をする先生による講義
　実験をする先生、理論をする先生、いずれのお話も聞けます。皆さんの先端を走る研究のお話を聞くこともできますし、素粒子論の基本的なお話を聞くことも出来ます。なので素粒子何も知らないよーという人もやる気があれば大丈夫です！
　そして特別講義を行う先生は毎年前もってホームページに公表されています。こちらは特に世界レベルで名の通った先生で、私のときは梶田先生のお話を聞くことができました！　質問できる時間ありますので、何か考えていくとかもしれません。

②グループに分かれての実験
　同じように物理に興味を持って集まった全国各地の学生と6人程度のグループに分かれて実験を行います。各テーマも申込前に分かるのですが、いずれも全国各地の素晴らしい先生方の指導を受けられるので、良い経験になるかと思います。3年生という、まだ研究したことがない人の多い時期に、同じように集まった仲間と実験してまとめて発表するという流れを体験できるのは貴重な経験になるかと思います。

③最先端の研究施設の見学
　当然高エネルギー加速器研究機構に集まっているのですから、実際に実験がなされている施設を見学することもできます。加速器の一部は見学できるよう整備されていますし、各研究機関が交代しながら使えるビームを利用した実験を行える施設など、多くの研究施設を見学することができます。また、T2K実験でお馴染み東海村のJ-PARCも見ることができます！


# さいごに

　九大からもスタッフが参加しています。少し遠いですが、飛行機代なども出ますし参加費無料ですので、是非検討してみてください！　申込は3年生の春です。
 　アドバイスとしては、身近な先生に応募のときの文を添削していただくと、選考により通りやすくなるかと思います。

気になった方へ。詳しくはホームページをご確認ください！
https://www2.kek.jp/ksc/
秘密度ラベルをPower BIで使用する際の注意点

## 秘密度ラベルとは
秘密度ラベルとはMicrosoft Purview Information Protectionの機能の1つで、
「社外秘」などのラベルをファイルに付与することで、閲覧や共有を制限します。

https://learn.microsoft.com/ja-jp/purview/sensitivity-labels

## Power BIで使用する際の注意点
秘密度ラベルを付与したExcelにPower BIから接続しようとしたところ、
以下のエラーが発生したので、その解決方法の記事となります。


![画像a.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3850932/4506b5ca-b8e8-a081-fdd4-dd04715458ee.jpeg)

**接続できません**
接続しようとしているときにエラーが発生しました。
詳細："このブックを復号化するには資格情報が必要ですが、何も提供されていません。"


## 解決方法
https://learn.microsoft.com/ja-jp/fabric/governance/service-security-sensitivity-label-inheritance-from-data-sources


上記ドキュメントを参考にテナント設定2点の有効化で解決しました。

- **ユーザーによるコンテンツへの秘密度ラベルの適用を許可**
- **データソースから秘密度ラベルをPower BIのそのデータに適用する**

![画像b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3850932/0693e7e3-42dd-a6e5-1057-f3933621930a.png)

![画像c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3850932/579eac0e-af09-7dfa-6292-53962d7f7155.png)
<br>

Excelに付与されていた秘密度ラベルはpbixファイルと、
ワークスペースに発行したレポートへ継承され、同一のラベルが付与されます。
Excel のセルでマイナスの数字に△を書いちゃったよ、えへへ

## 2022 のニュースの話

>「エクセル任せで点検不十分」　マイナス収支で「△三角」と誤入力
https://www.asahi.com/articles/ASQBN7L3ZQBMOBJB00G.html
>> 一覧表の元となるエクセル表に「-（マイナス）」ではなく、「△（さんかく）」と入力したこと。
両課の計7事業の数値が合計にカウントされなかった。
マイナス額は1687万円も少なかったが、財政課はエクセル任せで、十分な点検をしなかった。

>【参考】決算書の三角(△)表記はマイナスを表している！意味や具体的な使い方を解説
  https://h2r-consulting.com/column/bs_triangle_minus/

ちなみに正解は、**以下のように【セルの書式設定】でマイナスの数値は「表示だけ」を△で見せること。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3952153/2994d0c6-303b-32f1-3022-25a41f435b05.png)

## 所感というかお気持ちというか
まあ、プログラマは「数値型」を扱うのでこういうのはやらないですし、非日常的な話ですね。
しかし、普通の人に型を理解させるのってハードル高い気がします。
 
ちなみに、財務・経理関係の人と仕事すると△の表記が出てくるのは普通にあります。
Excel でセル内に△の文字を入力しちゃう人の気持ちは、分からんではないです。
（我々は絶対やらないですけどね）

IT リテラシーの問題でしょうねぇ。


また、マイナスの△表記とまったく同様の話で、
**数値を , で区切って表記する場合に、実際に , を入力しちゃった、えへへ。**
という話もよくあります。もうバカなんだから。

もしこのときに、ちゃんと調べてきて「カンマ: , (U+002C)」ではなく「アラビア数値区切り記号: ٬ (U+066C)」を使っていたら卒倒するかもしれませんね。

**ちなみに Excel では「ハイフン: - (U+002D)」でなく「マイナス: − (U+2212)」の記号文字を使うと、算術演算できないです。**

もし「マイナスではなくハイフン使うのおかしくないですか？」という質問をされたらどうしましょう。（この質問者は才能があります。）
説明するの面倒だから「うるせぇ」とだけ言っておきますか。
いや、まじめな話文字コードの解説するの大変なんですよ。

もう少し真面目に回答するなら「慣例でそうなっている。考えるな、慣れろ。」くらいですかね。
多層防御とは

# はじめに
インフラエンジニアが構成を考える上でセキュリティは切っても切り離せない存在です。セキュリティについて考える上で、「多層防御」は攻撃対策の基本となる重要な考え方になってきます。
それについて人に聞いたり調べたりして得たものをここにまとめていきます。

# Cyber Kill Chain
多層防御について話す前にまず「Cyber Kill Chain」というモデルについて知る必要があります。これはサイバー攻撃の過程を7つのステップで表現したモデルであり、このモデルを参考にすることで攻撃者がどのような行動を理解して防御策を講じることができるようになります。
以下に７つのステップとどのような行為が各ステップにあたるかの具体例をまとめます。

1. 偵察
    - 標的組織の情報収集
    - ウェブサイト、SNS、公開情報の調査
1. 武器調達
    - マルウェアの作成
    - 攻撃ツールの準備
1. 輸送
    - マルウェアの送信
    - フィッシングメール、USBの配布
1. 攻略
    - 人、物の脆弱性を悪用
    - システムへの侵入
1. 潜入
    - バックドアの設置
    - 持続的な攻撃基盤の確立
1. 遠隔操作
    - 攻撃者による遠隔操作の確率
    - データの破壊、窃取の準備
1. 奪取
    - データの破壊、窃取
    - 証拠隠滅

# 多層防御
Cyber Kill Chainでモデル化された攻撃者の行動への理解から生まれた多層防御は、複数の防御層を設けることで一つの防御が破られても他の層で攻撃を防ぐ考え方です。
イメージは進撃の巨人のウォールhogehogeみたいな感じだと思っています。
主な防御層は以下のようになっています。

1. 物理セキュリティ
    - 入退室管理
    - 監視カメラ
    - セキュリティゲート
1. ネットワークセキュリティ
    - ファイアウォール
    - IDS/IPS
    - セグメント分割
1. エンドポイントセキュリティ
    - ウイルス対策ソフト
    - パッチ管理
1. アプリケーションセキュリティ
    - WAF
    - 脆弱性診断
1. データセキュリティ
    - 暗号化
    - アクセス制御
    - バックアップ
1. 人的セキュリティ
    - セキュリティ教育
    - アクセス権限管理
    - インシデント対応訓練

# Cyber Kill Chainと多層防御の対応関係
では実際Cyber Kill Chainの各段階に対して、多層防御でどのように有効な対策ができるのかを見ていきます。以下に書かれている対策例はあくまで一つの具体例であり、実際はもっとたくさんの対策を施す必要があります。

1. 偵察への対応
    - 人的セキュリティ
        - 従業員のSNSポリシーの策定
    - ネットワークセキュリティ
        - 不要なポートを閉じる
1. 武器調達への対応
    - ネットワークセキュリティ
        - 不正通信の検知
1. 輸送への対応
    - メールセキュリテイ
        - 添付ファイルの検査
    - エンドポイントセキュリティ
        - ウイルス対策ソフト
1. 攻略への対応
    - アプリケーションセキュリティ
        - WAFの導入
    - エンドポイントセキュリティ
        - パッチ管理の徹底
1. 潜入への対応
    - エンドポイントセキュリティ
        - 振る舞い検知
    - ネットワークセキュリティ
        - アクセス制御
1. 遠隔操作への対応
    - ネットワークセキュリティ
        - 異常通信の監視
    - エンドポイントセキュリティ
        - プロセス監視
1. 奪取への対応
    - データセキュリティ
        - 暗号化
    - アクセス制御
        - 重要データの隔離

# まとめ
多層防御は最強の一個の防御に頼ることなく複数の層を組み合わせて攻撃を防御する考え方です。実際に攻撃を防ぐにはアプリケーション側だけではなくインフラ側でのセキュリティの担保や人的対策も含めた総合的な防御が重要になってきます。
その中で、インフラエンジニアは多層防御の観点を踏まえて適切な箇所に壁をつくり、効果的なログを出して攻撃を検知しやすい環境を作るのが大切なのだと思います。