OmniAICreator/Qiita-1.07M huggingface dataset:
プログラミング知識不要！ノーコードAIツール「UMWELT」とは

こんにちは。スキルアップAI編集部です。

機械学習では、データの加工や実装などに非常に手間がかかると感じていました。
そんな時、ノーコードAIツールの存在を初めて知ると同時に「これらのツールを使えば、こんなに手軽にAIが開発できるのか」と、その利便性に非常に驚き、そして興味をもち始めました。

スキルアップAIが調べたところ、2022年4月時点においてノーコードAIツールと呼ばれているものは20以上ありました。代表的なものとしては、[UMWELT](https://www.tryeting.jp/umwelt/) 、[DataRobot](https://www.datarobot.com/)、 [Prediction One](https://predictionone.sony.biz/)が挙げられます。本ブログでは、[UMWELT](https://www.tryeting.jp/umwelt/)について簡単にご紹介します。

「ノーコードとは、プログラミングの知識やスキルがなくとも、Webアプリケーションを開発できるサービス」というような漠然としたイメージを持っている方も多いかと思います。
この記事を通じて「ノーコードAIツールとはどのようなものか？」について具体的なイメージを持っていただけたら幸いです。

＜目次＞
1.なぜノーコードAIツールが必要なのか
2.ノーコードAIツール UMWELT の紹介
3.おわりに

# 1.なぜノーコードAIツールが必要なのか
そもそもなぜノーコードAIツールは必要なのでしょうか。AI開発にあたっては、ノーコード、ローコード、プロコードのそれぞれの特徴を理解する必要があります。
![no-code-ai_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/82c83f35-f8d0-df1c-50c6-5473060b5c0d.png)
図1. ノーコード・ローコード・プロコードの比較

AI開発をする際には、AIを「内製するのか」「外注するのか」を社内リソースを踏まえて考える必要があります。それぞれのメリット、デメリットを十分に考慮することで開発期間の短縮にもつながります。

内製する場合は、高度な技術をもったAIエンジニアが社内に必要となりますが、ノーコードAIツールを用いると、そういった人材がいなくてもAIを開発することができます。

高度な技術知識をもったAIエンジニアが不要になれば、当然、そういった人材にかかるコストも削減されます。
このような背景から、ノーコードAIツールは、近年大変注目を集めております。

# 2.ノーコードAIツール UMWELT の紹介
続いて、 UMWELT を使ってどのようなことができるのかを紹介します。

AI開発は大まかに「データ収集 → データ処理 → モデル構築 → 運用 → 保守・改善」のようなフェーズに分けることができます。UMWELT ではデータ処理から運用までのフェーズを行うことが可能です。

![no-code-ai_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/df5dae29-7392-5709-59da-e9dfbafaef63.png)
図2. UMWELTを用いてできること

UMWELT を使用すると、エンジニアやデータサイエンティストの手が必要になる前処理やモデル構築などを自動化することができます。これらの工程を自動化できると、当然、そういった人材にかかる工数が削減されます。

UMWELT には、他にも以下の特徴があります。

- 操作画面がわかりやすい
- 使用したいアルゴリズムを選択してモデル構築を行うことができる
- 需要予測、シフト管理、生産管理、素材開発に対応している

# 3.おわりに
いかがでしょうか？ノーコードAIツールの良さを感じていただけたでしょうか？
スキルアップAIでは現在、ノーコードAIツールを扱う講座として、「[現場で使えるAIプランニング・プロジェクト推進基礎講座（DataRobot活用編）](https://bit.ly/3JBPXec)」を開講しております。今後もノーコードAIツールを扱う講座を順次開講していく予定です。

# 25卒向け！AIエンジニアになるための長期インターンプログラム参加者募集中！
25卒学生向けに、AIの基礎を学びながら就活も一括サポートする無料カリキュラムを提供しています。
修了するとE資格の受験資格も獲得できるプログラムとなっています！

<img width="700" alt="長期インターン" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/bfce4c26-1ebe-c54d-bacb-e804048a7a08.png">

**特長①AIエンジニアやデータサイエンティストの基礎が身に付く**
AIジェネラリスト基礎講座や機械学習のためのPython入門講座など、市場価値向上のための基礎を習得。

**特長②AI・データ分析領域の優良求人を紹介**
非公開求人や選考直結型インターンをご紹介し、早期内定の獲得をサポート。

**特長③長期インターンプログラム専用の学生コミュニティ参加可**
学生同士で就活情報をシェアしたり、学習を進めるうえでアドバイスをしあったりできるコミュニティに参加可能。

＞＞[長期インターン詳細](https://bit.ly/3pXW5JM)

☆☆☆
スキルアップAIのメールマガジンでは会社のお知らせや講座に関するお得な情報を配信しています。
配信を希望される方は[こちら](https://share.hsforms.com/1_XlReV-4Te-zcxCl9lhffA2mtef)

また、SNSでも様々なコンテンツをお届けしています。興味を持った方は是非チェックしてください♪
Twitterは[こちら](https://twitter.com/SkillupAi)
Facebookは[こちら](https://www.facebook.com/skillupai)
LinkedInは[こちら](https://www.linkedin.com/company/skillup-ai)
スキルアップAI公式YouTube AIビジネスチャンネルは[こちら](https://www.youtube.com/AIBusinessChannel)
Linux操作 cron編

業務中に初めて利用したので、今更感はすごいですが、crontabについての備忘録を。
crontabの設定に関しては色々あるようですが、今回は以下のコマンドによる既存ファイルの編集についてです。

コマンドで設定 
１．編集
`crontab -e`
上記コマンドで、crontabファイルの編集が可能です。
編集時の操作（i,wqなどの編集や保存）に関してはほぼvimコマンドと同じです。


２.	閲覧（表示のみ）
`crontab -l`
上記コマンドで、crontabファイルの内容を表示します。
編集前後に一度確認を入れた方が安心かと思います。

３．削除
`crontab -r`
上記コマンドで、crontabファイルを削除します。
このコマンドの実行後、復元は不可能なので、かなり注意が必要です。
できれば先に対象のcrontabファイルをコピーするなり、バックアップを取ることを推奨します。

以上、ざっくりですが備忘録です。
不安に思ったら即確認・調査、がLinuxに慣れてない人からすると大事だなと痛感します。。。
git pushはgit push origin HEADが便利です

## はじめに
新人プログラマ応援イベントの参加記事です。

https://qiita.com/official-events/3f21c92121aa125807b4

表題の件、何番煎じか分かりませんが、自分の周りで割と知らない人も多かったので、
記事にしておこうと思います。

## 本題
カレントブランチを同名のリモートブランチにpushするときの便利な技です。
pushするとき、以下のようなコマンドを打つかと思います。

```console
$ git push origin {カレントブランチ名}
```

カレントブランチ名を毎回入力するのは面倒くさいので、

```console
$ git push origin HEAD
```

HEADを指定すれば楽です。

## 参考
https://git-scm.com/docs/git-push#:~:text=git%20push%20origin%20HEAD
nRF Connect SDK:Kconfig

# Kconfigってなんだ？
nRF Connect SDKを触り始めてしばらく経ちますが、Kconfigというものの存在がよく分かっていませんでした。中身を見てみるとprj.confで定義されているシンボルが記述されているのをよく見かけるわけですが
「はて、それだったら直接prj.confに書けばいいじゃん。なんでわざわざ別のKconfigとかいうのに書くわけ？？？」
とずっと思っていました。
## ていうかKconfigってナニモノ？
確かに上記の理解は間違いではないのですが、厳密には正解というわけでもありません。標準で用意されているKconfigオプションというのは

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index.html

ここで検索することはできますが、ここで検索できるオプションというのも全てKconfigで定義されたものです。具体的な例を見てみると、CONFIG_BT_SMPは以下の場所にあるKconfigで定義されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/340602/1bc840f9-2e43-e9c0-b7e6-ac3cabea1bfc.png)
## つまり
因果関係は逆であり、Kconfigで定義されているからprj.confで使うことができるという流れになります。
ということは・・・。
## プロジェクト独自のオプションを定義できる
Kconfigが存在する最大の理由はこれです。いわゆるカスタムプロパティを定義することができます。標準で添付されているサンプルだとperipheral_uartなどでその記述を見ることができます。

```Kconfig
#
# Copyright (c) 2018 Nordic Semiconductor
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#

source "Kconfig.zephyr"

menu "Nordic UART BLE GATT service sample"

config BT_NUS_THREAD_STACK_SIZE
	int "Thread stack size"
	default 1024
	help
	  Stack size used in each of the two threads

config BT_NUS_UART_BUFFER_SIZE
	int "UART payload buffer element size"
	default 40
	help
	  Size of the payload buffer in each RX and TX FIFO element

config BT_NUS_SECURITY_ENABLED
	bool "Enable security"
	default y
	select BT_SMP
	help
	  "Enable BLE security for the UART service"

config BT_NUS_UART_DEV
	string "UART device name"
	default "UART_0"
	help
	  Name of the used UART device. The sample uses uart0 by default.
	  The UART device should not be used as logger backend.

config BT_NUS_UART_RX_WAIT_TIME
	int "Timeout for UART RX complete event"
	default 50
	help
	  Wait for RX complete event time in milliseconds

config BT_NUS_UART_ASYNC_ADAPTER
	bool "Enable UART async adapter"
	select SERIAL_SUPPORT_ASYNC
	help
	  Enables asynchronous adapter for UART drives that supports only
	  IRQ interface.

endmenu
```

これらのうちのいくつかはmain.cにも出てくるんですよね。例えばこのあたりとかです。

```main.c
BT_CONN_CB_DEFINE(conn_callbacks) = {
	.connected    = connected,
	.disconnected = disconnected,
#ifdef CONFIG_BT_NUS_SECURITY_ENABLED
	.security_changed = security_changed,
#endif
};
```

ここで「はて、CONFIG_BT_NUS_SECURITY_ENABLEDってなんだっけか？」と思ってKconfigサイトで調べてみると・・・。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/340602/f32ebd3d-8290-e236-b984-f7ec30a70c05.png)
ヒットしないのです。
ふぁーーーーー？どういうことなの？なんでコンパイルエラーにならないの？って思いますよね。実はこのオプションは自身のプロジェクト内のKconfigで定義されているオプションであり、このプロジェクトにしか存在しないものなのです。
## なぜこんなものがあるのか？
そうは言ったって別に自分が使うだけのものならそんなもんイラナイじゃん、というのは実際その通りです(笑)。ですので、まだ完全には理解できていないというのが正直なところです。
分かり次第、追記しようと思います。(色々とあっちこっち調べているので時間はかかりますが)
Rocky Linux 8.4にGo環境をインストール(Linux)

linuxのOSにGo環境をインストールする手順です。

今回はRocky Linux 8.4を使用しています
※Centos8系は同手順で同様にインストールできる認識


手順

    cd /usr/local

バージョン15をインストール(2022年4月時点の最新バージョンは17)

    wget https://golang.org/dl/go1.15.2.linux-amd64.tar.gz

    tar -C /usr/local -xzf go1.15.2.linux-amd64.tar.gz

    rm -rf go1.15.2.linux-amd64.tar.gz


バージョン確認

    go version
    go version go1.15.2 linux/amd64

環境変数を設定

    vi .bash_profile

    export ROOT=/usr/local/go
    export GOPATH=$HOME/go
    export PATH=$PATH:$ROOT/bin

    #設定後読み込み
    source ~/.bash_profile


ホームディレクトリでhello.goを作成し下記を入力

    vi hello.go

    package main
    
    import "fmt"
    
    func main() {
        fmt.Printf("hello, world\n")
    }


コマンド実行

    go run hello.go
    hello, world

完了！
Raspberry Pi OS Lite 32bit Bullseye で opencv-python 環境

# 1.はじめに
古い8ｍｍカメラをデジタル化するプロジェクトの過程で、Raspberry Pi zero2 Wでopencv-pythonを使いたかったので導入方法の覚書。

Bullseyeの64bit版だとopencv-pythonが簡単に動きますが、Liteの32だといつものごとくライブラリが足りないと言われます。
Zeroは64bitに対応していませんし、Zero2は64bit対応ではあるものの一部カメラが使えなかったので32bit版の方が使いやすい印象です。

あと、Zero系だとヘッドレスセットアップからssh接続の流れが多いと思いますが、デフォルトユーザーのPiが無くなった関係でこれまでのやり方だとログインできませんのでご注意を。
Raspberry Pi OS Imager のカスタマイズ機能を使うとアカウントを先に作れるみたいです。



# 2.インストール方法

必要コマンドだけまとめるとこう。
```sh
sudo apt-get -y install python3-dev python3-pip libgl1-mesa-dev libopenjp2-7-dev libavcodec-extra58 libavformat58 libswscale5 libgtk-3-dev liblapack3 libatlas-base-dev
pip install opencv-python==4.6.0.66 opencv-contrib-python
```



buster時代とほぼ同じ流れでいけます。
足りないと言われたライブラリもだいたい見覚えのあるやつばかりかな。

```sh
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -y install python3-dev
sudo apt-get -y install python3-pip
sudo apt-get -y install libgl1-mesa-dev
pip install opencv-python==4.6.0.66
pip install opencv-contrib-python
sudo pip install -U numpycd

```

contribは必須じゃないけど気持ち。

足りないと言われたライブラリを順次足していったらこれだけでした。

```sh
sudo apt-get -y install libopenjp2-7-dev
sudo apt-get -y install libavcodec-extra58
sudo apt-get -y install libavformat58
sudo apt-get -y install libswscale5
sudo apt-get -y install libgtk-3-dev
sudo apt-get -y install liblapack3
sudo apt-get -y install libatlas-base-dev


```

足りないライブラリを調べるには[こちら](https://qiita.com/atuyosi/items/5f73baa08c3408f248e8#%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A8%E5%AF%BE%E5%BF%9C%E3%81%99%E3%82%8B%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E5%90%8D%E3%81%AE%E3%83%AA%E3%82%B9%E3%83%88)
が便利でした。
[OCI]Oracle Autonomous Linux 7.9にOracle Instant Client 21c+SQL*Plus+Apache+PHP+php-oci8をセットアップしたときのメモ


rootユーザにスイッチ
```
sudo su -
```

Oracle Instant Client 21cとSQL*Plusをインストール
```
yum install -y oracle-instantclient-release-el7
yum install -y oracle-instantclient-sqlplus
```

環境変数の設定
```
cat <<'EOL' >> /etc/profile
export ORACLE_HOME=/usr/lib/oracle/21/client64/lib
export NLS_LANG=Japanese_Japan.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
EOL
```

Apache + PHP + php-oci8のインストール
```
yum install -y oracle-php-release-el7
yum install -y php php-oci8-21c
```

Apacheの.phpファイルのハンドラーをapplication/x-httpd-phpに設定
```
cat <<'EOL' >>/etc/httpd/conf/httpd.conf
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
EOL
```

Apacheの起動
```
systemctl start httpd.service
```

Apacheの自動起動設定
```
systemctl enable httpd.service
```

firewalldの設定：HTTP(TCP 80),HTTPS(TCP 443)のアクセスを許可
```
firewall-cmd --list-all --zone=public
firewall-cmd --add-service=http  --zone=public --permanent
firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --reload
firewall-cmd --list-all --zone=public
```

SELinuxの設定変更
```
setsebool -P httpd_can_network_connect=1
```

Apacheの動作テスト用HTMLファイルを作成
```
cat <<'EOL' >>/var/www/html/index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>test</title>
  </head>
  <body>
    <h1>やったぜ！</h1>
  </body>
</html>
EOL
```

Apache+PHPの動作テスト用PHPファイルの作成
```
cat <<'EOL' >>/var/www/html/info.php
<?php
echo phpinfo();
?>
EOL
```

ブラウザからアクセスして動作確認
```
http://<ComputeインスタンスのグローバルIP>/index.html
http://<ComputeインスタンスのグローバルIP>/info.php
```
info.phpの表示で以下を確認する

・PDOドライバにociが表示されていて、PDO_OCIが有効化されているか
![スクリーンショット 2022-04-13 10.01.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/107ac18f-66cf-e88b-f798-ff035bf14ec2.png)


・oci8が有効化されているか
![スクリーンショット 2022-04-13 9.58.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/03e6e608-ef08-1465-9cf7-7e45668a4c6f.png)
GitHubActionsを使ってLaravelの変更を自動デプロイする

ファイルをアップロードするときに毎回FFFTP使ったり、 sshつなげてgit pull origin masterしたりする手間を省きたいときにGitHubActionsやCircleCIは便利です。
今回はGitHubActionsで自動でプロイする仕組みをお伝えします。

## Sakuraのレンタルサーバにアクセス制限設定を無効にする
・コントロールパネルから変更する
## GitHubActionsの設定
・Githubにシークレットの設定（サーバ名、ユーザー、パスワード、アップロードするディレクトリ先）　※ファイルに直書きは見れてしまうので。
## GithubActionsに登録
・FTP-Deploy-Action4.0.0を使います。
・Actions -> set up a workflow yourself に進みます。
・ymlファイルが開きますので、以下を参考に書きかえてください。とはいえ、ほとんど自動生成されるのでポイント箇所を重点的に見て書き換えます。

   
``` 
# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ master ] ※1
  pull_request:
    branches: [ master ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v3

      # Runs a single command using the runners shell
      - name: Run a one-line script
        run: echo Hello, world!

      # Runs a set of commands using the runners shell
      - name: Run a multi-line script
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.
      - name: 📂 Sync files
        uses: SamKirkland/FTP-Deploy-Action@4.0.0
        with:
          server: ${{ secrets.FTP_SAKURA_SERVER }}　※2
          username: ${{ secrets.FTP_SAKURA_USERNAME }}　※3
          password: ${{ secrets.FTP_SAKURA_PASSWORD }}　※4
          local-dir: ./　※5
          server-dir: ${{ secrets.FTP_SAKURA_DIR }}　 ※6
```

※1　ワークフローを起動させるブランチ名。mainかmasterかと。
※2　シークレットの登録サーバー（FTP_SAKURA_SERVERという名前で登録してるのでsecrets.FTP_SAKURA_SERVER）
※3　シークレットの登録ユーザー
※4　シークレットの登録パスワード
※5　server-dirは./　でよいかと。
※6　シークレットの登録ディレクトリ

実際のymlファイル　→https://github.com/yutoonodera/tenjin/blob/master/.github/workflows/main.yml


## プッシュしてみる
・対象リポジトリのソースをローカルで変更してpushします。

　Actionsにこのように表示されます（失敗したら赤マーク）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522723/3d3c44a4-c1ec-33ae-7b39-90ed8827b102.png)
ソースを見たら変更がされてました（エビデンス示してなくてすいません）

※参考：
https://zenn.dev/mamezou/articles/23a221c7287cf6
https://zenn.dev/moai_san/articles/81a10cabe6de00
【ConoHa WING】WordPressかんたんインストール後にログインできない現象

ConoHa WINGでWordPressセッティングしていたところ、ログインできない現象で困ったことがあったので共有です。

# 結論：ログインユーザー名、パスワードが長すぎると、wp_usersへの登録が失敗し、ログインできなくなる

原因を調査したところ、wp_usersテーブルの行数がゼロで、ユーザー登録が失敗していることが分かりました。
ログインユーザーを登録できていないことを示しています。
![スクリーンショット 2022-04-13 090349.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/611998/939dc926-dd48-3091-a0f9-16bfc82271cb.png)
テーブルのカラムサイズと入力箇所の制限が整合していないようです。（今後修正される可能性はあります）

いったんWPを削除して、文字数を減らしてリトライするとログインできるようになりました。

# 要因：テーブルのカラムサイズと入力箇所の制限が整合していない
以下の通り、ユーザー名は60文字、パスワードは255文字となっています。
![スクリーンショット 2022-04-13 090601.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/611998/c79375c4-d2f3-58fa-a7f6-9fedc8488538.png)

他方、入力フォームは、ユーザー名255文字、パスワード70文字となっています。
![スクリーンショット 2022-04-13 090518.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/611998/90702a57-8e1d-bf6f-a3c0-16edfece940e.png)
この通り、フォーム側の上限まで入力してしまうと、データベース側のサイズをオーバーしてINSERTが失敗します。
この場合もインストール処理自体は成功するので、原因が分かりにくいですが、ユーザーが登録できずログインできなくなるはずです。

尚、パスワードは平文ではなくハッシュ化で保存されます。70文字ギリギリで入力するとハッシュ化したときに255文字を超過する可能性もあるので気を付けましょう。
Webページからエクステンションのbackground.jsへメッセージを送れました。

# テスト環境
使用した拡張プラグイン　「YouTube連動検索再生プラグイン　3.1」
親ページのURL　　　　　　https://tecoyan.blogspot.com
タイトル　　　　　　　　「なかしの曲(ポータル)」　　
テスト手順　　　　　　　 この画面にある「サーチ」ボタンで、クェリーを指定してyoutube検索を行い、検索結果を親ページに表示します。

# 課題
YouTube連動検索再生プラグインでは、content.jsとbackground.js間のメッセージ送受信はうまく行えていました。次の課題は、Webアプリから、background.jsへメッセージを送信する必要がありました。理由は、親ページのサーチボタンを実行するときは、「YouTube連動検索再生プラグイン」が必要ですが、まだ、プラグインをインストールしていない場合は、案内メッセージを表示したい必要が出てきたことです。
# 案内メッセージの例:
サーチを実行するには、「YouTube連動検索再生プラグイン 3.1」(無料)をchrome ウェブストアからインストールしてください。

# 親ページのスクリプト
このメッセージを表示するため、
親ページから、以下のメッセージをbackground.jsへ送りました。
```
const EXTENSION_ID = 'fkjolmdggoajciaanapehmhooajklebi';
chrome.runtime.sendMessage(EXTENSION_ID, 'version', response => {
        if (!response) {
                alert("サーチを実行するには、「YouTube連動検索再生プラグイン 3.1」(無料)をchrome ウェブストアからインストールしてください。");
                return;
        }else{
                alert("拡張機能のバージョンは"+response.version+"です。");
                //
                var query_txt = $("#query_txt").val();
                list_type ="search";
                //オープン youtubeページ
                window.open("https://www.youtube.com/results?search_query=__" + query_txt);
                return false;   
            
            
        }
    });
```

# バックグラウンドのスクリプト
background.js側では、以下のスクリプトでメッセージを待っています。
```
function ex_listener(message, sender, sendResponse){

    if (message == 'version') {
      const manifest = chrome.runtime.getManifest();
      sendResponse({
        type: 'success',
        version: manifest.version
      });
      return true;
    }

}
	    //
chrome.runtime.onMessageExternal.addListener(ex_listener);
```

# マニフェスト
このプラグインのmanifest.jsonは、以下のものです。
```
 "manifest_version": 2,
  "name": "YouTube連動検索再生プラグイン 3.1",
  "version": "3.1",
  "description": "youtubeページの検索結果をもとに独自形式の再生リストを作成し、プレーヤーで再生します。二つのサイトが連携して動作します。",

  "background": {
    "persistent": true,
    "scripts": ["jquery.js","background.js"]
  },
  "externally_connectable": {
    "matches": ["https://\*.tecoyan.net/\*","https://\*.tecoyan.net/\*","\*.blogspot.com/\*"]
  },
  
  "content_security_policy": "script-src 'self' https://www.youtube.com https://\*.tecoyan.net https://ajax.googleapis.com https://code.jquery.com https://autoplay.tecoyan.net https://sample-blog.tecoyan.net https://service-tag.tecoyan.net; object-src 'self'",
  "content_scripts": [{
    "matches": ["https://www.youtube.com/\*","https://\*.tecoyan.net/\*","https://\*.blogspot.com/\*"],
    "js": ["jquery.js","content.js"]
  }],
  "browser_action": {
    "default_icon":{
      "19": "youtube.png"
    },
  "default_title": "YouTube連動検索再生プラグインv3.1"
  },
  "permissions": [
   "https://\*.blogspot.com",
   "https://www.youtube.com",
  "tabs"
  ]
```

# テスト結果
上記のマニフェストでは、成功しませんでした。バックグラウンドでメッセージを受信できなく、接続エラーになりました。いろいろ試してみましたが、接続エラーが取れませんでした。

# 解決したこと
最後に試してみたのが、"externally_connectable": の記述変更でした。
ネットの情報などでは"https://\*.xxx.com/\*"などの記述がありましたが、あえて*を取り、フルで指定しました。
"https://tecoyan.blogspot.com"など。すると、すんなり、メッセージがbackground.jsへ届きました。あっけないものでした。

これで、ようやく、親ページからbackground.jsへメッセージを送ることができました。これができると他にもいろいろ利用価値が出てきそうです。
【初心者】Java?JDK?JRE?JVM 違いを理解したい

# はじめに
僕は Javaと聞いて Oracle? 組み込み?脆弱性対応?などのキーワードが浮かびます。
JDK・JRE・JVM の区別もついてないですが、Java を触る必要があるため、これを機に理解したいと思います。

# Javaを第三者に一言で説明したい
- Javaとは、サン・マイクロシステムズ社が開発したプログラム言語

# ざっくりまとめると
![スライド1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474478/c9570e18-c73d-4dce-75d4-e29e5de88bd5.jpeg)

![スライド2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474478/5491e51a-226a-d9b6-9d4d-7777a21859ac.jpeg)

# 用語
- Java SE
    - Java Platform, Standard Edition の略。Java で使用される API をまとめたもの
        - Javaで提供される API は非常に多く、Java SE はその中でも基本となる API をまとめたもの
        - ex: java.lang.String クラスなどが含まれる(らしい)
        - デスクトップアプリケーションなどを開発する場合は Java SE だけでも事足りるケースが多い
- Java EE
    - Java Platform, Enterprise Edition の略。大規模なシステムで開発する場合に必要となる API が含まれる
    - Java EE は Java SE の拡張機能という位置づけ。Java EE 使用時は Java SE と合わせて使用する
    - Java EE は 2017 年に oracle から Eclipse Foundation に移管済
    - 名称は Java EE から Jakarta EE になる
- Java ME
    - Java Platform, Micro Editon の略。組み込み機器やモバイルデバイスで動作するアプリケーション開発用の API が含まれる
- JVM
    - Java Virtual Machine の略。Java で作成したアプリケーションを Windows/Mac OS などで動かすために必要となるアプリケーション
    - Java 仮想マシンなどと呼ばれる
    - Java で作成したプログラムをコンパイルすると中間コードと呼ばれる Java クラスファイルを出力する
    - Java クラスファイルはどの OS 上でコンパイルしても同じものを生成する
    - Java クラスファイルは単独で実行できず、実行環境の OS 上にインストールしている JVM で実行される
    - Java クラスファイルが OS 共通でも問題無く実行できるのは、JVM が Java クラスファイルを対象の OS で動作するように変換して実行するため
- JRE
    - Java Runtime Environment の略。Java プログラムを実行するためのセット
    - Java 実行環境・Java ランタイムと呼ばれる
    - JRE は JVM と API のセット
    - JRE は対応する Java SE バージョンに合わせて、バージョン番号を付与する(ex: JRE8, JRE13)
- JDK
    - Java Development Kit の略。Java のプログラム開発や実行を行うためのプログラムのセット
    - Java 開発環境と呼ばれる
    - JRE(JVM+API) + Java プログラムをコンパイルするためのプログラムやデバック用プログラムを含む
    - JDK をインストすれば、Java でアプリケーション作成や実行まで一通りできる
    - JDK も対応する Java SE バージョンに合わせて、バージョン番号を付与する(ex: JDK 8, JDK 13)

# Oracle JDK 有償化
- Oracle JDK は2019年4月から有償化
- 無償利用は個人での開発・テスト・デモ目的のみ
- 無償版は OpenJDK プロジェクトとして開発/リリースされている(Oracle JDK(分かり辛い名前...,Oracle OpenJDKなど)

# 結局どれインストすればいいのか
- サポートポリシー気にするなら Oracle JDK(有償)
- 検証したいだけなら OpenJDK ベースのどれか(ex: Oracle OpenJDK / 無償)
- 
# 実機確認
java -version で確認

```java
# java -version
java version "1.8.0_321" // Java SE8 を意味している
Java(TM) SE Runtime Environment (build 1.8.0_321-b07) 
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)
```

# 最新バージョン確認
- 最新の LTS は JAVA17(https://www.oracle.com/java/technologies/downloads/#java18)
- 最新の Oracle OpenJDK は 18(http://jdk.java.net/)
- バージョン名とリリース日一覧(https://techacademy.jp/magazine/27850)

# 参考
- https://www.javadrive.jp/start/install/index5.html
- https://qiita.com/tyariponzu614/items/56cef656a73794e59439
【転職】面接で聞くこと & 聞かれたこと

## はじめに
2つの会社で半年ほど採用担当をしていました。
私が面接でよくした質問と私が転職活動時によく聞かれた質問をまとめました。
GoとRubyの会社で働いていたので、技術的な質問はGoとRubyが多めです。
みなさんが就活をする上で参考になれば嬉しいです。

## 技術的な質問

### コードレビューの経験はありますか？

### どのような点に着目してコードレビューをしていますか？

### Next.jsの辛いところはなんですか？

### Rubyと比べてGolangの特徴はなんですか？

### Golangを書いていて何か思うことはありますか？〇〇が辛い。〇〇が快適。など

### マイクロサービスでGolangを採用するメリットはなんですか？

### protocol buffersを使うメリットはなんですか？

### 技術を選定する上で大事にしていることはありますか？
### 手動テストは必要だと思いますか？

### E2Eのテストについてどう思いますか？

### mongo dbについて知っていることはありますか？

### AWSとGCPはどのように使い分けていますか？

### あなたが興味のある技術はなんですか？
### Rubyの将来性についてどう考えていますか？

### JVM系言語に興味はありますか？

## キャリア・働き方に関する質問

### 仕事をする上で大切にしていることはありますか？

### 今後のキャリアプランをおしえてください

### 働く上で譲れないポイントはありますか？

### 現在、転職活動をしている理由はなんですか？

### プログラミングのみをやりたいですか？組織作りやマネジメントにも興味がありますか？

### どのようなエンジニアチームを作っていきたいですか？ or どのようなチームで働きたいと思いますか？

### 入社して何がやりたいですか？

### 弊社にどのようにご貢献できますか？

## 人間性に関する質問

### あなたの長所と短所を教えてください

### あなたは自分のことをどのような人間だと思っていますか？


## 未経験エンジニアに対する質問
### どうしてエンジニアになろうと思ったのですか？ 

### なぜRuby on RailsとVue.jsでポートフォリオを作ったのですか？

### TypeScriptではなくあえてJavaScriptを選んだ理由は何ですか？

### どのようにして勉強していますか？

### エラーで詰まった時どのようにアプローチをしますか？

### 英語の公式ドキュメントは読めますか？
spectral: operationIdがキャメルケースかどうかをチェックするルール

[spectral]で`operationId`がキャメルケースかどうかをチェックするルールです。

```yaml
extends: spectral:oas
aliases:
  PathItem:
    - $.paths[*]
  OperationObject:
    - "#PathItem[get,put,post,delete,options,head,patch,trace]"
rules:
  operation-id-camel-case:
    description: Operation IDs must be camelCase since some generators (e.g. RTK Query) don't support kebab-cases.
    message: "Operation ID \"{{value}}\" must be camelCase since some generators (e.g. RTK Query) don't support kebab-cases."
    given: "#OperationObject"
    severity: error
    then:
      field: operationId
      function: casing
      functionOptions:
        type: camel
```

エラーを検出した例:


![20220413_093116.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/cf998ba3-ebc2-2cf9-13e7-ac6bf4b7cb7d.png)


[spectral]: https://meta.stoplight.io/docs/spectral/ZG9jOjYx-overview
VirtualBox ホストOSからゲストOSにSSH接続できない時の調査方法

## はじめに
VirtualBoxでホストOSからゲストOSにSSH接続できない時の調査方法についてまとめました。
参考にして頂けたら幸いです。

## 動作環境
端末 Windows 
Oracle VM VirtualBoxをインストール済み　CentOS7のゲストOS作成
TeraTermインストール済み

## 前提条件
・ゲストOSが起動中であること。
・ユーザーはrootを使用する。
※実務では必要最小限でrootユーザーを使用する。確認のみの場合は使用しないことが多い。

・ネットワーク設定は、ホストOSとゲストOSとの通信とゲストOSから外の通信が出来るため、ブリッチ接続にする。

## ゲストOSの調査手順
### 1. VirtualBoxのネットワーク設定を確認する。
画面の上にある[仮想マシン] >> [設定]をクリックする。
左ペインのネットワークをクリックし、赤枠の設定になっていることを確認する。
※NATはSSH接続できないため、注意が必要です。

赤枠の設定になっていること。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/7c948a9b-7e69-2127-4080-f04cd3396ac2.png)

### 2. プライベートipアドレス(ipv4)を確認する。

```ゲストOS
　# ip addr show
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/882bd43d-8e87-0430-0c13-2982ac5a2a01.png)

### 3.ネットワークデーモンを再起動し、ネットワークの設定を再度反映させる。
```ゲストOS 
　# systemctl restart network
```
### 4 外と通信できることを確認する。
```ゲストOS
　# ping 8.8.8.8
```
### 5.ファイアウォールの設定でsshが許可されていることを確認
```ゲストOS
　# firewall-cmd --list-all
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/2a2e1134-12c9-32b0-ed78-d2eb3598088f.png)

### 6.sshのポートが開いていることを確認
```ゲストOS
　# nmap ゲストOSのIPアドレス
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/532db9a0-fb82-5513-6dcf-342a226f1616.png)

### 7.ホストOSとゲストOSが通信できることを確認
```ゲストOS
　# ping ホストOSのIPアドレス
```
Ruby 無限ループで each_with_index のようなカウント数を得る

# コード例

```rb
(1..Float::INFINITY).each { |i| p i }
```

# 実行例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89618/7d8aec45-3622-31d1-7825-34e98926fba3.png)











<!-- Update From Qiita API -->

# チャットメンバー募集


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

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





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
EDB migration portalを使ってみた

## EDB migration portalにOracle DDLを流してみる


## 記事の内容
OracleからEDB Postgresにデータベース移行をする際に、難易度を把握するための机上アセスメントとして、EDB migration portalを用いることができる。
そこで、EDB migration portalの使い方を記載する。


## 本編
#### EDB migration portalへのアクセス
1. EDB PostgresのHPにアクセスする。

https://www.enterprisedb.com/products/migration-postgresql-database-schema-data-convert

2. 「PostgeSQLソフトウェア > 移行」をクリックする。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/3df52f9c-1215-0f97-12a0-54660eb083b2.png)

3. 「移行ポータルを開く」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/9397523f-16b2-0df5-cfcb-7e4b1e9b9b41.png)

4.アカウントを取得していない場合は、新しく作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/c476f559-f973-6d64-e981-2b3b64415a98.png)
アカウントを取得済みの場合は、「I already have an EDB account」をクリックすると、以下の画面が表示されるので、ログイン情報を入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/56035e39-6740-7c2d-53c4-354c6d200fc9.png)
5. 以下のようにログインができることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/1e2d72ae-02dc-dba3-61c5-808bfa0a7adf.png)

#### EDB migration portalにDDLを登録
1. 「Project」の「New」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/1e2d72ae-02dc-dba3-61c5-808bfa0a7adf.png)

2. NEW Projectに必要な情報を入力する。「Choose file」にダウンロードしたOracleのDDLファイルを選択する。その後、「Create & assess」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/806003d0-2d4c-4326-36e6-64cb1e0817f5.png)

3. Schemasに結果が表示される。
「pass」は、そのまま使えるSQL
「system repaired」は自動互換したSQL
「fail」は自動互換ができず、手動で変更する必要があるSQLである。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/64595cd1-a8ff-3a67-88f3-d8df157ddedc.png)

#### Schemasの詳細確認
OracleのDDLのうち、修正すべき箇所を特定し、修正する。
1. 修正箇所を特定するために、「Schemas_3952」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/64595cd1-a8ff-3a67-88f3-d8df157ddedc.png)

2. Schemaの詳細が表示される。「fail」の箇所が「Constraints > JHIST_DATE_CHECK」にあることを確認し、選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/1641bf09-bb9e-6340-9bb6-ad6e2893aa77.png)

3. Sourceとして、変換する前のOracleのSQLを、Targetとして、自動互換されたSQLが表示されている。自動互換が出来なかった箇所は、赤く表示されており、「OUTPUT」として確認できる。自動互換された箇所は、「REPAIRED」として確認ができる。
また、「Quick help」を使用することで自動互換ができなかった箇所の対応について即座に調べることもできる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/a09db867-1846-a099-cb5b-3d473a27671a.png)
今回のVALIDATE（新しい行または変更された行でエラーを確認する）はEDB Postgresではサポートされていないが、ひとまずこのまま先に進める。

#### レポートの作成
EDB migration portalで変更したスキーマをレポートとして作成する。
1. EDB migration portalの「Report」を選択し、レポートとして出力するスキーマを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/f548f4a0-0cc1-734a-e952-ea6849cafe65.png)
2. 以下のようにレポートが出力される。「Generate PDF」で出力することもできる。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/38599f59-deb5-ae01-3396-44421a1a020e.png)

## 次回
本記事ではEDB migration portalを使用してスキーマの互換性を確かめた。次回は変換したスキーマをEDB Postgresに移行する。
Rubyでじゃんけんを作る プログラングの練習

# 何？

- 人数を指定してじゃんけんをする
- 勝敗がつくまでじゃんけんを続けて、勝敗がついたら試行回数を数える

# コード

```ruby


variations = ["G","C","P"]

MEMBER = ENV["MEMBER"]&.to_i || 3

puts "JANKEN!"
puts "#{MEMBER} members"

try_count = 0

(1..).each do |i|
  try_count = i
  cards = []

  MEMBER.times do
    cards.push variations.sample
  end

  puts cards.join(" ")

  # 勝敗が決まった場合
  # じゃんけんで勝敗が決まるのは、手の種類が2個の場合である
  if cards.uniq.count == 2
    break
  end
end

puts "#{try_count} tried"
```

# 実行例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89618/ec97d413-8e58-72e9-5369-5f0f31db144c.png)











<!-- Update From Qiita API -->

# チャットメンバー募集


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

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





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
2022年にRaspberry pi 3B+と公式7インチタッチスクリーンを使う時の注意点

# 内容
2022/4/13現在、Raspberry pi 3B+と公式が販売している7インチタッチスクリーンの組み合わせで、素直にセットアップしたら挙動がおかしかったので対処方法

# 症状
Raspberry Pi Imagerで何も考えずにOSをインストールすると、結構な確率で起動時にフリーズする。

# 対処法
最新版ではなく、(LEGACY)のBusterをインストールする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521584/f1b2f3e4-ff52-a0aa-2d95-717087d6d8b6.png)


# ついでに
/boot/config.txt
に
lcd_rotate=2
を追記するとタッチスクリーンの反転の画面とタッチ部分一気に修正できる。

最新のBullseyeの場合は画面側はGUIのディスプレイ設定のところで回転させる。
タッチの修正は、
/usr/share/X11/xorg.conf.d/40-libinput.conf
touchscreenのところに
Option "Transformation Matrix" "-1 0 1 0 -1 1 0 0 1"
を追記する。lcd_rotateは効かない。

# 最後に
ディスプレイを繋がなければ最新OSでも問題なく動く。
すこーし前のハードをセットアップする時は最新ソフトとの相性に注意。
ヒアドキュメント　「<<<」　PHP

## 用途
- 変数に複数行の文字列を代入する時に使う。

## 使用方法
```php:例
<?php
$hoge = <<< ABC
おはよう
こんにちは
こんばんわ
ABC;
 
echo $hoge;
?>

// 結果
おはよう
こんにちは
こんばんわ
```
- ヒアドキュメントを使う際には、`=` + `<<<` + `ID`の順で書く。
例ではABCがIDにあたる。
- IDからIDまでの文字列を代入する。
例ではABCからABCの間に書いてある文字列が代入される。
- IDはルール内であれば自由につけることができる。（ABCに意味はありません）

### 文字列の中で変数を使用する場合
```php:例
<?php
$var = true;
$hoge = <<< "ABC"
varの値は$var
ABC;
 
echo $hoge;
?>

// 結果
varの値はtrue
```
- 変数を使用する際は、開始のIDをダブルクオートで囲う。
※シングルクオートだと変数名がそのまま表示される。

　
　
　
下記の記事を参考に執筆しました。
- https://www.sejuku.net/blog/49173
【Git】リポジトリの変更時に差分を入れたい

# 概要
長いこと使われていなかったプロジェクトに修正が必要になり、gitリポジトリの変更が必要だった。

# 試行錯誤した内容
`git init` や`git remote set-url origin {new_url}`を試したがうまくいかない


# 解決したコマンド
`rm -rf .git`
ローカルにある既存のgitリポジトリを削除した。
その後`git init`してadd してcommit, pushした。
【Rails】cloneしてきたアプリケーションを動かす手順【GitHub】

## はじめに
学習を始めて間もないです。
間違っていること等ございましたらお知らせください！
気をつけていますが特に用語の使い方が正しくない可能性があります。

一つ前の記事でcloneしてきたアプリ（jQuery導入済み）を、
自分の環境ではきちんと動作するまでこんな手順をふんでいますという紹介です。
（出てきたエラー内容やターミナルの指示に従っているだけなので大したことはしてません）

## 対象の方
cloneしてrails sしたら色々エラーが出ててわからない！って方

jQueryが正常に動いてたアプリをcloneしたけど新しくcloneした方はなんだかちゃんと動かないって方向け
↑これはかなり限定的かと思われます！
（途中まではjQuery関係ないはず…）

## 環境
Rails： 6.1.5
Ruby： 2.6.3
Git： 2.32.0
ローカル環境： AWS cloud9

## 簡単に手順
1. rails db:migrate
2. webpacker:install
3. webpacker:compile
4. jQuery使えるように文言足す
4. rails s
4. サーバー許可文言記述

```:terminal
rails db:migrate

bundle exec rails webpacker:install
※　y/nみたいな記述が出てきます。私はここでy押してます

bundle exec rails webpacker:compile
```
※後述しています
webpacker:installとwebpacker:compileは少し時間がかかります。

```ruby:(Railsメインディレクトリ内）config/webpack/environment.js
const webpack = require('webpack')
environment.plugins.prepend(
  'Provide',
  new webpack.ProvidePlugin({
    $: 'jquery/src/jquery',
    jQuery: 'jquery/src/jquery',
    Popper: 'popper.js'
  })
)
```
```terminal:terminal
rails s
```
```(Railsメインディレクトリ内)config/environments/development.rb
config.hosts << " ~ "

もしくは

config.hosts.clear
```

## 詳しく

1.rails db:migrateする
```terminal:terminal
rails db:migrate
```
migrationファイル（テーブルやカラムに関する情報が入っています）をcloneしてきただけなので、
新しく作ったアプリのデータベースにもテーブル・カラムを追加してあげます。
<br>
2.　webpackerをインストールします

```terminal:terminal
bundle exec rails webpacker:install
```
※この際に

上書きしてもいいですか？ y/n　

みたいなことを聞かれるので私は y エンターキー押してます。
ここで n にしたら4の手順はもしかしたら必要ないのかもしれません。
→追記： n にしてみましたがどっちにしてもjQueryに必要な記述が消えていたので y が無難なのかなと思いました。

<br>

3.　それをコンパイルする
```terminal:terminal
bundle exec rails webpacker:compile
```
インストールしたwebpackerをコンパイルしてRailsの中でも使えるように？してます（曖昧です、すみません）
<br>

4.　多分上下の２行は元々記載してあると思うので真ん中部分のみ足します。

```ruby:config/webpack/environment.rb
const { environment } = require('@rails/webpacker')

#ここから

const webpack = require('webpack')
environment.plugins.prepend(
  'Provide',
  new webpack.ProvidePlugin({
    $: 'jquery/src/jquery',
    jQuery: 'jquery/src/jquery',
    Popper: 'popper.js'
  })
)

#ここまで追加

module.exports = environment
```
この記述はそれぞれ導入しているものによって違うはずです！

webpacker:installの時 y にするとここの記述だけ上書きされてしまうっぽいのでclone元と同じ記述にしとけば問題ないです。
→追記：そういうことでもないらしい…？よく分っていません。
<br>
5.　サーバーを立ち上げます。
```terminal:terminal
rails s
```
<br>
6.　そうするとサーバーの許可を求められる？ので立ち上げたサーバーに出てくる
config ~の部分をいつも通り足します

```ruby:config/environments/development.rb
 :
 :
 config.hosts << " ~ "
end
```
Rails Tutorialで学びましたが↓の記述でもいけます
```ruby:config/environments/development.rb
 :
 :
 config.hosts.clear
end
```
## 最後に
今の所この方法で不具合なく出来ております。

ただ、数回jQueryが動作しなくなったことがあったので解決法を[この記事](https://qiita.com/nmwkhl/items/b411f3f776cdf4c04ac4)に書きました。

（↑現状はいつも通りcloneしたらちゃんと動いてるので、原因がよくわかっていません）
<br>
ここまでお読みいただきありがとうございました！
何かあればお知らせください。
サービス運用アンチパターン 「長い臨時メンテナンス」 ahamo 臨時メンテナンスが半年ほど続いている件

2022/04/13現在、なんと半年ほど臨時メンテナンスが続いている。
最初は単にメンテナンスの過去の履歴だと思い、次に更新そびれだと思い、サポートにも問い合わせたが、たしかにずっとメンテナンス中のようだ。

ずっとesimの再発行という手続きができなくなっている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89618/3be20a90-16c5-13ad-541d-07f94158542a.png)


結局、docomoショップまで行って再発行しなければいけなかった。

ネットだけで申し込みができるahamoとは()
物理simの要らないesimとは()

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89618/2b24a69e-95e0-86fa-52cc-5fa300e796c3.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89618/f14a7b42-1b5e-c031-61c8-fbbe18df9892.png)


# どうする？


臨時メンテナンスではなく、正直に「長期の障害」と書いてみては？












<!-- Update From Qiita API -->

# チャットメンバー募集


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

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





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
MinGWのインストールが失敗する

# 1. 概要
WindowsにMinGWをインストールするために、[mingw-w64.org][1]からインストーラをダウンロードしてインストールしようとした所、
「The file has been downloaded incorrectly」のポップアップが出力されてインストールが失敗しました。  
回避手順を調べたので記載します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262207/b5b58753-359f-b4f2-c55d-4cebfc100311.png)


# 2. 手順
## 2.1. ダウンロード
[sourceforge.netサイト][2]から直接ダウンロードする
特に理由がなければ下記のどちらかがおすすめです
※各ファイルの違いは、[Windows環境にフリーのC開発環境を構築した際のメモ][13]で纏めて頂いている内容がわかりやすかったです

- 32bit: `i686-posix-sjlj`がおすすめ
- 64bit: `x86_64-posix-sjlj`がおすすめ

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262207/d3407f45-13d7-7e94-ca01-631431f9e6b0.png)

## 2.2. ファイルの解凍
ダウンロードしたファイルを解凍すると、`minGW`フォルダが作成され、binフォルダ内にコンパイルで必要なファイルが格納されています

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262207/7d407fbd-2879-3cbf-bc1a-9b966fe7450a.png)

![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262207/125caa70-243e-eec2-8c94-408618d6df1e.png)

※試しにpowershellでバージョンを表示してみると、記載されてバージョン＋bit数のものが展開されているのを確認することができる
```powershell
PS D:\test\mingw32\bin> gcc --version
gcc.exe (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0
         ^^^^★32bit                                        ^^^^^バージョン8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

PS D:\test\mingw32\bin>

```

## 2.3. 環境変数のPATHへの登録
[環境変数設定 Windows10](https://www.scc-kk.co.jp/scc-books/java8_workbook/java_dev-win10.html)に記載された手順で環境変数の設定ウィンドウを表示して設定する  
全ユーザー共通で使用したい場合には`システム環境変数`に、個人ユーザのみ使いたい場合には`ユーザ環境変数`に設定する



# 3. 参考
- [MinGWのインストールで「The file has been downloaded incorrectly」のエラーが出るときの対処法][11]
- [[stackoverflow] mingw-w64 installer "the file has been downloaded incorrectly][12]
- [Windows環境にフリーのC開発環境を構築した際のメモ][13]

[1]:https://www.mingw-w64.org/
[2]:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
[11]:https://qiita.com/kagamidokei/items/87f96a181de93ce1f1d3
[12]: https://stackoverflow.com/questions/46455927/mingw-w64-installer-the-file-has-been-downloaded-incorrectly
[13]: https://qiita.com/yut-nagase/items/9bb65481685f6b8002de
「rm , rmdir」Linuxでファイルやディレクトリを削除する

## 用途
- Linuxでファイルやディレクトリを削除したい時に使う

## 使用方法
### rm
```:指定したファイルを削除
$ rm ファイル名
```

```:ファイルとディレクトリを削除
$ rm -r ディレクトリ名
```
オプションである、「-r」で再帰的に削除される。
※指定したファイルが存在しない場合やディレクトリを削除しようとした場合、確認するメッセージ・警告メッセージが表示される。

```:ファイルとディレクトリを削除
$ rm -rf ディレクトリ名
```
※オプションである、「-f」をつけているから、指定したファイルが存在しない場合やディレクトリを削除しようとした場合、確認するメッセージ・警告メッセージが表示されない。

### rmdir
```:ディレクトリを削除
$ rmdir ディレクトリ名
```
※ディレクトリ内にファイルがある場合エラーになる。
Parquetとは

# 1. CSVとParquetの比較
||CSV|Parquet|
|:---|:---|:---|
|指向|行|列|
|利点||非関連列をスキップできるため、クエリの読込や集計を効率化できる|

# 2. 実装 
```python
# 入出力ファイル指定
in_file = "xxx.parquet"
out_file = "yyy.parquet"

# 実行
df = pd.read_parquet(in_file)
df.to_parquet(out_file)
```
EC2のインスタンスにVSCodeの拡張機能を使用してSSH接続してみた

AmazonEC2で作成したインスタンスにSSH接続します。
これといって複雑なところはないのですが鍵の格納先によっては失敗する場合があるためまとめてみました。

# 前提条件
Visual Studio Code 1.63.2
Windows環境
Remote-SSH v0.78.0

# 拡張機能

VSCodeの拡張機能でRemote-SSHをインストールする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310625/576ea3f7-e42a-1a83-3223-52fec1b822a1.png)

# SSH接続

左下の緑のリモートウィンドウのアイコンを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310625/201458cf-7f9c-d9ec-a9a5-ff5220da08ea.png)

図ではコマンドパレットの下から3番目Open SSH Configuration File...を選択。
![スクリーンショット (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310625/fe6ac0c2-8406-2cf7-1b6c-17c2fb4cd7cd.png)

~\.ssh\config の設定ファイルを選択する。

```:config
Host 接続先につけたい名前(任意の値)
    HostName インスタンス概要に記載されている　パブリック IPv4 DNS の値
    User 今回AmazonLinux2を使用している為ec2-user(他のOSの場合適宜変更)
    Port SSH接続は22を使用するのが一般的なため今回は22を使用(要設定)
    IdentityFile キーの絶対パス
```
コンフィグファイルを設定したら再度リモート接続の緑のアイコンをConnect to HostHost...を選択すると別ウィンドウで接続が開始される。初回はコマンドパレットで使用しているOSを選択する。

以下は接続失敗時のログの一部。
```
[00:02:15.910] Got some output, clearing connection timeout
[00:02:16.181] > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[00:02:16.191] > @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions for 'E:\\Key\\XXXX.pem' are too open.
> It is required that your private key files are NOT accessible by others.        
> This private key will be ignored.
> Load key "E:\\Key\\XXXX.pem": bad permissions
> ec2-user@hostname: Permission deni
> ed (publickey,gssapi-keyex,gssapi-with-mic).
> プロセスが、存在しないパイプに書き込もうとしました。
```

'UNPROTECTED PRIVATE KEY FILE'
調べてみたところキーの保護が不十分の場合発生するとのこと。OSがLinuxであればchmodのコマンドでオプションを600に指定すれば解決できるそう。今回はWindows環境なのでファイル権限を操作するのは少し工夫が必要。

さらに調べたところWindows環境の場合Userディレクトリ内の階層に格納されていればファイルの権限を変えずともキーの保護がされているとみなされる。今回私はユーザーディレクトリ外の拡張ディスクに鍵を格納していたためSSH接続に失敗。


結論:Windows環境ではユーザーディレクトリ以下の階層に鍵を格納する必要がある。

鍵の格納先を変更した場合接続完了した。
接続完了した場合新規のウィンドウの左下にconfigファイルで設定したHost名が表示される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310625/efede5b7-41cc-a42d-a8f6-e4d5850a267c.png)


# 参考

https://blog.y-yuki.net/entry/2021/04/11/100000
HeidiSQLの導入メモ

# 目的
作業効率化
MyPCのメモの整理

# HiediSQL とは 
> HiediSQLは、データベース管理を目的としたフリーソフトウェア。  
> MySQL, Microsoft SQL Server, PostgreSQL に対応した Windows で動作する無料のデータベース接続ツール。



# HeidiSQL の主な特徴
1. １個のウィンドウから複数のサーバーに接続可能
2. コマンドライン経由でサーバーに接続可
3. 誰でも無料、オープンソース
4. コマンドラインでサーバーに接続
5. SSH トンネル経由での接続もしくは SSL 設定を引き渡し可
6. テーブル、ビュー、ストアドルーチン、トリガー、スケジュールされたイベントの作成と編集
7. SQLエクスポートを生成可
8. サーバー/データベースから別のサーバー/データベースへの直接エクスポート可
9. ユーザー権限の管理  

10.テキストファイルのインポート  
11.テーブルの行を CSV、HTML、XML、SQL、LaTeX、Wikiマークアップ、PHP配列として書き出し可
12. テーブルデータの閲覧・編集
13. テーブルの一括編集(DBへの移動、エンジンの変更、照合など)
14. テーブルへのアスキーまたはバイナリファイルの一括挿入
15. カスタマイズ可能な構文強調とコード補完機能搭載
16. 無秩序な SQL を再フォーマット可能
17. クライアントプロセスの監視と終了
18. サーバの全てのデータベースの全てのテーブルから特定のテキストを検索可
19. テーブルの最適化と修復を一括実行
20. 現在の接続設定を使用して、パラレルmysql.exeコマンドラインウィンドウを起動可能  
21. リモートサーバーへも接続可能

# 設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/df1965b7-b6f8-ab21-9a96-8bc6a948d0f6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/3d426258-399a-b713-4db9-52293ec4fd18.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/e872b8c9-55cb-b995-376d-c7dfc45b1562.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/df986415-f1b1-b57a-a216-2a1354651034.png)
> 正常にデータベースに接続できると上のようになる

# 使い方
> データベース作成  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/437539a0-2b20-2fd9-dc9f-a08087baee2b.png)


> テーブル作成  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/894360e1-b02e-5579-1304-1bd9c12c00f5.png)


> クエリ > 新しいクエリタブ からSQL欄を表示する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/b7fcd49d-5d18-f016-7b53-194217f2de42.png)

> SQL実行結果  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/76fd9c57-8f16-4950-1e8c-f1ad5d561314.png)

# インストール
[https://www.heidisql.com/download.php](https://www.heidisql.com/download.php)
Lottie.jsの紹介

## Lottie.jsとは

Lottieは民泊で有名なAirbnbが開発したアニメーションライブラリ。
Adobe After Effectsで作ったアニメーションを簡単に制御することができる。

JavasScriptの他にもKotlinやSwiftでネイティアプリ向けのライブラリを提供している。

---

## 例

<p class="codepen" data-height="700" data-default-tab="result" data-slug-hash="JjMWgBW" data-user="nobuo1106" style="height: 200px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/nobuo1106/pen/JjMWgBW">
  Untitled</a> by Nobuo (<a href="https://codepen.io/nobuo1106">@nobuo1106</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

---

## メリット

・ファイル形式がJSONなのでSVGに比べて軽い。アイコンであれば10kb以下。
・アニメーションが滑らか。

<p class="codepen" data-height="500" data-default-tab="js,result" data-slug-hash="VwyGKmv" data-user="nobuo1106" style="height: 500px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/nobuo1106/pen/VwyGKmv">
  Untitled</a> by Nobuo (<a href="https://codepen.io/nobuo1106">@nobuo1106</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

----

・動きを制御できる。

<p class="codepen" data-height="300" data-default-tab="result" data-slug-hash="YzYOGLG" data-user="nobuo1106" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/nobuo1106/pen/YzYOGLG">
  heart lottie</a> by Nobuo (<a href="https://codepen.io/nobuo1106">@nobuo1106</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

---
実用的なフォームでのマイクロインタラクション

<p class="codepen" data-height="300" data-default-tab="result" data-slug-hash="jOYvxmZ" data-user="nobuo1106" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/nobuo1106/pen/jOYvxmZ">
  lottie form</a> by Nobuo (<a href="https://codepen.io/nobuo1106">@nobuo1106</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
---

ご静聴有難うございました。
golangにおける関数の引数

```golang```を勉強していて以下のような書き方を見て、よく分からなかったので調べてまとめてみようとおもいます

```
type Item struct{
  name  string
  price  init
}

func itempointer(i *Item){
  fmt.Println(*i)
}
```

```golang```にはポインタの概念が存在していて、関数の引数の型に値型や、ポインタ型を指定できます。
上のコードのように記述することで、構造体の要素の型を**コピー**しているんです。

短いですが、以上です。
何か間違いがございましたら、ご教示いただけますと幸いです。

【参考資料】

https://go.dev/doc/faq#Pointers

https://yyh-gl.github.io/tech-blog/blog/go-always-passing-by-value/
不安のマネジメント

もうりです。React, Railsエンジニアをやっています。
今日は不安感情のマネジメントについて話します。

# エンジニアの仕事は不安だらけ
みなさんはエンジニアとして働いていて次のような不安を感じたことはないでしょうか？
・原因不明のエラーでなかなか解決につながらない、納期に遅れそう
・プロジェクト全体の動きが見えず今何をしていいのかわからない
・リモートワークでチームメンバーが何をしているのかわからない
自分はエンジニアになってからそろそろ1年が経とうとしていますが、
生産的に働く上で技術に対する理解や問題解決能力以上に不安な感情をコントロールできる力が重要だと感じます。
つまりエンジニアの仕事にといて **「いかに不安な感情をマネジメントするのか？」** 問いは避けては通れないということです。

# そもそも人はなぜ不安になるのか
そもそも人はなぜ不安になるのでしょうか？
これに対する自分なりの回答としては **「人はコントロールできないものをコントロールしようとした時に不安になる」** 
ということかなと思います。
エラーが解決できなくて不安になるのは、
目の前のエラー(コントロールできないもの)をどうにかして解決し仕事を進めようとしている(コントロールしようとする)
から不安になるからと言えます。つまりどうにかして仕事を進めなければならない、という状況が無ければそもそも不安になりません。

# 不安とどう向き合うのか
コントロールできないものをコントロールしようとした時に不安になるのであれば、
我々にできることは **「コントロールできるものは何かを考え、コントロールする」** ということに尽きると思います。

# コントロールできるものを見つけるためには
では、コントロールできるものが何かを考えるためにはどうすればいいでしょうか？
これに対する自分なりの結論としては、 **「今自分が置かれた状況を細分化して整理する」** ということになります。
状況を整理するやり方はいろいろありますが、以下のような観点を整理するとうまくいきやすい気がします。
・プロジェクト全体として今大事にすべきことは何か
・自分が今求められている役割はなんなのか
・タスクの目的は何か
・タスクのゴールは何か
・タスクの納期はいつか
・今現状の進捗の進捗はどうか
・目的やゴールから逆算して現状足りないものは何か

これらを踏まえて、今すべきことは何かを考えます。
今すべきことは調べることなのか、相談することなのか、など具体的にとりうるアクションは状況によりけりかなと思います。

# 時間が何より大事
不安な感情をマネジメントしていく上では **時間が何より大事**　だと思います。
仕事においても、ちょっとスケールがデカいですが人生においても
不安に苛まれて過ごすのは非常に勿体ないです。仕事においては機会損失につながり現実的なリスクにも繋がります。
ですから、雑に片付けるなら「1日1日を大切に生きていきましょう」みたいな話になるのかもしれません。
時間を大事にするために、上手に不安な感情と向き合えるようになりたいものです。
「チーズはどこへ消えた？」を読んで、ソフトウェア開発に活きると思ったヒントの要点


[チーズはどこへ消えた? | スペンサー ジョンソン, Johnson,Spencer, 門田 美鈴 |本 | 通販 | Amazon](https://www.amazon.co.jp/%E3%83%81%E3%83%BC%E3%82%BA%E3%81%AF%E3%81%A9%E3%81%93%E3%81%B8%E6%B6%88%E3%81%88%E3%81%9F-%E3%82%B9%E3%83%9A%E3%83%B3%E3%82%B5%E3%83%BC-%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%BD%E3%83%B3/dp/459403019X)
2000年頃流行った本である。ちょうど私が大学生であった頃だ。ジャンルはビジネス書なので「へえ会社員の皆様はこんな本が面白いんですか」と思いながら読んだ記憶がある（我ながら取り扱いに困る新卒だと思う）

![](https://images-na.ssl-images-amazon.com/images/I/41X08M5EC2L._SX331_BO1,204,203,200_.jpg)


## きっかけ

https://twitter.com/ici_mici/status/1500305984149164035?t=UJdyN1m0625Ahrni0gYY1g&s=19


わざわざ思い出して読みたくなったきっかけはこのツイートなのです。

（中略）

> 小学校の道徳の授業じゃねーか！と思った。
そして、本書がベストセラーになっている事実に悲しくなった。僕は今後ビジネス書を読むことはないと思った。

> 30才くらいから色々なビジネス書を読むようになり、良い本も沢山あることを知った。アレルギーは治まった。

> 今ならわかる。
> 時間のない大人にとって、物語から読みとるってことは面倒だったりするので、正解を示してくれることはありがたい。
> 答えが書いてあると安心する。
> だけど、そんくらい自分で考えろや！って思いは今もある。

> チーズはどこに消えた？が好きな人いたらごめんなさい。物語部分は好きです。

これ。私もほぼ全く同じ思いを抱いた記憶があるからである。「なんだこれベストセラーっていうけど、くどくどと分かりきったことを！」せっかく物語にしているのならお説教は要らないのでは？など。

しかし社会人もベテランの域に達した今、読み直してみると発見はあるのだろうか。特に新入生を迎える季節になにかヒントになるだろうか。

で、読んでみた。


## 感想 (ネタバレ込)

- 短いのですぐ読める。相変わらず人気ではあるようで、図書館で借りて読めた。
- 「変化とは、何かを失うことだと思っていたのが、何かを得ることなのだ」
- 物語
    - チーズの在り処を覚えるネズミ達。
    - 「チーズを手に入れれば幸せになれる」
    - 「自分のチーズが大事であればあるほどそれにしがみつきたがる」
    - 「変わらなければ破滅することになる」
    - 「つねにチーズの匂いをかいでみること　そうすれば古くなったのに気がつく」
        - 「変化は起きる」
        - 「変化を予期せよ」
        - 「変化を探知せよ」
        - 「変化にすばやく適応せよ」
        - 「変わろう」
        - 「変化を楽しもう」
        - 「進んですばやく変わり再びそれを楽しもう」
            - 「**チーズと一緒に前進しそれを楽しもう**」
- つまり変化は起きる。変化を楽しめ。
    - 斜に構えて読んだが、そのとおり。あれ、こんな本でしたっけ。感服してしまった...
    - 「老害」かそうならないか岐路に立たされている我々世代に、勧めたい。
- とりわけソフトウェア業界におけるプロジェクトこそ変化を楽しまなければ日々ツライだけだよな、など。


## 結論

自分にとってはごく当たり前のこと。物語が単純明快であること。そこは変わらないのだが、「そうそう！わかってるじゃん！良いこと言ってるな！」と、いう気持ちになった。

開発者を目指す人々へ、「ビジネス書」にアレルギーを持つ前に、この一冊くらいはビジネス側の各位とも共通言語を持つためにも読んでおいたら良いのでは？という本であった。まあ今や「Biz」とか「Dev」とか二項対立より同じ方向を見ないとプロジェクトは進まないですよね...。

もちろん我々の業界でも変化とは最も恐ろしいもの。で、その変化をどうコントロールするか。変化に対応するのがエンジニアリングだとおもう。

[ソフトウェア開発の見積もり入門](https://zenn.dev/hakoten/articles/dd13bc04767461)
[不安とストレスから解放される見積りとスケジュール方法 - Qiita](https://qiita.com/hirokidaichi/items/5a204a57a200569f755d)
[「いつまでにならできますか？」に対抗する、少しでも自信を持って見積もるための知恵 - Qiita](https://qiita.com/e99h2121/items/43873ffd84b102d95929)

ということでこの4月に入社する各位がこの本にどんな感想を持つのか興味深いなあと自分の新卒時代を思い出したので4月にオススメの本と言ってまわることにします。

ちなみに本には以下続編がある。こちらも合わせて読んだのでメモしておく。内容は「チーズはどこへ消えた？」を更に補強するようなところでしょうか。

[Amazon.co.jp: 迷路の外には何がある? ――『チーズはどこへ消えた?』その後の物語 チーズはどこへ消えた？ (扶桑社ＢＯＯＫＳ) eBook : スペンサー・ジョンソン, 門田 美鈴: 本](https://www.amazon.co.jp/dp/B07MCGDS7C)

![](https://m.media-amazon.com/images/I/414pEsL6LsL.jpg)

- あなたの信念に気づこう。
- あなたが考えたことすべてを信じてはいけない。
- 役に立たないことは捨て去ろう。
- 迷路の外に目を向けよう。
- 新しい信念を得よう。
- あなたが信じることに限界はない。



## 参考記事

[『チーズはどこへ消えた』から学ぶ、ビジネスに生かせる7つの名言！ | ホンシェルジュ](https://honcierge.jp/articles/shelf_story/7005)
> 本作は、IBMやアップル、ベンツなど世界のトップ企業が社員教育に採用した

[『チーズはどこへ消えた?』の書評とサクッと要約｜求めているもの（チーズ）との向き合い方 - サクっと読書（サクどく）](https://sakudoku.com/review/self-development/who_moved_my_cheese)
> アドラー心理学を対話形式で分かりやすく解説した『嫌われる勇気』では、自分を変えられるのは自分しかいない、そして変えられる、とアドラーの教えを示しています

以上です～