OmniAICreator/Qiita-1.07M huggingface dataset:
AI Builder のプロンプトで出力を JSON 形式にすると Power Autoamte で JSON の解析アクションが不要になった


AI Builder のプロンプトでは、プロンプトを部品として作成して、Power Apps のアプリや Power Automate のフローからローコード、ノーコードで利用できます。

こちらを使うことで、例えば、社外からメールが届いた際、メールの本文や添付ファイルから GPT-4o で情報抽出して他システムと連携するようなことができます。

そして、この際、出力形式を JSON で指定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/163a6196-bdce-4003-a82e-1930538fba80.png)

このようなプロンプトを、Power Automate から利用する場合、以前は、以下のように、[JSON の解析] アクションで解析し、その結果を動的な値として利用する感じでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/85557458-d5b1-d11c-9548-9377715e36d1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/ac089dcf-2960-3778-a9d8-7636fd94d9ec.png)

しかし、気づいたら、わざわざ [JSON の解析] アクションで解析しなくても良くなりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c008b8f0-2333-39c7-ae2d-d7a4ec24b87c.png)

元々の方法でも、慣れていれば簡単だとは思いますが、正直、[JSON の解析] アクション、市民開発者の方からすると結構ハードル高い気がしていたので、個人的には結構嬉しいアップデートです。そのため、嬉しさのあまり、記事を書きました。
【ExcelVBA】yymmddとかmmddで日付入力、hhmmで時刻入力

Excelよ、いい加減yymmddとかmmddで日付入力させなさいよ、と思って作ってたやつ

年末年始で来年の1月を入力する時期だからご注意を的な通知があったので紹介しようと思ったら、まだ挙げてなかったのでもしよかったら

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">この時期になるとエクセルに2025年1月の日付を入力したつもりが2024年1月の日付だった…というミスが起こります<br><br>西暦の入力は省略できませんが、先頭の『20』は省けます<br>『25/1/1』や『25-1-1』と入力すると日付が『2025/1/1』になります</p>&mdash; 筒井.xls@エクセル関数擬人化本著者 (@Tsutsui0524) <a href="https://twitter.com/Tsutsui0524/status/1871802160683630680?ref_src=twsrc%5Etfw">December 25, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


### ThisWorkbook：ショートカット付与

``` VB
Private Sub Workbook_Open()
  Application.OnKey "^%~", "hhmmで時刻入力" 'Ctrl+Alt+Enter
  Application.OnKey "%~", "mmddかyymmddで日付入力" 'Alt+Enter
End Sub
```

### 標準モジュール：mmddかyymmddで日付入力

``` VB 
Sub mmddかyymmddで日付入力()
   Dim buf

   buf = InputBox("4桁または6桁で日付を入力してください" & vbCrLf & "（mmdd形式またはyymmdd形式）")

    Select Case True
    '先頭に0が付く場合は桁数が減るので各パターン用意
        Case buf = "": GoTo Cancel
        Case buf Like "####"
            buf = Year(Date) & "/" & Left(buf, 2) & "/" & Right(buf, 2)
        Case buf Like "######"
            buf = Left(Year(Date), 2) & Left(buf, 2) & "/" & Mid(buf, 3, 2) & "/" & Right(buf, 2)
        Case Else
            MsgBox "4桁or6桁の数値で入力してください"
            buf = ActiveCell.Value
    End Select
    ActiveCell.Value = buf
Cancel:
End Sub
```

### 標準モジュール：hhmmで時刻入力
時刻入力も地味にコロン（:）入れるの面倒なのでついでに

``` VB
Sub hhmmで時刻入力()
    Application.EnableEvents = False '無限ループ対策

    On Error Resume Next
    flag = True 'Falseなら見積等計算プロシージャで自動計算させない

    buf = InputBox("4桁で時刻を入力してください" & vbCrLf & "（hhmm形式）")


'        If ActiveCell.NumberFormatLocal = "h:mm;@" Then
            Select Case True
            '先頭に0が付く場合は桁数が減るので各パターン用意
            Case buf Like "#"
                buf = "00:0" & buf
            Case buf Like "##"
                buf = "00:" & buf
            Case buf Like "###"""
                buf = "0" & Left(buf, 1) & _
                        ":" & Right(buf, 2)
            Case buf Like "####"
                buf = Left(buf, 2) & _
                        ":" & Right(buf, 2)
            Case buf Like "#:##", "##:##"    '何もしない
            Case buf = "": flag = False      '見積等計算プロシージャで自動計算させない
            Case Else
                MsgBox "4桁の数値か時刻形式で入力してください"
                flag = False
                buf = ""
            End Select  'True
'        End If  'NumberFormatLocal

    ActiveCell.Value = buf
    Application.EnableEvents = True

End Sub
```
囚人のジレンマ （矛盾編 - パレート最適）｜文章題で身に付くプログラミング思考入門️（23/25）

## はじめに

あなたは、物事に対して、良し悪しや答えを求めたいタイプですか？

現実は、何が良くて何が悪いかを決めきれない複雑な問題ばかりですね。
その中で、良し悪しや答えが決まっていれば選びやすいのですが、そう上手くいかないものばかりです。

その上で、どのような選択をすべきだろうか？ということについて理論的に考えてみたいと思います。

『文章題で身に付くプログラミング思考入門️』は、日常や文章問題からプログラミング思考を身に付けていく、簡単で身近で、あなたをちょっと輝かせてくれるシリーズです。

今回は、囚人のジレンマ 矛盾編の1です。
完全なる思考実験です。

## これまでのまとめ

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

## 対象者
- プログラミングの考え方を学びたい人
- プログラミングに挫折したことのある人
- 論理的思考を鍛えたい人
- 文系の人
- エンジニアの思考を理解したい人

## 個別最適か、全体最適か

現実では、個々の合理的な選択が全体としての最適な結果を妨げたり、逆もまた然りですね。
このバランスや矛盾について、忘年会のお店選びも例に加えて考えてみましょう。

パレート最適とナッシュ均衡について紹介していきます。
今回は矛盾編の1として、パレート最適に焦点を当てます。
似ているようで非なるものです。難しいので雰囲気で読んでください。

### パレート最適
**パレート最適とは、他の誰かの利益を損なうことなく、誰かの状況を改善できない状態を指します。**
つまり、全員が得をする選択肢がこれ以上ない、全体として最適な状態です。

#### 囚人のジレンマにおけるパレート最適
では、囚人のジレンマにおけるパレート最適は何かについて考えてみましょう。

囚人のジレンマのルールを以下として、両者の合計得点を出してみます。

```
両者が「協力」：3点ずつ
一方が「裏切り」もう一方が「協力」：裏切り側に5点、協力側は0点
両者が「裏切り」：1点ずつ
```

合計得点は
- 両者が「協力」を選べば、合計 **6点**
- 一方が「裏切り」もう一方が「協力」を選べば、合計 **5点**
- 両者が「裏切り」を選べば、合計 **2点**

となります。
ですので、両者が「協力」を選ぶのが最も点数が高く、これがパレート最適です。
つまり囚人たちにとっては、お互いを信じ、両者とも軽い刑罰を受けることが、結果的には全体最適なわけですね。

#### 忘年会のお店選びにおけるパレート最適

例えば、以下の3人で忘年会をしようと思った時のお店選びについて考えてみます。
- Aさん：飲み放題じゃないと嫌だ
- Bさん：静かなお店じゃないと嫌だ
- Cさん：肉料理が食べられないと嫌だ

お店は以下の3店舗があったとします。
- X店：飲み放題`あり`、`とても静か`、肉料理`なし`
- Y店：飲み放題`あり`、`それなりに静か`、肉料理`数品あり`
- Z店：飲み放題`なし`、`賑やか`、肉料理`ふんだんにあり`

さあ、どのお店が一番良いでしょうか？あなたならどうやって選びますか？
感覚的には、X店とZ店に関しては「嫌だ」と言っている人がいるわけですから、Y店しか残らない感じがしますね。

こちらも数値化できるとわかりやすいので、点数をつけてお店を評価していきましょう。

|点数|飲み放題|静かさ|肉料理|
|---|---|---|---|
|2|あり|とても静か|ふんだんにあり|
|1|-|それなりに静か|数品あり|
|-2|なし|賑やか|なし|

条件がそれなりに満たされれば1点、しっかり満たされれば2点、全く満たされないのであれば-2点で付けています。

この表に従って、お店に対する評価を見ていきましょう。

- X店：飲み放題`あり`、`とても静か`、肉料理`なし`
    - Aさん2点、Bさん2点、Cさん-2点
- Y店：飲み放題`あり`、`それなりに静か`、肉料理`数品あり`
    - Aさん2点、Bさん1点、Cさん1点
- Z店：飲み放題`なし`、`賑やか`、肉料理`ふんだんにあり`
    - Aさん-2点、Bさん-2点、Cさん2点

ですから、それぞれ以下の評価になりますね。

|店|X店|Y店|Z店|
|---|---|---|---|
|Aさん|2|2|-2|
|Bさん|2|1|-2|
|Cさん|-2|1|2|
|合計|**2点**|**4点**|**-2点**|

この結果を見ると、感覚値と結果が一致しますね。

### パレート最適の結論

現在、Y店が一番点数が高いですね。

この状態よりもBさんの満足度を上げようと思ったらX店を選択することになります。
X店を選択しようと思ったら、Cさんの満足度が下がります。

逆にCさんの満足度を上げようと思ったらZ店を選択することになるので、AさんとBさんの満足度が下がります。

**このように、誰かの満足度を上げると、他の誰かの満足度が下がる状態をパレート最適と言います。**

#### 重みづけの影響

もう一パターン、以下の点数で採点してみましょう。

|点数|飲み放題|静かさ|肉料理|
|---|---|---|---|
|1|あり|とても静か|ふんだんにあり|
|0|-|それなりに静か|数品あり|
|-1|なし|賑やか|なし|

この基準だと、評価は以下のようになります。
|店|X店|Y店|Z店|
|---|---|---|---|
|Aさん|1|1|-1|
|Bさん|1|0|-1|
|Cさん|-1|0|1|
|合計|**1点**|**1点**|**-1点**|

