OmniAICreator/Qiita-1.07M huggingface dataset:
JVMとは

# はじめに
毎週1本様々な技術に関する記事を投稿しています。
もし興味のある方は下のリンクから他の記事も見ていただければ幸いです。
 [@7_inai_](https://qiita.com/7_inai_)

# JVMとは
`JVM(Java Virtual Machine)とは、Javaプログラムを実行するための仮想環境`です。コンパイラが生成したバイトコードを実行し、プラットフォーム間でのポータビリティを実現します。

# なぜJVMを使用するのか？
### ■高いポータビリティ(移植性)
Javaプログラムが一度バイトコードにコンパイルされると、そのバイトコードはどんな環境でもJVM上で実行可能です。つまり、__同じバイトコードはWindows、Mac、Linuxなどの異なるオペレーティングシステム上で動作__ し、それぞれの環境で同じような結果を返すことができます。このような特性により、__プログラムの再コンパイルなしに異なるプラットフォームで動作させることができる__ ため、ポータビリティが高いと言えます。

### ■メモリ管理とセキュリティ
JVMはメモリ管理とガベージコレクションを担当し、安定性とセキュリティを向上させます。
### ■実行速度の最適化
JIT（Just In Time）コンパイラを利用して、バイトコードをネイティブコードに変換し、実行速度を向上させます。
※JITコンパイラとは、実行時コンパイラとも呼ばれ、実行時にバイトコードを、ネイティブコードにコンパイルすることによって、アプリのパフォーマンスを向上させるためのコンポーネントです。

# JVMではバイトコード以外扱えない？
JVMは主にJavaバイトコードを扱いますが、ネイティブコード（C++やC言語）を __JNI（Java Native Interface）__ を介して呼び出すことができます。これにより、特定の高速な処理やハードウェア固有の機能を利用することが可能です。

# 終わりに
JVMはJavaプログラムのポータビリティ、セキュリティ、実行速度を向上させる重要な役割を果たしています。バイトコードの実行やネイティブコードの統合を通じて、柔軟性と性能のバランスを実現し、Javaの特性を支えています。

最後までお付き合いくださりありがとうございました。
GitHub Student Developer Packを利用している話。


# はじめに

この記事は、Qiita Advent Calendar 13日目の記事です。
以下の記事より、すべての記事をご覧になれます。

https://qiita.com/0_terarin_0/items/0f367210e2465f7772c9

# 筆者について

- 現在高校２年生
- 水泳部マネージャー
- 生徒会長
- とある団体の代表

# 本編
今日は超軽めの内容になります。
GitHubには以下のような学割のような制度があります。

https://education.github.com/pack

いろいろあるのですが、つまりGitHubのProプランを学生なら無料で利用することができます。

### 申請

普通に学生証を撮影して申請するだけなのですが、
ここでちょっとした注意点。 **スマホからアクセスしてそこから直接画像を撮影しましょう。** ちなみに、入力は以下のようにしました。

![Screenshot 2023-12-13 at 21.39.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583428/2a1e68f7-6bf7-5e60-ad2b-3dca97d6358f.png)

- メールアドレスはアカウントに登録しているメールアドレスがすべて出てきますので、学校のメールアドレスを選択しましょう。そもそも学校のメールアドレスを登録してない人は、学校のメールアドレスを事前に登録しておきます。
- 学校の選択画面が出てきます。ここで自分の学校を選択しましょう。ちなみに、大概は名前とURLが一緒に出てきます。
- 最後にGitHubをどのようにするかについての予定を決めましょう。僕は、「学習と学校に良い機能をもたらすため。」と入力しました。

### 3回の拒否
![Screenshot 2023-12-13 at 21.35.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583428/44a68f1b-a888-8f21-f224-8c0a479cbd1b.png)
![Screenshot 2023-12-13 at 21.35.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583428/6ecd5118-3017-62a2-ee22-4d657448802e.png)
![Screenshot 2023-12-13 at 21.35.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583428/aa987685-b9cc-3e42-0342-2c7da1390c00.png)

実はこの３回、最初は全然意味がわかりませんでした。というのも、メールアドレスは普通に学校のものを利用しているためです。したがって、先ほど記載した通りに、携帯のカメラを利用して学生証の撮影をしました。すると…。

![Screenshot 2023-12-13 at 21.35.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583428/2ec12fc5-ec8d-5c64-d4bc-737bab5b2098.png)

承認されました！！
このプラン、かなりお得なのでみなさんぜひ利用してくださいね！

# 最後に

今回は軽くGitHubの学割プランについて触れました。学生はお金などの理由から十分な環境を整えることは難しいですので、このような学割プランは非常にありがたい限りです。今後も学生ならではの記事を掲載していきたいなと思います。それでは、引き続き今後のアドカレ 23 の記事をお楽しみにしてください。

https://qiita.com/0_terarin_0/items/0f367210e2465f7772c9
Android Studio Hedgehogの便利な新機能

[2023年11月30日にAndroid Studio Hedgehogの安定版リリースがアナウンス](https://android-developers.googleblog.com/2023/11/android-studio-hedgehog-is-stable.html)されました。
私はハリネズミ（Hedgehog）が大好きなので、楽しみに待っていました！

毎年Android Studioはメジャーアップデートがありますが、みなさんは新機能を細かくチェックしていますでしょうか？
全部チェックするのは大変ですよね。そして実際に使う機能は一部だけだったり。

そこで、この記事では、実務で便利だなと個人的に思ったAndroid Studio Hedgehogの新機能だけをピックアップしてご紹介します！

# まずはダウンロード&インストール
公式ページからダウンロードしてください。
なんでこんなこと書くんだって思ったかもしれませんが１点だけお伝えしたいことがあったからです。

![スクリーンショット 2023-12-13 21.11.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323027/27857a5f-8fe8-87cb-5c05-cde84ac970d5.png)

2023年12月13日現在、言語を日本語に設定しているとHedgehogではなく、Giraffeがダウンロードされてしまいます。
日本語ページの更新が遅いいつものやつですね。

![スクリーンショット 2023-12-13 21.11.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323027/db96151d-3cfb-b1ec-34e3-e5d16adc0b76.png)

言語設定をEnglishに変更の上、表示がHedgehogになっていることを確認してからダウンロードしましょう。

# Compose Preview’s Gallery Mode
Composeのプレビュー表示にギャラリーモードが追加されました。

![ギャラリーモード](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRnOx6p3VMwSelyFoomeiXNXlKsFcUZcSbIdfh3EI6f-2Ai2fX_eYDFXfPwsIgs9-ISGuB09tkAihyOiihksii1GeUSd4rdaiabuulJ5SLn_G_oHckPzdau7vL7tE_A1njg7RM9z4A5IKIi8ceVgv9KX41lb4spYLct7stvJ_AJkdp7PVTwyAdODK39_Q/s1600/image8.gif)

こちらは１つのプレビューだけを表示するモードで、画面上部のタブからバリエーションを選択することが可能です。

今までは、バリエーションを持たせてプレビューを作っていた場合、リスト表示やグリッド表示で一覧表示されていました。
そのため、個人的にはズームイン・アウトすると、見ていない他のプレビューも一緒に動いてしまって目が疲れるなと感じていたため、大変ありがたいです！

１つのプレビューだけを集中して、細かいデザインや動作を確認したいときに便利ですね。

# Compose Multipreview templates
先日、[アダプティブレイアウトの記事](https://qiita.com/umsys/items/528c1b2b6faf32e56426)を投稿しましたが、様々な画面サイズやフォント、ダークモードなどを考慮してたくさんのプレビューを作るのって大変ですよね。

それがなんと、プレビュー１個書けば全部確認できるようになりました！

![マルチプレビュー](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYMgcP1-vFOghPOakxGfs3lrqTnTIF73xyjEGhteaJyFkLagFdR-0Qgx77j3TPSRfhSPuTEy9XOgJ5mWZhyphenhyphenDRt61ULkFrZ48CiemYk3ZSdtPvnWaBaCF-fWPmuDzMLfbaoPwFH4thqCuxKhQ6W_D4hn_wj5lim9RvabPMQVML3giRmk_UKs-9MbDIh7uc/s1600/image1.png)

どういうことかと言いますと、Compose Multipreview API によって追加された最新のアノテーションをサポートするようになりました。
`@PreviewScreenSizes`、`@PreviewFontScales`、`@PreviewLightDark`、`@PreviewDynamicColors`の４つをサポートしたとアナウンスされていますね。

これでプレビューのコード量が少し減りそうです。もっといろんなバリエーションが一発で出るようなアップデートを期待しています！


# 終わり
他にもたくさんの機能が追加されました。本当はもう少し書きたかったんですが、流石に２日連続投稿はキツかったので、後でもうちょっと追記します。（実機でLayout Inspectorができるようになった件も紹介して、便利な新機能３選！というタイトルにする予定でした笑）

# 引用
https://android-developers.googleblog.com/2023/11/android-studio-hedgehog-is-stable.html
APMでElasticsearchのクエリーをどこまで分析できるかやってみた

# はじめに
本記事は2023.12.13のElasticsearch勉強会で話した内容です。デモを見たい場合、Youtubeにこれから上がる勉強会の動画（最後のセッション）をご覧ください。
利用環境はElasticsearch v8.11, Elastic APM Python Agent 6.xですが、これより多少古くても同じように動くと思います。

以下のように、APMを使うことで、Elasticsearch Clientから実行されるクエリーなどを捕捉し、そのデータをKibanaで分析するなどできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/e685d396-4b0f-2b04-b38e-e35158cc67e8.png)

これをクイックに検証できるようにしたサンプルコードがこちらです。
https://github.com/nobuhikosekiya/elasticseach-query-apm-analyze-sample

Jupyter Notebook形式のPythonプログラムとなっていて、コードを順番に実行していくことができます。
* テストできるElastic Cloudがある場合、Open in ColabボタンからGoogle Colabでそのまま実行し、Elastic Cloudへの接続情報を入力して実行できます。
* ローカルPCなどにオンプレのElasticsearch + APMサーバーがある場合、NotebookファイルをローカルのJupyter環境で開き、実行してElasticsearchに接続できます。

# 検証結果
検証した結果は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/0209a3df-fe4a-8706-68df-d7f938f62b03.png)

## Manual Instrumentationの場合でできること
コードの抜粋ですが、このように自分で記録したいデータをelasticapm.labelとして入れることができます。この場合は、検索クエリー、検索ワード、検索ヒット数を取得しているという一例です。
```Python:Elastic_Query_APM_analysis_manual_instrumentation.ipynb
search_key_word="iPhone"
query={"match": {"question": search_key_word}}
query_user_input=search_key_word

# set labels to the current transaction
elasticapm.label(query=query, search_key_word=search_key_word, execution_count=j)
response = es.search(index=INDEX_NAME, query=query)
print(response.body)
hit_count=response['hits']['total']['value']
# set labels to the current transaction
elasticapm.label(hits=hit_count)
```

今回は普通のAPMの使い方ではなく、独自の分析となるので、DiscoverやDashboardで分析します。データはDiscoverのAPM Dataviewで確認できます。それらのデータを検索ログの分析という用途でダッシュボード化したのがこちらです。(export_dashboard.ndjsonのダッシュボードのエクスポートをKibanaからImportしてください）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/5a1493cb-abf6-417e-c19f-afc6fd574509.png)


## Auto-Instrumentationでできること
Elasticsearch ClientのAPIが呼ばれる箇所が自動的に補足され、以下のようにAPM画面で見ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/cff586ca-e340-1efa-2888-5a58849c508e.png)

