OmniAICreator/Qiita-1.07M huggingface dataset:
【Power Automate Desktop】Power Fxとは何ぞや？

# Power Fx??
Power Fxは、Microsoft Power Platform全般で使用されるローコード言語、とのことです


Power Appsで使用されていた数式言語がもとらしく、Excelで扱う式に似たものを感じています

# PADでの扱い方

### トリガー

フローを新規作成する際、"Power Fxが有効"のトリガーをオンにする（してしまう）ことで、Power Fxが有効になります：

![スクリーンショット 2024-07-26 103644.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839201/f9727140-281a-3a47-6eb4-5aa5580ef8fa.png)

### 何がどう変わるの？

Power Fxのオンオフによって、それぞれのアクションの変数の扱い、記述方法が変わってきます

一番わかりやすい所でいくと、変数を扱う際...今回は変数"sample"を扱うとしたとき、

<dl>
  <dt>Power Fx "なし"の場合</dt>
  <dd>%sample%</dd>
  <dt>Power Fx "あり"の場合</dt>
  <dd>=sample</dd>
</dl>
といった記述になります

### 内部はどうなっているのさ

PADは"robin"という言語を基にしており、アクションをコピーし、メモ帳に貼り付けることで、そのアクションを構成する記述を見ることができます

これを応用して、フローのアクションをコピーして他のフローに貼り付けする、といったことも可能です

以下の例は変数"sample"の内容を、変数"copytest"に設定するアクションをrobin言語で示したものです

``` robin:robin:内部比較
#Power Fxなしの場合:

SET sample TO $'''テストデータです'''
SET copytest TO sample

#Power Fxありの場合:

SET sample TO $fx'Power Fxありのテストデータです'
SET copytest TO $fx'=sample'

```

なるほど若干異なるようです...

:::note warn
ちなみにrobin言語の公式ドキュメントは消滅している(?!)ため、私自身もあまり詳しくありません...
:::

### 互換性は？

Power Fxを使用していないフローからPower Fxを使用しているロボットにコピペしたとき、ちゃんと動いてくれるのか？という点を気になったので検証してみました

内容は、"先にPower Fxありのテスト処理を回した後に、Power Fxなしのフローで作成したアクションを実行してみる"という内容です

このフロー自体は、Power Fxを有効にしています

画像は実行後の状態です

![スクリーンショット 2024-07-26 134817.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839201/545bc9ed-9f65-17b0-3a01-0555cf907a8b.png)

...変数の状態から、上手く実行できたことがわかります

:::note warn
このとき、変数の参照をPower Fx仕様に変更する必要があります

具体的には"%test%"と記述されているものは"=test"と訂正する必要があります
:::


次に、逆の"先にPower Fxなしのテスト処理を回した後に、Power Fxありのフローで作成したアクションを実行してみる"という内容を検証します

また、このフローはPower Fxを有効にしていません

![スクリーンショット 2024-07-26 134721.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839201/8deee208-e018-5f1b-1d44-591e72ae730b.png)

怒られてしまいました...

どうやら有効のスイッチ≒許可の是非、という認識でよいかもしれません

:::note info
この記事を書くきっかけになったのは、ここで躓いたためです...
:::

## 相違点
実はPower Fxを有効にしたフローとそうでないフローでは、用意されたアクションに差異があります：

![Power Fx リスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839201/c2ca7d23-5f1e-8ba1-2db1-a36c84ca62cc.png)

左はPower Fxが無効、右は有効である場合の変数アクションの一覧です
...なるほどリスト系のアクションがなくなってます

が、

Power Fxが無効のフローで作成

↓

アクション自体をコピー

↓

貼り付け

で扱うことはできるようです

Power Fxの有効か否かでリストの扱いが変わってくるようです


``` a:リストの扱い方
#Listという名のリストを扱うとき

#Power Fxが無効：
List[0][1]

"Power Fxが有効：
=ReadCell(List,1,1)
```

:::note warn
Power Fxを扱う場合、インデックスは1からはじまるようです
つまり、0を指定するとエラーが起きてしまいます　資格試験かな？
:::

## まとめ

...ここまでPower Fxについてみてきましたが、個人的にちゃんと使う価値はあると思っています

不便だから使わない！という選択も間違いでなく、確実性を取るならばこちらで間違いないでしょう

私個人の所感として、他のPower Platformコンテンツを開発することになった際のアドバンテージになると思ったのと、
元々Power Platformを使われてた方たちはこちらの方が楽なのかな？というのも（勝手に）思っており、そのために存在しているのかというところです

拙文で恐れ多いですが、最後までお読みいただきありがとうございました！



:::note info
当方学習中の身ですので、繰り返しにはなりますが実は...みたいな情報があればそっと共有していただけると幸せになります　よろしくお願いします...
:::

### 参考記事

Robin言語について参考記事を紹介してくださっている参考記事です(?)：

https://qiita.com/zaziko_github/items/c69725182f474ac0f746
Next.jsへのGoogleAnalyticsの導入について