面白いですね！こちらでは、X店とY店が同率一位になりました。
要は、各項目の重みづけによって結果が変わるわけです。

現実問題を重みづけしようと思ったら、それなりに複雑です。

例えば、BさんもCさんも飲み放題にはこだわらないものの、3人ともお酒をたくさん飲むのでみんなにとって飲み放題が望ましいよね、とか、Bさんにとっては`それなりに静か`だとまだマイナスなんだよ、とか、Cさんのグルメっぷりは突出したものがあって、Cさんの好きなお店に行くのが結果的にみんなにとってハッピーだったりするわけです。

現実を数値化するのは複雑なことで簡単ではないですが、実は、感覚的には誰もがこれを日常的に行っているのではないでしょうか。
あなたの頭の中を公式に出来たら、今後一切、お店選びに迷う必要がなくなるかもしれません。

## まとめ
囚人のジレンマでは、お互いを信じ、両者とも軽い刑罰を受けることが、結果的には全体最適でした。
お店選びでは、誰かの強い不満を避けた選択をすることが全体最適であるとともに、選択に対して重みづけを変えることで結果も変わることを確認しました。

さて、囚人のジレンマに戻って考えてみますが、

「二人とも刑罰を受けることが、本当に一番良い選択肢だと言えるのだろうか？」

と疑問に思いませんでしたか？
これについて、次回ナッシュ均衡を紹介していきます。

## 最後に
ここまで読んでくださってありがとうございます！
よかったら「いいね」をください。続ける励みになります！
[GAS] Chatwork の指定グループに属するユーザーIDをすべて取得する

# Chatwork のユーザーIDを取得するスクリプト