上の図のES POST ...　のSpanデータを開くと、実際のクエリー文も確認できますが、このフィールド(span.db.statement)はデフォルトではインデックスされたフィールドではないので、分析にかけることはできません。（インデックスするように変更はできますが、JSON文字列なので、それもまた解析できる形に頑張る必要あり）

# おわり
本格的にこのやり方を本番に入れてみたいという場合は、ぜひご相談ください。
日本語プログラミング言語をモデリング言語としてシステム開発上中流工程に導入（上流工程の対象業務イメージ）

# はじめに

日本語プログラミング言語をモデリング言語としてシステム開発上中流工程に導入した場合、そのメリット・デメリットについて考察する記事の4回目です。

本記事の内容はいくつかに分割されて記載されます。本記事中の「本記事」とは分割された内容の総体を指す場合があります。

https://qiita.com/advent-calendar/2023/remind

この記事は日本語構造化仕様記述言語 Re:Mind（リマインド）アドベントカレンダー2023の13日向けの記事です。

## 対象読者
とりあえずこの記事の想定読者はシステムエンジニアさんです。とくに日本語で要求仕様や内部設計資料を書いている方向けのお話です。

# 想定しているレイヤードアーキテクチャ
[前回](https://qiita.com/mylifewithviolin/items/d10d59e98c4d2d7dca3d)はこの記事が想定している業務アプリケーションシステムが一般的なWebアプリケーションシステムで、帳票ツールの都合でバックエンドの実装言語がC#とJavaの2言語になっていることを説明しました。

# 想定している業務

上流工程のイメージの説明に入る前に、本記事が想定している業務内容について説明しておきます。下図のような簡単な受発注業務をインターネットで支援するシステムとします。


```mermaid
flowchart LR
 subgraph  sgC["受発注"]
    D["発注機能"]
    E["受注機能"]
    D    -->  |注文|E
 end
 style sgC width:200px

```
発注者は発注機能で注文を登録し、受注者は受注機能で注文を閲覧し、注文書をPDFなどでダウンロードできるとします。

具体的な業務システムとしては、受注者が登録した注文にどうやって発注者に気づかせるかとか実用上の機能要件はたくさんありますが、ここではとりあえずそれらはすべて割愛し、設計的な段取りが説明できる最小限の機能要件に単純化します。


```mermaid:
classDiagram
class 注文データ {
+ 注文日: 日付
+ 発注者ユーザー: 発注者
+ 受注者ユーザー: 受注者
+ 商品コード: 文字列
+ 商品名: 文字列
+ 注文数: 整数
+ 単価: 整数
+ 注文金額: 整数
}

class 発注機能 {
  + ユーザー: 発注者
  + 注文データ: 注文のリスト
  + 注文をする(): 
}


class 受注機能 {
  + ユーザー: 受注者
  + 注文データ: 注文のリスト
  + 注文を確認する(): 注文データ
  + 注文書を出力する(): 
}

発注機能 --o 注文データ
受注機能 --o 注文データ
```

クラス図で機能とデータを描くとみんなとりあえずクラスとなります。

```mermaid
flowchart LR
    D(("発注機能"))
    E(("受注機能"))
    F[("注文データ")]
    D    -->  F    -->E
```
ゲイン・サーソン式ではデータストアの記述が少々面倒なので、デマルコ式でデータフロー図を書いておきます。

# この回のまとめ
ざっくり上流工程の対象業務について説明しました。

# 次回
各工程の詳細について引き続き検討していきます。
特定のアプリ以外のミュート切り替えができるアプリを作った

# はじめに
そろそろタルコフのワイプの時期が近づいてきましたね。[にわのわ](https://twitter.com/niwa_nowa)です。

タルコフをはじめとしたなどFPSをプレイ中は、足音が聞こえるように音楽などはかけておきたくないですが、
マッチング中では音楽を聞きたいのです。

そこで、特定のアプリ以外のミュート切り替えができるアプリを作りました。
名付けてToggleMuter。そのまんま。

# 要件
1. ミュートを除外するアプリは複数設定できる
Discord + 遊ぶゲームをミュートの対象から外す、みたいに。
2. ホットキーでミュートの切り替えができる
いちいちアプリを開くのは面倒。
3. タスクバーで現在の状態を確認できる
耳だけでなく視覚でも状態確認。

# 作ったもの
今回作ったものはこちらで公開しています。

https://github.com/niwanowa/ToggleMuter/releases

# 画面など
画面はこんな感じ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590707/5b640f3c-3096-d4b8-ca15-b02cd3dd9f98.png)

非ミュート時
タスクバーのアイコンに注目

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590707/e5117f8b-bb00-8fc1-b83e-f3348acf0fc1.png)

ミュート時

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590707/db914a02-97b4-f239-b160-79756a28b6af.png)

# 終わりに
スペシャルサンクスChat GPT

https://chat.openai.com/share/4c0b0504-459a-4e2e-a861-d86a0a30ba77

今回初めてC#を使ってアプリを作ってみましたがChat GPTのおかげで割と早く物を作れたと思います。
(沼にはまるとやばかったけど...)
C言語開発環境 EV3rt の開発環境構築の方法【出張!後輩たちのためのEV3rt 講座】

# 本記事について

本記事は、2023年12月10日(日)にオンラインで開催された、NPO法人WRO Japan 主催 『第16回 ロボットを活用したプログラミング教育シンポジウム』内でのワークショップの録画映像を紹介するものです。

大会参加者のEV3rt環境構築を支援する目的のもと、主催者側の許可を得て録画、配信させて頂きました。

基本的には、今月1日に投稿致しました、 **#1 開発環境を作ろう【もっと!後輩たちのためのEV3rt講座】** の内容を元にしております。

https://qiita.com/koushiro/items/4ee879e5420260cea6c8

# 本編動画

<iframe width="560" height="400" src="https://www.youtube.com/embed/MjFLGGU9xYM?si=Pp_nKtNrUFAi-N6w" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

# 使用スライド

当日配布したスライドは、以下のリンクからダウウンロード頂けます。
是非ご活用ください。

https://drive.google.com/file/d/1hU-sRxLUZD6AWtSn_cdvXwQl_PUhRXqj/view?usp=sharing
えいやっ

[インターネット老人会の魔法書 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ancient-internet) の7日目の記事です。

# えいやっ とは

気合いを入れる掛け声ではなく、しっかり古の時代には使われていたビジネス用語です。

【意味】 「ある程度の品質を保ちつつ、最低限のレベル感で短時間でやっておいて」の意を込めた言葉
【用例】 「明日の会議の資料さあ、えいやっで作っといて」

## 使いどき

「適当でいいよ」の意味に近しいですが、それよりも「それにあまり時間かけないでね」のニュアンスが強いです。

なので、「やらない」という選択肢も、「いいかげんにやる」という選択肢は許されません。
`value` prop on `textarea` should not be null. Consider using an empty string to clear the component or `undefined` for uncontrolled components.の対応

タイトルの通りですが、
```
`value` prop on `textarea` should not be null. Consider using an empty string to clear the component or `undefined` for uncontrolled components.
```
というエラーがconsoleに出ていたので、解決した内容のメモとして残しておきます。

Warningなので、とりあえず動いてはいるがなんだか気持ち悪い…

## 原因

こちらのエラーの内容をGoogle翻訳してみると、

> `textarea` の `value` プロパティは null であってはなりません。コンポーネントをクリアするには空の文字列を使用するか、制御されていないコンポーネントの場合は「未定義」を使用することを検討してください。
ということです。

textareaコンポーネントのvalue propにnullを渡しているのが原因だよ〜と言っているようです。

確かにこのエラーは更新用のフォームを開いた時ときにでる。
そしてよく見るとtextareaに値がないときだけエラーがでているようだ。

## 解決

で、更新フォームのtextareaの部分をみる。

```react:Update.tsx
<textarea
    id="memo"
    name="memo"
    value={updateFormData.memo}
    onChange={handleUpdateInputChange}
/>
```
valueの部分がnullだったら空文字にしてみる。

```react:Update.tsx
<textarea
    id="memo"
    name="memo"
    value={updateFormData.memo ?? ''}
    onChange={handleUpdateInputChange}
/>
```
こうすると無事にエラーは解消されました:raised_hands:
改めてまとめてみる動画配信の知識

# 概要
動画配信で必要な要素まとめてみました

# 動画配信で必要なもの

## 動画プレイヤー
以下の要素ごとに対応した動画プレイヤーを用意する必要がある
* 配信方式(HLS、MPEG-Dash)
* 配信環境(ブラウザ、iOSアプリ、Androidアプリ、AndroidTV、ChromeCastなど)

### 無料の動画プレイヤー(ブラウザ)
* HLS.js
* Video.js

### 有料の動画プレイヤー(ブラウザ、各種アプリ)
* THEOplayer
* JWPlayer