## Next.jsへのGoogleAnalyticsの導入について
この記事は、自分のNext.js WebAppにGoogleAnaluticsを導入した経験から記述したものです。
なお、Next.js 14.1.4を対象に行なっています。
## 手順
### GoogleAnalytics上での作業
1. Google Analyticsにアクセス
Google Analyticsのウェブサイトにアクセス: Google Analytics にアクセスします。
URL:[GoogleAnalytics](https://accounts.google.com/signin/v2/identifier?service=analytics&passive=1209600&continue=https%3A%2F%2Fanalytics.google.com%2Fanalytics%2Fweb%2F%3Fhl%3Dja%23&followup=https%3A%2F%2Fanalytics.google.com%2Fanalytics%2Fweb%2F%3Fhl%3Dja&hl=ja&flowName=GlifWebSignIn&flowEntry=ServiceLogin)
Googleアカウントにサインイン: 既にGoogleアカウントをお持ちの場合はサインインします。まだGoogleアカウントを持っていない場合は、新しいアカウントを作成します。
2. アカウントの作成
「スタートガイド」をクリック: Google Analyticsのホームページに移動すると、「無料で始める」または「スタートガイド」といったボタンがあります。これをクリックします。
アカウント名の入力: アカウント名を入力します。アカウント名は後で変更可能です。
データ共有設定の選択: データ共有設定を選択します。これはGoogleとデータを共有するオプションです。必要に応じてチェックボックスをオンまたはオフにします。
3. プロパティの設定
プロパティ名の入力: ウェブサイトやアプリケーションの名前を入力します。
レポートのタイムゾーンと通貨を選択: レポートのタイムゾーンと通貨を選択します。これにより、データが正確に表示されます。
詳細なビジネス情報の設定:業界カテゴリを選択します。ビジネスのサイズを選択します。どのようにGoogle Analyticsを使用するかの詳細を入力します。
4. データストリームの設定
データストリームを作成: ウェブサイト、iOSアプリ、またはAndroidアプリのいずれかを選択します。
ウェブサイトの情報を入力: ウェブサイトのURLとストリーム名を入力します。
ストリームの詳細を設定: 推奨される設定や追加のトラッキングオプションを選択します。
5. トラッキングコードの取得
Google Analyticsタグの設定: 作成したプロパティに対して、トラッキングID（G-XXXXXXX）が表示されます。
### IDE上での作業
1\. Next.jsプロジェクトのルートディレクトリに移動
2\. @next/third-partiesパッケージをインストール
```
npm install @next/third-parties
```
3\. layout.tsxを開く
4\. layout.tsxにインポート文を記述
```
import { GoogleAnalytics } from '@next/third-parties/google'
```
5\. layout.tsxに\<GoogleAnalytics gaId="G-XXXXXXXXXX" />を挿入
以下のように、\</body>の後に\<GoogleAnalytics gaId="G-XXXXXXXXXX" />を挿入します。
なお、xxxxxxxxxxには、トラッキングID（G-XXXXXXX）を代入します。
```
import type { Metadata } from "next";
import "./globals.css";
import { GoogleAnalytics } from '@next/third-parties/google'

const inter = Inter({ subsets: ["latin"] });

export const metadata: Metadata = {
  title: ,
  description: ,
  keywords: 
};

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="ja">
      <head>
      </head>
      <body className={inter.className}>
        <div className="flex min-h-screen border border-solid border-gray-200">
          <main className="flex-1 bg-white text-gray-800">{children}</main>
        </div>
      </body>
      <GoogleAnalytics gaId="G-XXXXXXXXXX" />
    </html>
  );
}
```
以上です。４８時間以内に反映されるはずです。
生存戦略：プロ作業員とチームメンバー

## はじめに

今回は、IT業界における生存戦略をプロジェクトのヒエラルキーから雑に考察します。

まずは、考察にあたってプロジェクトに参画する人員のヒエラルキーを図示します。

![ヒエラルキー.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136165/e884a37e-d79f-1e0f-e061-b4aa1ee93626.png)

ヒエラルキーというとピラミッド状に▲で書かれることが多いですが、実情を鑑みるとそのようには書けなそうでした。[^1]
リーダーやPMのフォントサイズを小さくして、Opacity (不透明度) を下げて見えにくくしているのは、リアルさの追求（？）です。[^2]
サブリーダーもいたりいなかったり、リーダー候補として抜擢されるも勝手に期待された動き方が何か分からず結局はメンバーとしての動きをしました、というケースもありそうなので微妙な表現にしてみました。

## IT生存戦略

生存戦略は生存率を上げるための戦略です。
シンプルにヒエラルキーの上にいけば行くほど生存率は上がるのですが、フォントサイズが小さくなったり不透明度が下がって霞んで見えたりと最上位まで上がると微妙なこともありそうで、管理側になりたくない若者も増えていそうです。

一方で、IT新規開発案件の縮小傾向（小型案件の増加傾向）を見ていると、「作業員」階級の仕事が減っていくことが予測されます。

とした場合、目先の生存戦略としては、「作業員」階級を抜けて「チームメンバー」階級に上がっておくことが大事に思えます。

## 作業員階級・チームメンバー階級？

このエントリでは、作業員階級、チームメンバー階級を以下の様に定義します。[^3]

|階級 |定義 |
|---|---|
|作業員 |指示された作業をやる人。**作業をする人**。 |
|チームメンバー |プロジェクトのゴールに向けて、一緒に納品物をつくる人。**仕事をする人**。|

作業員は具体的な指示を受けて、それをアウトプットする作業を行う人です。
チームメンバーはプロジェクトのゴールを把握し、リーダーやPMの抽象的なふわっとした指示を受け取って具体化して自分の作業に落とし込んでアウトプットをする人です。

作業員もチームメンバーもエスパーではないので、リーダーの指示をすべて「リーダーが思った通り」理解できることはないです。

人の仕組みとして、『**正しく理解できていなかったとしても、気づいていなければ**』質問することはできません。
ですので、作業者が思い込みで作業をして「リーダーの期待値と異なる」アウトプットが出たとしても、「なんで質問しないの？」と怒るのはよろしくないと思います。

ただ、分からなかったことがあった時に「**プロジェクトのゴールを把握して推察**」するのか、「プロジェクトのゴールを把握しないで**自分の価値観で推察**」するのかで、**「リーダーが思った通り」** のアウトプットを出せる確率は大きく変わってきます。

「**プロジェクトのゴールを把握**」するのかに、チームメンバーと作業員の壁がありそうです。

SESやフリーランスで時給いくらのプロジェクトを渡り歩いていると「**プロジェクトのゴールを把握する**」というのは基本的に不要です。そのため、本人が意識して「プロジェクトのゴールを把握して仕事をしよう」と思わない限りは、5年経験しようが10年経験しようが作業員からチームメンバーになれることはなく、作業員レベルだけが上がった、プロジェクトとしては難しいプロ作業員になっていくと考えられます。

## プロ作業員

一般的に、指示の具体度が上がれば上がる程、作業者のスキルは低くてよくなりその作業を実施できる人も多くなると考えらます。

また、プログラミングスキルやドキュメンテーションスキル単体と、プロジェクトのゴールは基本的には一致せず、「プロジェクトに必要なスキルのみ」が要求されます。

図に示すと以下の様になるでしょうか。

![ゴールとスキル.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136165/14822870-bcac-8221-82de-d9739408be86.png)


Java の案件では Java や Spring のスキル、Next.js の案件であれば Typescript や React のスキルといった具合に、プロジェクトによって必要なスキルが異なるため、スキルは継続的に習得する必要があります。

スキルを継続的に習得しコーディングスキルが上がってきて、気働きよく、よりキレイで障害が起きにくいコードを書けるようになることはとても大事ですが、「プロジェクトのゴール」との関係性が分かりにくく、技術負債の問題がたびたび議論（炎上？）されているように思えます。

また、一見キレイなコードでもプロジェクトのゴールの認識を合わせずに書かれたコードは、それはそれで分かりにくいという難しさもあります。

生存戦略の観点では、身につけたスキルを『プロジェクトのために活用できているのか？』を意識することが、案件が獲得できる（＝生存できる）確率を上げることに繋がるのではないかと感じています。

## おわりに

生存戦略における、作業員ポジションについて考察しました。
人の考えることは曖昧で分かりにくいですが、プロジェクトのゴールは人の考えることよりはまだ明確かと思います。
そこから逆算をすれば、指示を出している人が何を望んでいるかを考えやすいのかもしれません。

たまたま参画したプロジェクトでも、チームの一員と思って参画し、一緒にプロジェクトの成功を喜べるところを目指せるとよりよいエンジニアライフを送れるかもしれませんし、ブラックなエンジニアライフを送ることになるかもしれません。

## おまけ

- [kaku3 - Qiita記事一覧](https://kaku3.github.io/workbooks/Qiita/)
ポエム多め。PM、メンター、未経験エンジニアや新卒向け記事など。

- [エンジニアのためのお仕事問題集](https://github.com/kaku3/workbooks)
2030年にIT人材が最大79万人不足するとのことで、学習用の資料をgitで無料公開してます(不定期更新)。

よろしければどうぞ。

[^1]: わたし調べ。
[^2]: 何がリアルかは各自の想像にお任せいたします。
[^3]: 「非正規雇用」、「フリーランス」や「SES従事者」等の雇用や業務形態、「自社プロ」や「それ以外」といったプロジェクトには無関係の定義。
(Arduino UNO 8bit)超音波距離センサーHC-SR04Pで遊ぶ　　(ふたたび)(リッチなプログラミング)


参考1　maominionbsk54さんの記事



＞＞＞　Arduinoで超音波センサHC-SR04を使う　＜＜＜

↓クリック↓

https://qiita.com/maominionbsk54/items/e5fbdc52f51b11abbea3

↑クリック↑

参考2

空気中の音速-高精度計算サイト

https://keisan.casio.jp/exec/system/1231998943

参考3


![o_coq242.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/1cfc7872-2873-3142-74ae-dc81d8bffd7b.jpeg)



目的
アイテンドウで3.3V対応の超音波距離センサーを買ったので遊ぶ
軽量高速化のアルゴリズムもいろいろ使うので「アルゴリズム」
とりあえず、まず、単精度浮動小数点を使ったリッチプログラミング

図


![o_coq243.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/8f46315d-d0db-6c5c-3924-bc093ac516e4.jpeg)



![o_coq239.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/f8d8a6fd-2c93-3082-8445-f8c3e180c00c.jpeg)

![o_coq240.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/ccb97fb8-260b-e700-efe8-4583e2b3494f.jpeg)

![o_coq241.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/81542be1-ecf1-df80-2354-95017b661a20.jpeg)


結果


![o_coq244.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/b0693186-1ff8-7192-7266-f7edac7814f1.jpeg)


![o_coq246.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/14f8e8fa-07d5-e7d1-cf19-78f9eb217cd6.jpeg)



![o_coq245.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/d397b7eb-cf93-f55d-87c8-8a23acd95845.jpeg)



プログラム

```c++


//UltraSonic_wave_q1_UNO_1

//定義
#define trigPin  2
#define echoPin  3

//初期化
void setup() {

  //シリアルポートの初期化
  Serial.begin(9600);

  //ピンモードの初期化
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  //ピンの状態の初期化
  digitalWrite(trigPin, LOW);
  delayMicroseconds(1);

}//setup

//メインループ
void loop() {

  //開始信号の入力
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  //反響の時間の測定
  float duration;
  duration = (float)pulseIn(echoPin, HIGH, 10000); //強制キャスト
  //duration = 10000.0; //170cm debug
  //duration = 2000.0;  // 34cm debug
  duration = duration * 0.000001 * 34000.0 / 2.0;

  //距離の表示
  Serial.print("距離は");
  Serial.print(duration);
  Serial.println(" cmです");
  delay(2000); //2秒待つ　音速約300m/秒だと約600m

}//main


```
2024年7月27日のStablediffusionWebUIのautomatic1111でのエラー対処方法

## はじめに
最近はだいぶ安定しているautomatic1111ですが、久々にエラーが出たのでメモがてらに書いておきます。
googleColaboでStableDiffusionWebUI、automatic1111を利用している方向けです。
直近は依存モジュールのバージョン違いによるエラー以外は出てない印象です。

## エラー内容
Start Stable-Diffusionを実行すると、下記のエラーが発生して停止する。

```
ImportError: cannot import name '_marching_cubes_classic_cy' from partially initialized module 'skimage.measure' (most likely due to a circular import) (/usr/local/lib/python3.10/dist-packages/skimage/measure/init.py)
```

## 結論
Start Stable-Diffusionのブロックの前で下記を実行する。

```
!pip install --upgrade scikit-image
```

## 終わりに
アップデートしたのかなあ、なんて思いながらgithubみたら、2日前に更新されていた模様。
で、下記のissueの中で同じ事が議論されていました。

[Colab error #2892](https://github.com/TheLastBen/fast-stable-diffusion/issues/2892)

コミッターの方々には感謝感謝でございます。
書籍『C#ユーザーのためのWebアプリ開発パターン』の詰まりポイント #１

## 本記事を書いた動機

先日、立ち寄った書店にて次の書籍を購入した。
[『C#ユーザーのためのWebアプリ開発パターン』（伊藤 稔　著/大田 一希　著/小山 崇　著/辻本 海成　著/久野 太三　著/赤間 信幸　著/赤間 信幸　監修/井上 章　著/井上 章　監修）（インプレス）](https://book.impress.co.jp/books/1122101173)

現在、手を動かしながら読み進めているところだが、序盤で詰まる箇所に遭遇した。
挫折者を一人でも減らすため、著作権に触れない範囲で解決方法を共有することにした。

この書籍（以下、本書とする）は、事前に準備した _SQL Server_ をDBとして利用し、C#のBlazorをハンズオン形式で効率良く学べる構成となっている。

裏を返せば、最初に _SQL Server_ を立てなければハンズオン形式で学ぶことが出来ないとも言える。

本書では付録として _SQL Server_ の構築方法が複数紹介されている。
そのうちのひとつである「カスタムDockerイメージを作成・利用する」構築方法に関して、いくつか詰まってしまったポイントがあった。


具体的には、本書記載のGitリポジトリ内にあるDockerfileが私の環境では動作しなかった。

## 環境
Windows 11 Pro: 22H2
Docker Desktop: v4.32.0
Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.9.6

## 修正点１：
コピーするファイルの拡張子がDockerfileの記述と一致していないため、ファイルの拡張子を `.sql` から `.txt` に変更する。もしくはDockerfileを書き換えることで一致させる。
## 修正点２：
sqlcmdが格納されているディレクトリが存在しないのでDockerfileを修正する。
修正前：`/opt/mssql-tools/bin/sqlcmd`
修正後：`/opt/mssql-tools18/bin/sqlcmd`
## 修正点３：
sqlcmdでサーバー証明書を信頼する（Trust Server Certificate）オプションを追加する。（`-C`）
修正前だと以下のようなエラーが吐かれる。
>Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate].

修正後のコマンドは以下のようになる。
`/opt/mssql-tools18/bin/sqlcmd -C -S127.0.0.1 ...`

## その他
なお、SQL Serverを利用する上で、環境変数としてSA_PASSWORDの使用は非推奨となっているため、[公式ドキュメント](https://learn.microsoft.com/ja-jp/sql/linux/sql-server-linux-configure-environment-variables?view=sql-server-ver16)を参考に、MSSQL_SA_PASSWORDを設定して利用した方がよいだろう。
AWSの機械学習サービスを覚えたい

## AWSの機械学習サービスが充実しすぎている
AWS Summit 2024にお邪魔したのですが今年は機械学習サービス推しが多かったですね。
AWSは今年のメインテーマ？だった大規模言語モデル以外にもたくさんのサービスを提供しています。
しかし、このようなサービスは使う機会があまり多くない為、名前を憶えてもすぐ忘れてしまいます。
という事で今日はAWSの機械学習サービスを簡単に覚えたいと思います。

## ChatGPTに助けてもらう
一つずつサービスを検索して覚えるのが大変なのでChatGPTに助けてもらいました。

私「下記のAWSのサービスを漢字4文字で表してください。
例として、Amazon Comprehend -> 文書解析のようにそのサービスを簡潔でわかりやすく表してください。

• Amazon Comprehend
• Amazon Forecast
• Amazon Fraud Detector
• Amazon Kendra
• Amazon Lex
• Amazon Personalize
• Amazon Polly
• Amazon Rekognition
• Amazon SageMaker
• Amazon Textract
• Amazon Transcribe
• Amazon Translate　」

ChatGPT「もちろんです。以下にAWSのサービスを漢字4文字で表現しました。

- Amazon Comprehend -> 文書解析
- Amazon Forecast -> 予測分析
- Amazon Fraud Detector -> 不正検知
- Amazon Kendra -> 知識検索
- Amazon Lex -> 音声対話
- Amazon Personalize -> 個別推奨
- Amazon Polly -> 音声合成
- Amazon Rekognition -> 画像認識
- Amazon SageMaker -> 機械学習
- Amazon Textract -> 文書抽出
- Amazon Transcribe -> 音声書き起こし
- Amazon Translate -> 翻訳サービス 」

最後の2行だけ漢字4文字のレギュレーションから外れてしまう結果になりました。
サービス内容が想像できれば別に漢字4文字である必要性はないのですがなんだか惜しいです！

### 終わりに
別に翻訳しなくてもなんとなくサービス名から機能を想像できるのですが、私としては漢字4文字の方がわかりやすいと思いました。
やはり、頭を使わず楽に学習しようとするのはよくないですね。
以後はきちんとサービスを覚えたいと思います。
【情報処理技術者試験】論文ネタの選び方

# はじめに

2024年度春季情報処理技術者試験にてITストラテジスト試験に合格しました。
論文作成をともなう試験としては4つ目の合格です。
自身、午後１はイマイチで合格点に満たず終わることはありますが、
午後２は幸いなことにA(合格ライン)の判定をいただいています。

私の論文ネタの選び方が少しでも参考になればと思い、この記事を執筆しました。

<dl>
  <dt>想定読者</dt>
    <dd>情報処理技術者試験で論文試験に挑む方</dd>
  <dt>前提</dt>
    <dd>論文ネタの選び方に的を絞っています。章立てとか、当日の時間配分などのコツは市販の参考書をご購入ください。</dd>
</dl>

# 目次

1. 避けるべき論文ネタ
1. おすすめの論文ネタ
1. まとめ
1. 参考文献

# 1. 避けるべき論文ネタ

一言で言うと「<font color="red">炎上プロジェクト</font>」。これは題材にしない方が良いです。
具体的には当初計画からボロボロにリスケや仕様・要員変更されたプロジェクト。

論文試験では現場を感じられる生々しい内容が期待されます。が、
与えられた課題に対し、取り組んだ実績と評価の記載が大前提になります。
炎上プロジェクトは、<font color="red">問題の論旨にそって
改ざんする
シナリオをつくるのがかなり困難</font>です。

「あれだけ苦労して隅々まで知っているし...」と思って書き始めると、
現実とのギャップでゴールが見えなくなります。（私は胃が痛くて手が止まる）

なので、要員変更や仕様変更などあれど、最後は当初計画内に収まるプロジェクト、
ぐらいを対象とした方が試験当日、余計に頭を悩ませずに済みます。
個人的に書きやすいのは、工期が1年間まで、金額が1,000万から2,000万規模感のプロジェクトかと。

# 2. おすすめのネタ

一方で、どんどん手が進むネタは...「<font color="green"><b>私だったらこうするのに</b></font>」と内心思う、
ちょっと<font color="green"><b>不満やもどかしさを感じるプロジェクト</b></font>がおすすめ。
実際は政治的な理由等でアクションできないケースだとしても、<font color="green"><b>改善したいと思うプロジェクトは、

架空のシナリオ
ベストプラクティスを意識したシナリオ</b></font>が次々とわいてきます。
(注: その試験区分の役割のキャラに必ずなりきること)

シナリオが完成しちゃえば、あとは試験時間内にひたすら書くだけです。

### 2.1. 例えば...
#### ITサービスマネージャ
課題共有の仕組みを整備した。しかし、解決した課題をユーザが完了としてマークしない。
結果、何が課題として残っているのかわからなくなっている。
だから定例会の場で解決した課題をまとめてクローズする。
...何一つ新しいことはない日常業務のモヤモヤからでもシナリオが組める試験区分。

#### プロジェクトマネージャ/システムアーキテクト
直接指示できない契約にある協力会社の進捗がよくない。
どうすれば良いかは見えている。
だから然るべき相手を通して処置をしよう。
プロジェクト推進のモヤモヤで、ならばこうすればいいかも？があれこれ浮かぶ区分。

#### ITストラテジスト
これができればユーザとWin-Win。でも、現実では予算や有識者の確保に手間どって進まない、
新しい取組へのモヤモヤに使える。
手法さえ具体化すれば、IoT・機械学習・AIなんでもありな勢いで書ける、やりやすい。
ちなみに「経営層をどう説得したか？」という問いが必ず設問に含まれるが、
「図に起こして一生懸命説明した」ぐらいの書きっぷりでもなんとかなる（参考書のサンプルにも似た記載がたまにある）

# まとめ

プロジェクトを一定数こなした前提のネタ選びなので、あまり学生、新人向けの記事ではないかもしれません。ただ、自身としてはこの試験、プロジェクトに対する姿勢のアウトプットだと思っているので、そういう視点でみてしまうのかも、と。

この区分の資格を持っている人と話をすると、物事を進める上で自身の考えを持った、安心して取り組める方だな、炎上しないプロジェクトを回してきたのだな、と勝手に想像したりします。
そうありたいし、そう言われたいものです。

# 参考文献

- プロジェクトマネージャは比較的多くの書籍が出ていますが、午後Iのパターン学習に良い？

https://www.shuwasystem.co.jp/book/9784798049861.html

- 満遍なく読みやすいと感じる

https://bookstore.tac-school.co.jp/book/detail/110641/

https://bookstore.tac-school.co.jp/book/detail/110643/

- ITストラテジストは他の区分と午後Iの解き方が違う、それを教えてくれた1冊

https://www.shoeisha.co.jp/book/detail/9784798182988

- そして主催元

https://www.ipa.go.jp/shiken/index.html
AWSにおける脆弱性対策に便利そうなサービス Amazon Inspector についてざっくりまとめる

## この記事について

この記事は、Amazon Inspectorの利用を検討する上で調べた内容のまとめです。

## Amazon Inspector とは？

Amazon Inspectorは、以下のAWSリソースを自動的に検出し、既知のソフトウェアの脆弱性や意図しないネットワークへの露出がないかスキャンするサービスです。

- Amazon EC2インスタンス
- Amazon ECR内のコンテナイメージ
- AWS Lambda関数

継続的なスキャンにより、潜在的なセキュリティリスクを早期に発見し、対策を講じることが可能になります。
**EC2, ECR, Lambdaの脆弱性対策について検討している人には、一考の価値があるサービスかと思います。**

## 主な機能

### 1. ハイブリッドスキャンモード

Amazon Inspectorを新規に有効化した場合、デフォルトでハイブリッドスキャンモードが有効になります。

- SSMエージェントがインストールされているインスタンス：エージェントベースのスキャン
- SSMエージェントがインストールされていないインスタンス：エージェントレススキャン


### 2. エージェントレススキャン

2024年4月22日のアップデートにより、エージェントレスでの脆弱性評価が可能となりました。

#### エージェントレススキャンの仕組み

1. Amazon Inspectorが対象インスタンスのEBSボリュームのスナップショットを取得
2. インスタンスのソフトウェアアプリケーションインベントリを収集
3. 収集した情報に基づいて脆弱性評価を実行

#### メリット

- SSMエージェントがインストールされていないEC2インスタンスに対しても脆弱性評価が可能
- 全てのリージョンで利用可能

#### 留意点

エージェントベースのスキャンと比較して、スキャン頻度が異なります。
- エージェントレススキャン：24時間ごと
- エージェントベースのスキャン（Linux）：パッケージインストール時やCVE追加時にもスキャン可能


### 3. その他の機能

- **脆弱性データベース検索**: CVE（共通脆弱性識別子）を用いてAmazon Inspectorの脆弱性データベースを検索可能
- **検出結果への対応の自動化**: Amazon EventBridgeと連携し、検出結果に応じて自動的にタスクを実行可能
- **複数アカウントの一元管理**: AWS Organizationsを利用している場合、単一のアカウントから複数アカウントのAmazon Inspector環境を一元管理可能
- **豊富なスキャン対象**: Amazon EC2インスタンス、Amazon ECRコンテナイメージ、AWS Lambda関数など、多様なリソースをスキャン可能
- **CI/CDツールとの統合**: Jenkins、TeamCity、GitHub Actions、CodeCatalystなどのCI/CDツールと統合可能

## 料金

Amazon Inspectorは従量課金制です。料金は、スキャン対象のサービスや機能によって異なります。

### サービスごとの料金形態

1. **Amazon EC2インスタンススキャン**: 1か月間に評価されたEC2インスタンスの平均台数に基づいて課金
2. **Amazon EC2 CISベンチマーク評価**: インスタンスごと、評価ごとに課金
3. **Amazon ECRコンテナイメージスキャン**: 最初にスキャンされたイメージの数と、1か月間の再スキャン回数に基づいて課金
4. **オンデマンドコンテナイメージスキャン**: 1か月間にスキャンされたイメージの数に基づいて課金
5. **AWS Lambda標準スキャン**: 1か月間の平均Lambda関数スキャン数に基づいて課金（日割り計算）
6. **AWS Lambdaコードスキャン**: 1か月間の平均Lambda関数スキャン数に基づいて課金（日割り計算）

EC2については、**エージェントレススキャンのほうが若干料金が高くなる**ようなので、少しでも安くするなら、SSMの設定を頑張ってエージェントスキャンにするほうが良さそうです。

https://aws.amazon.com/jp/inspector/pricing/

### 無料トライアル

Amazon Inspectorを初めて利用するユーザーは、15日間の無料トライアルが利用できます。ただし、CISベンチマーク評価は無料トライアルに含まれません。
詳細な料金については、AWSの公式ウェブサイトの料金表を参照してください。


## スキャン対象のリソース

Amazon Inspectorがスキャンできるリソースは、以下に限定されています。
- EC2インスタンス
- ECRコンテナイメージ
- Lambda関数

特定のリソースがスキャン対象となるかどうかは、以下の要因によって異なります。
- アカウントで有効になっているスキャンタイプ
- リソースのタイプ
- リソースの状態

### 特定のリソースをスキャン対象から除外する方法

特定のリソースをスキャン対象から除外するには、リソースに特定のタグを付けます。

1. **Amazon EC2 インスタンス**: キーが `InspectorEc2Exclusion`のタグを付ける。値は何でもOK.
2. **AWS Lambda 関数のLambda 標準スキャン**: キーが `InspectorExclusion`、値が `LambdaStandardScanning` のタグを付ける
3. **AWS Lambda 関数のLambda コードスキャン**: キーが`InspectorCodeExclusion`、値が`LambdaCodeScanning`のタグを付ける

## まとめ

EC2、Lambdaの脆弱性対策ができるツールを探していたのですが、セキュリティ対策として有効なサービスだと思いました。エージェントレスでの脆弱性評価のおかげで、導入しやすそうです。

本記事では、ソースから読み取れる範囲で情報をまとめましたが、料金体系や技術的な詳細情報については、公式ドキュメントを参照することをお勧めします。
間違いなどありましたらお知らせください。

## 参考
https://qiita.com/Brutus/items/eee466564134ebda3b36

https://docs.aws.amazon.com/inspector/latest/user/what-is-inspector.html
1時間という爆速でchatgpt応答pythonプログラム作ってみた。

# はじめに

naritomoと申します。

本職はインフラエンジニアを行っています。

今回は1時間という爆速でchatgpt応答pythonプログラム作ってみました。

いろいろアドバイスいただけると嬉しいです。

ソースは以下になります。

https://github.com/naritomo08/chatgpt_app

## Pythonプログラム稼働環境構築

本プログラムはmac/Linuxで動かしてください。

ChatGPT API keyも以下のページからあらかじめ入手してください。

https://platform.openai.com/playground/

### 初期設定

```bash
git clone https://github.com/naritomo08/chatgpt_app.git
cd chatgpt_app.git
rm -rf .git
python3 -m venv venv
. venv/bin/activate
pip3 list
python3 -m pip install --upgrade pip
pip3 install -r requirements.txt
pip3 list

各種Pythonプログラム実施

```

### 仮想環境ログイン

```bash
. venv/bin/activate

このあとに各スクリプトを実施
```

### 仮想環境ログアウト

```bash
deactivate
```

### 仮想環境バックアップ

```bash
pip3 freeze > requirements.txt
```

### 仮想環境リストア

```bash
pip3 install -r requirements.txt
```

### Pythonプログラム稼働方法

ChatGPT APIキーを入手する。

以下のコマンドでプログラムを動かす

```bash
cp variable_ref.py variable.py
vi variable.py

以下の””の中にAPIキーを入力する。

api_key = ""

以下のコマンドでChatGPTに質問を投げる。
初回以降は以下のコマンドを動かすだけでいい。

python3 script.py "質問内容"

回答と質問が返答されること。

```

## 今後の展望

```bash
質問・回答について日時と合わせ別途保管するようにしたい。
Web画面で質問・回答が出てくる形にしたい。
Docker上で動かすようにして、K8S上でも稼働するようにしたい。
```
【ChatGPT＋Code Interpreter】で画像にテキストを書き込みます。


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

　今回は、画像にテキストを書き込みます。

:::note info
本記事は、ChatGPT（有料版）
で行なっております。画像は
あります。　あしからず。
:::

　まずは、お詫びを。

　昨日（2024/07/26）のニュースで
　　Kling AIを紹介しました。

　その際に、
　　>　中国のKling AIが出している
　　　と書いてしまいましたが、
　　　　企業Kuaishou Technologyの
　　　　　間違いでした。

　謝罪いたします🙇

　すでに昨日の記事も
　　修正させていただきました。
***
　さて、
　　ニュースもありませんので、
　　　本題です。

　画像に
　　テキストを
　　　書き込みます。

　以前に
　　実験はしていたのですが、
　　　うまく行っていませんでした。

　今回、成功したので
　　記事にしました。
***
　手順です。

　❶GPT-4oであることを確認
　❷画像をアップロード
　❸Prompt入力
```Text:
CodeInterpreterで、画像中央に黒地に白のテキスト“Hello”を重ねて、表示してください。ダウンロードリンクもお願いします。
```
　❹送信
　❺ダウンロードリンクが表示

　Promptを
　　使った結果が
　　　こちらになります。
![edited_image_with_text.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457238/cf061850-5a38-a019-4c09-c635a3466dfe.png)

　また、
　　重ねる場所を
　　　画像上部中央とかに指定可能。

　　カラー指定も可能です。

　ただし、
　　お察しかとは思いますが、
　　　日本語はダメです😅

　まぁ、日本語ライブラリ？を
　　アップロードすれば
　　　イケるのかもしれませんが、
　　　　スマホで扱える気がしません
　　　　　ので、やりません😅　

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

　今回は、ここまで。
rex0220 計算式プラグイン 複数テーブルの集計

計算式プラグインで、複数テーブルのデータを別テーブルに集計してみます。

# 概要

複数テーブルのデータを日付・ドロップダウンで集計とドロップダウンで集計を行います。

- テーブル1とテーブル2のデータをテーブル3に日付・ドロップダウンで集計
- テーブル1とテーブル2のデータをテーブル4にドロップダウンで集計

![2024-07-27_15h15_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/82ae90f5-67a8-7d33-78fa-6bbf7a4a8fe3.png)

※横並びプラグインで、テーブルを並べて表示しています。

# 操作例

![2024-07-27_15h18_21.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/c36ba6eb-f81b-6a70-9e17-d36d618011c0.gif)

# 計算式プラグイン設定

テーブル1とテーブル2の csv を連結して、テーブルへセット後に集計します。

![2024-07-27_15h16_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/91815fa6-051b-b366-eb30-33eb4ab1c213.png)

```.js
OPTION: 循環参照を許可

// テーブル3 日付・ドロップダウン集計:テーブル3 SUBTABLE
LET(
  tbl1,
  CSV_TVAL(
    OTCSV(テーブル1,
      TPOUT(日付T1,ドロップダウンT1, 数量T1,金額T1),
      TPLABEL("日付T3","ドロップダウンT3", "数量T3","金額T3")
    )
    & NEWLINE() &
    OTCSV(テーブル2,
      TPOUT(日付T2,ドロップダウンT2, 数量T2,金額T2),
      TPOPT("HEADER","N")
    )
  ),
  dmy,FSET(テーブル3,tbl1),
  tbl2,TLTABLE(テーブル3,
    TPFILTER(ドロップダウンT3),
    TPKEY(日付T3,ドロップダウンT3),
    TPVAL(数量T3,金額T3),
    TPOUT(日付T3,ドロップダウンT3,数量T3,金額T3)
  ),
  FSET(テーブル3,tbl2)
)

// テーブル3.日付T3 DATE
// テーブル3.ドロップダウンT3 DROP_DOWN
// テーブル3.数量T3 NUMBER
// テーブル3.金額T3 NUMBER

// テーブル4 ドロップダウン集計:テーブル4 SUBTABLE
LET(
  tbl1,
  CSV_TVAL(
    OTCSV(テーブル1,
      TPOUT(ドロップダウンT1, 数量T1,金額T1),
      TPLABEL("ドロップダウンT4", "数量T4","金額T4")
    )
    & NEWLINE() &
    OTCSV(テーブル2,
      TPOUT(ドロップダウンT2, 数量T2,金額T2),
      TPOPT("HEADER","N")
    )
  ),
  dummy,FSET(テーブル4,tbl1),
  tbl2,TLTABLE(テーブル4,
    TPFILTER(ドロップダウンT4),
    TPKEY(ドロップダウンT4),
    TPVAL(数量T4,金額T4),
    TPOUT(ドロップダウンT4,数量T4,金額T4)
  ),
  FSET(テーブル4,tbl2)
)

// テーブル4.ドロップダウンT4 DROP_DOWN
// テーブル4.数量T4 NUMBER
// テーブル4.金額T4 NUMBER

```
AWS IoT Greengrass v2 のローカルシャドウを H2 Database で直接のぞき見する

AWS IoT Greengrass でデバイスシャドウを参照・更新するカスタムコンポーネントを開発していて、シャドウマネージャにより管理されているローカルシャドウの状態を確認したい時がありました。

Greengrass v2 のシャドウマネージャでは、ローカルシャドウを H2 Database で管理しているため、H2 のシェルを使って確認してみることにしました。

## 手順

```bash
# H2 のインストール先は /opt/h2 にする
sudo mkdir /opt/h2 -p && cd /opt/h2

# H2 の jar を DL する
# 最新版をインストールするとシャドウマネージャとバージョンが合わず DB を開けなかったため、
# シャドウマネージャで利用されている 1.4.200 を DL
# バージョンはこちらから参照: https://github.com/aws-greengrass/aws-greengrass-shadow-manager/blob/main/pom.xml
sudo wget https://repo1.maven.org/maven2/com/h2database/h2/1.4.200/h2-1.4.200.jar -O h2.jar

# Greengrass コアソフトウェアが動いている状態だと DB のファイルがロックされているため、
# 一旦停止して DB を確認する
sudo systemctl stop greengrass.service 

# H2 の org.h2.tools.Shell を使って、ShadowManager の作成した DB を開く
java -cp ./h2.jar  org.h2.tools.Shell -url jdbc:h2:/greengrass/v2/work/aws.greengrass.ShadowManager/shadow
```

H2 Shell に入ったあとは、普通に SQL を叩くことができます。シャドウのドキュメントはバイナリエンコーディングされているため、デコードしてあげることで JSON として読むことができます。

```sql
-- H2 Shell のデフォルトだと横幅が狭く、 JSON が途中で trunc されてしまうので、横幅を広げる
maxwidth 10000;

-- シャドウの状態を確認
SELECT 
  THINGNAME, 
  SHADOWNAME, 
  UTF8TOSTRING((DOCUMENT)) AS DECODED_DOCUMENT,
  VERSION,
  DELETED,
  UPDATETIME
FROM documents;

-- シャドウの同期状態を確認
SELECT 
  THINGNAME, 
  SHADOWNAME, 
  UTF8TOSTRING((LASTSYNCEDDOCUMENT)) AS DECODED_LASY_SYNCED_DOCUMENT,
  LOCALVERSION,
  CLOUDVERSION,
  CLOUDDELETED,
  CLOUDUPDATETIME,
  LASTSYNCTIME
FROM sync;
```

すると、以下のようにローカルシャドウを読むことができます。

```
THINGNAME                            | SHADOWNAME | DECODED_DOCUMENT                                                                                                                                                                        | VERSION | DELETED | UPDATETIME
GreengrassQuickStartCore-190f21802b8 |            | {"state":{"desired":{"status":"alive"},"reported":{"welcome":"aws-iot"}},"metadata":{"desired":{"status":{"timestamp":1722048902}},"reported":{"welcome":{"timestamp":1722048902}}}}    | 1       | FALSE   | 1722048902
GreengrassQuickStartCore-190f21802b8 | condition  | {"state":{"desired":{"tempreture":25},"reported":{"welcome":"aws-iot"}},"metadata":{"desired":{"tempreture":{"timestamp":1722048902}},"reported":{"welcome":{"timestamp":1722048902}}}} | 1       | FALSE   | 1722048902
```

確認し終わったら、止めた Greengrass コアソフトウェアの再開も忘れず。

```bash
sudo systemctl start greengrass.service 
```

## 参考

アイデアの元ネタはこちらです。Greengrass v1 の頃にはどうやら SQLite3 が使われていたようですね。

https://dev.classmethod.jp/articles/greengrass-local-shadow-hack/
エンジニアマインド〜質問する勇気〜

## はじめに
こんにちは、未経験からエンジニア転職を目指しているものです。今回、初投稿になります。
エンジニア転職に向けてスクールに通いながら勉強をしています。エンジニア転職すると決めた日から、自分はエンジニアだと思い、エンジニアならどのように考えて行動するかを心に留めています。
今回の記事は初学者として質問をする際の初歩の初歩について記載したいと思いますので、気軽に読んで頂ければと思います。

## 原因を考える事よりも、早く聞く。
自分が何に困っていて、何が分からないかを考えることは必要です。しかし自分は原因を考えて3日ほど経過した事があります。後で講師の人に言われたのですが、現場だったら3日間仕事が止まっていた事になるから、早く聞いた方がいい。質問する事もエンジニアの仕事ですと。

## 実例〜webページの模写〜
自分の経験を例にします。教材を見ながら同じようにwebページの作成をしておりました。その中で、CSSが反映されませんでした。CSSを読み込むためのHTML内のlinkタグがおそらく違うだろうと思っていました。また、教材と同じlinkタグであったため、この部分は間違っていないと思っていました。

## エラーが解決しない
他の原因を探すべく、教材と違う部分を細かく探していきました。ただ全て同じように直していってもエラーが解決しませんでした。

## 自分の目の限界
結果はCSSのファイル名が間違ってlinkタグに記載されていました。自分では絶対合っていると思っていたのですが、それが原因でした。よく見たら正しくはassetsと表記する所をasetesと書いていました。<font color="red">コードを読み慣れていないからか、英語のスペルミスすら見逃していました。</font>

## 学んだ事
英語のスペルミスなんて今更しないだろうと自分を過信していた事が原因でした。初学者の時は質問をするのに勇気がいるかもしれません。またある程度社会人としてのキャリアを積んできた人であればこれくらい自分で調べれば分かると思うはずです。ただコンピュータは100%じゃないと反応してくれないので、スペル一個でも命取りです。エンジニアとしての経験が長い人に勇気を持って質問してみる事がエンジニア人生の第一歩となりました。

最後までご覧いただき本当にありがとうございました！！
この記事が少しでも良かったと思っていただけましたらLGTMをクリックしていただけますと幸いです。
達人に学ぶDB設計 徹底指南書（第3章）


## 目的

「達人に学ぶ DB 設計 徹底指南書」を読んで学んだことをアウトプットするために記事を投稿する。
今回は第 3 章についての内容をまとめる。

## テーブルとは

<dl>
  <dt>テーブル</dt>
  <dd>共通点を持ったレコードの集合体</dd>
  <dd>テーブル≠表ではない</dd>
</dl>

## テーブルの構成要素

<dl>
  <dt>行と列</dt>
  <dd>行：レコード</dd>
  <dd>列：カラム、もしくは属性</dd>
  <dt>キー（key）</dt>
  <dd>ある特定のデータを引き出すための鍵</dd>
  <dt>主キー（primary key）</dt>
  <dd>一意にレコードを識別するための属性</dd>
  <dt>外部キー（foreign key）</dt>
  <dd>二つのテーブルの間の列同士で設定するための属性</dd>
  <dd>テーブルに対して一種の「制約（constraint）」を課す役割も持つ＝参照整合制制約</dd>
</dl>

### 制約の種類

<dl>
    <dt>NOT NULL制約</dt>
    <dd>NULL（空欄）を禁止すること</dd>
    <dd>テーブル定義において、列は可能な限りNOT NULL制約を付加することが望ましい</dd>
    <dt>一意制約</dt>
    <dd>ある列の組について一意性を求める</dd>
    <dt>CHECK制約</dt>
    <dd>ある列の取りうる値の範囲を制限する</dd>
    <dd>ex.）年齢の場合、20 ～ 65までの整数のみ許容など</dd>
</dl>

### テーブルの列と名前

#### ルール 1：名前に使える文字集合

- 半角アルファベット
- 半角数字
- アンダーバー（\_）

テーブルや列の名前に日本語は絶対ダメ

#### ルール 2：最初はアルファベット

<dl>
  <dt>良い例</dt>
  <dd>champions_2024、nine9</dd>
  <dt>悪い例</dt>
  <dd>2024_champions、9nine</dd>
</dl>

#### ルール 3：名前は重複してはならない

同じ名前を持つテーブル、同じ名前を持つ列は存在してはいけない（もし作ろうとしても、エラーになる）。

## 正規化とは

冗長性や非一貫性の問題を解決するために考案された方法論
※冗長性：一つの情報が複数のテーブルに存在して無駄なデータ領域と面倒な更新処理を発生させてしまう、などの状態
※非一貫性：冗長性により、更新処理のタイムラグによってデータの不整合が発生したり、そもそもデータを登録することができないようなテーブルを作ってしまう、などの状態

正規化は大きく 5〜6 段階に分類される

### 第１正規形

一つのセルの中には一つの値しか含まない＝スカラ値の原則

#### なぜの 1 つのセルに複数の値を入れてはダメなのか？

セルに複数の値を許せば、主キーが各列の値を一意に決定できないから
→ 主キーの定義に反する

正規化とは、テーブルのすべての列が、関数従属性を満たすように整理していくこと

### 第 2 正規形

部分関数従属（主キーの一部に従属した状態）を解消し、完全関数従属（主キーすべてに従属した状態）のみのテーブルを作ること

### 第 3 正規形

テーブル内部に存在する推移的関数従属（段階的な従属関係）を解消し、それぞれの関数従属の関係を独立させる

### ボイスーコッド正規形

非キーからキーへの関数従属をなくした状態

### 第 4 正規形

独立な多値従属性が複数存在するテーブルを分割する

### 第 5 正規形

第４正規形の発展版

## 正規化のポイント

1\. 正規化とは更新時の不都合／不整合を排除するために行なう
2\. 正規化は従属性を見抜くことで可能になる
3\. 正規形はいつでも非正規形に戻せる

## 感想

- 従属制の排除＝正規化の第一歩
- 正規化を行うことで冗長性や非一貫性を排除できるが、その分テーブルが増えることになるためパフォーマンスの低下につながるのが悩ましい...
rex0220 計算式プラグイン 複数テーブルの転記

計算式プラグインで、複数テーブルのデータを別テーブルに転記してみます。

# 概要

複数テーブルのデータをそのまま転記とソートして転記を行います。

- テーブル1とテーブル2のデータをテーブル3に転記
- テーブル1とテーブル2のデータをテーブル4にソートして転記

![2024-07-27_14h24_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/997fe81e-bb4c-190a-f8f5-fbb5af64d88c.png)

※横並びプラグインで、テーブルを並べて表示しています。

# 操作例

![2024-07-27_14h28_35.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/ed0fbbc2-f172-aecd-5233-bf6e4ebd2284.gif)

# 計算式プラグイン設定

テーブル1とテーブル2の csv を連結して、テーブルにセットします。

![2024-07-27_14h35_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/e81b7e36-a48b-1b3d-defe-b0c23595ea0b.png)

```.js
OPTION: 循環参照を許可

// テーブル3 連結:テーブル3 SUBTABLE
LET(
  tbl1,
  CSV_TVAL(
    OTCSV(テーブル1,
      TPOUT(日付T1,ドロップダウンT1, 数量T1,金額T1),
      TPLABEL("日付T3","ドロップダウンT3", "数量T3","金額T3")
    )
    & NEWLINE() &
    OTCSV(テーブル2,
      TPOUT(日付T2,ドロップダウンT2, 数量T2,金額T2),
      TPOPT("HEADER","N")
    )
  ),
  FSET(テーブル3,tbl1),
)

// テーブル3.日付T3 DATE
// テーブル3.ドロップダウンT3 DROP_DOWN
// テーブル3.数量T3 NUMBER
// テーブル3.金額T3 NUMBER

// テーブル4 ソート:テーブル4 SUBTABLE
LET(
  tbl1,
  CSV_TVAL(
    OTCSV(テーブル1,
      TPOUT(日付T1,ドロップダウンT1, 数量T1,金額T1),
      TPLABEL("日付T4","ドロップダウンT4", "数量T4","金額T4")
    )
    & NEWLINE() &
    OTCSV(テーブル2,
      TPOUT(日付T2,ドロップダウンT2, 数量T2,金額T2),
      TPOPT("HEADER","N")
    )
  ),
  dummy,FSET(テーブル4,tbl1),
  tbl2,TABLE_SORT(テーブル4,
    TPSORT(日付T4,0,ドロップダウンT4,金額T4,0)
  ),
  FSET(テーブル4,tbl2)
)

// テーブル4.日付T4 DATE
// テーブル4.ドロップダウンT4 DROP_DOWN
// テーブル4.数量T4 NUMBER
// テーブル4.金額T4 NUMBER

```
応用情報技術者を取得しようと思った理由

## はじめに

2024年10月に、応用情報技術者試験を受けるべく、申し込みをいたしました。

なぜ、受験を決意したのかをここに記します。

▼私の経歴

- 2023年11月頃に基本情報技術者試験は合格済み
- 3年目エンジニア
- 副業でデジタル文房具クリエイター

## なぜ受験を決意したのか

結論：一石五鳥だったから。

ずっと受けた方が良いとは思っていたものの、
インスタ発信にも力を入れたくてなんとなく先延ばしにしていました。

そして、2024年7月。
今年2回目の受験申込期間がやってきました。

受けるべきか、先延ばしにするかという究極の選択を迫られ(大袈裟)
メリットとデメリットを書き出すことにしました。

実際に書き出したノートがこちら。
思考整理はiPadで手書きがお気に入りです。

実際に書き出したメリットとデメリットがこちらです。

▼メリット

- 基礎知識を体系的に学べる
- エンジニアレベルUP
- 会社から資格補助がもらえる
- iPadで資格勉強をしたという実績
- 時間の使い方を工夫すれば、時間術も身につく

▼デメリット

- インスタ発信の時間が減る
- デジタル文房具を作る時間が減る

メリットが5つ、デメリットが2つ。
デメリットと言っても、時間がないというもののみ。

明らかにメリットが多いですし、デメリットも時間の使い方次第で解消できるものばかり。
上記の結果により、受験を決意しました。

## 応用情報技術者試験勉強で習得したいこと

主に上流工程と言われる部分を理解したいです。

お恥ずかしながら、基本情報技術者試験で学んだにも関わらず
ネットワークに関する理解が浅いです。

きっと、暗記で乗り切っていたのでしょう。

今回の資格勉強では、暗記ではなく理解を深めたいと思います。
Stable Diffusionを高速化できる裏ワザ

# torch_tensorrtでGPU最適化を行う

以下のように、torch_tensorrtにコンパイルすることで速くなる。

T4 GPU
||sec|
|---|---|
|torch|8.1|
|torch_tensorrt|**6.1**|

A100 GPU
||sec|
|---|---|
|torch|2.1|
|torch_tensorrt|**1.1**|

**使い方も簡単。**

# 使い方

インストール。

```shell
pip install diffusers
pip install torch_tensorrt
```

diffusionモデルの初期化

```python
import torch
import torch_tensorrt
from diffusers import DiffusionPipeline

model_id = "CompVis/stable-diffusion-v1-4"
device = "cuda:0"

# Instantiate Stable Diffusion Pipeline with FP16 weights
pipe = DiffusionPipeline.from_pretrained(
    model_id, revision="fp16", torch_dtype=torch.float16
)
pipe = pipe.to(device)
```

コンパイル。

```python

backend = "torch_tensorrt"

# Optimize the UNet portion with Torch-TensorRT
pipe.unet = torch.compile(
    pipe.unet,
    backend=backend,
    options={
        "truncate_long_and_double": True,
        "enabled_precisions": {torch.float32, torch.float16},
    },
    dynamic=False,
)
```

実行。

```python
import time
prompt = "robot, penguin"
seed = 42
generator = torch.manual_seed(seed)

image = pipe(prompt).images[0]
image.save("robot_penguin.png")
image.show()
```

ただし、仕上がりが少しだけ異なる。

torch
![553db48c-9c44-4b67-9cf9-1fcdb3065864.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/9bda8050-0e48-6690-d8ff-dd962c6e8dbb.png)

torch_tensorrt
![b525f609-1b4f-4233-9d6e-e1239f1ba332.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/ac2cc8f4-1873-46ba-83ee-150390ae35ad.png)

🐣
****
フリーランスエンジニアです。
AIについて色々記事を書いていますのでよかったらプロフィールを見てみてください。

もし以下のようなご要望をお持ちでしたらお気軽にご相談ください。
AIサービスを開発したい、ビジネスにAIを組み込んで効率化したい、AIを使ったスマホアプリを開発したい、
ARを使ったアプリケーションを作りたい、スマホアプリを作りたいけどどこに相談したらいいかわからない…

いずれも中間コストを省いたリーズナブルな価格でお請けできます。

お仕事のご相談はこちらまで
rockyshikoku@gmail.com

機械学習やAR技術を使ったアプリケーションを作っています。
機械学習／AR関連の情報を発信しています。

[X](https://twitter.com/JackdeS11)
[Medium](https://medium.com/@rockyshikoku)
[GitHub](https://github.com/john-rocky)
[Java / docker] とりあえず Docker で Java を動かしたいときc(⌒(_*˘ㅿ˘)_ｽﾔｧ

# 1. 概要

- とりあえず**何でもいいから手軽に Java を実行したい**
- Docker、特に `docker-compose` が好き

そんな人のための記事。

# 2. 気を付けたこと

- 古過ぎる Docker イメージは使わない
- サイズがなるべく小さそうなイメージを使う
- ただし、`alpine` みたいなすっからかん過ぎるイメージは、後で困ることが多いので使わない

## Docker image についての補足
以下の記事によると、 **`OpenJDK` の Docker イメージは非推奨になってしまった**らしい。

https://zenn.dev/104/scraps/cc1542931b4ade

上記を踏まえて、最近も更新されていそうな、 `Eclipse temurin` という Docker イメージを使うことにした(\*˘︶˘\*)ﾌﾌﾝ



# 3. 前提条件

OSに、以下がインストールされていて、使用できる状態であること。

- docker
- docker-compose

使用した Docker image は以下の通り。

- `eclipse-temurin:22-jdk`

https://hub.docker.com/layers/library/eclipse-temurin/22-jdk/images/sha256-a1138235aaad2d4510513778f9930e4a26c100273934b9fbf90acb79eb7e2afe?context=explore


# 4. ソースコード

以下のようにファイルを設置した。

```bash:directory構成
./<app_root_dir>
     ├── src/  # ここに .java ファイルとかを設置する
     │     └── Main.java
     ├── Docekrfile
     └── docker-compose.yml
```

## Dockerfile

```Dockerfile:Dockerfile
# 使用する Docker image
FROM eclipse-temurin:22-jdk

# Ubuntu package 類のインストール
RUN apt -y update && apt -y upgrade
RUN apt -y install \
    # For development and debug
    bash curl vim net-tools zip \
    && apt clean \
    && rm -rf /var/lib/apt/lists/*

# Docker container ログイン時の作業ディレクトリを指定
ARG workdir="working_dir"
WORKDIR /${workdir}
```

## docker-compose.yml

```yml:docker-compose.yml
version: '3'
services:
  java:
    build:
      context: .
      dockerfile: ./Dockerfile
    environment:
      - TZ=Asia/Tokyo
    # volumes を指定しておくことで、そのディレクトリ内の変更はLocal PC上にも反映されるようになる
    volumes:
      - .:/workdir
    working_dir: /workdir

    # Fix slow shutdown of container
    init: true
```


# 5. 実行方法

あとは、 `./<app_root_dir>` 内で以下のコマンドを実行すれば、 java を利用できる container 内にログインできる。

```bash:実行コマンド
$ docker compose build
$ docker compose run java bash

# 上記コマンドの実行成功すると、以下のようなプロンプトが表示される
/workdir# 
```

`src` 以下に、おなじみの hello, world ! を実行するファイルを作成して、

```java:Main.java
public class Main {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}
```

次に、以下のように実行する。

```bash
# コンパイル
/workdir# javac Main.java

# 実行
/workdir# java Main.java
Hello World!
```

これでOK！

新しい言語を覚える時にいつも厄介なのは、環境構築と実行、デバッグ方法を調べることなのだよね₍₍ (ง ˘ω˘ )ว ⁾⁾ｽﾔｯｽﾔｯ
5つの基本原則で実現する、ユーザビリティの高い画面設計

## はじめに：なぜ今、ユーザビリティが重要なのか？
みなさん、こんにちは。日々Figmaと格闘しながら画面設計に励むイェンです。
「使いやすい」と言われるアプリやWebサイト。実は、その裏には綿密に計算された設計があるんです。今回は、私が実際のプロジェクトで学んだ、ユーザビリティを向上させるための5つの鉄則をご紹介します。
これらの鉄則を押さえておけば、ユーザーから「使いやすい！」と絶賛されるデザインが、きっと作れるはずです。さあ、一緒に探検してみましょう！
## 【1】 シンプルイズベスト：余計なものは思い切って削ろう
ユーザーが迷わず操作できる画面を作るには、シンプルさが鍵となります。

・不要な要素を削除し、本当に必要な情報だけを表示する
・情報の優先順位を明確にし、重要な要素を目立たせる

具体例： 
ナビゲーションメニューは5-7項目に絞り、よく使う機能をトップレベルに配置します。
Figmaでは、コンポーネントを作成し再利用することで、一貫したシンプルなデザインを維持できます。

★あなたもチャレンジ！
今すぐできる改善：現在のデザインで、本当に必要な要素を3つ選んでみましょう。それ以外を隠してみるとどうなりますか？

## 【2】一貫性は信頼の証：ブレないデザインで安心感を
一貫したデザインは、ユーザーの学習コストを下げ、操作の効率を高めます。

・ボタン、アイコン、色使いなどのデザインパターンを統一する
・用語や表現を統一し、ユーザーの混乱を防ぐ

具体例： 
Figmaのスタイルガイドを作成し、チーム全体で共有します。
これにより、プロジェクト全体で一貫したデザインを維持できます。

★ポイント！
自分のプロジェクトで使われている「ボタン」のスタイルを全てリストアップしてみましょう。
3種類以上あれば要注意です！

## 【3】即レス最高：ユーザーアクションへの即時フィードバック
ユーザーのアクションに対して即座にフィードバックを提供することで、操作の確実性が増します。

・ボタンクリック時の視覚的変化
・フォーム入力時のリアルタイムバリデーション
・処理中の状態を明確に表示する

具体例： 
Figmaのプロトタイプ機能を活用し、ボタンのホバー状態やクリック時のアニメーションを設定します。
これにより、実際の使用感をシミュレートできます。

★やってみよう
自分のプロジェクトのフォームで、ユーザーが「不安に感じそうな項目」をリストアップ。
それぞれにどんなフィードバックが必要か考えてみましょう。

## 【4】馴染みは正義：ユーザーの習慣を大切に
ユーザーが慣れ親しんだUIパターンを採用することで、学習コストを低減できます。

・一般的なUIパターンを採用する（例：買い物かごアイコンはeコマースサイトのカート機能を表す）
・プラットフォーム固有のガイドラインを遵守する

具体例： 
iOSとAndroidでは異なるデザインガイドラインがあります。
Figmaでは、プラットフォームごとにコンポーネントを作成し、適切なデザインを適用します。

★考えてみよう
自分のプロジェクトで「独自すぎる」と感じる部分はありませんか？
それを一般的なUIに置き換えるとどうなるか、スケッチしてみましょう。

## 【5】誰でも使えるが正解：アクセシビリティは基本中の基本
多様なユーザーが快適に利用できるよう、アクセシビリティに配慮することが重要です。

・適切な色のコントラストを確保する
・十分な大きさのフォントサイズと行間を設定する
・スクリーンリーダーに対応したラベル設定を行う

具体例： 
Figmaのプラグインを活用し、色のコントラスト比をチェックします。
また、テキストレイヤーには適切な代替テキストを設定し、スクリーンリーダーでの読み上げに対応します。

★今すぐできること
自分のデザインを白黒で見てみましょう。全ての情報や操作が問題なく理解できますか？

## まとめ
ここまで、5つの鉄則を見てきました。どれも「なるほど！」と思えるものばかりだったのではないでしょうか。

【1】シンプルさを追求する
【2】一貫性を保つ
【3】フィードバックを即座に提供する
【4】ユーザーの習慣を尊重する
【5】アクセシビリティに配慮する

これらは、私が何度も失敗と成功を繰り返して得た教訓です。でも、知っているだけでは意味がありません。大切なのは、明日からのデザインで実践すること。
みなさんの素晴らしいデザインを、楽しみにしています！:sparkles:

## 一緒に働く仲間を募集しています！
株式会社コネクター・ジャパンでは一緒に働いてくれる仲間を募集しています！

事業拡大に伴い、エンジニアを大募集しています。
興味のある方は下記リンクから弊社のことをぜひ知っていただき応募してもらえると嬉しいです。
▼会社について
https://www.wantedly.com/companies/cnctor/about
▼代表メッセージ
https://cnctor.jp/10years-anniversary/
▼応募はこちら
https://www.wantedly.com/companies/cnctor/projects
OPC UAの情報モデルがもたらすビジネス価値：製造業のデジタル変革の鍵

## はじめに

産業用通信プロトコルであるOPC UA（OPC Unified Architecture）は、Industry 4.0やIIoT（Industrial Internet of Things）の重要な基盤技術として注目を集めています。本記事では、特にOPC UAの情報モデルに焦点を当て、それがビジネスにもたらす価値と、製造業のデジタル変革における重要性について解説します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/1eef04c6-9fe5-f00e-bccb-765cc3cdd0f1.png)

## OPC UAの情報モデルとは

OPC UAの情報モデルは、複雑な産業システムを構造化された方法で表現するための枠組みです。この情報モデルの主な特徴は以下の通りです：

1. **オブジェクト指向アプローチ**: システムの各要素をオブジェクトとして表現
2. **階層構造**: 機器、プロセス、システムを階層的に組織化
3. **メタデータのサポート**: データに関する詳細な情報（単位、説明、タイムスタンプなど）を含む
4. **拡張性**: 業界固有の要件に合わせてカスタマイズ可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/40c27a78-fc21-d219-7479-50b7779ed8ca.png)

## 情報モデルがもたらすビジネス価値

### 1. データの文脈化と意味付け

OPC UAの情報モデルは、単なるデータポイントの集合以上のものを提供します。

- **ビジネス価値**: 
  - データの解釈が容易になり、意思決定の質が向上
  - 異なる部門間でのデータの共有と理解が促進

### 2. システム間の相互運用性の向上

標準化された情報モデルにより、異なるベンダーのシステムや機器間の統合が容易になります。

- **ビジネス価値**:
  - システム統合にかかるコストと時間の削減
  - ベンダーロックインのリスク低減

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/e1fd724f-5d4f-28c4-8cab-806c015272e1.png)

### 3. スケーラビリティとフレキシビリティの確保

情報モデルの拡張性により、ビジネスの成長に合わせてシステムを進化させることができます。

- **ビジネス価値**:
  - 将来の技術変化や事業拡大に柔軟に対応可能
  - 段階的な投資と実装が可能
  - 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/f3dc1a06-ffa1-ad2a-d2f3-46813e1ebd53.png)

### 4. 予知保全と品質管理の高度化

詳細な情報モデルにより、機器の状態やプロセスの品質をより正確に把握できます。

- **ビジネス価値**:
  - ダウンタイムの削減とメンテナンスコストの最適化
  - 製品品質の向上と不良品率の低減

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/d5e4f9dc-ea71-3317-68a0-ccbd2a35537f.png)

### 5. デジタルツインの実現

OPC UAの情報モデルは、物理的なシステムのデジタル表現（デジタルツイン）の基盤となります。

- **ビジネス価値**:
  - シミュレーションによる製品開発期間の短縮
  - 運用最適化のための高度な分析が可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/962f1d6c-3173-f515-1e27-659fa912be91.png)

## 情報モデル活用の具体例

### 製造ラインの最適化

1. **情報モデルの構築**:
   - 製造ラインの各機器、センサー、プロセスをOPC UAオブジェクトとして定義
   - 機器間の関係性や製造フローを階層構造で表現

2. **データの収集と分析**:
   - 各オブジェクトから生成されるデータを収集
   - データの文脈（どの工程の、どの機器から生成されたかなど）が明確

3. **最適化の実施**:
   - 収集したデータを基に、ボトルネックの特定や生産スケジュールの最適化を実施
   - 情報モデルにより、変更の影響範囲が明確に

4. **結果**:
   - 生産効率の向上
   - リソース利用の最適化
   - 品質の向上

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/17754f52-d8c1-8785-1890-37a5ce266b52.png)

## 導入に向けての考慮点

1. **既存システムの評価**: 現在のシステムとOPC UA情報モデルとのギャップ分析
2. **段階的アプローチ**: 重要な領域から順次導入を進める
3. **人材育成**: OPC UAと情報モデリングに関する社内の専門知識の育成
4. **ベンダー選定**: OPC UA対応製品の提供実績のあるベンダーの選定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/7f7fa846-bb16-fd4d-d277-39ff32af142e.png)

## まとめ

OPC UAの情報モデルは、製造業のデジタル変革において重要な役割を果たします。データに構造と意味を与えることで、単なる接続性以上の価値を提供し、ビジネスの効率化、柔軟性の向上、そして新たな価値創造の機会をもたらします。製造業が真のスマートファクトリーを実現し、Industry 4.0の恩恵を最大限に享受するためには、OPC UAとその情報モデルの戦略的な活用が不可欠です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/ed53d8d7-c718-1970-64e7-69cdfb94d92c.png)