- **目的**: Chatwork の指定したチャットルームに所属しているメンバーのユーザーIDを取得する。
- **API**: Chatwork APIを使用
- **参考URL**: [Chatwork API ドキュメント](https://developer.chatwork.com/docs)

## スクリプト

```javascript
/**
 * Chatwork のユーザーIDを取得する
 * 
 * 参考URL（公式APIドキュメント）：
 * https://developer.chatwork.com/docs　
 *
 */
function getAllChatworkIds() {

  // チャットルームのIDを定義
  const room_ids = {
    'チャットグループ１': '000000000',
    'チャットグループ２': '111111111',
  };

  // 各ルームIDに対してメンバーIDを取得
  for (let key in room_ids) {
    console.log("===== " + key + " =====");
    getChatworkId(room_ids[key]);
  }
}

function getChatworkId(room_id) {

  api_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
  end_point = 'https://api.chatwork.com/v2/rooms/' + room_id + '/members';

  const options = {
    method: 'GET',
    headers: {
      accept: 'application/json',
      'x-chatworktoken': api_token
    }
  };

  let response = UrlFetchApp.fetch('https://api.chatwork.com/v2/rooms/' + room_id + '/members', options).getContentText();

  response = unicodeUnescape(response);
  response = response.replace(/,/g, ",\n\t");
  response = response.replace(/{/g, "\n{");
  Logger.log(response);
  
}
/**
 * Unicode（¥uxxx形式）を文字列へアンエスケープ
 * @param {string} str エスケープされた文字を含む文字列
 * @return 文字列へアンエスケープされた文字列を返す
 */
function unicodeUnescape(str) {
  let ret = str;
  let matches = str.match(/\\u.{4}/gi);
  for (let ii = 0; ii < matches.length; ii++) {
    let new_str = String.fromCharCode(matches[ii].replace("\\u", "0x"));
    let old_str = matches[ii];
    ret = ret.replace(old_str, new_str);
  }
  return ret;
};
dSPACEのPythonライブラリのインストール方法

## 1. はじめに
dSPACEのpythonスクリプトでシリアル通信するpyserialモジュールとかキー入力を検知するkeyboardモジュールなどを使いたいときってありますよね．私はあります．
今回はkeyboardライブラリのインストール方法で説明します．

## 2. バージョン確認
Powershellやコマンドプロンプトで以下のコマンドでインストールされているPythonのバージョンを確認できます．（他のPythonをインストールしていなければ）
```
python --version
```
ControlDesk 7.1の場合Python 3.6.8が対象のPythonバージョンになります．
もしわからない場合，Windowsの`設定 > アプリ`でdSPACEソフトウェア群をインストール日付と一致するものが恐らく該当のものになると思います．

## 2. ライブラリのインストール
PythonがdSPACEインストール時に同時にインストールされるバージョンしか存在しない場合は，一般的なライブラリインストールの方法を実行すれば問題ありません．
### (1) オンライン
管理者権限でPowershellなどを開いて以下を実行するだけです．
```
python -m pip install keyboard
```
インストールされているライブラリ一覧を取得
```
python -m pip list
```
ライブラリによってはバージョンの互換性があるので，Python Package Index (PyPI)で確認してください．

### (3) オフライン
オフラインのPCにdSPACEがインストールされている場合のやり方です．
このケースはPython2であることが多いのでPyPIでPythonバージョンに対応しているか確認してください．
PyPIから.whlをダウンロードしてインストールするだけです．
tar.gzからインストールする手法などを後日追記します．

[参考]ガンマソフトブログ, "pip install を手動でローカルにダウンロードしたファイルで行う方法",
https://gammasoft.jp/blog/pip-install-from-local-archives-by-manually/

## 3. 例
後日

## 4. 実行結果
後日
Power Automate で SharePoint リストのテキスト列が空の行だけ取得する


Power Automate で、SharePoint リストから特定の列が空の行だけ取得して処理をしたいということ、あると思います。このような要件について、久しぶりにやったら少しはまったので備忘のため記事を書いておこうと思います。

こんなリストから、問題点 (タイトル) 列が空の行だけ取得したいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e7df36ec-cf12-6b8b-6311-3f9def8dc043.png)

まず、数式で null を入力して代入すると、エラーが発生します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/84f7d262-857a-c92a-289f-b56aa7bfe187.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/38f4f8ed-33d5-9035-b944-f00402866fe0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8f50233c-8698-bc09-ec29-c2cc277b02aa.png)

では、シングルクォーテーションで囲ってみます。エラーは発生しなくなったのですが、
データが上手く取得できません。`''`だとだめみたいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/2eafbdcb-2e68-d1ff-70ee-31bc23dc2b9f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4dca823a-3b7d-35a7-c09f-9af8394dca57.png)

最終的に、null を文字として直接入力すると行けました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6c09bec6-c7e9-8f1b-9fe3-a7a6556a3cf1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/dff863d5-29e8-4608-cc1e-3e64716d2cf9.png)

ちょっとしたことですが、久しぶりにやるとはまったので念のため備忘のため記事書きました。
日本の株式市場のトレンド分析

はじめに
日本の株式市場、特に東京証券取引所は、世界で3番目に大きな株式市場です。近年、世界経済の変化や日本国内の政策の調整に伴い、投資家の日本株市場への関心が高まっています。この記事では、日本株市場のトレンド分析の方法を示し、市場の現状、テクニカル分析、ファンダメンタル分析、そして将来の展望について説明します。

現在の市場状況
2024年末時点で、日本の株式市場は顕著な変動を経験しました。日経225指数は2023年に好調なパフォーマンスを示し、世界経済の回復と日本政府の刺激策の恩恵を受けました。しかし、世界経済の不確実性が高まる中、投資家の市場に対する感情も揺れ動いています。

現在の市場ダイナミクス
経済の回復：日本経済はパンデミックの影響を受けた後、徐々に回復しています。政府が推進する経済刺激策と緩和的な金融政策が株式市場を支えています。
国際環境：米国の利上げや地政学的リスクなど、世界経済の不確実性が日本市場に影響を与える可能性があります。
企業の利益：日本企業の利益能力は徐々に改善しており、特にテクノロジーや製造業分野での楽観的な見通しが広がっています。
テクニカル分析
テクニカル分析は、市場の過去の価格や取引量を研究することで、将来の価格動向を予測する方法です。日本株市場では、移動平均線、相対力指数（RSI）、ボリンジャーバンドなどのテクニカル指標がよく使用されます。

移動平均線
移動平均線（MA）は、市場のトレンドを分析する重要なツールです。投資家は、短期と長期の移動平均線の交差状況を観察することで、市場のトレンドを判断できます。例えば、短期MAが長期MAを上回ると、市場が上昇トレンドに入る可能性があります。

相対力指数（RSI）
RSIは、市場が過剰買いまたは過剰売りの状態にあるかを測定する指標です。一般的に、RSIが70を超えると市場が過剰買い状態にあるとされ、逆に30未満の場合は過剰売り状態にあるとされます。RSIを分析することで、投資家はエントリーやエグジットのタイミングを判断できます。

ボリンジャーバンド
ボリンジャーバンドは、中央の移動平均線と上下の2本の標準偏差線から構成されています。価格がボリンジャーバンドの上限を突破すると、市場が過熱している可能性があり、下限を突破すると市場が反発する可能性があります。

ファンダメンタル分析
ファンダメンタル分析は、企業の価値に影響を与える経済、業界、企業自身の要因に焦点を当てます。日本市場においては、以下のポイントが特に重要です。

マクロ経済指標：GDP成長率、失業率、インフレ率などは市場に影響を与える重要な要因です。
企業の決算：定期的に発表される企業の決算は、投資家が企業の利益能力や将来の成長可能性を評価するのに役立ちます。
政策の変更：日本政府の経済政策や金融政策は、市場の感情や投資家の信頼に直接影響を与えます。
将来の展望
将来を展望すると、日本株市場は以下の要因に影響を受ける可能性があります。

世界経済の状況：世界経済の回復が続けば、日本企業の輸出や利益成長が促進される可能性があります。
政策の調整：日本銀行の金融政策の変化は、市場の流動性や投資家の感情に直接影響を与えます。
テクノロジーの革新：テクノロジー業界の急速な発展に伴い、関連企業が市場の主要な推進力となる可能性があります。
結論
日本株市場のトレンド分析を通じて、投資家は市場の機会をよりよく把握できます。テクニカル分析やファンダメンタル分析を通じて、市場の動向や企業の状況を理解することが成功する投資の鍵です。現在の複雑な市場環境において、柔軟で敏感な投資戦略を保つことが、日本株市場でのより良いリターンを得るために役立つでしょう。![Snipaste_2024-12-25_16-28-19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3970374/4637be69-bb9c-dce8-bbe4-4084890b0578.jpeg)
[re:Inventセッションレポート]Amazon CloudFrontのアップデート一部紹介

# はじめに
こんにちは。
本日はre:Invent2024のブレイクアウトセッションで紹介されたAWSアップデートについてのご紹介をします。
re:Inventは初参加で、日本に帰ってきてから無事(？)体調不良になりました。帰国1週間後に39度の熱が出て、さらその1週間後再び38度の熱が出ました。参加予定だった忘年会や行きたかったライブなど、軒並み参加できませんでした。12月は何かと忙しくなると思うので、今後参加される皆さんは**くれぐれも体調管理だけはしておくことをオススメ**します。あとは熱が引いても油断しないことです。

***

本題に戻すと、re:Inventで｢You are under a DDOS attack! Are you ready to respond? (CDN306)｣というBreakout Sessionに参加しました。
![セッションタイトル.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1573132/566a06fa-20e0-2130-5f22-9ca84de3ef00.jpeg)
そこで紹介されていた
- CloudFrontのVPCオリジン機能
- CloudFrontのWAFによってブロックされたリクエストの課金対象外に

の2つのアップデートについて本ブログで紹介します。
ちなみに両方予選落ちアップデートで11月に発表されたものです。

# CloudFrontのVPCオリジン機能
CloudFrontのVPCオリジン機能は、CloudFrontのオリジンに｢**プライベートサブネット**｣のALB、NLBやEC2インスタンスを直接繋げる事ができるようになった機能です。

これまではALBなどをパブリックサブネットに立てて、CloudFrontディストリビューション側でパブリックなエンドポイントをオリジンと設定する必要がありましたが、今後はその必要がなくなりました。

従来ALBなどをオリジンとする場合は、セキュリティグループのマネージドプレフィックスリストでCloudFront側が利用するIP郡を穴あけすることでもオリジン保護ができましたが、それも必要なくシンプルにすることができるようになりました。VPCオリジンの裏側では、CloudFrontマネージドのENIが作成され、そのENIがCloudFrontのマネージドプレフィックスリストを持っているようです。

パブリックなエンドポイントがないので
- オリジン保護強化
- パブリックIPアドレスが不要

などの利点を得ることができます。
なおVPCオリジンを使うにはInternet GateWayが必要なので、そこは留意ください。


![vpcオリジン保護.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1573132/7188a613-2001-7867-7f7e-7f71013e07a1.png)



# CloudFrontのWAFによってブロックされたリクエストの課金対象外に
こちらは書いてる通りですが、WAFでブロックされたリクエストはCloudFrontのリクエスト料金やデータ転送料金がかからなくなります。
実はWAFでブロックしたリクエストは、WAFではなく、CloudFrontがエラーレスポンスを返しています。なのでWAFでブロックしていてもCloudFrontにリクエストが通っていました。

今回のアップデートで、WAFでブロックしたリクエストのCloudFront料金はかからなくなるという、非常に嬉しいアップデートです。

なのでCloudFrontでもWAFでも地理的制限機能を使うことができますが、WAFに寄せるようにしましょう。ちなみにWAFの地理的制限の方が、東京都のような詳細なエリアまで指定することができます。

![WAFBlock.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1573132/e665fec3-5124-6966-8433-760f74704e22.png)

# 最後に
今回参加したセッションの本題はDDoS攻撃に対してどのように対処するか？といった内容ですので、気になる方はぜひYouTubeも見てみてください。

https://youtu.be/oXw0vLOSIY4?si=jp3QE3YH1R1pdsL8

またAWS公式で、DDoS対策のベストプラクティスのホワイトペーパーも出ています。

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-best-practices-ddos-resiliency/aws-best-practices-ddos-resiliency.html

これだけでも参考になるので読んでみてください。
個人的に見やすかったエクセル資料の特徴3選

## はじめに
nextJsを使った開発で、修正作業を行った際に修正作業の証拠として資料を提示する必要がある。
資料を眺めている中で気づいた見やすい資料の特徴をまとめる。

## 前提
- エクセルを使用
- 画面のキャプチャを載せる
- 必要ならapiのレスポンス、リクエストも載せる
## 特徴
### 文字と画面のキャプチャのバランスがちょうどいい
セルの中にキャプチャを入れ込む工夫で文字と画像の大きさがいい感じになる。

### どこを見てほしいのかが強調されている
図形を使って囲われていたり、やじるしで対応関係が示されていると見やすく感じる。

### スマートフォン表示のキャプチャが隙間なく縦並び
スマートフォンの画面を横ならびで並べがちだが、縦に並べた方が見やすい。
さらに言及すると隙間なく並んでいるとなお見やすい。

### 余計な余白がない
キャプチャを取るときにいらない部分をできるだけそぎ落とす。
〇
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3960717/fc833f8a-0938-1bfa-7132-655fc035fd8a.png)

×
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3960717/a38dfd6f-465f-a452-f524-1e16db6e3317.png)
アドベントカレンダー2024あとがき

25記事を書いたところです。
正直、思っていた以上に大変でした。
様々なジャンルに手を出したのと、その中に初めて触れるものが多くあったのが大きな理由だと思います。
序盤はガッツリ詰め込んだ記事を書く気満々でしたが、初週の終わりごろには継続できないと気づいて下方修正しました。
それでも追いついていない記事がいくつかあって悔しいので、今後少しずつ加筆していくと思います。

こんなですが、それでもやってよかったと思います。
ものすごい進捗を生まなくてもアウトプットはできるし、むしろアウトプットにちゃんと情報を書けるようにすることを意識した方が、学習時に気付くことも多くなりました。
序盤はcopilotによる補完も結構使っていたのですが、終盤ではむしろ、自分で書いたほうが早い感覚になっていました。
毎日投稿のペースを続けるのはかなり難しそうですが、少しずつでも、継続していきたいと思います。
特に今回、数学のことはほとんど出さなかったので、勉強しつつ何か考えて書くというのをやっていきたいですね。
インダストリアルIoTデータをリアルタイム分析！ClickHouseとEMQXの統合がもたらす新たな可能性

こんにちは！ClickHouse JapanのYasuです。
ClickHouseは日本でのビジネスを本格的に展開するにあたりQiitaでClickHouseについてのTipsやユーザー事例などの記事を投稿していきます。なお公式ドキュメントはこちらです→[ClickHouse Docs](https://clickhouse.com/docs)

はじめに
-
近年、インダストリアルIoT（IIoT）の発展に伴い、製造業やエネルギー産業などで生成されるデータの量は爆発的に増加しています。このような膨大なデータを効率よく処理し、リアルタイムに分析することは、業務効率化や新たな価値創造にとって不可欠です。そこで注目されるのが、ClickHouseとEMQXの統合ソリューションです。

ClickHouseとEMQXとは？
-
ClickHouse®は、高性能で列指向のSQLデータベース管理システム（DBMS）であり、オンライン分析処理（OLAP）に特化しています。オープンソースソフトウェアとしても、クラウドサービスとしても利用可能です。
日本でのサービスも提供しております。ぜひ一度ClickHouseのスピードを体験してください！

[ClickHouse Cloud](https://auth.clickhouse.cloud/u/login/identifier?state=hKFo2SBIS01xVEpDMDFuSEZWeXdLVTJWMUFJSWVxZ3RXQ2xQTaFur3VuaXZlcnNhbC1sb2dpbqN0aWTZIE1TaURqdzlQNGZiaE1URDE5TWRFczdGQ2sxZDBzTWFDo2NpZNkgSVBwSDRSTkQwcU5YSFZheWVwZmZnc0dwYlhRbUZpa3I)
[ClickHouse Opensource](https://github.com/ClickHouse/ClickHouse)

一方、EMQXは、業界をリードするオープンソースのMQTT（Message Queuing Telemetry Transport）メッセージブローカーであり、大量のIoTデバイスからのデータを効率的に収集・配信する能力を持っています。またMQTTだけではなく、OPC UA,MELSEC,Modobus,BACnetなど様々な産業プロトコルに対応したデータ収集機能を提供しております。

この2つを組み合わせることで、大規模なIIoTデータのリアルタイム分析をシンプルかつ強力に実現できます。
![スクリーンショット 2024-12-25 16.18.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3964259/9bc56ec6-6b9f-c0da-7a33-8421f9def36d.png)

ClickHouseとEMQXの統合の仕組み
-
EMQXは、IoTデバイスから送信されるデータを収集し、ClickHouseに直接ストリーミングすることができます。この統合により、次のような流れが実現します

1.IoTデバイスからのデータ収集
EMQXは、MQTTプロトコルを介してデバイスからデータを受信します。このデータには、センサー情報や位置情報などが含まれます。

2.データのClickHouseへのストリーミング
EMQXは、収集したデータをKafkaや直接HTTP経由でClickHouseにストリーミングできます。

3.リアルタイム分析
ClickHouseの超高速なクエリエンジンを活用し、複雑なデータ分析やダッシュボード表示をリアルタイムで実現します。

活用例：スマートファクトリーにおけるリアルタイム分析
-
この統合ソリューションは、さまざまな業界で応用可能ですが、特にスマートファクトリーでの利用が注目されています。

稼働監視

工場内の設備から収集されたデータをリアルタイムで監視し、異常検知やメンテナンスの最適化を実現。

エネルギー効率の向上

センサーからのデータを基にエネルギー使用量を分析し、効率化のためのインサイトを提供。

品質管理

生産ラインのデータを分析することで、不良品の早期検出を可能に。

ClickHouseとEMQXの統合がもたらすメリット
-
1.スケーラビリティ

EMQXは数百万台のデバイスからのデータ収集に対応し、ClickHouseはペタバイト規模のデータを高速処理します。

2.リアルタイム性

データのストリーミングから分析までのレイテンシを最小限に抑え、即時性の高い意思決定を支援。

3.コスト効率

オープンソースを基盤にし、優れた機能をSaaSサービスでリリースしており、低コストでハイパフォーマンス、大規模なインフラを構築可能。

まとめ
-
ClickHouseとEMQXの統合は、インダストリアルIoTの分野において、膨大なデータをリアルタイムで活用するための強力なプラットフォームを提供します。この組み合わせにより、これまでにない速度と効率でビジネスインサイトを得ることが可能となります。

インダストリアルIoTのデータ活用を次のレベルに引き上げたい方は、ぜひClickHouseとEMQXの導入を検討してみてください！PoCの支援などお気軽にお問い合わせください。
[ClickHouse公式サイト問い合わせ](https://clickhouse.com/jp/company/contact?loc=nav)

ClickHouseとEMQXの統合について設定内容はClickHouse Docsに参考情報がございます。公式なドキュメントは、関連リンクを参照してください。
関連リンク[ClickHouse公式ドキュメント - EMQX統合](https://clickhouse.com/docs/en/integrations/emqx)

ClickHouseについてもっと知りたい方は
-
コミュニティイベントを開催します！ClickHouseをお使いの方はもちろん、検討中の方、少し気になる方、ただの興味本位でも参加オッケーです！ぜひ遊びに来てください！

[ClickHouse Meetup Tokyo](https://www.meetup.com/ja-JP/clickhouse-tokyo-user-group/events/305126993/?utm_medium=referral&utm_campaign=share-btn_savedevents_share_modal&utm_source=link)
初めてCI/CDを実装した際に詰まったところ


前回作成したReactの学習帰路気宇アプリに、CI/CDを実装したので、記事にします。

### 使用技術

- React
- Vite
- Bun

## 詰まったところ

Firebaseにアプリをデプロイした後、アクセスしても違う内容のページが表示されていた。
その際、自分はデプロイに失敗してエラーページのようなものが表示されていると捉えてしまったが、実際はindex.htmlページの指定を間違えて別の内容をデプロイしていた。
その為、firebaseの設定ファイルを変更したら、作成したアプリがきちんとデプロイされた。

つまり、コマンドや画面の英語を雰囲気で判断するのではなく、きちんと翻訳して内容を理解して行動するべきだった。

## 学び

GitHub Actionsを設定するにあたって、[Next.jsとGithubActionsでFirebaseのCI/CDする](https://zenn.dev/jinwatanabe/articles/4026d373383739)を参考にしたが、自分の場合npmではなくBunを使用していた為、そのまま使用はできなかった。
その為、npmからBun用に設定を変更したが、その際、AIに変更を頼むだけで、抜け漏れなくコマンドを置換してくれた。

なので、目的が同じで（土台以外の）使用ツールを変更したい場合、変更はAI・人間は差分の確認だけする方が、信頼性が高いと考えられそう。

## JISOUのメンバー募集中
プログラミングコーチングJISOUではメンバーを募集しています。
日本一のアウトプットコミュニティでキャリアアップしませんか？

気になる方はぜひHPからお願いします👇

https://projisou.jp
社内向け製品発表会「収穫祭」の魅力

こんにちは、ふるすです。
弊社では一昨年より毎年10月に「収穫祭」を開催しています。
7月に異動して最初の大きなお仕事、ということで収穫祭の運営担当をしましたので振り返りつつ、非常におもしろいイベントなので魅力をお伝えできればと思います。

## 収穫祭ってなに？

収穫祭は一言でいうと**社内向け製品発表会**のこと。
詳細についてはnote記事も出ておりますのでよろしければご覧ください。

https://note.com/works_hi/n/n22bc27fcd29c

「製品発表会って社外向けにするんじゃないの？」と思われる方もいらっしゃるかもしれません。

弊社の収穫祭は開発の方から製品(=収穫物)やその開発過程(=収穫方法、収穫過程)についてフロント部門をはじめとした他部門の方に発表していただき、それを聞いた営業さんやコンサルさんを通じてお客様にも還元していこう、というイベントになっています。

イベントは例年4時間程度となっており、今年は1枠あたり25分で行われました。全部で25個の様々なコンテンツが出揃いました(※想定よりご登壇希望が多かったため、枠増加をしました。とても嬉しかったです)。
スピーカーは開発の方にしてもらうのですが、コンテンツにフロント部門の視点を盛り込んでもらうため＋当日の進行役を担ってもらうために各コンテンツごとに2名程度、フロント部門の方をアサインさせてもらいました。

また、今年は新たな試みとして、イベントの運営企画段階からフロント部門の方や広報、バックオフィスの社員にも「運営委員」として入ってもらいました。

これらの取り組みは開発部門以外の視点を取り入れられるというだけでなく、自部署の方が関わっているイベント、ということでより身近に感じてもらい、自分事としてイベントに参加してもらえるのではないか、という効果もねらいました。

## やってみてどうだった？
様々な社内イベントがある中で、収穫祭はかなりの人気コンテンツなのですが今年も大盛況で終わりました。

![【Web背景】Connected_Autumn_FY24収穫祭_白.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827898/4d269d0d-58f9-a9d4-235f-daabef4436a6.png)
コンテンツ登壇者の方向けにWEB背景を用意したり…


![スクリーンショット 2024-10-08 13030.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827898/6282163a-56be-dfc2-98b9-0da8e4c35d63.png)
お揃いパーカーを配布してお祭り感も出しました！

イベント後アンケートでは「満足度95％超え」を達成し、
当日のSlackチャンネルやアンケートでは、

・毎年楽しみにしているけど今年もすごくよかった。モチベーションが上がった
・開発の苦労や製品の裏側を知ることで、納得感を持って製品についてお客様とお話できそう
・同期が登壇していたのを見て、来年はわたしも絶対に登壇したい

といったような嬉しいお声がたくさんありました。

開発にも開発以外の部署にもとても良い影響を与えられている素敵なイベントになったなと感じています。
来年ももし開催できることになったら、もっと開発部門の魅力が社内外に伝わるよう、アンケート結果を生かしつつブラッシュアップしていきたいなと考えています。

ここまでお読みいただきありがとうございました！
ショート動画でクイックに知る！ 『watsonx OrchestrateのAssistant Builderのご紹介』

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52151/7f8e44e3-ecaa-56cd-d05f-07102384e9a1.png)

# はじめに

みなさん、IBM Videoというサイトをご存知でしょうか？
IBMが提供する製品をショート動画でわかりやすくご紹介している動画サイトです。
* スキルアップしたくてもなかなか時間が取れない
* 気になる製品があるけど、マニュアルを読んで理解するのはきつい
* 製品の特徴やメリットをクイックに知りたい

という方には、うってつけの動画を提供するサイトです。
興味のある方はぜひご覧いただければと思います。

# 今回ご紹介する動画へのリンク

[watsonx OrchestrateのAssistant Builderのご紹介](https://video.ibm.com/recorded/133904562)

このビデオでは、IBM watsonx OrchestrateのAssistant Builderを活用してAIアシスタントを作成し、業務プロセスの自動化と効率化を実現する方法を具体的に解説しています。

# Watson Orchestrate の概要

## 目的
* AIアシスタントを構築するプラットフォームで業務効率化を実現。

## 機能
* 既存アプリケーションと連携。
* 業務プロセスをフローとして登録。
* チャットで自然言語を用いて操作可能。

# 従来のwatsonx Assistantとの違い

* watsonx Assistantは対話型AIチャットボットに特化。
* Assistant Builderは、プロセス自動化機能を追加し、広範な業務プロセスをサポート。

# 定義可能な3つのアクションタイプ
1. AIアクション
    * LLMを用いて文章生成や回答を提供。
1. スケールベースアクション
    * 事前作成されたタスクを自動化。
1. カスタムビルダーアクション
    * 手動でステップごとに作成されたアクション。

# アクションの設定とデモ

* トリガー設定
    * キーワードによりアクションを発動。
* デモ1
    * 「Request Time Off」のスキル実行。
    * ユーザーが休暇申請のフレーズを入力→アクション実行。
* デモ2
    * AIガイドアクションで「IBM Benefits Eligibility」の回答を生成。


# 特徴と利便性
* 柔軟な設定
    * ベースLLMや外部情報ソースを用途に応じて設定可能。
* 統合
    * 自社システムや生成AIと連携可能なオーケストレーションツール。
* 効率化
    * ビジネスルールやワークフローを組み込み、業務プロセスを簡単に自動化。

# まとめ
* Watsonx Orchestrateの活用で業務プロセスの変革が可能。
* 個別デモを希望の方は、[こちら](https://ibm.biz/BdKZA5)へアクセス。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52151/99f4286b-ca27-4644-6f0b-2e28309ded62.png)

# 参考

watsonx OrchestrateのAssistant Builderのご紹介

https://video.ibm.com/recorded/133904562
kaggleの環境をubuntuで構築する。(vscode編)

#### 問題

まず、[前の記事](https://qiita.com/kaihikaru0601/items/b86aea328017709d2822)にある参考資料を実行しました。jupyterを開くことはできたのですが、VScodeを開くやり方がわかりませんでした。

そこで、もう一度[記事](https://zenn.dev/yuto_mo/articles/d261e96f35986a)を読み返したら、

>開発コンテナ：実行中のコンテナにアタッチ.../Dev Containers: Attach to Running Container...

という内容ができていないことがわかりました。

#### 対処

これはVScode上で、Deb Containersという拡張機能をインストールしなければいけなかったようです。同じ研究室の同期が教えてくれました。どうもありがとう。
DOMと仮想DOMの違い

## はじめに
こんにちは、エンジニアを目指す大学院生です。
今回は知っているようであまり知らない**DOM**とReactで用いられる**仮想DOM**についてまとめます。

## DOM(Document Object Model)とは
DOMとは、HTMLなどのマークアップ言語とCSSを、JavaScriptなどのプログラミング言語からアクセスできるようにするための**API**である。(プログラミング言語ではない!)

DOMは、HTMLの各要素をオブジェクトとして表現する。そのため、JavaScriptだけでなく、RubyやPythonなどの他の言語からも操作できる。

また、DOMはオブジェクトを**ツリー構造**として表現している。ドキュメントを構成する各要素(オブジェクト)を**ノード**と言う。
```html
<html>
  <head>
    <title>タイトル</title>
  </head>
  <body>
    <h1>DOMとは</h1>
    <p id="description">DOMはツリー構造</p>
  </body>
</html>
```
このHTMLは、ツリー構造では以下のように表される。
```bash
Document
└── html
    ├── head
    │   └── title
    │       └── "タイトル"
    └── body
        ├── h1
        │   └── "DOMとは"
        └── p-"description"
            └── "DOMはツリー構造"
```
各オブジェクトはメソッドやプロパティを持っていて、それらを利用することでDOMを操作できる。

## 仮想DOMとは
DOMとは別物で、**メモリ上に仮想的に作成されるDOM**である。**仮想DOMとDOMの差分を検知して、差分のみを更新して描画する**ことでパフォーマンスを向上させることができる。
仮想DOMを用いない場合は、変更箇所がわずかであっても、全て再描画されてしまう。その反面、仮想DOMでは、差分のみを実際のDOMに反映させることで、無駄な描画を減らしパフォーマンスを向上させることができる。
<br>
**仮想DOMを用いた更新の手順**
1. 変更前の仮想DOM1を作成
2. 変更後の仮想DOM2を作成
3. 仮想DOM1と仮想DOM2の差分を計算
4. 差分があった部分だけをDOMに反映させて更新
<br>
差分がある部分だけを更新することで、最小限のDOM操作に抑え、レンダリングにかかる時間を短くすることができる。

## 参考文献
https://developer.mozilla.org/ja/docs/Web/API/Document_Object_Model/Introduction

https://qiita.com/seira/items/6767e222890c9890ecb9

https://ja.legacy.reactjs.org/docs/faq-internals.html
JaSST'24 Tokai 参加レポート_ワークショップ編

# はじめに

こんにちは、本田技研工業遠野です。
ソフトウェア内製化チームでQAエンジニアをしています。（QA＝Quality Assurance、品質保証）

先日、ソフトウェアテストのシンポジウム”JaSST'24 Tokai”へ参加してきました。
こちらはワークショップに関するレポートです！

# **ワークショップ：【テスト設計初心者向け】テスト観点からテストケースを作ってみよう！**

## おおまかな内容

- VSTePとは何か？
- テスト観点って何だ？
- VSTePでのやり方
    - 観点の出し方
    - テストフレームからのケースの作り方
- 題材について
- グループワーク1：テストフレームをつくってみよう
    - 発表とフィードバック
- グループワーク2：テストケースをつくってみよう
    - 発表とフィードバック
- テストケース作成へのAI活用
- まとめ

## VSTePについて

- VSTePてなに？
    - テスト観点図
        - マインドマップを使ったり
    - テストコンテナ図
    - テストフレーム
- テスト観点ってなんだ？
    - 具体化するとテストケースの一部になるような情報
    - テスト対象のテストすべき側面、テスト対象の範囲やつくり、テスト対象が達成すべき性質
    - 参考：観点出しの方法
        - 8〜9割のひとがよく使う
            - マインドマップ
            - 組織の観点リスト
        - 意地悪漢字
        - Ostrandの4つのビュー
        - 品質特性
- VSTePでの観点の出し方
    - 観点図からいきなりテストケースをつくるのではなく、テストフレームをいったんかませる
    - 観点が出た状態で、テストフレームやテストケースをつくっていくのが今日のスコープ
- テストフレームのつくりかた
    - テスト観点図から必要なものをコピペしてもってくる
    - つなげる

## テストフレームをつくってみよう

- テスト観点図は膨大なので、テストケースにするために必要な情報だけを絞ってもってくる
- 必要な情報どうしをつなぐ

VSTePの考え方では、テストフレーム作成時は関連するものは並べるにとどめる
テストケース化するときに具体化する
たくさんの観点が並んでいるとき、ケースがそれを網羅しているかわからないからフレームにする

■テストフレームの大きさ・抽象度の判断はどうなる？

- 組織ごとにタイプが決まっていたりするので、それに合わせる
- テスト機材の関係で音声（の出力を確認するテスト）は別でやるとかを、「テストコンテナ図」で決めている
- 状況などに応じて。決めの問題に近い

■この工程はプロセス上のどの段階にやること？

- 半分設計、半分分析
- あいだの位置
- ハイレベルデザインで、高位のテスト設計にあたるとおもう

■青い付箋(観点/機能/パラメータ…)どうしの関連、依存関係はいつ議論するのがいいか

- テストケースに落とし込むときには必ず必要
- バランスどうやってとる？
- 設計の段階的詳細化と同じかも
    - 入力/出力がパキッと決まっているときはそこまでフレームは要らない
    - テストフレームを何段階かかませて決める場合もあるので、ドメインによるのではないか
    - わかっていれば、テストフレームを書く必要はないのでは？

## テストケース作成へのAI活用

### 活用シーン

- テストベースの理解に利用する
- テストケースを作成する
- 作成したテストケースをレビューする

### テストベースの理解に利用する

便利だけど、再現性はあまりない
新人が見逃しそうな観点がピックアップされていて、結構役に立ちそう

### テストケースの作成

単に仕様書をかませるだけだとあまりいい結果がなかった
今日は表形式で出力された
これが正しいか、見極める必要がある
出力自体は簡単にできる
こちらも再現性の確保は難しい

### テストケースのレビュー

合っている合っていないを人間が判断しやすいので、これは使いやすい
（感想より）漏れている、抜けている観点は合意の問題なので、そこの合意が抜けないといいな
→プロンプトがシンプルなので縛りがなかったが、実際使うなら◯◯の観点で評価して、というところも必要かも

## まとめ（AI活用）

支援があってもスキルの重要性はかわらない
制約を与えて使う必要があるのではないか
レビューに対しては有効な支援だと感じている

## 感想

VSTePを使って手を動かしてみるのは初めてで、特にテストフレームをつくる部分は難しく感じました。
手が止まってしまったので、フィードバックがもらえる状態で試せたのがよかったです。

VSTePを上手く使えたとは正直思いませんが、実務をするうえでのヒントにはなったと感じています。
具体化していく作業に対して、「いい感じの大きさで上手くまとめる」ような抽象度をあげる向きは
テストでは難しい作業なのかもしれないと思いました。

# おわりに

厳しい現実が刺さったり、事例から学んだり、1日よいインプットになりました。
個人で手を動かしスキルアップしつつ、組織で大きいことを達成していけるよう動いていけたらと思います。

参加レポートは以上です、ありがとうございました！
javascriptでatcoderするときにあったらよい関数一覧2

# はじめに
前回からの続きです。まだまだよく使う関数が出てくるので見ていってください。

## 二分探索
ほかから取ってきました。使わさせていただいています。よく使うので持ってて悪いことはありません。引数には(配列,知りたい要素)を入れてください。sortされたリストしかできません。
```javascript
const isOK = (arr, mid, key) => arr[mid] >= key;
const lower_bound = (arr, key) => {
  let ng = -1; //「index = 0」が条件を満たすこともあるので、初期値は -1
  let ok = arr.length; // 「index = a.size()-1」が条件を満たさないこともあるので、初期値は a.size()

  while (ok - ng > 1) {
    let mid = Math.floor((ok + ng) / 2);
    if (isOK(arr, mid, key)) ok = mid;
    else ng = mid;
  }
  /* left は条件を満たさない最大の値、right は条件を満たす最小の値になっている */
  return ok;
};
const isOK2 = (arr, mid, key) => arr[mid] > key;
const upper_bound = (arr, key) => {
  let ng = -1; //「index = 0」が条件を満たすこともあるので、初期値は -1
  let ok = arr.length; // 「index = a.size()-1」が条件を満たさないこともあるので、初期値は a.size()

  while (ok - ng > 1) {
    let mid = Math.floor((ok + ng) / 2);
    if (isOK2(arr, mid, key)) ok = mid;
    else ng = mid;
  }
  /* left は条件を満たさない最大の値、right は条件を満たす最小の値になっている */
  return ok;
};
```

## キュー
jsのリストはスタックです。スタックを2つ使うことによってキューを作成できます。これを使ってbfsを簡単に実装できるようになります。自作なのでバグが起きるかもしれないので自己責任で使ってください。
```javascript
class Queue {
  #stackPush = [];
  #stackPop = [];

  push(value) {
    this.#stackPush.push(value);
  }

  shift() {
    if (this.#stackPop.length === 0) {
      while (this.#stackPush.length > 0) {
        this.#stackPop.push(this.#stackPush.pop());
      }
    }
    return this.#stackPop.pop();
  }
  length (){
    if (this.#stackPop.length === 0) {
      while (this.#stackPush.length > 0) {
        this.#stackPop.push(this.#stackPush.pop());
      }
    }
    return this.#stackPop.length;
  }
}
```
# 最後に
本当にjavascriptで書いている人が少ないので同士を増やしたいです。BigIntは使いにくいけど...
R6秋応用情報午後　振り返り

2024年12月26日正午に合格発表が行われます。
そこで、各予備校の記述式の解答例を比較しました。
私は問1, 3, 4, 7, 8を回答したのですが、3と8は文章で答える記述がなかったので1, 4, 7についてまとめました。ほかの問は解いてないのですみません<(_ _)>
- IPA(公式)
- TAC
- iTEC
- 大原
- ITAssist

# 問1 情報セキュリティ

## 設問1 ハッシュ値の特性
- IPA
ハッシュ値からパスワードの割出しは難しい。
- TAC
ハッシュ値から元のデータを得ることが困難という特性
ハッシュ値が同じパスワードを求めることが困難な特性
- iTEC
ハッシュ値から元の値を推測することが困難という特性
- 大原
ハッシュ値から元データの復元が困難である不可逆性
- ITアシスト
ハッシュ値からパスワードを復元するのは困難な特性

「ハッシュ値→パスワード/元データが難しい」ということでほぼ一致ですね。

## 設問6(1) ペッパーを付加したハッシュ化でレインボーテーブル攻撃が困難になる理由
- IPA
会員テーブルの窃取だけではペッパーを得ることができないから
- TAC
会員テーブルのデータを取得しただけではペッパーの値がわからないから
- iTEC
ソルトが漏えいしてもペッパーが安全な格納領域にあるから
- 大原
ペッパーは安全な領域に格納されており、漏洩リスクが低いため。
- ITアシスト
会員情報を取得してもペッパー値は分からないから

公式では、会員テーブル知ってもペッパーがわからないという回答ですが、ペッパーがわからないということは、ペッパーが安全なところにあるからという回答もあるようです。

# 問4 システムアーキテクチャ

## 設問2(3) 結果をAPサーバに送信が最適な理由
- IPA
アウトプットデータと比較してインプットデータの量が多いから
- TAC
アウトプットのデータ量はインプットのデータ量よりも極端に少ないから
- iTEC
インプットのデータ量を他のサーバに送信する必要がないから
- 大原
DBサーバからの処理結果のアウトプットデータ量が最も少ないため
- ITアシスト
処理の前後でデータ量が1/1000になり、通信時間が短くなるから

データ量比較が多数派ですが、インプットデータ送信の不必要性や通信時間に着目している回答もあります。

## 設問2(4) 素材送信処理の処理方法の変更
- IPA
素材データをAPサーバのSSDにキャッシュする。
- TAC
NASから送信された素材データをAPサーバでキャッシュする。
- iTEC
特定の素材データを,APサーバのSSDにキャッシュする。
- 大原
BGM素材やテロップ素材をAPサーバのSSDに格納する。
- ITアシスト
頻繁に送信する素材データをAPサーバにキャッシュする

おおむね「素材データ→APサーバ」という感じです。

## 設問3(2) 多次元分析処理で扱うデータの特徴
- IPA
追加・更新のない過去データ
- TAC
処理対象のデータが処理中に追記されない。
- iTEC
リアルタイム性が不要なデータという特徴
- 大原
データ量が膨大で、処理に時間を要する。
- ITアシスト
リアルタイムで処理する必要がない

リアルタイム性の回答が多いですが、公式だと「追加・更新のない」と記されています。

# 問7 組込みシステム開発

## 設問4(2) 待機時以外でクロックの供給を停止できない理由
- IPA
クロックの再開に掛かる5ミリ秒以下の周期で動くタスクがあるから
- TAC
クロックの供給を再開するのに5ミリ秒を要し、タスクの起動周期を超えるから
- iTEC
クロック供給の再開に要する時間が、マイクタスクの起動周期2秒を超えるため
- 大原
起動周期内に処理が完了しなくなり、音飛びやノイズなどの不具合が
発生するから
- ITアシスト
停⽌したクロックの再開には5ミリ秒かかり、マイクタスクの起動周期を超過するから

大原の「音飛びやノイズなどの不具合」については、問題文章中に「スピーカー、マイクタスク及び特定後検出タスクは~(省略)~起動周期内に処理が完了しない場合、音飛びやノイズなどの不具合が発生する。」というシナリオなので、表現の違いはあれど、「クロック再開時間 > タスクの起動周期」の意味がかけていればよさそうです。

# みなさんの合格をお祈りします
会社員と個人事業主どっちがお得？のメモ

## はじめに
こんにちは！ITスクールRareTECHにてCS（Customer Support）を担当している池村です。
今回の記事は個人事業主と会社員どっちがお得なのか？というお話です。
メモ書き程度の記事なので、あまり見る意味はない記事ということを前提に閲覧お願いします。

![cdd4ce45-1d38-4cd1-8006-b8575de035fe_720.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/6812def5-379e-e0ad-d508-08e5544f2489.png)



## 年金について
基本的に、会社員は厚生年金に加入して、個人事業主の場合は国民年金に加入します。
#### 厚生年金
厚生年金の場合、将来的に受け取れる額は年間¥1,500,000〜¥1,700,000、月計算で¥140,000〜¥160,000ほどになります。
#### 国民年金
国民年金の場合、将来的に受け取れる額は年間¥800,000程度。月計算で¥60,000もないくらいになります。

#### どっちがお得か
年金の総額だけ見ると、会社員の方が将来受け取れる年金はだいぶ多い印象です。
厚生年金の場合、総額の半分を会社が負担しているので、それだけ見ると会社員の方がとても優遇されています。

上記二つは国が用意している公的年金であり、金額に不安がある場合は別の年金に加入することも考えられます。

#### 企業年金
企業が厚生年金とは別に、福利厚生などで企業年金制度を導入している場合があります。
加入をすると、公的年金にプラスして受け取ることが可能です。

#### 私的年金
iDeCoなどがこれに当たる。老後に一時金としてや年金として受け取ることができる。

:::note info
どちらにしろ公的年金だけでの生活は不安なので、他のものにも手を出している人が多いんですね。
:::


## 福利厚生
会社員として所属しているとさまざまな福利厚生があります。
- 交通費
- 住宅手当
- 有給休暇
- 健康診断
- 社員旅行や社員割引
- 退職金制度

これらの福利厚生が使えるのはメリットと言えます。

## フリーランスの節税
### 経費
フリーランスの場合、事業に関係するものは経費扱いにすることができます。
例えば売り上げが100万円で、諸々かかった出費が35万円で経費にするとします。
税金がかかる分の所得は65万円で、その金額に税金がかかるようになり、経費の35万円に税金は掛からなくなります。

:::note info
要は税金を減らせてお得ということ
:::

### 青色申告特別控除
課税所得が100万円の場合、この青色申告特別控除を利用すると、最大65万円を引くことができ、その引いた分35万円にしか税金がかからなくなります。
ただこれにはある程度条件があります。
- 事業所得、または事業的規模の不動産所得がある
- 青色申告承認申請書を提出していること
- 正しい記帳（帳簿作成）を行っていること
- 確定申告書に「貸借対照表」と「損益計算書」を添付すること
- e-Tax（電子申告）または電子帳簿保存を利用していること
- 期限を守って確定申告を行う

:::note info
結構色々な制約がありますが、しっかり事業していれば問題なさそうですね。
:::

ちなみに別で55万円の控除と10万円の控除があるようです。
詳しく知りたい方は以下のリンクからどうぞ。

https://www.nta.go.jp/taxes/shiraberu/taxanswer/shotoku/2072.htm
## おわりに
私は断然会社員の方が好きなのですが、フリーランスは人に縛られない自由さが良いですよね。正直この記事書いていて、自分はフリーランスには向いていないなと再確認しました。そして多分色々内容間違っている気もしています。

あまり鵜呑みにせず閲覧くださいね。
Azure FunctionsのキュートリガーでMessage has reached MaxDequeueCount of

Message has reached MaxDequeueCount of 5. Moving message to queue "myqueue-items"

下記が役立った
https://qiita.com/hibohiboo/items/95bb4782c5f04d449ef0

トリガー側ではなく、キューに入れる側の問題。base64で入れなくてはならない。

あるいは、host.jsonを編集する方法でもいいらしい。
  "extensions": {
    "http": {
      "routePrefix": ""
    },
    "queues": {
      "maxDequeueCount": 3,
+      "messageEncoding": "none"
    }
  },
チェックインの導入で朝会の活性化を図る

在宅勤務なのをいいことに寝巻きでMTGに参加する皆様、こんにちは。
jof-fumiです。
この記事は、[よりそうアドベントカレンダー](https://qiita.com/advent-calendar/2024) 23日目の記事としてお届けします。

## 朝会は眠い

多くの現場では、朝・昼・夕いずれかのタイミングで進捗確認や重要事項の連絡を行うショートMTGが実施されていると思います。  
ですが、正直なところ…。

**朝会は眠い！**

おそらく、多くの人が起きてすぐに朝会に参加しているのではないでしょうか？  
そんな状態で軽い会話や要件のすり合わせなんてされたら、内容を覚えられなくて困りませんか？

「じゃあ、夕会にしよう」となったとしても…。  
開発作業に集中しているタイミングで、MTGのために作業を中断するのは無理ですよね？  
「耳だけ聞きますね〜」なんて言いながら、実際はコーディングに集中していて話を聞いていないこと、あるんじゃないですかぁ〜？

---

## チェックインのすゝめ

そんなあなたに、「チェックイン」の導入をおすすめします。

### 「総括」から「チェックイン」へ

そもそも、**よりそう**では「総括文化」があります。  
MTGのたびに「総括担当」を決めて、MTGの最後に一言コメント（仕事に役立つことや最近の自分のこと）を発言する文化です。  
これがチーム内のコミュニケーションを促進してくれているのです。

ただ、総括担当は一人なので、MTGを通して全く発言しない人も出てきます。
また、時には「何を言うか考えること」に集中しすぎて、MTGそのものを聴けていないこともあります。（これは流石にn=1）

そこで、「総括」を廃止し、**全員が会議の最初に一言コメントするチェックイン**を導入しました。  
これにより、全員の頭が動き始め、朝会に集中しやすくなります。

参考: [チェックインとは？](https://times.mazrica.com/column/what-is-check-in-meeting/)

---
## チェックインの効果

### 1. 意識的な参加を促す

MTGの最初に全員が発言することで、意識的に参加していることを自覚できます。  
また、発言の様子からメンバーの調子の良し悪しを把握できるため、全員が同じ前提でMTGに臨めるようになります。

### 2. 発言の心理的障壁を下げる

少しだけ強制的に話す場を設けることで、MTG全体の発言に対する心理的ハードルを下げる効果があります。  
その結果、MTG自体が活発になりやすくなります。

### 3. コミュニケーションの促進

チェックインのお題はMTGファシリテーターが自由に決めてよいルールにしています。  
そのため、プライベートの話題を話すきっかけになり、「総括」が担っていたコミュニケーションの促進役もカバーしています。  
現状、デメリットがほとんどなく、良いことづくしです！

---

## いかがでしょうか？

朝会が眠い勢の皆様も、夕会に切り替えても集中できない勢の皆様も、ぜひチェックインを導入してみて、よきMTGライフをお過ごしください。

最後まで読んでいただき、ありがとうございました！
自己紹介

## はじめに
はじめまして、みっきーと申します。
現在大学3年生で、情報系の学部に通ってます。
今回は自己紹介ということで趣味や経歴等を書いてみようと思います。

## 経歴
2021年3月　普通科の高校を卒業
2021年4月　大学に進学
2022年4月~2023年3月　骨肉腫に罹患し休学
2023年4月~　復学

## 趣味
* モンハン
* パズドラ
* Mrs.GREEN APPLE

## 学んでいること
大学の授業でPython、C言語(基礎のみ)、Java(基礎のみ)の3つの言語を学びました。現在画像処理系の研究室に所属しており、Pythonを用いた画像処理技術を学んでいます。今後の卒業研究では医用画像処理をやりたいと思っています。

## さいごに
投稿頻度はかなり低いと思いますが、よろしくお願いします。
PowerShellでパイプやリダイレクトすると文字化けする

Windows PowerShellで単にパイプで渡したりリダイレクトでファイルに落としたりすると普通に文字化けする
（どんな仕様よ・・）


ネット文献あさってもいまいち理解し難く解決がよくわからないものばかりなので、端的には
.ps1ファイルを作り以下のように書く。が正解っぽい

### 端的には・・
mysqlshでSQLを実行し結果をファイルに出力しようとした例

```.ps1ファイル
[Console]::OutputEncoding = [Text.Encoding]::UTF8
mysqlsh --sql --uri USER@HOSTIP:3308/DATABASENAME --file=SQLFILE.TXT.txt | Out-File -FilePath OUTPUTFILE.TXT.txt -Encoding utf8
```
作成し、.ps1ファイルを実行すると正しく出力されます

### うまくいかないパターン
コンソール上で ``[Console]::OutputEncoding = [Text.Encoding]::UTF8`` と打っても、次のコマンドにはどうも引き継がれないっぽい。
ので、.ps1ファイル内に記述して実行が必要そう


### ちなみに
ちなみにmysqlshは実行するとパスワードを聞かれたあとに標準出力で ``Save password for ～`` と追加で聞かれているので、もう一回Enterを押す必要あり
VSCodeでSalesforceカスタムメタデータの管理、リリースを楽にする

## はじめに
### カスタムメタデータは便利
SOQLで検索でき、Apexやフローで利用可能、Sandboxで作って整えてリリースもできるカスタムメタデータ。大変便利で筆者的には利用頻度が増えています。

得に、業務データではないシステム系のデータなんだけど、あとからパターンの追加や変更がありそうなものみたいなのが、うまく活用できるなと感じています。

### 今回の背景
今回、数十件単位のデータ件数の追加・更新の必要がある要件が出てきました。
今までSalesforce上のコンソールからちまちまデータを追加したり編集していましたが、流石にそれではちょっと面倒。しかもマスタデータは開発チームとは違う業務チームが定期的にチェックや再検討ができる状態にしたいと。

ではエクセルなどでまずはマスタ管理してもらって、変更があった場合に一括変更をできないかと方法を探しており今回の流れに辿り着きました。

ちょっとしたコツやハマりどころもあったのでそれを踏まえて今回できた登録・更新の流れを書いていきます。

## ざっくりとした作業フロー

```mermaid
flowchart LR
   エクセルにて編集 --> CSVファイルの作成 --> VSCodeでメタデータ作成 --> 組織にアップロード
```

## 今回の前提 
- Salesforce CLIがインストールされていること
- カスタムメタデータの定義は先にできている状態とします。

データ定義はサンプルとして、顧客の社員人数によりサイズ名のラベルをつけるための判定用のデータです
![スクリーンショット 2024-12-24 17.29.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958464/c60059cb-d8d1-cd24-1c62-7fd2c76573c1.png)

![スクリーンショット 2024-12-24 17.25.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958464/769d67c9-1dec-befe-e0d6-414f1646d6eb.png)

## VSCodeでの準備：定義の取得
※VSCodeに「Salesforce Extensions for VS Code」がインストールされている事、組織と接続済みが前提です。
1. 左のバーメニューから「Org Browser」>「Custom Object」に対象のカスタムメタデータの定義を探す
2. カスタムメタデータ名の右の雲に↓ボタンを押下して定義をダウンロード
![スクリーンショット 2024-12-24 17.32.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958464/278d2f42-3246-317f-2b51-16486c80bfbc.png)
2. 定義が無事取得できると「force-app/main/default」の「object」配下に定義がダウンロードされます
![スクリーンショット 2024-12-24 17.34.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958464/a2df4a60-be3b-62eb-41b8-92aa1ee404fc.png)

## エクセルからCSVファイル作成
今回作成したデータ

いくつかルールがあります
- 頭の項目はName固定
    - 更新時は主キーの扱いになる。標準項目のカスタムメタデータレコード名、表示ラベルに登録される
- 文字コードはUTF8、改行はCRLF
- BOM付きcsvは不可

### BOM付きcsvは不可
ここはどうやっても良いのですがBOMがつかないよう注意してください。
私の場合、エクセルからテキストにコピペ保存して下記コマンド（おっさんなので原始的に、、、）
```sh
cat hoge.txt | sed 's/\t/"\t"/g' | sed 's/"\t"/","/g' | sed 's/^/"/g' |  sed 's/$/"/g' 
 > data.csv
```

出来上がったcsvファイルはこんな感じ

```csvs
"Name","small__c","max__c","SizeName__c"
"Rec01","1","99","小企業"
"Rec02","100","999","中企業"
"Rec03","1000","99999999","大企業"
```

## VSCodeでメタデータ作成
1. VSCodeの「ターミナル」からコマンド実行するとレコードのデータが作成されます
```sh
% sf cmdt generate records --csv /path/to/data.csv --type-name CustomerSizeAssign

 ›   Warning: @salesforce/cli update available from 2.61.8 to 2.70.7.
Created custom metadata type records from './data.csv' at 'force-app/main/default/customMetadata'.
% 
```

データはレコード毎に作成され
![スクリーンショット 2024-12-24 18.31.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958464/48179598-ee49-1408-791a-77fd8f0996f2.png)
XML形式になっています。
![スクリーンショット 2024-12-24 18.31.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958464/45bd6459-b2db-3fc3-ceeb-00bf1b84fb52.png)

## 組織にアップロード
あとは組織にあげて完了。
先頭の項目が同じ場合は更新されます。
1. 作成されたファイル（今回は3つ）を選択
1. 「組織にアップロード」からアップロード

これでカスタムメタデータにレコードが追加されます。

一括追加や一括更新には便利ですので活用してみてください。
"にょろぼん" のコンテスト作品🖼️制作日記2024③

みなさん！メリークリスマスです🎄
アドベントカレンダー連載をここまでお読みいただいて！どうもありがとう🙇‍♂️㌧クス！
さて、出展作づくり **『はじめの一歩』** 連載ですが、いちばん伝えたい事は①②に書いちゃいました💦
なので、今回はおまけというか。。ぶっちゃけ、ググれば誰でもできる小手先テク紹介集です。軽い気持ちでどうぞ！（でも、折角だから！！最後まで記事読んで欲しいよ～やっぱり、おねがい🥺）


## Day④『スマホで使いたいから！日付入力はシンプルにしたいんよ！』

『この、”にょろぼん”。過去三度コンテストに挑み、すでに老獪さを身につけておる！』(←脳内変換、ランバ・ラル風)
『フフフ！知っているのだよ！みんなが欲しいと思う部品は、だいたいググれば出てくるって事を！！』

という事で。。早速ググっていきます！　JSでカレンダー使う描き方を知りたいから。。。
検索ワードはこんな感じ：　JavaScript　カレンダーから　日付を選択　　でと。えいっ！[Enter]
https://xtech.nikkei.com/atcl/nxt/column/18/02125/071200001/
おっ！いい感じ！なになに？タグを`<input type=”date”>`にするだけ？(JSファイルで扱えるよう！idは元のをそのまま使用ね♪)
早速、引換開始日(validDate)と引換終了日(expireDate)のタグを、`<div></div>`から　から
`<input type=”date”></input>`に書き換えますよと。。

でもって。コンビニは3チェーンしかないから(セコマファンのみなさん🗾ごめん。)リストから選択にしたいよね。
検索ワードはこんな感じ：　JS　リストから　選択　　えいっ！[Enter]
https://www.javadrive.jp/javascript/form/index5.html
コレですよコレ！超よく見るやつ。。早速CVSﾁｴｰﾝのタグを`<div></div>`から　から
`<select class="from-select"></select>`に書き換えてと。。。（以下略）

もう、こんな感じで。恥も見栄も考えず！　ひたすら、尊敬を込めたオマージュ！というか、まるパ○リ　していきます！
学ばせて頂いている！という感謝と尊敬の気持ちがあればイイんです！
まるごとコピペしてきても、１文字でもコード変えて使ったら。。よっぽどヒドくない限り、許されるのです！（たぶん。。）
ちょっと進化版cvsTicket.html
```html
!引換可能なチケットリストは以下の通りです!
    <div id="result" class="normal"></div>

    <input type="date" name="date" id="validDate">引換開始日</input><br>
    <input type="date" name="date" id="expireDate">引換終了日</input><br>
    <select class="from-select" id="cvs" required aria-label="select-example" >
      <option value="セブンイレブン">セブンイレブン</option>
      <option value="ローソン">ローソン</option>
      <option value="ファミリーマート">ファミリーマート</option>
      <option value="その他CVS">その他</option>
    </select>CVSﾁｴｰﾝ<br>
    <input type="text" name="商品" id="goodsName" size="25" maxlength="25">商品名<br>

    <button id="submit">決定する</button>
```

アドベントカレンダー連載では **『最初の一歩』** を踏み出す過程を、なるべく正直に描いて参考にしてもらう！がテーマでした。
その意味では、第一歩を踏み出す時の　”にょろぼん”　の行動記録！なるべく当時の温度感のまま紹介したつもりです。
現実には…この思いつき段階から、出展作として仕上げていく段階で、技術的にひと山ふた山⛰超えていく事になるワケですが。。そんな細かい話には、需要が無いと思う！
やはり、**『最初の、踏み出す、その一足が』**　みんな苦労するところだと思うので。
挑戦しようとしているみなさん📣是非、参考にしてくださいね！
そして、頭に浮かんできたアイデアを、実際の部品としてhtmlとJSファイルに描き出す📝！
連載②のところまでは、是非やってみて欲しいと思ってます。そしたら結構行けると思うんだよね✨

では、みなさん。最後まで読んでくれてありがとう！　来年もガンバろーね♪　良いお年を！
”にょろぼん”　より
【モデル駆動型】カスタムページを共有する

# 【モデル駆動型】カスタムページを共有する

モデル駆動型アプリに埋め込むカスタムページを共有する手順です。

## カスタムページの共有手順

1. Power Platform 管理者権限のあるユーザーで、[Power Platform の管理センター](https://admin.powerplatform.microsoft.com/home) にアクセスします。
1. 該当のカスタムページがある環境を選択します。
1. 上部のメニューバーから [リソース] > [Power Apps] を選択します。
   ![image-20241225164851867.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/7f3a1293-21ce-f3af-a224-0e54218503e3.png)
1. 該当のカスタムページの [⋯] > [共有] を選択します。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/3ed59aab-500d-9682-4e2f-be68c797b4e6.png)
1. 共有のダイアログで、共有する相手を追加します。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/3da285e4-c244-d447-0c05-dd880702424e.png)

# 参考サイト

https://learn.microsoft.com/ja-jp/power-apps/maker/model-driven-apps/model-app-page-issues#maker-related-issues
STS（Eclipse）でJavaフォーマッタを設定する

1. 準備：プロジェクト内にconfigフォルダを作成
1. フォーマッタファイルを作成（https://github.com/google/styleguide/blob/gh-pages/eclipse-java-google-style.xmlから取得）
1. メニューバーから Window > Preferences を選択
1. Java > Code Style > Formatterを選択し、Importボタンから準備したformatter.xmlを選択し、Applyボタンを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569906/248f9361-5e3c-16a7-b608-50d9143213a5.png)
1. Ctrl＋Shift＋Fでフォーマッタが機能することを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569906/5d9a6ab0-d8eb-7b27-fdbc-4b0628a8f97d.png)
↓実行後、タブがスペース2個になるなど変化している
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569906/f1bb94e0-cf9d-8299-7986-2a2a1e360235.png)
ーーー
CheckStyleも設定する
STSに入っていなかったため、Eclipse Marketplaceからプラグインをインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569906/0cd9a703-869a-6947-aaa5-331d27ec3216.png)
インストールするに際してコンテンツを信用するか質問される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569906/c5964f67-78c7-5fbe-70d7-61e0872c87c2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569906/6266dd82-0d6c-572d-18d1-6f18d7db73d7.png)
STS再起動後プロジェクトを左クリックするとCheckStyleが確認できた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569906/e4c8f1ab-43a7-4c66-596a-b40b3a475ab0.png)
CheckStyleのGitHubページからEclipseプラグインのバージョンと一致するソースコードを取得し、 src/main/resources/google_checks.xmlをコピーする
https://github.com/checkstyle/checkstyle/releases

主なソース
https://tetsufuru.hatenablog.com/entry/2021/03/19/232020
サード・パーティ・トラッカー

>多くのサイトで使用されている、サード・パーティのドメインからのWebクッキーにより、広告ネットワークやサード・パーティは、追跡ソフトウェアが配置されている任意のサイト(つまり広告、共有ボタン、その他の埋め込みコードをつ持つ任意のサイト)で、ユーザーの閲覧パターンを追跡することができる。広告ネットワークやその他のサード・パーティは通常、ブラウザ・ベースの追跡ソフトウェアを使ってユーザーが閲覧するWebサイトの範囲全体でユーザーの閲覧パターンを追跡する。サード・パーティが独自に追跡ソフトウェアを開発することもある。また、別のサード・パーティ・サービスを使用して、サイト間のユーザーの行動情報を収集、集計する場合もある。

>広告主は、HTTPクッキー,html5オブジェクト、Javascript、デバイス・フィンガープリント、ブラウザ・フィンガープリント、その他の一般的なWeb技術など、さまざまな追跡メカニズムを使用してユーザーに関するデータを収集する。同じ広告ネットワークを利用する複数のWebサイトにユーザーがアクセスすると、その広告はネットワークはユーザーのデバイスを認識し、ユーザーのWeb行動を長期にわたって追跡できるようになる。

### クロス・デバイス・トラッキング
>クロス・デバイス・トラッキングとは、複数のデバイス(スマートフォン、タブレット、デスクトップ・マシンやその他の「スマート・デバイス」などを使い分ける一人のユーザーの行動を結びつける行為を表す。

>クロス・デバイス・トラッキングでは、多くの場合、確定的な手法と確立的な手法を組み合わせて使用する。これらの手法の多くは、この種の追跡を可能にするために、ユーザーがどのサイトにもログインすることを必要としない。

https://bookplus.nikkei.com/atcl/catalog/23/03/16/00728/

* スーパークッキーとは
* 同一生成元ポリシーとは
SQLアンチパターンを避けよ: 初心者のための解説

# はじめに

データベースデザインやクエリを書くとき、SQLの様々なアンチパターンを看過ごすことで、システムの性能や保守性が大きく損なわれることがあります。この記事では、よく見られるSQLアンチパターンについて解説し、どのようにしてそれを避けるかを考えます。

---

## SQLアンチパターンとは？
SQLアンチパターンは、不適切なデータベースモデリングやクエリの構文のことを指します。これらは一見して効果的に思えることもありますが、長期的に見るとインフラの減少、データのバリデーション問題、保守性の低下に繋がることがあります。

---

## アンチパターンの例と解決策

### 1. エンティティのモデリング：EAVモデル
「Entity-Attribute-Value (EAV)」モデルは、每つのデータパラメーターを行として表現する方法です。これは実装が簡単なため便利に見えますが、大量のジョインが必要なクエリになることや、データのタイプの騒ぎが起こることがあります。

#### 問題の詳細
EAVモデルは、基本的には水式のデータ構造です。たとえば、以下のようなテーブル構造があるとします：

**EAVモデルの例**
```
+----+------------+-------+
| ID | Attribute  | Value |
+----+------------+-------+
| 1  | Name       | John  |
| 1  | Phone      | 12345 |
| 1  | Region     | USA   |
+----+------------+-------+
```

この形式では、名前、電話番号、地域などの情報がすべて「Attribute」と「Value」の形で保存されます。しかし、顧客の地域別のフィルタリングや、複数の属性を同時に使用するクエリを書く場合、複雑なジョインやサブクエリが必要となります。

#### 解決策
ノーマライズされたデータ構造を採用しましょう。たとえば、以下のようにテーブルを設計します：

**ノーマライズされた例**
```
+----+------+-------+-------+
| ID | Name | Phone | Region|
+----+------+-------+-------+
| 1  | John | 12345 | USA   |
+----+------+-------+-------+
```

これにより、クエリがシンプルになり、パフォーマンスが向上します。

---

### 2. 水上プログラミング
SQLを文字列としてしか保存せず、すべてをアプリケーション側で解釈する方法です。これはデータの水上データとも呼ばれ、深刻な性能問題を抱える原因になることがあります。

#### 問題の詳細
以下のようなコードを考えます：

**水上プログラミングの例**
```python
query = "SELECT * FROM users WHERE name = '" + user_input + "'"
```

このコードでは、`user_input`に悪意のあるSQLが入力された場合、SQLインジェクション攻撃を受けるリスクがあります。

#### 解決策
プリペアドステートメントを使用することで、SQLインジェクションを防ぎます：

**安全な例**
```python
query = "SELECT * FROM users WHERE name = ?"
cursor.execute(query, (user_input,))
```

これにより、SQLクエリとデータが分離され、安全性が向上します。

---

### 3. 高速なデータをすべてデノームに保存
大量のデータをすべてデノームに保存すると、読み込みの激増やキャッシュ不足の問題を抱えることになります。

#### 問題の詳細
例えば、以下のようにデータを一括して保存する設計があります：

**非効率な例**
```
+----+---------------------+
| ID | Data                |
+----+---------------------+
| 1  | {"name":"John"}   |
+----+---------------------+
```

この形式では、データにアクセスするたびにデシリアライズが必要となり、性能が低下します。

#### 解決策
データを構造化して保存し、頻繁にアクセスされるデータはキャッシュを活用します：

**効率的な例**
```
+----+------+-------+
| ID | Name | Phone |
+----+------+-------+
| 1  | John | 12345 |
+----+------+-------+
```

さらに、RedisやMemcachedなどのキャッシュシステムを使用して、高速なデータアクセスを実現します。

---

## 結論
SQLアンチパターンはしばしば日常の開発では見過ごしがちな問題ですが、一旦問題が明るみになると、解決するために大量の効力が必要になることがあります。本記事を参考に、SQLを正しく設計し、保存性の高いシステムを構築しましょう。
lightning-layout-itemの中央寄せについて

寅次郎の台詞が大好きなChoです。皆様の年末年始はいかがお過ごしているでしょうか

本題に戻ります。まず、自分の実装に設定されていないのに、どこかのスタイルが適用されてしまっている場合があります。その際にChomeにてご確認しましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1129251/a0996ec2-d548-6ac5-7046-15bbfcdbcdcc.png)

次に、align-self: center;は効くみたいです。
```html
<lightning-layout-item size="7" style="align-self: center;">
```

初心者であり、↑内容に誤りがありましたら、ぜひご指摘頂きたい
javascriptでatcoderするときにあったらよい関数一覧1

# はじめに
atcoderでjavascriptをするという人はあまり多くないかもしれませんが、後世のためにまとめておきます。

## 1,nextpermutation
これは並び替えの全探索で必須になるレベルで重要です。c++にはあるんだけどなー...なお、仕組みは僕もまだよくわからない模様。
```javascript
function next_permutation(arr) {
  for (let i = arr.length - 2; i >= 0; i--) {
    if (arr[i] < arr[i + 1]) {
      for (let j = arr.length - 1; j > i; j--) {
        if (arr[j] > arr[i]) {
          [arr[i], arr[j]] = [arr[j], arr[i]];
          const len = (arr.length - (i + 1)) >> 1;
          for (let k = 0; k < len; k++) {
            [arr[i + 1 + k], arr[arr.length - 1 - k]] = [
              arr[arr.length - 1 - k],
              arr[i + 1 + k],
            ];
          }
          return true;
        }
      }
    }
  }
  return false;
}
```
## 2,累積和
C問題なんかでこれを使うアルゴリズムの問題が良くたまに出ます。リストを入れたら0を先頭に累積和のリストが返されるのでぜひ使ってみてください。
```javascript
function accumulate(arr){
  let length = arr.length
  let accarray = []
  let total = 0
  for(let i = 0;i<length;i++){
    total +=  arr[i]
    accarray.push(total)
  }
  return accarray
}
```
# 最後に
第2弾も書く予定です。ぜひ使ってみてください。