## 配信サーバー
VODの場合は事前にトランスコードしたマニュフェストファイル、動画ファイルを置いとくだけで配信が可能だが、LIVEの場合は動的にマニュフェストファイル、動画ファイルを生成する設備を用意する必要がある

## CDN
特にLIVE配信では同時に同じファイルを取得する可能性が高いため必ずCDNをかませて負荷分散をしておく

## 視聴ログ集計サーバー
配信した動画がいつどのくらいの人が視聴したかを集計するために
プレイヤーから各種イベントに応じて集計サーバーへビーコンを飛ばす必要があり

# 現在の国内の主な動画配信サービス
## 放送局系
* TVer
* NHKオンデマンド
* NHKプラス
* 日テレ無料
* Hulu
* FOD
* テレ朝動画
* TELASA
* TBS FREE
* U-NEXT
* ネットもテレ東
* エムキャス
* locipo
* topo
* hod
* OX VIDEO STORE

# 動画配信のサービスモデル
## EST(Electric Sell-Through)
都度課金で購入型のサービスモデル
半永久的に視聴ができる

## TVOD(Transactional Video On Demand)
都度課金でレンタル型のサービスモデル
視聴期間が決められている

## SVOD(Subscription Video On Demand)
定額制のサービスモデル

## AVOD(Advertising Video On Demand)
広告掲載型のサービスモデル

## FAST(Free Ad-supported Streaming TV)
広告掲載型で編成配信のサービスモデル
ChatGPTを利用してFigma for VSCode の記事書いてみた！

# Figma for VSCode: デザイナーとデベロッパーのハッピーブリッジ 🌉
※この記事はChatGPTを利用して(というかほぼすべて）作成されています。
間違いがあっても気にしないでください。
## はじめに

こんにちは、UI/UXの冒険者たち！今日は、デザインの海とコードの山脈を結ぶ、神秘的な橋、「Figma for VSCode」の世界へご案内します。🚀

## Figmaって何？🎨

「Figma」とは、クラウド上でピカピカ光るUI/UXデザインツールのこと。デザイナーたちが、スクリーン上でアートを描く魔法のスティックみたいなものです。リアルタイムでの共同作業ができて、遠く離れた仲間ともデザインを通じてハイタッチ！🙌

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2587309/93d0cf6c-92ed-3391-fac2-a5d721e42dca.png)

### 主な特徴

- **クラウドベース**: どこでもデザイン、いつでもフィードバック。
- **チームワーク**: 一緒に描いて、一緒に編集。チームの絆が深まる。
- **インタラクティブプロトタイピング**: クリックして、スワイプして、リアルな体験をデザイン。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2587309/65fd1cb0-f58e-a053-dca1-0bbe91cbbd28.png)

## VSCodeって何？💻

一方、「VSCode」は、コードを書くための超絶カッコいいエディタ。プログラマーたちの剣と盾です。カスタマイズ可能で、プラグインが豊富。つまり、自分だけのコーディング環境を作れる秘密基地！

### 主な特徴

- **多機能エディタ**: コード補完、デバッグ、Git統合、天は二物を与えたり。
- **カスタマイズ性**: テーマ変更、ショートカット設定、自分だけの快適空間。
- **豊富な拡張機能**: あれもこれも、プラグインで無限大。

## Figma for VSCodeってどういうこと？🤔

さて、「Figma for VSCode」とは、この二つの世界をつなぐ、夢のような拡張機能。デザインとコードが手を取り合って、一緒にダンスするんです。🕺💃

### こんな魔法が使えます

- **FigmaのデザインをVSCodeで直接確認**: デザイナーの描いたものを、即座にコードで実現。
- **コードからデザインにフィードバックを送る**: 「このボタン、もうちょっと右！」直接コードからデザイナーにシグナル。
- **スムーズなコラボレーション**: デザインとコードの壁を取っ払って、一緒に素敵なプロダクトを作ろう！


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2587309/0ce4f7b7-88bd-c91a-a8a0-7f110fb2e93e.png)


## まとめ

「Figma for VSCode」は、デザインと開発のギャップを埋める素晴らしいツール。この拡張機能で、あなたのチームもより強固で、創造的なものになること間違いなし！🌟

それでは、デザインとコードの新しい旅を楽しんでください！🚀🌈

参考記事:https://mosya.dev/blog/figma-for-vscode
[Figmaの公式サイト](https://www.figma.com/)をチェックしてみてください！
Datadog Fleet Automationをちょっと触ってみた

[JINS Advent calendar](https://qiita.com/advent-calendar/2023/jins) 14日目も何度目かのITデジタル部の大間が担当します。
## はじめに
AWS re:Invent 2023(イベント参加記事は[こちら](https://qiita.com/tskoma/items/8a2b2cd9e38b80473dad))に合わせて、Datadogでもさまざまな新機能が発表されました。
https://www.datadoghq.com/aws-reinvent/products/
ちなみにDatadogはre:InventのEmerald sponsorになっていて、私のイベント参加記事でも書いてあるようにDatadog滑り台が会場にあったりします。
今回はその中でも個人的に便利そうと感じたFleet Automationを触ってみました。
## Fleet Automation
こちらまだPublic Betaの機能ではありますが、ざっくり言うとコンソールからホストを一元的にリモート管理できる機能となります。
### Agent管理
以下実際にJINSで利用しているDatadogのコンソールとなりますが、この画面だけでも
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618521/68880cbd-d744-28d7-122e-16cd0ba38272.png)
* Agentのバージョン
* 連携しているIntegration
* アップデート推奨のAgentが入っているホストの数
* 追加で設定できるIntegration

などなど、さまざまな情報が見えてきます！
一元的にAgentやIntegrationの情報を見れるビューはなかった記憶なので、シンプルにこれは便利だなの感想です。
### Integration管理
また、Intergraion Issueとして「UNCONFIGURE」とラベルがついているホストは未構成のIntegrationがあることを示しており、詳細画面でIntegrationsタブを選択すると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618521/8bdd8e94-25e4-ca33-d326-8e19a78e9ea5.png)
のように未構成のIntegrationを表示してくれます。
このスクリーンショットで言えば「ApacheとSSHのIntegrationが使えるのに構成されてないよ〜」といった感じです。
その横の「Enable」をクリックすると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618521/da74099c-a2b0-d91c-256b-4edfa6630c56.png)
のように、そのIntegrationの導入方法を教えてくれるのも親切。
ホストが少ないうちはよいのですが、ホスト数が増えてくるとこのホストはこんな機能動いているからこれも取り込んで可視化しておきたいなを追いきれない時もあるので、こういう提案をしてくれるのはすごく助かるなという感覚です。
(実際、このホストでApacheの設定してないじゃんに気づきました...)
### Configuration管理
各ホストを選択し`configuration`タブを開くと、以下のように各ホストのdatadog.yamlの構成情報が見えるようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618521/622febf3-1c80-7d50-5076-2e30bf0f1741.png)
今までは構成ファイルの中身を見ようとすると各サーバにSSHして、/etc/datadog-agent配下見に行ってなどそれなりに手間と時間かかっていたので、ここで一元的に管理できるのは非常に楽で魅力的です。
Agentのバージョンによっては一度サーバ側に入ってconfig内で設定をしないといけないなどもありJINSのホストではまだ見れないものがほとんどですが、この辺は何かしら作業で入るタイミングに有効化してここで見れるようにしていきたいです。

## まとめ
ホストを1つのビューで一元的に管理できるのはすごく魅力的な機能と感じました。
JINSもそれなりに監視対象とするホストが増えてきており効率よく管理していくことは課題の一つであるので、この辺の機能は積極的に便利に使っていきたいなと思います！

明日は最近JINSにジョインしてくれた@urib0による投稿です！
【blender】blenderをやっていたらとんでもない趣味を見つけた話

## はじめに
どうもこんにちは　虻虫/むし　です、今回私が話すのはblenderで、ある作品を作ったことをきっかけにより楽しく作品を作ることができるようになる魔法の「脳」についてです。
## きっかけ
私は毎日のようにblender使っていました。
だんだん暇になってきた、そんな時最近入れたアドオンのBoxCutterとHardOpsを試そうと一つの作品を作ったのが始まりです。
[補足説明]
BoxCutter+HardOpsPACKとはブーリアンやミニメニューなど多彩な機能を追加するユニークかつ人気なアドオンです。　現在38ドル日本円にして5200円ぐらいで購入できます。
## 「脳」
その時はまだ何の可能性も魅力も感じなかった作品「脳」ですが、この作品は後にたくさんの派生が生まれることとなり
そして作成するごとにどんどんはまっていくことにまだ気づいていませんでした。

![脳.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617819/92e9c7ea-e6ab-c162-c7e0-07f89b9a26a6.png)
## こだわり
突然すぎますがここで私のこだわりについて少し話していこうと思います。
まず初めに私はアセットやコピーマテリアル、テクスチャが嫌いなため全て自作になっております、ノードでマテリアルを作ったりアセットを使わずに作成したり、まぁつまりはオリジナルが好き”ということです、ですが流石に全ては難しい！
そこでアドオンなどを使って補正をしています。

２つ目に私は『見えないところも隅々に！手は抜かない』ということをモットーに作成していて見えない裏側や使わないものなどにも隅々に作成されています。
この「脳」の裏側にも同じことが言えます。