## 参考リンク

- [OPC Foundation](https://opcfoundation.org/)
- [OPC UA Information Model Concepts](https://jp.opcfoundation.org/wp-content/uploads/sites/2/2019/08/library_whitepaper_UAInformationModel_r3.pdf)
初めてのプルリクエスト

# この記事の対象者
初心者で、gitのプライベートリポジトリでプルリクエストを出したいという方
## 用語解説
`git branch`: 現在のブランチを確認
`git branch -a`: 全てのブランチ（ローカルとリモート）を表示
`git branch ブランチ名`: 「ブランチ名」に任意の名前を入れ、ブランチを作成
`git checkout ブランチ名`: 指定した「ブランチ名」に切り替え
`git checkout -b ブランチ名`: 新しいブランチを作成し、そのブランチに切り替え
`git pull`: リモートリポジトリの変更をローカルリポジトリに取り込む
`git add .`: 変更をステージングエリアに追加
`git commit -m "メッセージ"`: ステージングエリアにある変更をローカルリポジトリに記録
※-mはメッセージオプション
※ローカルリポジトリとは個人のPC上にあるリポジトリ
`git push origin ブランチ名`: 指定したブランチをリモートリポジトリに登録(プッシュ)
`git status`: 現在の作業状態を確認

## プルリクエストの流れ
1. git checkout -b ブランチ名 で新しいブランチを作成し移動
1. 新しいブランチで、コード追加や修正を行う
1. git status で変更状況を確認
1. git add .　
1. git commit -m "メッセージ"
1. git push origin ブランチ名
1. GitHubなどのWebインターフェースでプルリクエストを作成
1. レビューしてもらう
1. 修正が必要な場合は、再度 add, commit, push を行う
1. レビューが終わりマージが承認されたら、GitHub上でマージボタンを押下
1. ローカルリポジトリの更新
   - git checkout main (または master)
   - git pull でローカルを最新状態に
   - git branch -d ブランチ名 で開発が終わったブランチを削除
プロジェクト運営・設計から運用まで学ぶための個人開発に挑戦！～さくらのレンタルサーバー～

## はじめに
　　この記事は、以下の記事の続編です。まだ読んでいない方は、ぜひ先にこちらの記事をご覧ください。
<br>

[プロジェクト運営・設計から運用まで学ぶための個人開発に挑戦！ ～企画～](https://qiita.com/CatLogic_Blue/items/0f3048af85afb117828c)
[プロジェクト運営・設計から運用まで学ぶための個人開発に挑戦！～設計～]
<br>

この記事では、前回の内容を引き継ぎ、サーバーのまとめを記載します。

## さくらのサーバーを選定の理由
　詳細な選定理由は以下の通りです。
<Br>
&thinsp;&nbsp; 1,円安による影響：
&ensp; 海外製のクラウドサービスが円安の影響で高騰しているため、IT業界が日本製のサーバーへ移行する可能性があると考えています。特に官公庁の案件でその動きが顕著になるのではないかと思われます。実際に、ネット界隈でもその話題で一時期盛り上がっていました。

&thinsp;&nbsp; 2,国産サーバーの応援：
&ensp; 日本製のサービスを応援したいという気持ちがあります。国産の技術力を評価し、その発展を支援したいと考えています。

&thinsp;&nbsp; 3,さくらクラウド検定：
最近、さくらクラウドに関する検定が登場しました。この機会にサーバーの知識を深めるとともに、検定にも挑戦してみたいと考えています。

### 技術選定
今後は、WordPressから移行し、プログラミングですべてを作成する予定です。現時点での技術選定は以下の通りです。
<Br>
サーバーサイド：Java
フロントエンド：React
データベース：選定中
デプロイ：サクラレンタルサーバーで可能
<Br>
「多種多様なサイトがさくらのレンタルサーバーで運営されています」という記載を見かけました。これにより、さくらのレンタルサーバーで様々なことができると期待しています。
<br>
## サービス選定
&thinsp;&nbsp;さくらのレンタルサーバー料金プランについて
&thinsp;&nbsp;私は、WordPressを利用したいという理由から、さくらのレンタルサーバースタンダードプランを選びました。さらに、ブログを運営する目的もあったため、このプランが最適だと判断しました。
<br>
### 料金プランの詳細
WordPress利用のため：
WordPressを使いたかったことが大きな理由です。さくらのレンタルサーバースタンダードプランは、WordPressの利用に適しており、スムーズな運営が期待できます。

ブログ運営のため：
プログを活用したいと考えていたため、さくらのレンタルサーバースタンダードプランを選びました。このプランは、ブログの運営に必要な機能が充実しています。

割引価格：
1年間の契約を一括で支払うことで、割引価格が適用されます。コストパフォーマンスが高く、長期的な運営を考える上で非常に魅力的なプランです。

1年間の運営：
最初の1年間はしっかりと運営を行いたかったため、1年間の料金を一括で支払いました。これにより、毎月の支払いの手間を省き、運営に集中することができます。
<Br>
以上の理由から、さくらのレンタルサーバースタンダードプランを選び、1年間の料金を一括で支払いました。
<Br>
## 使い方を学習する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646863/93536282-a343-81d2-07b6-15e0dddddf3b.png)

<Br>
動画・画像を使った分かりやすいマニュアルがあります。

[【さくらインターネット公式】カスタマーサポート まりな](https://www.youtube.com/@marinach)

サクラインターネットのサービスは、動画で分かりやすく解説されています。特に注目すべき点は、ランニングコストが0円であることです。YouTubeで無料で学習ができます。

サーバーの初期設定、WordPressを使えるようになるまで、公式YouTubeを見ながら作業できました。





-----------------------------------------------------
さくらのレンタルサーバー編は以上です。
こちらの作業は、６月最後の１週間～７月の初期あたりまで
本業と健康面を最優先にしているため、密なスケジュールを立てない。自分の時間配分を考えるを常に意識してます。

次回、[プロジェクト運営・設計から運用まで学ぶための個人開発に挑戦！～WEBデザイン～](https://qiita.com/CatLogic_Blue/items/a128adeba61846023b47)


を記載します。
エンジニアへの道：なんとなくエンジニアからの脱出の模索

### はじめに

この記事では、なんとなくエンジニアを続けている状態から、エンジニアとしての強みを探したストーリーについて、文系卒知識ゼロから入社してリーダーを務めることが多くなったときに、方向性を悩んだ経験談について書きます。

### なんとなくエンジニア
私は10年ちょっとSIer企業で勤めています。
それなりに目の前のことを楽しんできて、今に至るのですが、特段得意な領域もなく、私といえばこれといったラベルもないことが悩みでした。好奇心は強いほうなので、「やる？」と聞かれれば「やります！」と応え、面白そうな出来る上司の案件に手を挙げ、いろんな案件には携わらせてもらいました。

#### ▶️1〜4年目
1〜4年目くらいの若手の時の私は、おそらくプロジェクトにこの子いたら雑用もフットワーク軽くやってくれそうといった存在。飲み会も好きなので、いろんな飲み会にも顔出しそうなタイプ。得意なことは、進捗管理が苦手な技術おじさんの話を聞いて、すごい！と話を聞きつつ、上手い感じに進捗をもっていたり、状況を上司に伝えることでした（この能力はすごく重宝されてました）

技術おじさんからは、いろんなシステム開発での観点を教えてもらいました。
インフラ方式設計を一緒にやることが多く、ここまで深掘りすることはできないなと思いつつ、細かい指摘を大量に受けながらシステム内部の挙動を考えさせられ、最終的には面白い学びが多かったです。

面白そうな出来る上司からは、システム開発だけでなく、いろんなプロジェクト運営での観点を教えてもらいました。案件の多くが、新規立ち上げのプロジェクトや、炎上プロジェクト。何が課題で、何を変えるといいのか、たくさん考えさせられました。

#### ▶️5〜8年目
5~8年目くらいの私は、インフラ畑で育ち、Linuxベース、ミドルウェアを主に触ってきましたが、突然アプリチームのリーダになりました。これからオンプレの仕事は減少していくだろうし、アプリ領域にもう少しシフトしていきなさいと上司の勧めがあり、そのタイミングで１つ昇格し、10名程度のチームリーダとなりました。
自分がインフラ構築担当していたシステムの保守開発チームのアプリ担当なので、システムテストで挙動はある程度把握していたものの、アプリ開発はよく分からない状態で、1年ガムシャラにやりました。
アプリ開発ができる人材ではなく顧客やインフラメンバーとのつなぎ目にたつ調整役であり、土日や夜間の障害対応も多く、転職を考えた時期でもありました。

#### ▶️9〜12年目
ここら辺でいろんな人生のイベントを迎えました。
結婚、出産、中部支社異動（旦那の転勤都合。異動させてもらえた）、本社へ出戻り異動（旦那の転職都合。異動させてもらえた）。
元々家族を大事にしたい思いがあり、仕事は、子供が大きくなる10年くらい今のポジションで働くんだろうなと思っていましたし、新たな案件にも時間制約がある人材として申し訳なかったりしてなかなか積極的に手を挙げてませんでした。
ただ、仕事は新たなことを知れて好きであり、新しい部署で新規開発事業やってみたり、提案やってみたり、炎上案件の助っ人に呼ばれたり、スクラムマスターやってみたり、色々やってそれなりに楽しんでました。

#### ▶️何者かになりたい
そう、こんな感じで、目の前のことを好奇心で渡り歩いてきましたが、システム開発自体には興味があるものの、インフラエンジニアというほどでもなく、アプリエンジニアでもなく、アーキテクトでもなく、プロマネでもありません。

イベントなどで登壇している人は、ｘｘエンジニアとラベルがついていて、かっこいいなとずっと思ってます。


### あなたは何をやりたい？と聞かれても

ここ数年、年次もあがってきたこともありマネージャー候補として名前を挙げてもらい、

**あなたは何をやりたい？何を実現したい？** と聞かれることが増えました。
**自分の作りたい世界を作って欲しい** とも言われました。
　　
「えっ、、、なにそれ美味しいの？」　　状態です（笑）

そんなことあんまり考えたことなかったです。「ｘｘだから任せたい」「さすが！」という言葉に比較的やる気を出し、要望に全力で応えたいといったスタイルでやってきたので、あなたがこれから描いてと言われても。
　
そんなに技術力もないし、そんなにマネジメント力もないし、作りたい何かがあるわけでもない。過去の上司は長時間労働ベースで働いていて、それは無理だなと思い、今のお金でも十分生活できるし、昇進したいわけでもないし、そもそも子育てが忙しいし。


### 強み探し
そんな風に悩みながらも、あるとき自分自身に問いかける機会が訪れました。
それは、自己啓発の一環として、
**「全ての制約を取り払ったとき、自分がワクワクするやりたいことは何か？」**
という問いです。

最初は、正直に言って、答えが全く見つかりませんでした。しかし、少しずつ時間をかけて自分の経験や関心を振り返ることで、少しずつ見えてきたものがありました。

まず、私は様々なプロジェクトで幅広い経験を積んできました。インフラからアプリケーションまで、そしてリーダーシップや調整役としての役割など、多岐にわたるスキルを磨いてきました。この幅広い経験が、自分の強みであり、他の人にはない視点を持っていることに気づきました。

また、私は人と協力することが好きであり、チームをまとめることに興味があると感じています。スクラムマスターとしての経験や、炎上プロジェクトを立て直す過程で培ったコミュニケーション能力も大きな財産です。これらのスキルを生かして、より良いプロジェクト運営やチームビルディングに貢献したいと考えています。

そして、技術的な深掘りよりも、プロジェクト全体の流れを理解し、スムーズに進行させることに楽しさを感じることが分かりました。この気づきは、私がどの方向に進むべきかを示してくれる重要なヒントとなりました。

「ｘｘエンジニア」というラベルはいまだに何か分かってないのですが、私らしいシステム開発の現場でも活躍の仕方があると考えています。開発力、技術力はこれからも研鑽していきます。そして、自分の強みを使って新たな立場で自分なりのプロジェクト開発を描いてやってみようと考えています。

### おわりに
私が文系卒知識ゼロから入社してエンジニアとしてキャリアを積み重ねる中で、方向性を見失いそうになりながらも、自分の強みを見つけるまでのストーリーを共有しました。特に、多岐にわたる経験とスキルを通じて、自分がどこで価値を提供できるかを見つけ出すプロセスについて書きました。

これからも、技術力を磨き続けることはもちろん、自分の強みを生かしてプロジェクト開発に貢献していきたいと思います。そして、同じように悩んでいる方々にも、自分自身の強みや興味を見つけるヒントとして、この経験が少しでも役立てば幸いです。

他にもこのようなテーマで投稿予定です。またよかったらぜひ読んでください。
https://qiita.com/nanchan/items/232e1fe9015a4f6e0bf0
「思う」と「考える」：その違いがあなたの評価を左右する!?

![title](https://raw.githubusercontent.com/legitwhiz/legitwhiz.github.io/master/technology_memo/images/1000007748.jpg)

#「思う」と「考える」：その違いがあなたの評価を左右する!?

## 「思う」と「考える」の違い
皆さんこの違い意識して使い分けていますか？

「思う」とは、主観的、感情的な心の動きや瞬間的な判断を示す。

「考える」とは、道筋を立てて知的に分析し客観的に判断することを示す。

先日、仕事でお客様に「これはどういう事ですか？」と質問されているのに「…と思います。」
ってぇぇ!!
仕事なんだから思っているだけじゃダメなんだよと突っ込みを入れたかった…w

## どう使い分ける？

仕事上のメール等の文章を見返すと「思う」も「考える」を使う事が多々ありますが、「思うには責任が伴わない」、「考えるには責任が伴う」言動ですね!!

メールで「～～と思います。」
やっぱり何か、第3者的ななイメージを受けますよね!?

「～～と考えています。」
だと、意思表示を感じますよね!?

その一言で相手の印象は、ガラッと変わると思いませんか？
思うなら、後は行動するだけです。

ちなみに「思う」と「考える」は英語だと、どちらもThinkで合っているのかな!?