[補足説明]
テクスチャは大体写真のこと。
アセットやコピーマテリアルは人の作成したオブジェクトや色のこと。
## 「鉄紺の脳」
そこから１ヶ月たち「脳」のことはほとんど過去のことにしていた時にふと、「脳」の話が出てきて私はなぜか思いました、「脳」という作画を確立させ大量にバリエーションのあるものを作成させようと！
つまりは、「脳」をたくさん作ろう作戦と言うわけです。
そこで『電気』をテーマにした「脳」を作成しました、名前は”鉄紺の脳”
![鉄紺の脳.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617819/5332d620-6193-e011-e913-8d21554e8cbe.png)
## 深紅の脳
コケコッコー1日が経過しました。
もう私は2個目にして魔法にかけられていました、新たに「脳」を作成したくてたまりませんでした。
次のテーマは『ブタと炎』これを題材とした作品を作成しようと思いました。
今回はブタのコードとコンピューター、炎の赤を取った「脳」です。名前は”深紅の脳”![深紅の脳.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617819/0a065fc4-e010-db00-95a2-ffaa0fe82eaa.png)
## 瑠璃の脳
コケコッコー1日が経過しました。
私は「脳」を作成することから栄養をもらっていると言っても過言ではない感じになっていました。
この時には「脳」とは何かを考えていました、「脳」はほとんどが床に固定されており（例外も存在）断面の形状は個体差はあるがフジツボのように張り付くものがあり大抵の「脳」にはその個体の何かが出ている場所がある、そして中心となる場所からもとは立体だったものがある、と言う世界観が作成されていた。
今回の「脳」のテーマは『銃』、私はこれをいつもとは違った形　つまり中心を開けた状態での作成。
断面ではなく空いた空間を捻じ曲げようと抵抗する「脳」の作成です。名前は”瑠璃の脳”
![瑠璃の脳.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617819/91f78267-8cb5-cec9-209c-58f6c93cc32b.png)
## 白亜の脳
コケコッコー1日が経過しました。
今回のテーマは『白夜』、私の思う白夜はとても神々しくも科学的なものだと考えています、なので今回の「脳」は説明のつかない白い機械　を基盤に作成していこうと思います。名前は白亜の脳

[補足説明]
白夜とは地球の自転により北極、南極に面してる国で起こる太陽が1日間沈まない現象のことです。
![白亜の脳.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617819/c2ac30e9-6bbd-33ee-cbae-1eeb0e971573.png)
## 真朱の脳　ビブヒブ
コケコッコー何一か経過しました。
今回の作品のテーマは『缶』です、缶のプルタブがじゃらじゃらついた完全なる脳です。
「脳」は完成するとフジツボが落ちます。そして「脳」は自分のファッションなどにこだわりはじめそれが具現化します。
![真朱の脳　ビブヒブ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617819/79ecb137-56a0-080b-62f6-b09461090a02.png)
## 土器の脳 カロカラ
いよいよ私のさ話も最後です。
この「脳」もビブヒブ同様完成された「脳」です。
テーマは「scorn」、その前に少しscornとはなんだ？という方へ、
scornとは私がとても影響を受けている作品です、世界観やバイオメカニカルなデザインなどと私が大好きなゲームです。
※注意：scornというゲームは割とグロテスクなので苦手な方はお勧めしません。

ということでscornの世界観や建造物などからインスピレーションを受けて作成されました。
![土器の脳　カロラロ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617819/f3ae87be-c573-b4d7-9e6f-26f21bc113c6.png)

## 最後に
ここまで読んでくれた人たちに感謝です。
それと私の話は終わるけれど「脳」作成は終わっていません。
これからももしかしたら皆さんと会う機会があるかもしれません、その時はまたいろんな話をします！
ありがとうございました。
## おまけ
　これはおまけ程度の感じで聞いてくれると嬉しいです。
 私は今まで「脳」というメカめかしいものを作成してきましたがこのような可愛いキャラクターもデザインできます。
 個人的にこの作品がとても好きです。
 オリジナルキャラクターの「クリンゲルト」です。
![クリンゲルトドットピング.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617819/c9f0f157-d6e2-c111-39c3-a7c3d6f3e3b9.png)
【25日目】12月取り組みふりかえり

この記事は筆者オンリーの[Advent Calendar 2023](https://qiita.com/advent-calendar/2023/aichallenge_racing_for_mas)25日目の記事です。  

メリークリスマス！
早いものでもうクリスマスですね。
アドベントカレンダーを読んでくれた方ありがとうございました。
というわけでまだ早いですが12月の取り組みふりかえりをやりたいと思います。
今年は27日までがんばります、後は年末年始休みますかね。。。

# やったこと
## パラメータチューニング
何をどうすれば性能がよくなるのかまだよくわかっていません。
とりあえずplannningとcontrol側のパラメータをチューニングして
どうなるか確かめただけです。
仕様書をよく読まないといけないですね。

## OSS連携
これは結構ためになりました。
前回のインテグ大会ではパラメータチューニングしかしなかったので
実際にモジュールをいじってモノを動かすのは勉強になりました。
OSS連携はどう連携(移植)したのかを説明できるくらいの精度のモジュールを作れればよかったのですが
ちょっとそれには壁が大きかったですね。
移植方針、どう移植したかとかqiita記事に載っけられたらよかったのですがまだまだ説明するにはきびしいですね。
来年時間があったら執筆してみようと思います。

# まとめ
今年は自動運転AI運営の皆様、ボランティアの皆様に大変お世話になりました。
あと当方のアドベントカレンダーを読んでくれた方、購読してくれた方ありがとうございました。
来年もよろしくおねがいします。よいクリスマス、よいお年を。
それでは。
stable-diffusion-webui-dockerを動かしたかった

# はじめに
今年になって悪ノリでRTX 4090を購入したもののゲーム熱も冷めてきて何かに使えないかなーってなってました。
どうせだしお絵描きAIで遊ぶかーと思い立ってstable-diffusion-webui-dockerを起動しようとしたもののすんなりいかなかったのでその際の備忘を

# 問題
「docker compose --profile auto up --build」をたたくと下記のエラーが出る
~~~
Attaching to webui-docker-auto-1
Error response from daemon: could not select device driver "nvidia" with capabilities: [[compute utility]]
~~~


# 解決方法
シンプルに「nvidia-container-runtime」を入れなおせばよかった

NVIDIAの公式リポジトリ追加して～
~~~
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$(. /etc/os-release;echo $ID$VERSION_ID)/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

~~~

aptのパッケージ更新して～
~~~
sudo apt-get update
~~~

「nvidia-container-runtime」を入れなおして～
~~~
sudo apt-get install nvidia-container-runtime
~~~

念のためDocker再起動して～
~~~
sudo systemctl restart docker
~~~

build再実行
~~~
docker compose --profile auto up --build
~~~

# おわりに
適当にサイバーパンクな風景やってみるかーで試してみたところ
画像出力2-3秒くらいでぽいぽいできるので楽しいかもです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519878/55eee2d8-639a-2455-c070-c4f70a62f5b0.png)

# 参考
https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Setup
Workato：APIレートリミット対応のためのヒント

# はじめに

Workatoは、SaaSとの連携を実現する製品ゆえに、SaaS製品のレートリミットとは切っても切れない関係にあります。そこで、今回はレートリミット対応について少し考えてみたいと思います。

# エラーハンドリングだけではレートリミット対応は不十分

Workatoにはエラーハンドリングの仕組みが存在し、エラー発生時のリトライ回数（最大3回）とその待ち時間（最大10秒）を指定することが可能です。

しかし、待ち時間が最大10秒であることと、一定間隔のリトライしか対応していないため、エラーハンドリングだけではレートリミット対応は不十分であり、エラーハンドリングをレートリミットに活用する際には、実装に工夫が必要です。

# レスポンスヘッダに記載されるレートリミットを確認して対応する

アプリケーションによっては、 RFC7231 などを参考にレスポンスヘッダにレートリミット関連の情報を出力しているものがあります。

https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Retry-After

Oktaを例にしますと、Oktaではレートリミットの上限と、レートリミットまでのリクエスト残数、レートリミットが解除される時刻（UNIX時）がAPIのレスポンスヘッダとして返されます。

https://developer.okta.com/docs/reference/rl-best-practices/ より

```
HTTP/1.1 200 OK
X-Rate-Limit-Limit: 1200
X-Rate-Limit-Remaining: 1199
X-Rate-Limit-Reset: 1609459200
```

以上をもとにレートリミット対応すると、次のようなレシピになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/b3b3d44a-e015-7516-7920-d52d1d1a48a6.png)

レスポンスヘッダは、Custom Actionを利用することで取得が可能です。

もちろん、このレシピの実装だけではレートリミット対応は不十分ですが（例えばレートリミットの情報を取得しているAPI自身がエラーとなった場合の処理や、バーストを考慮した処理など様々な考慮は必要となりますが、何をすべきかのヒントにはなるものと思います。

なお、他のSaaS製品においても、ヘッダの違いや出力される情報量の違いはありますが、同様の方法でレートリミットのハンドリングが可能です。ただし、Oktaとは異なりレートリミットの残数の出力がされないものも存在しますので、その場合はレシピに工夫は必要となります。

例えば、Slack Web APIの場合は `Retry-After` というレスポンスヘッダからレートリミット解除までの待ち時間を確認することはできますが、レートリミットまでのリクエスト残数を確認することはできません。このため、レートリミットが発生したレスポンスをキャッチして、適切な処理の実装が必要となります。

https://api.slack.com/apis/rate-limits

# 指数バックオフ(Exponential Backoff)による対応

DeepLを例にしますと、DeepLではOktaのようなレートリミットに関する情報はレスポンスヘッダ等に出力されません。DeepLの場合は、レートリミットを含めたエラーハンドリングとして指数バックオフの実装を求めています。

> When retrying failed requests, your application should implement an exponential-backoff strategy: increasing the delay time with each further failed request. 

https://www.deepl.com/docs-api/api-access/error-handling

Workatoで指数バックオフを実装した場合、次のような感じになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/b1ec897e-a258-8510-58ef-f4c29c3c921d.png)

なお、こちらも対応としては不十分な場合がありますので、あくまでもヒントとして参考としていただき、実際のレシピにおいては綿密な設計と実装のうえ運用いただければと思います。
コーヒーリング効果

:::note warn
記事の内容は私個人の見解であり，所属する学科組織またはサークルを代表するものではありません．
:::
# はじめに
アドベントカレンダー14日目です. 

12月もほぼ半分が過ぎ、今年は残りあと少しですね. 日が登る時間が遅くなり，筆者[^1]は朝のコーヒー無しでは活動を始めらないです…☕️(笑)
ということで，今回は**コーヒーリング効果**についてサクッと読める記事を書いて見ました. 

(元々は物理と哲学の交流について書く予定でしたが、いざ書いてみると上手く言語化できず…←書きかけなので、完成版を今後公開できればと思っています！)


# コーヒーリング効果ってなぁに？
コーヒーを飲み終わった後に、コップの底にわずかにコーヒーが残りますよね. コーヒーの水滴が乾燥すると、コーヒーの色が縁の部分は濃く、中心部では薄くなってしまいます.
コーヒーに限らず、他の液体でもこの現象は見られます.(例えば紅茶や醤油など)

![](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQwtRD1D2MDHd6aOSm1oYFMUE3MeP4c9Sif6w&usqp=CAU)

このような現象は一般的に **「コーヒーリング効果」** と呼ばれ、実は科学的にも研究されている面白い現象なんです！

この効果が初めて論文として報告されたのは1997年[^2]ですが、今でも研究されていて、様々なところで応用されています.

# 原理
液滴が乾燥するとき、その形をよく観察すると、実は周縁部が動いていないことがわかります.

液滴の外周部（コンタクトライン）は、基材の表面凹凸による摩擦のため、乾燥によって収縮しようとしても動くことができません（ピン留め効果）. 

乾燥の際、蒸発率は通常、液滴の周縁部付近が最も高いようです.その結果、生じる濃度差や表面張力によって中心から周縁部に向かう液の流れ[^3]が発生します.
この流れに乗って、液体中の微粒子は周縁部に輸送されて、リング状、一部欠けると三日月状のシミを形成するわけです.

![](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQPOp_xQgSJkBWkn5Eyjr2YA11I3yLBrHzBKw&usqp=CAU)

# コーヒーリング効果とプリンターの意外な関係
カラープリンターを一般家庭に普及させたのが、カラーインクの微小液滴を紙に吹き付けて印刷するインジェット方式でしたが、開発初期の頃、塗りムラができ綺麗に印刷できない問題がありました.

原因究明のために研究が進み、コロイド粒子を含む液滴が物体の表面で乾燥するとその内部で様々な流れが生まれることがわかりました.
代表的なのが液滴の縁へ向かう **「拡散流」** と、それに逆らう、液体の表面張力が生む **「マランゴニ対流」** と呼ばれる流れです.[^4] 

コーヒーのように界面活性物質を含む液体は表面張力が弱く、マランゴニ対流も弱くなるため、コロイド粒子が拡散流に乗り、縁に集まってリングが形成されます.
この話は **#原理** の節でしましたね.


プリンターインクも色素を溶かすのに界面活性剤を用いるため、同じ現象が起きていたことがわかり色々な工夫がなされた結果、印刷技術の向上につながりました.

# 終わりに
一見，こんなの何の役につねん？と思われるような現象も、研究が進むと色々なところで応用されていてとても面白いですよね！

今回紹介したコーヒーリング効果はブラックコーヒーに見られる現象ですが、砂糖入りのコーヒーを飲まれる読者もいらっしゃると思います. 実は砂糖が入っていると、コーヒーリング効果は起こらないことがわかっています.
この仕組みもまた面白いので、今後記事にできたらな、と思っています！

それでは、今回はこんなところで！
アドベントカレンダー残り11日間、お楽しみに！🎄

[^1]:[筆者のX(旧Twitter)](https://twitter.com/quantum_walker)
[^2]:[参考文献](https://jfi.uchicago.edu/~tten/Coffee.drops/Nagel.7.4.pdf)
[^3]: **#コーヒーリング効果とプリンターの意外な関係** を参照
[^4]:より詳しい話は: 旦部幸博.コーヒーの科学 「おいしさ」はどこで生まれるのか.講談社.2016.320p.
for / forEach / 拡張for

# for / forEach / 拡張for　書き方の違い

ArrayListの要素を一つずつ出力するプログラムを
for / forEach / 拡張for文でそれぞれ記載します。

```ruby:ArrayList中身

ArrayList<String> fruitList = new ArrayList<>();
fruitList.add("Apple");
fruitList.add("Orange");
fruitList.add("Banana");

```

# for文
```ruby:for文
for(Integer i = 0; i < fruitList.size(); i++){
    System.out.println(fruitList.get(i));
}
/*[Apple, Orange, Banana]*/
```

# forEach文
java8以降で使用可能

ちなみに　-> は　アロー　と呼ぶらしい。
```ruby:forEach（省略版）
fruitList.forEach((String fruitName) -> {
    System.out.println(fruitName);
});
```

# forEach文（省略版）
java8以降で使用可能
※引数のデータ型は省略できる。
※引数が一つの時、引数を記載している()も省略できる。
※処理が一つの時、処理を記載している{}と処理の最後の;も省略できる。
```ruby:forEach（省略版）
fruitList.forEach(fruitName -> System.out.println(fruitName));
/*[Apple, Orange, Banana]*/
```

# 拡張for文
java5以降で使用可能
```ruby:拡張for文
for (String fruitName : fruitList){
    System.out.println(fruitName);
}
/*[Apple, Orange, Banana]*/

```
DockerのphpMyAdminで大きいファイルをインポートする方法

# はじめに
開発環境でDockerを利用するようになり、すごく便利になった反面、稀にトラブルとドコを直せばいいのか小一時間ハマる事が良くあります。

今回はDocker上のphpMyAdminでdumpファイルのインポート中に「ファイルが大きすぎる」と怒られたのでその対処法です。

# エラー内容
開発中に頻繁にdumpのインポート・エクスポートが必要になり、phpMyAdmin上からインポートしようとしたところ、以下のようなエラーが発生しました。
```
Warning: POST Content-Length of 14833022 bytes exceeds the limit of 2097152 bytes in Unknown on line 0
```

ファイルがデカすぎる、と。

そこまで大きなファイルを上げたわけじゃなかったんですが、インポートの最大サイズを確認したところ2048KiB(2MB)。。
![スクリーンショット 2023-12-13 195920.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631497/11b18f4b-8354-2068-8d0c-30b7d6f72cd0.png)
さすがに小さすぎるので最大サイズを変更

# アップロード可能なサイズの変更方法
確認したところ、以下に環境変数を渡す事で指定できるようです。
```
# cat /usr/local/etc/php/conf.d/phpmyadmin-misc.ini

allow_url_fopen=Off
max_execution_time=${MAX_EXECUTION_TIME}
max_input_vars=10000
memory_limit=${MEMORY_LIMIT}
post_max_size=${UPLOAD_LIMIT}
upload_max_filesize=${UPLOAD_LIMIT}
date.timezone=${TZ}
```

docker-compose.yml に以下追加
```
image: phpmyadmin:latest
environment:
   - MEMORY_LIMIT=256M
   - UPLOAD_LIMIT=128M
```

コンテナを再起動して確認。


![スクリーンショット 2023-12-13 200619.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631497/feb0a1fa-d6cb-b0bc-d9a3-6346ca85d9f2.png)

無事インポートできるファイルサイズの制限を引き上げる事ができました。
「ファシリテーション」を考える

社内会議でファシリテーターを任されることが増えてきた今日この頃。

この業界に入るまでファシリテーションのファの字も聞いたことなかった自分ですが、いざ任されると
「会議の時間が足りない！」
「この会議ってこの結論で良かったっけ？」
など難しいと感じることが多いのが実情です。

そういえば、今まで会議に参加していても受け身のことが多かったな、あまり趣旨を理解せずに参加していたな、と反省することもしばしば。

そんな中、社内のファシリ力をもっと底上げしていこうという動きがあり、
「良いファシリテーションとは？」というテーマで話し合う機会があったため、
諸先輩方のご意見を含めて備忘録的にこちらに記録しておきます。


# ファシリテーターの役割ってなんだろう？

そもそもファシリテーターは会議においてどのような役割でしょうか。
ググると「会議や商談などで中立的な立場に立った上で会議中に発せられた意見をまとめ、より良い結論に導く役割を担う人」など出てきます。

こちらのテーマでは以下のような意見が出ました。

```
・　会の目的を明確にし、時間内に結論に導く役割
・　参加者の意見を促す
・　参加者の納得を得、議題の理解を図る
・　タイムキーパー　etc...
```

ファシリテーターの役割は
__「会議を円滑に回し、ゴールを思い描いてコントロールする」__
 という結論になりました。

## 良いファシリをするために現状不足しているものは？
次に、「会議を円滑に回し、ゴールを思い描いてコントロールする」 ために必要なものは何か、現状社内で不足しているものは何なのか？というテーマで話し合いました。

「アジェンダを作成する文化が浸透していない（会議までの事前準備不足）」
「話が長くなりそうであればバッサリ切るなど、コントロールして時間内に収める力が弱い」
などの意見があり、結論としては

__・　事前準備__
__・　時間管理、コントロール力(りょく)__

の改善・向上が必要だということになりました。

この２つを深掘っていきます。


## 事前準備について考える
まず会議を筋道立ててコントロールするためには事前準備が大事！
ということで、事前準備について、会議の参加者からは以下のような意見が出ました。

```
・　会議の準備だけに集中する時間を作る
    　→　開始5分前には内容を見直しておく
     
・　打ち合わせが始まる前に関連資料等を事前に開いておく

・　参加メンバー間の情報に格差がないか確認しておく
    →　補足している場合、会議前に補填もしくは会議後に補填しておく
    
・　アジェンダを作成、共有する
    →　作成することで「目的」や「話す内容」、「その話題にどのくらい時間がかかりそうか」など整理ができる
    →　共有することで参加者の当事者意識を強化できる

```

上記の意見から、今後の取り組みとして以下の実践内容を決めました。

__・　アジェンダの汎用テンプレを作る__
__・　TODOの確認を促す__


## 時間管理、コントロールについて考える
事前準備を行っていても、会議は生物。
意見が盛んに出たり、話が脱線してしまった時のコントロールについて話し合いました。

```
・　重要な話題でも長時間かかりそうな様子だった場合、別の時間を設けて改めて会議するよう提案する
     
・　時間のコントロールは必要だが、時間を気にしすぎて意見が出づらい会議にはしたくない

・　ある程度欲しい結論が決まっている会議の場合は、結論が出た時点で終了の方向へ持っていく
    → 必ず時間いっぱい使うという意識で会議するのではなく、時間は貴重なものという視点で短縮できるところは短縮する
    
・　アジェンダを作成する際にテーマについて話す想定所用時間を設けておく

```

上記の意見から、今後の取り組みとして以下の実践内容を決めました。

__・　アジェンダ作成時に項目それぞれの所用時間を目算で置いておく__
__・　時間が足りなくなると想定し、アジェンダ作成時点で会議時間にバッファを設けておく__


---------------------------------------

今回会議を回す方法について社内のメンバーと意見を交わせたことで、
どんなファシリテーションが求められているのか、自分の中でも整理ができました。

上記の内容は良いファシリテーションをするためのほんの一部だとは思いますが、まず１歩踏み出すための指針として実践していこうと思っています！
検出のための重みづけ（weight）

・　判別分析など多くのものにあるオプション
・　サンプル数の偏り
・　何を見つけたいか？

# 重みづけ

言葉の通り、たとえば、比重１のものに、比重１０の重みを付けて計算することです　機械学習のライブラリをはじめとして、いろいろなツールに重みづけのオプションがあるのですが、意味を図で説明してみようと思いました　ここでは、線形判別という機械学習に対して使ってみます　重みづけは、機械学習以外にも、回帰分析など、サンプルを統計的に扱うところにはオプションとしてついています

# 重みづけをしなかったらどうなる

まず、重みづけをしないと、困る様子を、先にみてみましょう

<br>
<img width = 480 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333980/e581c1e3-74be-eb16-4c31-c4279f94eb5c.png">

赤（画像ではピンク）100個、青100個 からなる上のようなサンプルがあったとします

     青　100　個
     赤　100　個

<img width = 480 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333980/169dde90-5c07-b3eb-0d87-d1b224d98b34.png">

判別分析のツールを使って、X軸の変数、Y軸の変数の２変数を使って、２つのグループに分けてみます　線形判別を使うので、境界はまっすぐな線です　線をひきます 　赤全体のうち、76 % を、上手く赤のグループに分けることができました
<br>

次に、青のサンプルを 300に増やしてみます

    青　300 個
    赤　100　個
    


<img width = 480 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333980/a6c9ae7a-089c-1b45-f429-2bc7d5c7aed2.png">
<br>
あれ？　同じ方法を使って、赤のサンプルのうち正解は24 % になりました

さらに青を増やしていきます

    青　1000　個
    赤　 100 個
    
<img width = 480 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333980/6fcd8408-d8d8-4295-dd91-7829cb55cf64.png">

赤の正解率は　1 %　になってしまいました！　なぜなら、青の個数が、赤の　10倍　もあるので、全体の正答率を上げようとすると、青の正解の割合を上げたほうが、赤と青の平均の正答率は高くなるからです　つまり、少数派の赤は、ほとんど無視されてます

<br>

※　どう分類するかの設定は、実は変えることができるのですが、少なくとも、ここで使っている機械学習ライブラリのデフォルトの設定ではそうなっています
<br>
動画も作ってみました
<br>

<img width = 480 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333980/4a9e3a86-3d4d-38ff-7fa4-ff50728e7318.gif">
<br>

# 重みづけ
さて次に、赤に 10倍の　重みづけをすると、こんな風になります　10倍というのは、青に 1 の重みを付けたときに、赤には 10 の重みを付けて判別モデルを作ったということです

<br>
<img width = 480 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333980/e1b912c0-d411-c0f8-2193-69c332749767.gif">

一番最後の画像ではこうなっています

    青　1000　個
    赤   100 個

なのに、72 % の割合で赤が正解しています　重みづけをしない場合の、いくつかの上のほうの図と比べてみると、ちょっと数値が違いますが、青 100 個、赤 100　個　の　76 % のときに近い割合ですね


# 少ないものを検出する

たとえば医療の領域では、特定の疾患の患者さんのデータを集めることと同時に、患者さん以外のデータ（Healthy Control 健常群と呼びます）も集めます。人口全体の中で患者さんは少数派です　通常、機械学習で検出したいのは、割合が少ないほうの患者さんグループです

<br>
機械学習モデル作るときに使うデータにはたいてい限りがあって、一部分だけ集められる状態だったり、とりあえず試してみたいから、手に入りやすいデータだけを使ってみたりすると思います　病院でデータを集めると、患者さんのデータをたくさん集めることができますが、町の中でデータを集めると、健常群の中に少数派の患者さんがまざるデータになるでしょう

<br>

重みづけは、機械学習に使うサンプル数に偏りがあるときにも使えますが、おそらく一番の目的は、割合が少ないサンプル（この場合は赤）を検出したいときに、そこに重みを付けることで検出できるようにすることです

<br>
<br>
<img width = 480 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333980/b3337f40-887f-f2b0-1b55-3b71e61554b5.png">

赤への重みづけのイメージです　赤が重要なんですね
Symbol REST改造 - timestampからblock取得 -

# はじめに
SymbolノードのRESTを改造してタイムスタンプからブロック情報を取得します。

なお、monakaさんのREST改造記事を参考にしています。とはいっても新たにAPIを増やすわけではなくクエリを増やすだけなのでもっと簡単です。

https://qiita.com/monakaJP/items/7614896d7aba6aee3e6c

## リポジトリコピー＆restに移動
```
git clone https://github.com/symbol/symbol
cd symbol/client/rest
```

# コード改変
### client/rest/src/db/CatapultDb.js
``` diff_javascript
// 195行目あたり
- blocks(signerPublicKey, beneficiaryAddress, options) {
+ blocks(signerPublicKey, beneficiaryAddress, fromTimestamp, toTimestamp, options) {

if (undefined !== beneficiaryAddress)
    conditions['block.beneficiaryAddress'] = Buffer.from(beneficiaryAddress);

////////

// 213行目あたりに以下を追加
+ if (undefined !== fromTimestamp || undefined !== toTimestamp) {
+    conditions['block.timestamp'] = {};
+    if (undefined !== fromTimestamp)
+        conditions['block.timestamp'].$gte = convertToLong(fromTimestamp);
+
+    if (undefined !== toTimestamp)
+        conditions['block.timestamp'].$lte = convertToLong(toTimestamp);
+    }
```

### client/rest/src/routes/blockRoutes.js
``` diff_javascript
module.exports = {
	register: (server, db, services) => {
		server.get('/blocks', (req, res, next) => {
			const { params } = req;
			const signerPublicKey = params.signerPublicKey ? routeUtils.parseArgument(params, 'signerPublicKey', 'publicKey') : undefined;
			const beneficiaryAddress = params.beneficiaryAddress
				? routeUtils.parseArgument(params, 'beneficiaryAddress', 'address')
				: undefined;

+			const fromTimestamp = params.fromTimestamp ? routeUtils.parseArgument(params, 'fromTimestamp', 'uint64') : undefined;
+			const toTimestamp = params.toTimestamp ? routeUtils.parseArgument(params, 'toTimestamp', 'uint64') : undefined;
			
            const offsetParsers = {
				id: 'objectId',
				height: 'uint64'
			};
			const options = routeUtils.parsePaginationArguments(params, services.config.pageSize, offsetParsers);

- 			return db.blocks(signerPublicKey, beneficiaryAddress, options)
+ 			return db.blocks(signerPublicKey, beneficiaryAddress, fromTimestamp, toTimestamp, options)
				.then(result => routeUtils.createSender(routeResultTypes.block).sendPage(res, next)(result));
		});
/////////


```

以上です。

あとはビルドして`custom.yml`に追記してあげます

```
docker build -t hogehoge/custom_rest:latest .
```
``` custom.yml
symbolRestImage: hogehoge/custom_rest:latest
```

ブートストラップで起動してあげればOK

以下のようなクエリでfromTimestamp toTimestampで範囲指定してブロックを取得できます

https://hideyoshi.mydns.jp:3001/blocks?fromTimestamp=84341216&toTimestamp=84341216

ただし、ここでのタイムスタンプはSymbolのネメシスブロックのタイムスタンプが基準なので実際の日付から誘導されるタイムスタンプとは違います。

詳しくはここが分かりやすい

https://qiita.com/villhell/items/bfee8a68b829f3df1ede

つまりメインネットであれば現在時刻をタイムスタンプにしてから1615853185を引いてあげる必要があります。
Next.js 認証 - AuthJS / NextAuth を使用した役割ベースのセキュリティ

https://github.com/daikiejp/learn_next-auth/

[[English version]](https://github.com/daikiejp/learn_next-auth/blob/master/README.md)

> ごめんなさい、翻訳が不十分です。翻訳機と ChatGPT を使用しています。数か月後にはもっと日本語が上達し、アイデアをより良く表現できるようになることを期待しています。
>
> これを通じて、もっと多くの日本人が学ぶ機会を得ることができればと思っています。

このプロジェクトチュートリアルは、[freeCodeCamp Channel](https://www.youtube.com/watch?v=MNm1XhDjX1s)を基にしており、mongoose の代わりに Prisma を使用し、TypeScript サポートなどの追加機能があります。

## 特徴

- NextJS 14 を使う
- NexAuth プロバイダ（Github と Google）
- NextAuth クレデンシャル（mongoDB を使ったメールアドレスとパスワード）
- ロールのサポート
- Prisma ORM のサポート
- TypeScript のサポート
- マイナーな修正と Tailwind CSS の変更

## はじめに

1. ここで **Github** 用の OAuth App を作成する： [https://github.com/settings/developers](https://github.com/settings/developers) と `Client ID` と `Client Secret` を安全な場所にコピーしてください。
2. **Google** ログインの場合は、以下にアクセスしてください： [https://console.cloud.google.com/](https://console.cloud.google.com/)にアクセスし、`Api & Services`、`Credentials`の順にクリックし、`OAuthクライアントIDを作成`をクリックし、`Webアプリケーション`を選択し、ローカルホストのリダイレクト URI を入力し、ビデオのように続行します。
3. [mongodb.com](mongodb.com)でアカウントを作成し、ビデオの指示に従って接続 URL をコピーします。接続 URL の最後にはデータベースの名前を追加してください： mongodb://<USER>:<PASSWORD>@XXX.mongo.net/<YOUR-DATABASE-NAME-HERE>`のようにします。
4. コンソールで openssl rand -base64 32 を使用して、独自の NEXTAUTH_SECRET 環境変数を生成してください。
5. 新しいユーザーを作成するために、ADMIN_EMAIL 環境変数に GitHub のメールアドレスを追加してください。

> 注意: Google OAuth の場合、`Oauth App` を作成する前にプロジェクトを作成する必要があります。

ブラウザで[http://localhost:3000](http://localhost:3000)を開くと結果が表示されます。

## Vercel へのデプロイ

プロジェクトを Vercel にデプロイするには、以下を追加する必要がある： "postinstall"： "prisma generate"`を`scripts`内の`package.json` に追加する。このプロジェクトには既にありますが、自分でやる場合は追加してください。

次に、Vercel の.env 変数をすべて Settings に入れる。

これで準備完了です :-)

## 注意事項

私は TypeScript を学んでいるため、いくつかのエラーや悪い構文が発生する可能性があります。プロジェクトはテストされ、エラーがないことを確認していますが、誰もが学んでいることを考慮してください。何か問題があれば、[GitHub Issues](https://github.com/daikiejp/learn_next-auth/issues) で報告してください。

貢献したり質問したりするのは自由です。このリポジトリは将来的に更新される可能性があります。
admindocsでDjangoプロジェクトのドキュメントを自動生成する

Djangoに標準で付属する、[admindocs](https://docs.djangoproject.com/en/5.0/ref/contrib/admin/admindocs/)という公式のドキュメンテーションツールの紹介です。

少しの設定追加でDjangoの管理サイトに一部のコードに関するドキュメントを生成してくれます。

## 動作確認バージョン
- Python: 3.12.1
- Django: 5.0

:::note 
※admindocsの機能自体は、Django1.x系の頃から存在しているようです。
少なくとも[Django1.8](https://docs.djangoproject.com/en/1.8/ref/contrib/admin/admindocs/)のドキュメントには記載があります。
:::

## 生成されるページ例
![スクリーンショット 2023-12-13 18.42.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189343/7d9218d5-4749-cfbe-e925-992c6dbe603a.png)

ページのヘッダー部分に`ドキュメント`というリンクが追加されています。このリンクで、管理サイトの各ページからドキュメントページにアクセスできます。

スクショにある通り、admindocsでは以下の要素についてドキュメントを生成してくれます。
- テンプレートタグ
- テンプレートフィルタ
- モデル
- ビュー

一番下にあるブックマークレットは、Djangoアプリケーションのページから、対応するビューのドキュメントページに遷移できる機能を持つブックマークレットです。


## モデルのドキュメントページ例

モデル以外の3つ（テンプレートタグ、テンプレートフィルタ、ビュー）に関しては、各定義クラスや関数のdocstringを抽出して一覧化してくれます。
モデルに関しては、モデルクラスのdocstringの他、各フィールドの情報を自動で表形式にしてくれます。

以下はモデルクラスのサンプルと、そこから生成されるドキュメントです。
```py
class Author(models.Model):
    """ 著者情報

    .. reStructuredTextでdocstringを書くことで、admindocs上でレンダリングされます。

    * この `Author` クラスは、著者情報を管理するモデルです。

      * 説明~~~~~~~~~~~~
    
    * 説明~~~~~~~~~~~~

    """
    name = models.CharField(max_length=64, unique=True, help_text="名前")
    country = models.ForeignKey(Country, on_delete=models.SET_NULL, help_text="国", null=True)
    birthday = models.DateField(help_text="誕生日")
    death_day = models.DateField(help_text="死亡日", null=True, blank=True)

    @property
    def is_alive(self):
        """存命かどうかを返す

        ::

            author = Author(name="夏目漱石", birthday=date(1867, 2, 9), death_day=date(1916, 12, 9))
            author.is_alive # False 
        """
        return self.death_day is None


class Book(models.Model):
    """書籍情報"""

    name = models.CharField(max_length=64, unique=True, help_text="名前")
    author = models.ForeignKey(Author, on_delete=models.SET_NULL, help_text="著者", null=True)

```


以下は、上記のAuthorモデルから生成されるドキュメントです。
![スクリーンショット 2023-12-13 19.16.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189343/6ff2438b-89ee-f4cb-efd0-fd60d3adee40.png)

各フィールドについて、名前、型、`help_text`を取得し、表にまとめてくれています。
`@property`で定義したフィールドや、またAuthorモデルを参照しているBookモデルへの逆参照のためのフィールドについても載せてくれています。

## 設定方法
設定方法は[ドキュメント](https://docs.djangoproject.com/en/5.0/ref/contrib/admin/admindocs/)に記載があります
- `settings.py`の`INSTALLED_APPS`に以下を追加
  - `"django.contrib.admindocs"`
- urls.pyに以下を追加
  - `path('admin/doc/', include('django.contrib.admindocs.urls'))`
  - `/admin`より前に定義する必要がある
- [docutils](https://pypi.org/project/docutils/)パッケージ（0.19以上）をインストール


ブックマークレット機能を使う場合はさらに以下を設定

- `settings.py`の`MIDDLEWARE`に以下を追加
  - ` django.contrib.admindocs.middleware.XViewMiddleware`




なお、ドキュメントには記載がないですが、[コードブロック](https://www.sphinx-doc.org/ja/master/usage/restructuredtext/directives.html#directive-code-block)記法を使う場合は[Pygments](https://pygments.org/)のインストールが必要です。
Pygmentsは構文解析のライブラリですが、これを入れても少なくともデフォルトではシンタックスハイライトはされないようです。
(adminページのCSS設定次第ではシンタックスハイライトされるんだろうか……？)


## まとめ

admindocsは少ない手間でドキュメント生成ができる便利なツールですが、そのわりに知名度が低そうなので、紹介の記事を書いてみました。
ドキュメンテーションがしっかりしているプロジェクトではあまり恩恵がないかもしれませんが、個人開発など小規模な開発ではadmindocsで済む場合もあるかもしれません。
【Android】buildscriptはどこに？【Kotlin】

# buildscriptがないぞ？

教本を使ってAndroidStudioを学習中に、AndroidStudioのファイル上に指定された記述がなく困った。
調べ回って解決に至ったので、備忘録として残しておきます。

## どこで詰まったのか
とあるチャプターで、
```
「build.gradle(Project:hogehoge)」を開き、dependenciesに一行追加する
```

という工程がありました。
しかし、build.gradleを開いて探しても、
`plugins`があるのみで、`buildscript`及び`dependencies`がありません。



**詰んだ…**


## 解決

しかし、調べてみると、昨今のAndroidStudioでは
```kotrin
plugins {  
    id 'com.android.application' version '7.4.2' apply false  
    id 'com.android.library' version '7.4.2' apply false  
    id 'org.jetbrains.kotlin.android' version '1.8.0' apply false  
}
```

ここに追加すれば良いとのこと

無事動きました。
先人に感謝…

Androidは隙間の時間にちょびちょびやっておりますが、まだまだわからないことばかり…
長い戦いになりそうです。
[勾配法]なぜfの勾配を最大化する方向が「勾配∇f」なのか？

# はじめに
本記事は、京都大学人工知能研究会KaiRAのAdvent Calender 17日目の記事です。
皆さんこんにちは、早速ですが勾配法はご存じでしょうか？
勾配法とは、関数の勾配を用いた反復法で関数の最小値を求める手法です。
イメージとしてはお椀の端に球を置くとコロコロとお椀の中央の方に転がっていくようなイメージですね。
もう少し厳密な話をすると、$\nabla f$が関数$f$を最も大きくする方向だから、$-\nabla f$方向に点を更新していきますよっていう話です。

初めて勉強するときには疑問に思ったりしませんでしたか？
$\nabla f$が関数$f$を最も大きくする方向になってるのは何故か、と。

疑問を感じたものの放置していたり、1次元の時の説明で満足していたりしないでしょうか？
実はこの疑問、大学の微分積分学の知識が少しあれば簡単に解決できてしまいます！
今日はこの疑問について掘り下げていきたいと思います！！
(この話は私がKaiRAではしょっちゅうしているので、KaiRAの人にとっては耳にたこができるほど聞いてる話かもしれません。しかし、その場できちんと証明を説明していることはほぼないので、もしかしたらKaiRAのメンバーにとっても役に立つかも？？)

# 前提
- ユークリッド空間$\mathbb{R}^n$は知っているものとします
- ベクトルの内積は知っているものとします
- 偏微分は知っているものとします
- 多変数関数におけるchain ruleは知っているものとします(高校数学で言うところの合成関数の微分)

これだけの知識があれば理解することは可能です。

# 本題
$f:\mathbb{R}^n \to \mathbb{R}$を$C^1$級関数とします。
($C^1$級関数とは、どの方向にも偏微分が可能で偏導関数が連続になる関数のことです。十分になめらかな関数ということですね。もしも$C^1$級関数が分からなくてもこの先問題ないです。)

ディープラーニングの文脈では$f$は損失関数だと思ってください。

ここで、偏微分の拡張として、新たに方向微分というのを考えます。
点$x \in \mathbb{R}^n$における$v \in \mathbb{R}^n$方向の方向微分$D_x f(v)$とは、
```math
D_x f(v) = \lim_{t\to 0}\frac{f(x+tv)-f(x)}{t}
```
のことです。
$D_xf$にベクトル$v$を渡すと、点$x$におけるベクトル$v$方向の微分が返ってくるわけですね。
イメージ的には人が今$x$にいて$v$方向に歩こうとしたら$v$方向はどれぐらいの坂になっているのかが分かる感じです。
後で証明しますが、実は、
```math
D_x f(v) =　\nabla f(x)\cdot v　= \frac{\partial f(x)}{\partial x_1}v_1+\cdots+\frac{\partial f(x)}{\partial x_n}v_n
```
が成り立ちます。
ただし、
```math
\nabla f(x) = \left(\begin{array}[c]\\
\frac{\partial f(x)}{\partial x_1}\\
\vdots\\
\frac{\partial f(x)}{\partial x_n}
\end{array}\right)
```
で$\cdot$はベクトルの内積を表します。
ここで現れた$\nabla f(x)$が勾配と呼ばれる量です。
直観的には、点$x$からベクトル$v$方向への坂の大きさは、$v$を$x_1, x_2, \cdots, x_n$方向に分解して$v_1, \cdots, v_n$の大きさに応じて$\frac{\partial f(x)}{\partial x_1}, \cdots,
\frac{\partial f(x)}{\partial x_n}$の重み付き和を取ったものになっていることをこの命題は表しています。

一旦この命題が成り立つとして議論を進めてみましょう。
このとき、点$x$における方向微分$D_x f(v)$が最大になるようなベクトル$v$の方向はどちらでしょうか？

実は$\nabla f(x)$方向です。なぜなら、$\nabla f(x)\cdot v$が最も大きくなるような$v$の方向は、内積の性質から$v$が$\nabla f(x)$方向を向いているときだからです。
ということで、$\nabla f(x)$が$f$の方向微分を最も大きくする方向であることが分かりました！
$\nabla f(x)$が点$x$における"勾配"が最も大きくなっている方向のわけですね！

# 上の命題の証明
上の命題の証明も簡単です。
明らかに
```math
D_x f(v) = \lim_{t\to 0}\frac{f(x+tv)-f(x)}{t}=\lim_{t\to 0}\frac{f(x_1+tv_1,\cdots,x_n+tv_n)-f(x_1,\cdots,x_n)}{t}
```
で、
微分の定義より、
```math
D_x f(v) = \frac{df(x_1+tv_1,\cdots,x_n+tv_n)}{dt}
```
です。
そこで、chain ruleより、
```math
\begin{equation}
\begin{aligned}
D_x f(v) &= \frac{df(x_1,\cdots,x_n)}{dx_1}\frac{d(x_1+tv_1)}{dt}+\cdots+\frac{df(x_1,\cdots,x_n)}{dx_n}\frac{d(x_n+tv_n)}{dt}\\
&=\frac{df(x_1,\cdots,x_n)}{dx_1}v_1+\cdots+\frac{df(x_1,\cdots,x_n)}{dx_n}v_n\\
&=\frac{df(x)}{dx_1}v_1+\cdots+\frac{df(x)}{dx_n}v_n
\end{aligned}
\end{equation}
```
となって、命題が示せました。

# 終わりに
$f$の勾配を最大する方向が$\nabla f$方向であることを示してきました。
僕はディープラーニング系の本ではこのような説明をほとんど読んだことが無いのですが、実は結構簡単に示せるのに読んだことが無いのは不思議です。
初心者向けの本に書いてもいいのではないかと思ったり…
誤差逆伝搬法でもchain ruleが必要ですし、この内容を勉強するのにディープラーニングを勉強する人たちにとっても前提知識は十分のように感じます。
なお、僕はこのネタは杉浦先生の解析入門 Ⅰで初めて知りました。
Crowdin とは？ - ローカライゼーション SaaS


Crowdin は、「ソフトウェア」「モバイルアプリ」「Webサイト」「マーケティングのコンテンツ」「ヘルプセンター」「ゲーム」など、さまざまなコンテンツの**多言語対応をサポートするソフトウェア**です。

ニーズが比較的ニッチなのもあって、日本ではあまり知られていない SaaS だと思います。



![スクリーンショット 2023-12-15 14.07.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227791/9eb66de6-00cd-5ac5-c24c-47c22d755d26.png)

そんな Crowdin について、ドキュメントを読みながらざっくりと特徴とできることをまとめます。

> **Crowdin**
> https://crowdin.com/

# 特徴

## コンテンツの一元管理

JSON や CSV など、100 種類以上のファイル形式をサポートしているので、アプリ、Web サイト、ゲーム、メール、ドキュメント、ブログなどのテキストやアセットを一元管理できます。



## 翻訳者を自由に決定できる

信頼できる翻訳者と独占的に連携したり、Crowdin 内でベンダーを見つけたり、さまざまなチームの翻訳を組み合わせたりすることができます。



## 簡単にテキストを編集できる

元の文字列を検索、追加、編集できます。

- 翻訳者が直接ソーステキストを編集できます。
- Crowdin で編集し、変更をリポジトリに push してマージリクエストを作成できます。
- Figma や Sketch、Adobe XD のプラグインを使用して、テキストコピーの編集や作成を行えます。デザイン内で翻訳された文章を利用できるだけでなく、Crowdin 上に新しいテキストを作成できます。



## 豊富なインテグレーション

Crowin はリポジトリなどのシステムと統合できます。翻訳者には、常に最新のコンテンツを表示します。



> 2023/12 時点で、590 個の プラグインが用意されています。
>
> https://store.crowdin.com/categories/all



## モニタリング

リアルタイムで翻訳の進捗を確認できます。



## 翻訳エディタ

Crowdin のオンライン翻訳エディタを使えば、翻訳者と校正者が効率的に作業できます。オンラインで他の翻訳者やマネージャと共同作業することも、オフラインで独立して作業することもできます。

UI もいい感じで、ダークモードにも対応してます。

- 投票と校正 : 校正者を招待して、完成した翻訳をレビューしてもらうことができます。
- 自動化された品質保証 : 句読点、翻訳の長さなどを自動的に検出して管理します。
- コメント : 翻訳についてディスカッションしたり、質問したり、不必要な翻訳にマークをつけたりできます。



## 最新のテクノロジーのよるサポート

翻訳は、同じ文章だとしても、コンテキストによって適切な翻訳が異なる場合があります。Crowdin では、最新のテクノロジーを駆使してコンテキストの提供をサポートします。

- 実際の UI 上でインタラクティブに翻訳を作成
- 機械翻訳 : 自動的に翻訳された文章をサジェストすることで、翻訳者をサポートします。
- 翻訳メモリ : 同一製品の異なるバージョンで同じテキストがあった場合などに、そのテキストを１回だけ翻訳します。
- スクリーンショット : 翻訳しているのが UI 上のどこの部分なのか、スクリーンショットで示すことができます。
- 用語集 : あらかじめサービスに関する翻訳を定義しておくと、翻訳時にレコメンドされる。サービス全体において同じ用語で翻訳に揺れが発生するのを防ぐ。



## セキュリティ

シングルサインオン（SSO）や、二要素認証、OAuth2 や OpenID Connect にも対応しています。

プライベートプロジェクトの作成や、アクセス権限の付与、ユーザロールの管理も可能です。
巣鴨の赤いパンツ

# 巣鴨の赤いパンツ
テレビで見たとき気になったので調べてみました。
「巣鴨マルジ日本一赤パンツ館」という赤パンツ専門店に売られている。
赤というと奇抜な印象があって、なぜ人気が出るのか正直わからないのでその謎を解き明かしたい。

<img src="https://amabijin.com/wp-content/uploads/2019/10/3766de1aa0787bac0220d95fdebd397d.jpg" width=70%>

<font color="Gray">↑東京都豊島区巣鴨にある地蔵通商店街、通称 __『おばあちゃんの原宿』__</font>

## 人気の秘密
- 健康に良い
- 心理的に良い
- 有名人が愛用している

#### 健康にいい🦾
東洋医学では、赤いパンツを着用する事でへその下にあるツボ（気海）の「気の巡り」が良くなると考えられています。 全身の元気が集まっているツボで、生まれたときから持っている気が集まる場所（海）という意味を持っています

#### 心理学的にいい😊
赤色を見たり身につけることで  __「暖かく感じたり気持ちが向上する」「魔除けの力が働く」「自然治癒力が高まる」__ らしいです

#### 有名人が愛着している💕
 女優の藤原紀香さんがテレビで紹介したことで、一時ブームとなったそう
千原ジュニアさんはお店によったことがあり
漫才コンテストの決勝にハリセンボンの近藤春菜さんは赤いパンツを勝負下着として挑んだ事もあります

こんなふうに見た目だけではない効果によって、たくさんの人の人気も集まるのも納得！！
<img src="https://images-na.ssl-images-amazon.com/images/I/613M8LhdmeL._AC_UX679_.jpg" width=40%>

## 巣鴨に若者が増えてきているらしい！
「おばあちゃんの原宿」で前から有名だった巣鴨に、テレビで取り上げたくなるほど若者が集まっているらしい

テレビでは「クリスマスにいいかもね」
とはしゃいで靴下を買っている大学生ぐらいの人たちが紹介されていました

__そもそも__
なぜおじいちゃんおばあちゃんしかいなかったか？
巣鴨には有名なとげぬき地蔵（高岩寺）があり、それが人気で延命やケガの治癒を願うお年寄りがうわさを聞きつけ、お年寄りの聖地となりました
またこの店のある地蔵通商店街は車いすが楽に通れるくらい通路が広く、福祉の面でも生活がしやすいそうです

若者が集まるのはいいことかもしれないが、『映えない』と写真を撮って盛り上がっているのをみるとなんだか失礼な気もしてきた…

## 赤いものをつける風習
日本にはもともと北海道、東北、上越、北陸地方を中心に赤い肌着をつける習慣があったそうです日本の国旗にも使用されている <font color="Red">赤色</font>　
日本にとって特別な色の一つといえる

__もうすぐ正月です。正月といえば赤！このブームに乗ってパンツ買ってみてはどうでしょうか！__
なんと今年用に辰年企画もしています。🔻商品一覧です
https://www.sugamo-maruji.jp/SHOP/1161128/list.html

## これで終わり
読んでいただきありがとうございました
検索用：練習用：ニックネーム：まじみき：メモ

めも
練習用
【職務経歴】

■ 技術系人材派遣会社（入社 20xx年x月〜20xx年x月）

【業務内容】
・半導体関連会社にて、シミュレーション業務を担当
・Linuxを使用したコマンドライン上での計算作業の効率化に取り組む

【スキル・資格】
・Linux基本操作
・Python、Ruby、Perl、cshなどのプログラム言語を使用したコーディング
・半導体や半導体開発制作の知識や技術に関する研修を受講

【自己PR】
半導体関連会社に配属された際に、半導体のシミュレーションを行うためのプログラムを開発・運用する業務に従事していました。
主にLinux上での作業で、シミュレーションのためのデータの入力や計算、パラメータの最適化、必要に応じてプログラムの修正や新規作成などを行っていました。
また、シミュレーション以外にも、定型作業の自動化にも取り組んでおり、具体的にはデータの抽出や整形、グラフの作成などを自動化し、作業の効率化に貢献しました。