OmniAICreator/Qiita-1.07M huggingface dataset:
NCMBのデータエクスポートに使えるGoogle Chrome機能拡張（会員・ロールの全データダウンロード）

[NCMBは2023年3月末をもって終了します](https://mbaas.nifcloud.com/info/2023/11/post-171.html)。

NCMBを利用されている方々は、まずアプリのデータを適切に保全し、移行先を検討する必要があります。NCMBにはエクスポート機能はあるのですが、ダウンロード実行まで時間がかかったり、ファイルストアには対応していないという問題があります。

そこで、本来は管理画面を便利に使ってもらうために作っていたChrome機能拡張に、データ移行に関する機能を追加しました。以下は会員・ロールのデータをダウンロードする機能についての解説です（v1.6より）。

## 動作について

動作は以下のようになります。機能拡張をインストールしていると、会員管理の一覧画面にエクスポートボタンが追加されます。このボタンを押すと、すべての会員データとロール毎の会員データがダウンロードされます。

![1845_console_mbaas_nifcloud_com_-_1213142610.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/de431046-70a7-5bed-20b9-079d9055ec2a.jpeg)


## インストール

[Chrome機能拡張のページからインストール](https://chrome.google.com/webstore/detail/ncmb-extension/dglkhlplcpmnbgodhbngcmdfpojkbdnc?hl=ja&authuser=0)してください。

## ファイルについて

ファイルはJSON形式のみになります。基本的に、別なサービスへの移行に用いる前提としています。

ファイル名は、ユーザー一覧が `users.json` 、ロール毎のユーザー一覧が `role-(ロール名).json` になります。

## 制限

この機能拡張は [https://console.mbaas.nifcloud.com](https://console.mbaas.nifcloud.com/) 以下でのみ動作します。また、この機能は管理画面のAPIを使っていますので、APIコール数を消費しません。また、ACLは無視して処理されます。

## コードについて

機能拡張のコードは[NCMBMania/chrome-extension](https://github.com/NCMBMania/chrome-extension)にアップロードしてあります。ライセンスはMIT Licenseです。依存ライブラリとして[URL.js](https://github.com/duzun/URL.js)を使っています（こちらもMIT Licenseです）。

## まとめ

サービスがクローズすると、そのデータにアクセスできなくなります。まずはデータの保全をお願いします。
GX Works 3 診断機能によるエラー解析方法

# はじめに

PLCにエラーが発生した場合の解析方法についてまとめます。

# 診断機能/システムモニタ

GX Works3を起動し、[診断]→[システムモニタ]を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/9e7735d5-08ed-b373-1675-1998841e4ba7.png)

ユニットにエラーが発生している場合は、マーク(エラーコード)が表示されるのでダブルクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/68c3f0c5-3933-7f0c-c22f-495d6d7cbce8.png)

発生日時やエラー内容の詳細など、より詳しい情報を確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/31f54729-6288-5db2-e75a-d7ec8b3c0408.png)

また、イベント履歴を確認することでエラー以外の情報も見れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/15f43d8d-2b88-1d62-ac6c-2fdc06fa6394.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/3ecf7c4b-bc51-a887-0ba0-ab1d22766605.png)

# 参考ページ

https://www.youtube.com/watch?v=HJEUzT4fEdg
GmailからOutlookへメール移行

## 概要
@gmail.comではないドメインのメールGmailを使って利用しており、今回GmailのメールソフトからOutlookにデータを移行。その際にうまくできた方法。

前提として、ごれからのメールはもうすでにOutlook上で受け取れるよう、メールアカウント設定を行っているものとする。
※Google カレンダー、連絡先等のインポートは別途対応が必要（本稿記載なし）

## 必要なもの
・Gmail
・Outlook
・Gmailアカウントのメールアドレスとパスワード

## 目次
[1.Gmailの設定確認・変更](#1gmailの設定確認変更)
[2.Outlookにメールアカウント追加](#2outlookにメールアカウント追加)
[3.メールデータをOutlookファイル化](#3メールデータをoutlookファイル化)

## 1.Gmailの設定確認・変更
① Gmailのすべての設定を開く

②「メール転送とPOP/IMAP」を開き、メールの設定がPOPになっていることを確認する
　IMAPだった場合→「POPダウンロード:」にある「すべてのメールで POP を有効にする
 　　　　　　　　　　(ダウンロード済みのメールを含む)」を選択し、「変更を保存」する

③「IMAPアクセス:」にある「IMAPを有効にする」 が選択されていることを確認する
　無効になっていた場合→「IMAPを有効にする」を選択し、「変更を保存」する
 
## 2.Outlookにメールアカウント追加
① Outlookを開き、「ファイル」から「アカウント追加」を選択

② Gmailのメールアドレスやパスワードを入力

③ Googleでのログイン、認証が求められるので指示通りに行う

④ 作成完了
　すべてを読み込むまで時間がかかるのでアプリを起動したまま他の業務等を行う

## 3.メールデータをOutlookファイル化
### メールデータのエクスポート
①  2-④でメールアカウントを作成し、データを全て読み込んでいることを確認する
　  まだ全て読み込めてない場合は、読み込み終わってから次の工程に進む
   
② 「ファイル」から「開く/エクスポート」を選択し、「インポートとエクスポート」を開く

③ 「ファイルにエクスポート」を選択して「次へ」

④ 「Outlookデータファイル(.pst)」を選択して「次へ」

⑤ データファイル化したいものを選択する
 　今回の場合はGmailで読み込んでいたメール全部

⑥ 「参照」を開き、わかりやすいように名前をつける
　　また、「重複してもエクスポートする」を選択し「完了」をクリック

⑦ パスワードは設定せずに「OK」をクリック　
　※エクスポート中はOutlookを操作できないので、Webメールや他の端末等でメールを確認する

### メールデータのインポート
①　「ホーム」にある「新しいアイテム」をクリックし、
　 「その他のアイテム」の中にある「Outlookデータファイル」を選択する

② フォルダーウィンドウの一番下にエクスポートしたデータが入っているのを確認

### メールアカウントの削除
データファイル化したことにより、最初に受け取っていたメールアカウントが必要なくなるので、その削除を行う。
① 「ファイル」から「アカウント設定」の「アカウント設定」を開く

② 削除したいメールアカウントを選択し、「削除」をクリック
　※この際、削除するアカウントが規定になっていれば削除ができないため、
 　　他のアカウントを規定にしてから行う

③ 完了
GASでシート中のセル結合を解除してやるぜヒャッハー！

# なんで世の中の人々はそんなにセル結合好きなん？？？
まぁ行っても仕方がないんだけどさ。

そんなあなたにこれあげる！
シート中のセル結合を全部解除してくれるよ！

```javascript
function breakrange(){
 const ss = SpreadsheetApp.getActiveSpreadsheet();
 const sh = ss.getActiveSheet();
 const ranges = sh.getDataRange().getMergedRanges();

 for (let i=0;i<ranges.length;i++){
  let mergeRange = ranges[i];
  mergeRange.breakApart();
 }

}

```
こんな感じ。
ただし条件が一つ。
範囲選択のためにgetSataRange()を使っているので、何かが入力されているセルの上の行までしか効きません。
なので、適当に右下の方に0とか入力してから関数動かしてください。
NPSのボタンサイズを変更する

メモ：
コードブロックに以下を入れる
label.pendo-radio {
height: 35px !important;
width: 20px !important;
line-height: 30px !important;
font-size: 10px; /* 必要に応じてフォントサイズ */
margin-right: 5px; /* 必要に応じてマージン変更 */
}

![CleanShotJL4GPjLH@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227518/426fd001-46ac-4e9c-e38e-452e242b8e51.png)
【VSCode+SpringBoot】SpringBootでAPIを作る②

前回↓

https://qiita.com/NaN-jp/items/a24f9b3af8bab36b94a4

# はじめに
今回はデータベースのテーブル作成をする

# PostgreSQL
https://www.postgresql.org/download/windows/

**PostgreSQL**は、拡張性とSQL準拠を強調するフリーでオープンソースの関係データベース管理システム

https://qiita.com/tom-sato/items/037b8f8cb4b326710f71

# pgAdmin4
https://www.pgadmin.org/download/pgadmin-4-windows/

**pgAdmin4**は**PostgreSQL**を直感的に操作するために便利なアプリケーション

https://qiita.com/pyon_kiti_jp/items/01d6150e46bd66be29f0


### テーブル作成
「parson」というテーブルを以下の内容で作る
|Attribute|DataType|Size|Primary Key|Not NULL|default|
|:---:|:---:|:---:|:---:|:---:|:---:|
|id|serial||〇|〇||
|name|varchar|20||〇||
|age|integer|||〇||

確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3627466/c6e8b1d9-cc27-94b5-1d07-2c0b4a8626d2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3627466/d062cc18-b008-2317-bdeb-a597af2e326f.png)

### データ挿入
以下の内容を**person**に挿入する
|id|name|age|
|:---:|:---:|:---:|
|1|taro|20|
|2|sakura|14|
|3|nobuyuki|55|

https://itsakura.com/pgadmin4-db-create

確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3627466/f78f631d-298c-36ce-f4f0-ff93f2c99777.png)

これでデータベースの作成及びテーブルの設定は完了
スプレッドシートの任意の列に自動でフィルタかけたいとき、あるよね？

# スプレッドシートのフィルタ掛けって結構面倒なんですよね・・・。

たとえば行単位でスタッフの閲覧記録とかつけている仕組みがあるとするでしょ？
で、特定の列に"承認"が入っていたら、その行を見えなくして見た目をすっきりさせたいじゃないですか。
これが手作業だと地味に面倒なんですよね・・。

てなわけで、新しくファイルを開くか、F5キーで更新したら特定の列にフィルタをかけられるGAS書きました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167883/d4aa79fd-3cf0-a4ba-2019-52d2b2a90cba.png)

チェックしてファイルを閉じて・・・。

次に開くときにはフィルタがけｓてほしい！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167883/959a7f13-68a7-4eaa-597c-862e857c92d0.png)


んじゃ、GAS書いていこうか！
```javascript
function trueFilter() {

 const ss = SpreadsheetApp.getActiveSpreadsheet();
 const sh = ss.getSheetByName("リスト");
 //const criteria = SpreadsheetApp.newFilterCriteria().whenCellEmpty().build();
 const criteria = SpreadsheetApp.newFilterCriteria().whenTextEqualTo(false).build();
 sh.getFilter().setColumnFilterCriteria(3,criteria);
}

```

リストというシートの3列目のtrue/falseを判別してフィルタ掛けしてくれます。
この関数をトリガー設定して、スプレッドシートが開かれるたびに動かせば、チェックして閉じても次に開くときにはチェック済の項目は隠れるので見やすくなりますね！

ではでは~。
分析チームの「ビジネス貢献」の可視化とOKR化の流れ



こんにちは、タイミーでデータアナリストをしているさこです。普段はワーカーマーケの分析をしています。

今回は、FY2023年下期からBIグループのOKRに組み込まれた「ビジネス貢献」に関するOKRを紹介したいと思います。

タイミーのBIグループが、成果をどのように捉えているかの参考になれば嬉しいです。

この記事は [Timee Advent Calendar 2023 シリーズ 3](https://qiita.com/advent-calendar/2023/timee) の14日目の記事です。

## BIグループのOKRについて

BIグループは期ごとの目標管理をOKRで行っています。

Objective（達成目標）の一つに「プロダクト、マーケ、事業部目標への分析を通したビジネス貢献」があります。

Key Result（主要な成果）には「ビジネス貢献をポイント換算でxxxPt達成する」という形で設定しています。

### メンバーのOKRへの関わり方

前提として、データアナリストの人事評価は能力やバリューの体現度合いで決まるため、組織のOKRとは直接紐づきません。

ここで紹介するOKRはあくまで組織としての事業貢献度合いを測るものです。

メンバーは関心のあるOKRにコミットすることができ、OKRごとにチームを組んで取り組むことが多いです。

「ビジネス貢献」だけはデータアナリストの基本業務ということもあり、特定のチームは組まず、ほぼ全員が関わっています。

## 基準を決めるまでの流れ

### 「ビジネス貢献」をOKRに入れることになった背景

「ビジネス貢献」が策定されるまでは、BIグループのビジネスへの貢献を測るようなOKRは存在していませんでした。

1. 策定前の課題：多岐にわたる分析に対して全体のアウトプットを定量的に評価する仕組みがなく、貢献度を評価しにくい
2. 策定の目的：貢献度ベースでアウトプットを指標化したものを用いて、部署全体の生産性について検査する仕組みを作りたい

### MTGを重ねつつ1~2ヶ月で決める

内部事情により急ぎめで作成する必要があり、CAO、EM、データアナリスト2名（サコ含む）の4名のチームで議論を進めました。

**▼ 決めるまでの大きな流れ**

| 流れ | 　　　| やったこと |
| --- | --- | --- |
| キックオフ | MTG | ・前提とゴールなどのすり合わせ<br> ・メンバーから回収するフォーマット案の作成 |
| メンバーから回収 | 作業 | ・メンバーからビジネス貢献になりそうな事例を回収 |
| すり合わせ① | MTG | ・メンバーに記入してもらった事例を元にどの項目に該当するかを各人評価<br> ・評価がすれ違ったところを重点的にすり合わせ |
| 論点整理・基準の更新 | 作業 | ・MTGで出てきた論点を集約し、基準の修正版を作成 |
| すり合わせ② | MTG | ・修正版基準を元に再度評価を実施<br> ・新たに出てきたすれ違い箇所を重点的にすり合わせ |
| 論点整理・基準の更新 | 作業 | ・MTGで出てきた論点を集約し、基準の修正版を作成 |
| すり合わせ③ | MTG | ・修正版の反映<br> ・細かな論点を回収 |
| ドキュメント化 | 作業 | ・メンバーや他部署への説明用にドキュメント作成 |
| 記入フォーマットの作成 | 作業 | ・評価の効率化と可読性向上のため、PJの記入フォーマットを作成 |
| Fix | 作業 | ・レビューを経てFix。Fix後はメンバーへの展開など。 |

### 議論したこと例

かなり多くの論点が出たので一部紹介します。

Q. **外的要因によって分析が中断した場合や施策に繋がらなかった場合は？**

A. OKRとしては評価対象外。OKRはあくまでビジネス成果を評価するものであるため。
良い取り組みとして、データ統括部内で評価・共有する。

Q. **切れ目のないPJの中で分析と効果検証を繰り返す場合は？**

A. 分析内容やアウトプットの変化に合わせてよしなに別々の施策で切り分ける。一つのPJ内で、対象やセグメントが変わり、分析内容やアウトプットが一定変化するものは別々の施策として切り出す。単純に集計対象の変更で集計結果が変わるだけなら、同一の案件として評価する。

## 「ビジネス貢献」の基準

| 項目 | pt　 | 詳細 |
| --- | --- | --- |
| 施策寄与 | 2pt | BIからの提案や仮説構築を経て施策の実施に繋がる、または施策の進行に重要な貢献を行う。 |
| 効果検証 | 2pt | 現場で仮説の構築などを終えた後、分析者が効果の設計・検証段階からジョインし、効果の測定と施策への提言を通じて施策に貢献。 |
| インパクト | 3pt | 施策が定性的な重要な示唆を得る、または定量的に大きな貢献を行った |
| 良いアウトプット | 0pt | 外部要因で施策を中断したが、分析の進め方やアウトプットが優れていて共有に値するもの。 |

各基準はより詳細な基準を設けています。

例えば、「施策への寄与」だと、主に下記3点の`いずれか`に該当するかを判断する項目としています。

1. 施策立案につながる**仮説構築**への寄与
2. 既存仮説施策実行の**内容決定、成功確度や効率の改善**への寄与
3. **施策実行自体**への寄与

```sql
具体例）

■ 施策立案につながる仮説構築への寄与
- 課題を構造化し施策につながる仮説を構築した
- 施策に関わるKPIを可視化した
- 施策に関わるKPIの重要性を示した

■ 施策実行の内容決定、成功確度や効率の改善への寄与
- 施策内容の示唆を出した
- 施策遂行に必要な指標の設計を行った
- 施策内容の優先度の示唆を出した

■ 施策実行自体への寄与
- 顧客に提供するダッシュボードを作成した
- 顧客に提供するデータ自体を作成した
```

## OKRの運用方法

基本的には以下のように運営していきます。

- メンバーは「ビジネス貢献DB」に任意のタイミングで記入。基本的に自薦。
- 1-2ヶ月に一度、CAO、EM、シニアデータアナリストの3名で協議しポイント付与

## 今後の展開

短期間で作ったこともあり、まだまだ改善点があります。

厳密な評価をしているところだと、貢献価値を売上換算していたり、社内受発注という形を取っていたりするとか。

今後も運用や基準についてブラッシュアップしつつ、ビジネス貢献案件の社内への知見共有やBI内の振り返りを通じた再現性の向上に取り組んでいきたいと思っています。

## We’re Hiring!

タイミーのデータ統括部では、私たちとともに働くメンバーを募集しています。

現在募集中のポジションは[こちら](https://hrmos.co/pages/timee/jobs?category=1814216944314011650)です。

[カジュアル面談](https://devenable.timee.co.jp/casual)も行っていますので、興味を持っていただけた方は、ぜひお話しさせてください！
hardhat-gas-reporterでガス代を見積もる

# はじめに
スマートコントラクトの開発を行なっていると、ガス代がどれだけかかるのか、知りたいということは多々あると思います。実際にテストネットなどにデプロイして、実行してみるというのもありですが、非常に面倒くさいです。そこで、本記事では、超絶簡単にガス代を見積もることのできる[hardhat-gas-reporter](https://www.npmjs.com/package/hardhat-gas-reporter)を紹介します。

# hardhat-gas-reporterとは
[hardhat-gas-reporter](https://www.npmjs.com/package/hardhat-gas-reporter)はnpmで公開されているhardhatのプラグインです。テストコードのなかで実行されたスマートコントラクトの関数や、コントラクトのデプロイにかかるガス代を見積もってくれます。

# インストール
```
npm install hardhat-gas-reporter --save-dev
```

# 使い方

初めに、hardhat.config.tsを開き、モジュールのimportとHardhatUserConfigの設定を行います。このHardhatUserConfigには、`gasReporter`の設定を加え、その中で「enabled」をtrueに設定してください。

```solidity
import "hardhat-gas-reporter";
.
. (中略)
.
const config: HardhatUserConfig = {
  solidity: "0.8.19",
  gasReporter: {
    enabled: true, // falseにすると実行されない
  }
};
```

その後、テストを実行すると、テスト通過後にガス代の表が出力するはずです。
```
hardhat test
```
出力例はこんな感じ。
![スクリーンショット 2023-12-14 12.25.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421173/7f9cb858-04bb-b60a-f847-fdc0651e0d2f.png)

# あれ、ドル換算のガス代が出てないぞ？？

上の表をよく見ると、`usd(avg)`のカラムが全て空になっていることに気がつくと思います。一方で、人によっては出力されたという人もいるのではないでしょうか？この違いは一体何なのでしょうか？

実は、hardhat-gas-reporterはデフォルト設定で、共有のCoinMarketCapのAPIキー（無料枠）を使用してイーサリアムの価格と平均ガス価格を取得しています。この無料プランでは、月に最大1万回のリクエストまで可能ですが、多くのユーザーが利用すると、リクエストの上限に達してしまい、データが取得できなくなることがあります。

自分でAPIキーを取得し、設定することでこの問題を解決できます。CoinMarketCapの[このページ](https://coinmarketcap.com/api/pricing/)からAPIを取得しましょう。その後、先ほどのHardhatUserConfigにAPIをコピペします。

```
gasReporter: {
  enabled: true,
  coinmarketcap: "API_KEY_HERE",
}
```

再度テストを実行すると、以下のように、実行時点でのガス価格、イーサリアムの価格から関数の平均ガス代をドル単位で見積もってくれるはずです。

![スクリーンショット 2023-12-14 13.52.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421173/e40eebc8-287d-10b3-ccdf-557603f515d3.png)

# その他のオプション

gasReporterにはいくつかのオプションが用意されています。ここでは便利そうなものを3つ紹介します。より詳しくは[このページ](https://www.npmjs.com/package/hardhat-gas-reporter)にあります。

**currency**
    例えば、"JPY"を指定すると日本円で出力してくれます。
**token & gasPriceApi**
他のチェーンでのガス代を計算します。デフォルトではイーサリアムになっています。具体的な設定については[ここ](https://www.npmjs.com/package/hardhat-gas-reporter#token-and-gaspriceapi-options-example)を参考にしてください。
**gasPrice**
ガス価格を現時点の値ではなく、指定したい時に使います。単位はgweiになっています。
GX Works3 リアルタイムモニタ機能を使う

# リアルタイムモニタ

PLCの内部デバイスの状態を表示してくれる便利な機能です。

![LOGVIEW.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/67228c20-56fe-b756-4835-43ec5660154d.gif)


GX Works3を起動し、[ツール]→[リアルタイムモニタ機能]を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/e352dd11-58dc-d1e0-7721-4a5ee7cde339.png)

監視したいデバイスの設定を行います。ラベルを指定することも可能です。
モニタ開始ボタンを押すと、グラフ表示が始まります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/088b8883-3a71-71c5-c3f2-b6665331ecd3.png)

# モニタ停止時にカーソルを表示する

モニタ停止時に右クリック→ここに赤カーソルを移動
マルチカーソルを選択することで青カーソルを表示する事も可能です。（信号のON時間を確認するのに便利）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/0466591d-9109-6bf1-50a8-e1890f11d7be.png)

# データの保存・読み出しも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/12983d94-42e6-0b7c-4bba-2000ee4c4c2f.png)
switch文 java

Javaのswitch文で->(アロー)を使った新しい書き方を学んだのでメモしておきます。

# -> (アロー)を使ったswitch文

- :（コロン）の代わりに-> (アロー)を使うことでbreak;を簡略化できます。
- ->を使った場合で処理が1つの場合、処理を記載する { } も省略できます。※複数の処理の場合は、{ } を用いること。
- 同じ処理のcase式は、カンマで繋げてグループ化できます。（※->の有無とは関係ないですが）


**作成するプログラム**
値が1か2か3なら、[1か2か3です。]　を出力
値が4か5か6なら、[4か5か6です。]　を出力
それ以外なら[それ以外です。いったい何だろう？]を出力。


```ruby:case式に : を使用
Integer type = 1;

switch(type){
    case 1:
    case 2:
    case 3:
        System.out.print("1か2か3です。");
        break;
    case 4:
    case 5:
    case 6:
        System.out.print("4か5か6です。");
        break;
    default:
        System.out.print("それ以外です。");
        System.out.print("一体なんだろう？");
    }
}
# 1か2か3です。
```


```ruby:case式に -> を使用
Integer type = 1;

switch(type){
    case 1, 2, 3 -> System.out.println("1か2か3です。");
    case 4, 5, 6 -> System.out.println("4か5か6です。");
    default -> {
        System.out.println("それ以外です。");
        System.out.println("一体なんだろう？");
    }
}
# 1か2か3です。
```
Dockerfileでのdnf updateに失敗する場合

Dockerfile内でdnf updateを実行したところ下記エラー

`Failed to download metadata for repo 'appstream': Cannot ...`

[こちらの通りに実施し解決](https://stackoverflow.com/questions/70963985/error-failed-to-download-metadata-for-repo-appstream-cannot-prepare-internal)

```
FROM centos

RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

RUN dnf -y update
```
新しくなったUiPath認定資格を受験してきました【UiPath Automation Developer Professional】

元気しとーと？ 博多に住んどうUiPathプリシェールス @ManabuTechばい。
（お元気でしょうか？ 博多に在住しておりますUiPathプリセールスManabuTech です）

早いもので、もう12月ですね。
坊さんも走るほど忙しいということで旧暦では「師走」と呼ばれておりましたが、私も忙しく各地を駆け回っております。

ちなみに、この前、実家で法事があった際には坊さんがバイクに乗ってきました。お経を唱え終えると、パチンコの話をしてくれました。
葬送のフリーレンでいう生臭坊主というやつですね。

>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/21ef26b2-ec2e-1e84-e353-ed6c94123a75.png)
引用元：葬送のフリーレン 1巻

そんな話は置いといて、UiPathの認定資格が2023年10月に新しくなりました。
ということで、UiPath自称特攻隊長の私が受験してみましたので、報告します！

結果は何とか合格できました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/c4c51278-f9a6-41ee-2294-cf3ccb10a3e6.png)

## 試験概要

UiPathの技術力を証明する資格で、開発者には主に3つあります。
・Automation Developer Assosiate（ADA）
・Automation Developer Professional（ADP）
・Specialized AI Professional（SAI）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/720c1ade-5a68-25c3-84a4-14ba0708a07a.png)

私はADPを受験しました。
試験は全部英語ですが、問題の意味はなんとなく分かると思います。

詳細については公式のページをチェックしてください
（新資格は、まだ英語のページしかないっぽいです）

https://www.uipath.com/learning/certification


試験範囲は、以下の通りです。
中々範囲が広いです。特にREFrameworkが多い。
>The Automation Developer Professional v1.0 Exam contains the following exam sections:
• Advanced Data Manipulation
• Debugging
• Advanced UI Automation
• Advanced Control Flow
• REFramework
• Orchestrator

## 試験対策

UiPath Academyにトレーニングコースがあります。
英語なので、とっつきにくいです。章末に模擬試験があるので、問題は解きました。
https://academy.uipath.com/learning-plans/automation-developer-professional-training

模擬試験もあります。この中から何問か出た気がします。
これを解けば試験がどんな感じかイメージできると思います。

試験内容の詳細はこちらをチェックしてください。

https://start.uipath.com/rs/995-XLT-886/images/UiPath%20Certified%20Professional%20-%20Automation%20Developer%20Professional%20Exam%20Description.pdf

## 受験方法

「Pearson」で受験の予約ができます。

https://home.pearsonvue.com/uipath

家で受験もできるみたいですが、カメラを設置したり机を片付けたり色々大変みたいなので、私は試験センターで受験しました。

## 感想

REFrameworkの問題が多いので、業務で使っていない人はAcademyでちゃんと勉強しておいた方がいいです。
あとはLINQのデータ操作がガッツリと出てくるので、行の抽出や列の抽出方法など書けるようになっておいた方が安心かなと思いました。

あとはOrchestratorやTestも思いのほか出題されて焦りました。

気付いたのですが、Orchestratorの表示を英語にしておかないと、どの項目について問われているのか良く分からなくなるので、OrchestratorやStudioなどを英語にして勉強した方が分かりやすいと思います。

あと、受験時に顔写真を取られて、結果用紙にプリントアウトされます。
私は寝ぐせのまま行ってしまったので、寝ぐせ姿がプリントアウトされてしまいました。皆さんは寝ぐせは直していきましょう。



UiPathの技術を体系的に学びなおせる機会でもありますので、興味がある方は受験してみてはいかがでしょうか？
【生成AI】複数AI実行できる・ChatHubの紹介

[PONOS Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ponos) 14日目の記事です。

## はじめに:eyeglasses:
ChatGPT、Bing、Google Bard、Claudeなど
様々なテキスト生成AIが登場しています、皆さん使いこなせていますか？
どれを使ったら良いのか迷っていませんか？

そこでお勧めしたいのが
[ChatHub - オールインワンのチャットボットクライアント](https://chromewebstore.google.com/detail/chathub-オールインワンチャットボットクライ/iaakpnchhognanibcahlpcplchdfmgma?hl=ja&pli=1)
です！！

## ChatHub - オールインワンチャットボットクライアントの紹介
ChatHubは、複数のチャットボットを一つのプラットフォームで利用できる革新的なブラウザ拡張機能です。このツールは、ChatGPT、Bing、Bard、Claudeなどの有名なチャットボットをサポートし、ユーザーに多様な対話体験を提供します。

主な特徴:

    多様なチャットボットの統合: ChatGPT、Bing Chat、Google Bard、Claude 2、Perplexityなど、10以上のオープンソースの大規模言語モデルを使用。
    同時チャット: 複数のチャットボットと同時にチャットし、回答を簡単に比較。
    広範な対応: GPT-4、ChatGPT API、Azure OpenAIサービスに対応。
    視覚入力のサポート: ChatGPT, Bing, Bardの視覚入力に対応。
    プロンプトライブラリ: プロンプトを管理し、効率的にアクセス。
    ショートカット機能: ブラウザのどこからでもアプリを素早く起動。
    Markdownとコードハイライト: 文書作成とコードの可読性を向上。

## 動作環境、事前準備
・Google Chorme

Google Chormeのプラグインとして
[ChatHub - オールインワンのチャットボットクライアント](https://chromewebstore.google.com/detail/chathub-オールインワンチャットボットクライ/iaakpnchhognanibcahlpcplchdfmgma?hl=ja&pli=1)
をダウンロード、機能を有効にする。

## 使い方
左下の設定ボタンから、設定画面を開き
使用する予定のチャットボットにチェックをつける
各種、使用モデルやモードを選択する
私は ChatGPTモデル：GPT-4 に変更しており、その他はデフォルトです
![スクリーンショット 2023-12-14 13.31.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249951/7bcc27b2-1ddd-7e38-ade7-f9fbda539199.png)

左側の　All-In-One　ボタンからデフォルト画面に戻り
各種チャットボットをクリックして使用するチャットボットを変更できます
![スクリーンショット 2023-12-14 13.37.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249951/8c4e56de-7ad0-0867-30d3-8f161bd52af3.png)

あとは下のプロンプト入力欄に、聞きたい内容を入力して、送信ボタンを押すだけです

#### ２分割使用イメージ（無料版、デフォルトは２分割です）
![スクリーンショット 2023-12-14 13.46.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249951/ad7dec72-3f44-f2b9-8165-1df1520486dc.png)


#### ４分割使用イメージ(４分割は有料プランです)
![スクリーンショット 2023-12-14 13.05.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249951/164e58f7-0319-2ad0-289a-4992700f0431.png)


## まとめ
使用イメージで一目瞭然ですが、各種AIによって返答が違うので
[ハルシネーション問題](https://www.nri.com/jp/knowledge/glossary/lst/ha/hallucination)
を複数AIにチェックさせることによって問題を回避することが可能です。

また、[Claude](https://claude.ai/login?returnTo=%2F)は日本ではあまり有名ではないですが
入力可能文字数が多いという特徴があり、他のAIでは入力制限に掛かる時も返答してくれるので重宝する場面があります。(最大10万トークン)

質・量・AIごとの特徴　を気にすることなくプロンプトを投げて結果をすぐに比較可能なのが複数AI実行の強みです
[ChatHub - オールインワンのチャットボットクライアント](https://chromewebstore.google.com/detail/chathub-オールインワンチャットボットクライ/iaakpnchhognanibcahlpcplchdfmgma?hl=ja&pli=1)　
まだの人は是非、試してみて下さい！作業効率上がりますよ:muscle:

次は、[@FW14B](https://qiita.com/FW14B)さんの記事です。
お楽しみに！！
年末に1番買われてる魚はなんだ！都市別選手権！

# 肉と魚の力比べは分った、じゃあ魚って何食べてんのかな？

年末らしく、これまで肉と魚の比較やら都市別魚消費金額を可視化してきましたけど、なんかごちゃついて見づらいよね・・・。

# よし、サクっと作っていこ！

各項目の設定はこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167883/43a8064f-8ac2-9cdd-3ef8-da9ddbe5ba62.png)


1. まず、市区と品目を行に入れます。
2. 練り物や加工品を除くために品目をフィルターにいれます。
2. 日付データも。、不連続にして12月だけをチェック。
2. 各市区の1位品目を出すのは、なかなか思いつかなかったんですがなんとかできました。
2. 消費金額を表計算でランクにする。降順で。
2. 特定のディメンジョンで品目を選ぼう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167883/aad75715-fac9-8d8e-6481-12e6de44f635.png)

そして、この消費金額ランクをフィルターに入れて１だけにする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167883/dd5699d9-6fdf-07a2-55c3-17431075dd49.png)

あとは横棒グラフ用に消費金額を列に入れてラベルや色を調整するだけですね。

# つづいて地図。

地図の設定も同様ですね。
繰り返しになりますが、前処理で東京都区部を緯度経度で認識させる必要があるので、
市町村ではなくて緯度と経度を地理的情報にして地図を描きます。
あとの設定は先ほどと同じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167883/9f8fc8de-9da7-c8a8-6870-1731d794b6dc.png)

あとは、この2枚のシートをダッシュボードに配置して完成！

### 完成~
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167883/27c3b210-478a-7df5-09ca-74d355ddaf07.png)

各市区の12月消費金額ランキング1位のお魚だけをピックアップして見える化しました。
カニ強いね。

広島だけはカキですが、特筆すべきは新潟の塩サケ！
地域の食文化を知れて面白い結果になったと思います。

アクションで地図上の位置から横棒グラフがハイライトされるようにしておきました。

ちなみに、鮮魚(塩サケは鮮魚じゃないけど）以外の加工品、練り物を含めると実はまた違った地方の蚊を見ることができるので、それはまた明日以降に！

https://public.tableau.com/shared/M7SH935M9?:display_count=n&:origin=viz_share_link
ssh接続したときにターミナルに表示されるipアドレスを隠したい

# 状況
vscodeのターミナルだけでなく、スマホのsshクライアントとかで個人サーバーに繋げて電車で開くとき、ipアドレスが表示されると個人サーバーが見られるのではないかと安心して見れない。


sshで接続した際に左下に表示される「[root@123.123 public_html]#」みたいな表示を「[root@俺のサーバー public_html]#」という表示に変えたい。

なんとなくググっても自分が実現したいことを直接やってる記事になかなかたどり着けなかったが、部分的に知りたいものをいろんな記事から見つけて情報をまとめて出来た。
linuxに関する深い知識があれば、簡単にググれたりググらなくてもすぐに

# 設定方法

環境変数PS1に、環境変数にどう表示するかの設定が入っている。
ためしに、環境変数のPS1の値を見てみたら以下のようになっていた。

```
[\u@\h \W]\$
```

- 上記の「u」や「h」などについてはこのような意味になっている

```
\u : ユーザー名
\h : ホスト名
\W : 今いるディレクトリ名
$ : 一般ユーザーの時$,rootの時#を表示
```

つまり、この「h」の部分がipアドレスが表示されるきっかけのものになっているので、ここを書き換えればいい

でも、環境変数を変えても一時的なものでしかなく、再ログインしたら元の設定に戻ってしまう。

## 永続的に設定
「.bashrc」ファイルに環境変数上書きを追加する。まあ今回に限らず環境変数を永続化させたいときにはこのファイルを使うが、ここで設定しまえばいい。

以下を追記したら完全に設定できた。

```
export PS1="[\u@俺のサーバー \W]# "
```

# 結果

![IMG_0870.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179803/6d6e9d07-6550-9d89-6212-20d887167430.jpeg)



# 感想
これで電車の中でも気楽に作業できる。
これで、例えば外部勉強会や知り合いにとくに気にせず画面共有ができる
dma(8) に置き換わった影響の回避法

[portsnap(1)](http://koganemaru.co.jp/cgi-bin/mroff.cgi?subdir=man&lc=1&cmd=&man=dma&dir=jpman-14.0.2%2Fman&sect=0) が無くなったコトは過去記事で書きよったのじゃが、次は MTA が古の頃から標準で採用されとった [sendmail(8)](http://koganemaru.co.jp/cgi-bin/mroff.cgi?subdir=man&lc=1&cmd=&man=sendmail&dir=jpman-14.0.2%2Fman&sect=0) から dma(8) に置き換わっていたんじゃ。

---
dma(8) のご本尊

https://github.com/corecode/dma/

---
OS のリリースノートには変更したと書かれとるノミで、影響範囲とかのアナウンスは節穴だらけのワシには見当たらなく、Slack で聞いてみると、即行でリプが帰ってきて orz な返答にポカーンw

---

え゛、そぉ～なんw

https://github.com/corecode/dma/blob/v0.13/TODO

---
 .forward 未実装って事じゃんが😱

仕方なしに mail/semdmail のビルド中に sendmail(8) は消えちょらんとも追リプ🤔

---
って事は...

```shell:
# mv /etc/mail/mailer.conf \
     /etc/mail/mailer.conf.orig
# sysrc sendmail_enable=NO
# cp /usr/share/examples/sendmail/mailer.conf \
     /etc/mail/mailer.conf
```
とりま、これで問題なさげ✌

---
リプくれた nork さん、Hiroki Sato さん、Thanks!

---
注：2023/12/22 /etc/rc.conf の環境変数も標準じゃと forward せんけぇ、強制書換処理を追記💦
TailwindCSSでbeforeをつかって四角などのシェイプを追加したい

この記事では、TailwindCSSでbeforeを使う時の方法について伝えます！

:::note warn
とあるAI検索エンジンでTailwindCSSを使ったbeforeの実装について調べると何故かサポートされていないと結果を返されますが、TailwindCSSでもbeforeやafterを使って実装はできます！
:::

## TailwindCSSでbeforeの使い方

TailwindCSSでbeforeを使う場合下記のように記述します

```javascript
const Component = ({ children }) => {
  return (
    <p className="before:content-[''] before:flex-shrink-0 before:w-4 before:h-4 before:bg-black">
      {children}
    </p>
  )
}
```

beforeに限らずですが、TailwindCSSを利用している場合classの定義部分が長くなり読みづらくなります…。

:::note info
改行するだけでも可読性が良くなるので気にかけられると良いと思います！
:::

```javascript
const Component = ({ children }) => {
  return (
    <p
      className="
        before:content-['']
        before:flex-shrink-0
        before:w-4
        before:h-4
        before:bg-black
      "
    >
      {children}
    </p>
  )
}
```

## 【余談】アイコンやシェイプの設置に`before`や`after`を利用すべきか？
テキストの横にアイコンやシェイプを設置する時に「beforeやafter」を利用すべきか？と悩む時があります…。

:::note info
正解はないと思いますが、自分なりに結論を出してみたので新しくサイトを構築する際やコンポーネントを作成する際にお役立ていただけると幸いです。
:::

### `before`や`after`を利用するのが良い
シンプルな四角や円であれば`before`や`after`を利用し、`before`や`after`では表現しにくい複雑なアイコンや郵便マークなど意味のあるアイコンはSVGにするので良いのではと考えています。

#### 負荷の観点
少なからずビルドの負担があるかと思います。
シンプルなシェイプであればCSSで実装してしまうので良いのではと考えました。

#### 管理の観点
コンポーネントとは別に画像として管理することになります。
CSSでの実装であればコンポーネントに閉じられているたコードの見通しが良いですが、SVG等で管理する場合ファイルの場所やその後の修正などのコストは発生する可能性があると考えました。

:::note warn
場合によってはアイコン用のコンポーネントを作成することもあると思います。
classの指定が長くなるデメリットはありますが、`before`や`after`の方が管理しやすいのではないか？と考えました。
:::

#### SEOの観点
`before`や`after`を利用せずに空の要素（`div`タグなど）にスタイルを当てて実現する方法もあります。
SEOの評価にクリティカルな影響はないとはいえブラウザ上に無意味な要素がレンダリングされるのは避けたいところではあるので`before`や`after`を利用するのが良いかと考えました。

## 【TailwindCSSでbeforeをつかって四角などのシェイプを追加したい】まとめ
TailwindCSSの実装方法としてカスタムCSSを定義することも可能です。

:::note info
同じ記述を複数回するより一箇所で定義した方が、可読性やメンテナンス性が向上するのでカスタムCSSとして定義しても良いのではと考えています！

個人的には、極力避けたい実装ではありますが利用回数が多い場合などのケースでも検討しても良いかもしれません。
:::

`before`や`after`の利用はコンポーネントの複雑度にもよって変わるので適切な方法が選べるようにチームで話し合って決められると良いと思います！
Pendo Launcher Firefox版のレジストリ設定


[ChromeとEdge](https://adoptsupport.pendo.io/hc/ja/articles/4405312801435-Windows%E3%81%A7%E3%81%AEChrome%E3%81%B8%E3%81%AE%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%81%AE%E5%B0%8E%E5%85%A5%E6%96%B9%E6%B3%95)のPendo Launcherの設定情報を書き込む方法はヘルプ記事あるけど、Firefox版がないのでメモ

FF版:[拡張機能ダウンロードここから](https://addons.mozilla.org/ja/firefox/addon/pendo-launcher/)

まず、apikeyとvisitorIDを設定するための定義ファイルを用意する。.jsonファイルとして保存する。

```json
{
    "name": "pendo-launcher@pendo.io",
    "description": "pendo metadata",
    "type": "storage",
    "data": {
        "APIKey": "xxxx",
        "visitor": "{\"id\": \"onamae.taro@sample.com\"}"
    }
}
```

このファイルをネットワーク・ストレージやローカルのディレクトリどこかに保存する。

次機に以下のレジストリキーを用意するHKCUでもHKLMでもOk

`HKEY_CURRENT_USER\SOFTWARE\Mozilla\ManagedStorage\pendo-launcher@pendo.io`

その後上記キーのデフォルト値に先程の定義ファイルのパスを書き込む
c:\hogehoge\path\metadata.json

これでセットアップ完了
CODESYSとNode-RED間のデータ通信

# はじめに

CODESYSとNode-RED間でのデータ受け渡しについて、
こちらのCODESYS Network Variable List parserを使用する方法について記載します。

https://flows.nodered.org/node/node-red-contrib-nvl

# Node-REDからCODESYSへのデータ送信例

![nvl.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/a7354326-9780-2c8c-89d3-e4d86e49f695.gif)

# CODESYS側の設定

設定を追加するには
`Applicationを右クリック`
→`オブジェクトの追加`
→`ネットワーク変数リスト`

![NVL1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/b9bb21a6-3dc1-ef28-773c-4b376055ff39.png)

## CODESYS送信側

UDPポート：1202
リストの識別子：1
パック変数：✓

実行タスクと送信周期は自由に設定してください。

![NVL2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/dab34253-d7a1-f38b-178d-0bc21823f3f2.png)

次に、データを定義します。

```:NVL(送信側)
{attribute 'qualified_only'}
VAR_GLOBAL
	gInput:BOOL;
    gOutput:BOOL;
    gCounter:UINT;
END_VAR
```
:::note info

attribute 'qualified_only'って何？

:::

https://help.codesys.com/api-content/2/codesys/3.5.14.0/en/_cds_pragma_attribute_qualified_only/

また、ビルドして問題なければ、ファイルをエクスポートして保存できます。

![NVL3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/53a3951c-10c0-dbf1-cf5d-3f57751d71d9.png)

以上で設定は完了です。ログインして実機に転送後、運転開始するとデータを定周期で送信します。

# Node-RED側の設定

パレットの管理から`node-red-contrib-nvl`を追加します。

![NVL_add.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/009f4ff6-96b1-591d-b5d8-a7cd393cd1e1.png)

## Node-RED受信側

受信用のノードを配置し、設定します。
設定が終わった後、デプロイを実行して動作するか確認します。

![NR01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/5dba72d0-7aa3-b35f-cf80-ddee7f476394.png)

![NR02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/94c33506-08cc-2190-c8f4-ca7d0efa7e70.png)

# 続き

CODESYS受信側については以下のページを参考にしてください。

https://qiita.com/firesign2023/items/73417f077d6f0177a2e8
[ゲノム解析] クリップボードを活用した配列データの保存/出力

# ブラウザとterminal間でコピペがスムーズにいかない
ゲノム解析を行う中で、terminalで出力した配列をブラウザ版BLASTにかけたり、ブラウザのNCBIから配列をコピーしてterminalで見たり、terminalとブラウザを行ったり来たりすると思います。

この作業、スムーズにできてますか？
「ブラウザでNCBI配列を選択　-> コピー -> terminalでテキストエディタを開く ->　ペースト ->保存」と、中々段階が多いですよね。そんな時、`pbpaste`と`pbcopy`コマンドが非常に有効です。本コマンドはMacにある既存コマンドであり、インストールの必要がありません。Macでゲノム解析しているのであれば、使わない手はないでしょう。

本記事では、使い方を紹介します。

# pbpaste
`pbpaste`はクリップボードに保存してあるテキストを出力するコマンドです。
NCBI上のFASTA配列に関して、配列長などパパッと解析したい・・・、そんな時に役立ちます。やり方は簡単です。

試しにNCBI上の配列を`Command + C`でコピーしておきます。 
![スクリーンショット 2023-12-14 11.04.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2519906/d1e4e039-c4e0-3f17-2de3-2f24a19fff1a.png)

terminalを開いて`pbpaste`と打ってください。コピーされたテキストが出力されるはずです。
```
pbpaste
```


`pbpaste`は以下のように使えます。
```
# リダイレクトで直接ファイルに保存
pbpaste > sequence.fasta

# seqkit等の解析プログラムでパイプ
pbpaste | seqkit stat
```
一々テキストエディタを開く必要もないですし、ちょっと配列長を調べたいだけなら配列をファイルに保存する必要もなくなります。このように`pbpaste`を使えば、ファイル保存の工程を省略できるのです。

# pbcopy
`pbcopy`はterminalでの出力をクリップボードに保存するコマンドです。terminalで見ていたゲノムファイルの一部分を適当に切り取って、それをブラウザでBLASTしたい時とかに使えます。

たとえば、ゲノムファイルの200~300を切り取りたいとって、BLASTしたいとします。
まず、`seqkit subseq`で切ってください。このコマンドは[別記事](https://qiita.com/bacbac/items/5b2d184f1e5df83c3916)で紹介しています。
```
seqkit subseq -r 200:300 sequence.fasta
```
この出力をクリップボードにコピーしたいですよね。`pbcopy`でパイプします。これで、コピーできてるはずです。
```
seqkit subseq -r 200:300 sequence.fasta | pbcopy
```

あとは、BLASTの配列を入力するところで`Command + V`してもらえれば、配列がペーストできたと思います。
このように、terminalで見てたゲノムファイルの一部分をチャチャっとブラウザで解析したい時に、`pbcopy`が使えます。


#　終わりに
いかがでしたか。使えこなせば作業が効率的になるでしょう。
筆者はもっと早く知りたかったなって思ってます。
自動テストにてAsyncNotifierProviderのMockを作成する

こんなAsyncNotifierProviderがあったとして

```code.dart
class UserIdListNotifier extends AsyncNotifier<List<int>> {
  @override
  Future<List<int>> build() async {
    return [1];
  }
}

final UserIdListProvider = AsyncNotifierProvider<UserIdListNotifier, List<int>>(() {
  return UserIdListNotifier();
});
```
こんなテストコードになります。
```test_code.dart
void main() {
    testWidgets('テストします',(WidgetTester tester) async {
        await tester.pumpWidget(
          ProviderScope(
            overrides: [ // ここでProviderの戻り値をMockしたNotifierに設定する
              UserIdListProvider.overrideWith(() {
                return UserIdListNotifierMock();
              }),
            ],
            home: SomeWidget()
          ),
        );
    }
}

class UserIdListNotifierMock // NotifierをMockする
    extends AsyncNotifier<List<int>>
    with Mock
    implements UserIdListNotifier {
  @override
  Future<List<int>> build() async {
    return [1,2,3];
  }
}

```

参考：https://riverpod.dev/docs/essentials/testing#mocking-notifiers
(非推奨らしいです...)
ImageMagick: 画像をスクリプトで作成

テストに必要な　アスペクト比 16:9 の画像をスクリプトで作成する方法です。

```bash:jpg_gen.sh
COMMAND="convert -background lightblue -fill blue -pointsize 72"
#
for ll in {'Hello','Good','Morning','Afternoon','Evening','Night','Sun'}
do
	fname=$ll".jpg"
	$COMMAND label:$ll tmp001.jpg
	convert tmp001.jpg  -resize '320x180!' $fname
	echo $ll
done
```

次のような画像が作成されます。

![Hello.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/568bf8c4-0b1e-f464-e2b4-a4229e883588.jpeg)

![Good.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/217d84fd-d0c0-9611-f024-14aed05429b3.jpeg)
WAGO CC100でDockerを使う

# はじめに

WAGO CC100で扱うDockerコマンドについてまとめました。
コマンドの内容はProvisioning-toolより取得していますので、必要に応じて変更してください。
参考になれば幸いです。

Dockerのインストールなど、セットアップに関しては以下のページがわかりやすいです。

https://note.com/watsungo/n/n673014c67dc8#7caa2cd9-02b7-49c1-858d-54dbb3dc9aa7

https://github.com/braunku/pfc-provisioning-tool

# Docker よく使うコマンド

起動しているコンテナの表示：`docker ps`
全てのコンテナの表示：`docker ps -a`
取得済みimageの表示：`docker images`
ネットワークの一覧表示：`docker network ls`

コンテナの起動：`docker start [コンテナID]`
コンテナの停止：`docker stop [コンテナID]`
コンテナの再起動：`docker restart [コンテナID]`

起動しているコンテナ内で操作する：`docker exec -it [コンテナID] /bin/bash`

# Node-RED

以下のDockerコマンドは、Dockerボリュームを作成するためのものです。
具体的には、名前が "node_red_user_data" のDockerボリュームを作成します。

Dockerボリュームは、コンテナとは独立してデータを格納および管理するために使用されます。
つまり、コンテナを削除してもデータが残ります。

```
docker volume create --name node_red_user_data; 
```

以下のDockerコマンドでNode-REDコンテナを起動します。※初回はイメージをダウンロードします。

```  
docker run -d --restart unless-stopped --name wago-node-red --privileged=true --security-opt seccomp:unconfined --user=root --network=host -v node_red_user_data:/data nodered/node-red;
```

このコマンドは、Dockerを使用してNode-REDというノードベースのフローエディタを実行するためのものです。以下にコマンドの各部分について説明します：

`docker run`: Dockerコンテナを実行するためのコマンドです。

`--restart unless-stopped`: Dockerコンテナが停止した場合に、停止理由に関係なく自動的に再起動するように指定します。unless-stoppedは、明示的に停止するまで再起動を続けることを示します。

`-d`: Dockerコンテナをデタッチモードで実行することを指定します。つまり、コンテナはバックグラウンドで実行されます。

`--name wago-node-red`: Dockerコンテナに名前 "wago-node-red" を指定します。これにより、コンテナを識別しやすくなります。

`--privileged=true`: Dockerコンテナを特権モードで実行します。特権モードは、コンテナがホストシステムのリソースに広くアクセスできるようにするもので、セキュリティ上のリスクが伴う場合があります。特権モードを使用する必要があるかどうかは、具体的な要件に依存します。

`--security-opt seccomp:unconfined`: Seccompプロファイルを "unconfined" に設定します。これは、セキュリティ制約を緩和し、コンテナがより多くのシステムコールを使用できるようにします。

`--user=root`: コンテナ内のプロセスを "root" ユーザーとして実行します。

`--network=host`: ホストのネットワーク名前空間を使用してコンテナを実行します。これにより、コンテナはホストのネットワーク設定を共有します。

`-v node_red_user_data:/data`: ボリュームマウントを設定します。ホストの "node_red_user_data" ボリュームがコンテナ内の "/data" ディレクトリにマウントされます。これにより、Node-REDのユーザーデータを永続的に保存できるようになります。

`nodered/node-red`: 使用するDockerイメージを指定します。この場合、"nodered/node-red" リポジトリから最新のイメージが使用されます。

このコマンドを使用して、Node-REDコンテナを特定の設定で実行し、必要なセキュリティオプションを設定し、ネットワーク設定をホストと共有し、ユーザーデータを永続的に保存できるようにしています。セキュリティに関する設定は慎重に検討する必要があり、必要に応じて調整することが重要です。

# InfluxDB

InfluxDB v1.8がインストールされます。v1.xにはGUIがありません。
GUIが必要な場合はV2.0以降をインストールしましょう。


```
docker run -d --restart unless-stopped --name=influxdb --network=host -v influx-storage:/etc/influxdb/ arm32v7/influxdb;
```

# Grafana

基本的にはNode-REDと同様ですが、このまま実行するとエラーになります。(2023/10時点)

:::note info
grafana/grafana:10.1.2のようにバージョン指定してください。
:::

以下のDockerコマンドは、Dockerボリュームを作成するためのものです。
具体的には、名前が "grafana-storage" のDockerボリュームを作成します。

```
docker volume create grafana-storage;
```
```
docker run -d --restart unless-stopped --network=host --name=grafana -v grafana-storage:/var/lib/grafana grafana/grafana;
```

# 

# コンテナ起動後

`docker run`コマンドで問題が無ければコンテナが起動していると思います。
起動しているかどうかは`docker ps`で確認できます。

ブラウザからアクセスする。
CC100のIPアドレスが192.168.1.17とすると

~~~:Node-REDへのアクセス
http://192.168.1.17:1880
~~~

~~~:Grafanaへのアクセス
http://192.168.1.17:3000
~~~

~~~:Portainerへのアクセス
https://192.168.1.17:9443
~~~
Julia いろいろ--004--

Julia いろいろ--004--

## 文字列を数値に変換する　`parse()`

### 1 つの文字列を数値（整数，実数）に変換する

parse の第 1 引数で結果の型を指定する。

- 整数に変換するときは Int(Int64)を指定する。他に Int32, Int16, Int8
- 実数に変換するときは Float64を指定する。他に Float32, Float16
- 長精度整数，長精度実数に変換するときは BigInt, BigFloat



```julia
parse(Int, "12345")
```




    12345




```julia
parse(BigInt, "123456789012345678901234567890")
```




    123456789012345678901234567890




```julia
big"123456789012345678901234567890"
```




    123456789012345678901234567890




```julia
parse(Float64, "123.45678")
```




    123.45678




```julia
parse(BigFloat, "123.45678901234567890")
```




    123.4567890123456789000000000000000000000000000000000000000000000000000000000005




```julia
big"123.45678901234567890"
```




    123.4567890123456789000000000000000000000000000000000000000000000000000000000005



整数に変換するときには，進数を指定できる。


```julia
parse(Int, "123", base=8), string(0o123, base=10)
```




    (83, "83")




```julia
parse(Int, "123", base=16), string(0x123, base=10)
```




    (291, "291")



### 文字列ベクトルを変換する `parse.()`


```julia
parse.(Int, ["123", "45", "6789"]) 
```




    3-element Vector{Int64}:
      123
       45
     6789



リスト内包表記で書くこともできる。


```julia
[parse(Int, i) for i in ["123", "45", "6789"]]
```




    3-element Vector{Int64}:
      123
       45
     6789



整数を表す文字列を Float64 に変換することはできるが，浮動小数点数を Int に変換しようとするとエラーになる。


```julia
parse.(Float64, ["123", "4.56"])
```




    2-element Vector{Float64}:
     123.0
       4.56



### 文字列を区切り文字で区切って整数，実数に変換する

区切り文字を指定しないときは，' ', '\t', '\n', '\v', '\f', '\r' により区切られる(逆に言えば，これらの文字で区切るときには区切り文字を指定しなくてもよいということ）。


```julia
parse.(Int, split("123 456 789 12345"))
```




    4-element Vector{Int64}:
       123
       456
       789
     12345




```julia
parse.(Int, split("123 456\t789\n12345"))
```




    4-element Vector{Int64}:
       123
       456
       789
     12345



区切り文字を指定する。


```julia
parse.(Int, split("123, 456, 789", ","))
```




    3-element Vector{Int64}:
     123
     456
     789



区切り文字は正規表現でも指定できる。


```julia
parse.(Int, split("123; 456, 789/ 12345", r"[,;/]"))
```




    4-element Vector{Int64}:
       123
       456
       789
     12345



空文字列で区切れば数字が一桁ずつに分解され，一桁ずつの数値になる。


```julia
parse.(Int, split("12345", ""))
```




    5-element Vector{Int64}:
     1
     2
     3
     4
     5



同じ結果を得るために，以下のように書くこともできる。


```julia
parse.(Int, [string(12345)...])
```




    5-element Vector{Int64}:
     1
     2
     3
     4
     5
anacronによるlogrotate実行後のmysqlのlogが出力されなくなった件

## はじめに
[株式会社ピーアールオー（あったらいいな！を作ります） Advent Calendar 2023](https://qiita.com/advent-calendar/2023/pro-japan) の11日目です。

先日、anacronで実行されるmysqlのlogrotateにて、
新しく作られたファイルに出力が行われない事象が発生しました。

cronでの実行や手動の場合は問題なかったですが、anacronでlogrotate実行後のmysql関連のlogが出力されなくなったのでそれについて書いていきます。

原因だけ先に書いておくとSELINUXを適用しているためでした。

## mysqlがlogrotateされない場合

設定は以下のようなよくある設定とします。

```

/var/log/mysqld.log {
        create 640 mysql mysql
        notifempty
        daily
        rotate 5
        missingok
        compress
    postrotate
       # just if mysqld is really running
       if test -x /usr/bin/mysqladmin && \
          /usr/bin/mysqladmin ping &>/dev/null
       then
          /usr/bin/mysqladmin flush-logs
       fi
    endscript
}
```

mysqlのlogrotateが上手くいかない多くの原因は権限のエラーだと思います。
その場合は以下の記載に修正すると上手くいくかと思います。

```
/usr/bin/mysqladmin --defaults-extra-file=/root/.my.cnf flush-logs
```

## logrotateされるがlogに出力されない

logrotateは上手くいっているのにファイルの書き込みが上手くいっていない。
この場合はファイルディスクリプタについて疑うかと思います。

現にmysqlの再起動など行う場合はmysqlのlogの出力は正常な状態となりました。
また、手動でlogrotate内で実行するコマンドを試した場合でもファイルへの出力は問題ありません。

> anacronでlogrotate実行後のmysql関連のlogが出力されなくなった

つまりflush-logsの実行が出来ておらず書き込みファイルが切り替わっていない状態でした。

SELINUXがEnforcingだった場合は原因としてSELINUXが考えられますので、一時的にPermissiveにしてみるなどの対応を行ってください。

```
$ getenforce
$ setenforce 0
```

また、audit.logを確認してSELINUXのlogを確認してください。
selinuxが原因の場合、以下のようなlogが出ている可能性があります。

```
avc:  denied  { name_connect } for  pid=xxxxxxxxxx comm="mysqladmin" dest=3306 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket permissive=0
```

**操作元** : scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023
**操作先** : tcontext=system_u:object_r:mysqld_port_t:s0

上記の場合はlogrotate_tがmysqld_port_tに対して、{ name_connect }を拒否している状態です。

また、以下のコマンドで何が許可されているかなど確認することもできます。

```
$ sesearch -A -s logrotate_t -t mysqld_port_t
```

今回の事象ではこのルールに許可がなかったことが原因となります。
cron実行の際に上手くいっていたのはこの権限周りがanacronの時と違ったんでしょうね。

そのため上記で拒否されたルールを許可してあげる必要があります。
**※不要な許可は足さないように十分検討してください。**

原因は判明したので対応について記載します。
以下のように対応すれば、anacron+SELINUXの環境で上手く動くようになるかと思います。
**※```audit2allow -a```は拒否されたアクセスが全て表示されてしまうので許可する必要のないものは含まれていないことを確認しましょう。不要なものがある場合は手動でもカスタムモジュールは作成出来ます。**

```
# 拒否されたアクセスを許可する Type Enforcement ルールを表示
$ audit2allow -a
# カスタムモジュール作成
$ audit2allow -a -M モジュール名
# コンパイルされたファイルが作成されるのでSELINUXに適用
$ semodule -i モジュール名.pp
# 今回のような拒否内容の場合は以下にモジュールが追加されていることを確認できます。
$ sesearch -A -s logrotate_t -t mysqld_port_t
```

## 終わりに
logrotateが何かしら上手くいってない場合は、基本的には設定ファイルやmysqlの権限に問題がある可能性が高いかと思います。

そのため調べてもSELINUXが原因という可能性はなかなかたどり着けないこともあるかと思いますのでこの記事を作成しました。

anacronでmysqlをlogrotateする際にSELINUXをEnforcingにしている状態、とピンポイントなところですが、SELINUXの許可の追加方法は他でも応用が効きますのでお試し下さい。
たまに見かけるSELINUXをPermissiveにして解決！みたいなことは好みません。。

以上
ワーケーションをやってみた。

ワーケーションの検証を会社でやる機会があったので、様子をまとめてみたいと思います。

### １．ワーケーションとは

>Work(仕事)とVacation(休暇)を組み合わせた造語。 テレワーク等を活用し、普段の職場や自宅とは異なる場所で仕事をしつつ、自分の時間も過ごすことです。

https://www.mlit.go.jp/kankocho/workation-bleisure/

### ２．メリット
・ワークライフバランスの充実
・自分で選択できる
・(自分自身はフルで楽しめなくても)、平日の比較的空いてるときに家族がENJOYできたりする

誘致に成功すれば観光業界も潤います。

### ３．実際にやってみた
**場所**
海岸沿いにあるホテル(和洋室)

**一日の流れ**
広めの部屋に泊まっているメンバーのところに毎日集合。
WEB会議がある人はふすまを閉めてクローズドな和室でやってました。

９：００ 始業、朝会
９：１５～１２：００ 通常業務
１２：００～１３：００　昼休み (私は温泉に入ってました)
１３：００～１７：００ 通常業務
１７：００～１７：３０ 一日の振り返り(一応検証企画なので)

### ４．どうだったか
・テキパキやるモチベーション強化につながった
　→これを終わらせたら温泉に入れる！美味しいご飯やさんに行ける！
 　逆に終わらないと楽しい時間が減る！(夕食の時間は何時までとか決められているので)
・「オフィス空間」ではないので自分を律せないとダラダラしがち(居心地いいから)
・仕事をしている時間も滞在料は発生しているわけで、いい感じのホテルだったり周りに遊ぶところがあるとその時間がもったいない(フルで満喫したい。。)

<br>


 福利厚生として会社から補助があるとありがたいなと思いました(有休をどうにか取らせようと大変な思いをされているケースとかありそう)。
CuPyの “cannot open source file”

# CuPyのエラー

Windows11
CuDa: 11.7

仮想環境を作り
```bash
py -m veve venv
```

```bash
pip install cupy-cuda11x
```

```python
import cupy

A = cupy.arange(9).reshape(3, 3).astype('f')
```

エラー発生
> CompileException: ... : catastrophic error: cannot open source file " cupy/complex.cuh"

# 解決法
venvのフォルダ名に全角、スペースをいれない(どちらが要因かは未調査)
Figmaのvariables機能を用いてデザイントークンを共通化した話

<h1>はじめに</h1>

この記事は<a href="https://qiita.com/advent-calendar/2023/ikyu">一休.com Advent Calendar 2023</a>17日目の記事です。
一休.comプロダクト開発部デザイナーの河村です。
一休の組織でデザイナーがどのようにFigmaを使っていて、どんな課題感があり、どうやって解決しているかという話を書いてみたいと思います。



<h1>各サービスごと異なるTeamでのFigmaの運用</h1>
これまで一休では、各プロダクトごとに独立してデザインシステムの構築、推進を行い、テザインとシステムの連携を強化してきました。<br><br>
　<a href="https://user-first.ikyu.co.jp/entry/2022/06/22/142755" style="co">デザインシステム導入しました</a><br>
　<a href="https://user-first.ikyu.co.jp/entry/2022/11/11/110540">新サービス「一休.comふるさと納税」でデザインシステムの活用とFigmaを使いました</a><br>

Figmaを用いたデザインシステムの運用方法は、プロダクトごとにTeamを分け、各々でガイドラインを設定し、ColorやFontの定義を行なっていました。

![スクリーンショット 2023-12-15 13.20.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3110339/ec9a6cf0-ea6d-3bc8-0635-c82175b4e5eb.png)


各プロダクトごとにFigmaを使ったデザインシステムの活用が進んだことによって、「一休」という単位で共通感を持たせていくことの重要性にも目がいくようになりました。

<h1>全社で見た時に煩雑になった色の管理</h1>
Figmaでのデザインシステムの推進は、同時に各プロダクトのデザインデータの可視化に繋がり、全社横断で見た時に多くの無駄があることに気づきました。

例えば色に着目すると、各プロダクトごとにデザイナーが相応しいカラーを自由に選定してきた結果、全社でみた時に、同じ役割の赤（アラート）や、青（テキストリンク）なのに、微妙にカラーコードが異なる事態になっていることがわかりました。<br>


![スクリーンショット 2023-12-14 11.34.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3110339/3a59406b-d8ad-a492-39a3-2881992d7c07.png)


各プロダクト個別で考えるよりもさらに上流の部分で共通化した方が、統一したデザインの提供ができるのではという発想のもと、全社で統一したガイドラインを作成することになりました。



<h1>Figmaのvariables機能を用いた全社のデザインシステム</h1>

全社で統一したガイドラインを各プロダクトごとのデザインシステムへ反映する上で役立ったのが、<a href="https://help.figma.com/hc/ja/articles/15145852043927-%E3%83%90%E3%83%AA%E3%82%A2%E3%83%96%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E7%AE%A1%E7%90%86">Figmaのvariables機能</a>です。
なお、Variablesは2023年6月時点でBeta版として提供されている機能であり、今後変更になる可能性があります。

FigmaのVariables機能は、Figmaで使えるデザイントークンのことで、使用するColor、Paddingなどの数値をVariablesとして定義し、一元管理が可能となる機能です。
<br>


<span>実際に定義したトークン</span>

![スクリーンショット 2023-12-14 12.16.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3110339/c6482e0d-45a5-93a4-94b7-31c6a6fe6731.png)
<br>

上記のデザイントークンは、「IKYU Design Guideline」という上流のTeamでVariablesとして管理することにしました。
定義したVariablesを各プロダクトごとのTeamで呼び出すことで、共通の値をそれぞれのデザインデータに組み込むことが可能になりました。
なお一休では、ボタンやフォームなどのコンポーネントは、共通化することでスピーディーなプロダクト改善の障害になる懸念があるため、全社では統一せず各プロダクトごとに定義することにしています。


![スクリーンショット 2023-12-15 13.19.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3110339/4f299490-4bc2-2f9a-6a86-de39064361ce.png)




<h1>おわりに</h1>

Figmaのvariables機能を用いて、デザイントークンを共通化した話を書きました。
今後は更に各プロダクトのフレームワークに依存しないパラメータを用いたシステム上の共通化を目指しています。
サイトを訪れたユーザーが、一休のどのサービスを使っても心地よい体験を叶えるべく、今後もデザインシステムの推進を継続します！
viteで静的サイトの環境構築してみた


# はじめに
ずっとgulp使ってきたけど、最近の主流は**vite**らしいので環境構築を試してみた。

# viteってなんだ
2020年にリリースされたフロントエンドのビルドツール。
読み方は「ヴィート」。

https://ja.vitejs.dev/

ビルドツールはwebpackもgulpもあるけど、ここ最近ではviteが人気みたい。
![スクリーンショット 2023-12-14 10.24.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587166/f127e1c3-adad-c6f1-caec-02be37ec2199.png)

# 環境構築
今回はviteで静的なHTMLとCSS（SCSS）の環境構築をしてみる。

（nodeとnpmはインストール済み）

## 新規プロジェクトを作成する
今回は「test」というプロジェクト名でVanilla+JSで作成
```
npm create vite@latest
✔ Project name: … test
✔ Select a framework: › Vanilla
✔ Select a variant: › JavaScript

cd test
npm install
npm run dev

> test@0.0.0 dev
> vite

VITE v5.0.8  ready in 106 ms

➜  Local:   http://localhost:5173/
➜  Network: use --host to expose
➜  press h + enter to show help
```
これで初期の状態（HTMLとCSS）は完了。
![スクリーンショット 2023-12-14 10.40.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587166/99262527-8a62-fa95-80c4-aedac9776e05.png)

## configファイルをつくる
viteで色々するための**vite.config.js**をドキュメントルートに作成。
```
touch vite.config.js
```
```ruby:vite.config.js
import { defineConfig } from "vite";

export default defineConfig({
  //ここに設定を追加
 })
```

### ルート設定
これで「src」をルートにできる。
```ruby:vite.config.js
import { defineConfig } from "vite";

export default defineConfig({
    root: "src"
})
```
※いまルートにあるhtmlたちはsrcディレクトリへ移動

### ビルド設定
```ruby:vite.config.js
import { defineConfig } from "vite";

export default defineConfig({
    root: "src",
    build: {
        outDir:"../dist",
        emptyOutDir: true,
    }
})
```

## その他の機能

### ビルド
distディレクトリが生成される。
```
npm run build
```

### プレビュー
distディレクトリをプレビューしてくれる。
```
npm run preview
```

## SCSSを導入する
```
npm i -D sass
```

main.jsのstyle.css読み込みをscssに変える。
```
import "./style.scss";　←ここ
import javascriptLogo from './javascript.svg'
import viteLogo from '/vite.svg'
import { setupCounter } from './counter.js'
```

# おわり
一旦、初期導入まで。
これからSCSSとejs(pugかも)とか入れていく。
GX Works3 新規作成からシミュレーション開始まで

# はじめに

GX Works3でプロジェクトの新規作成からシミュレーション開始までの手順についてまとめます。

# プロジェクトの新規作成

GX Works3を起動して
[プロジェクト]→[新規作成]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/dd1ee9aa-ae7a-d8dc-f877-bb1470f07f2f.png)

## 機種・言語の選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/8d4d6b5c-0b69-11e3-bb1f-bff2223e7428.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/ecebcebe-1334-b06a-2b11-7e2cd70c396d.png)

## プログラムの作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/58987f9b-f6ea-fdfb-d84d-33e96c7a6596.png)

# シミュレーション開始

[デバッグ]→[シミュレーション]→[シミュレーション開始]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/143a08b3-a1f6-a014-b8ee-7f1db65991e0.png)

以下のようになっていれば正常に動作しています。
モニタをやめて編集モードにするには[F2]を押します。
再度、モニタモードにするには[F3]を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343142/8f5522a0-28ce-f88e-a16a-554365e5398b.png)
研究者の天国を目指すOISTに視察に行ってきました

沖縄にあるOISTに行く機会がありましたのでまとめます！

参考URL

https://www.oist.jp/ja/about

https://ja.wikipedia.org/wiki/%E6%B2%96%E7%B8%84%E7%A7%91%E5%AD%A6%E6%8A%80%E8%A1%93%E5%A4%A7%E5%AD%A6%E9%99%A2%E5%A4%A7%E5%AD%A6

# ０．クイズ
・このロゴはある生き物？です。なんでしょうか？OISTとの関連性は？
・数字が隠れています。なんでしょうか？OISTとの関連性は？

![ＯＩＳＴ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3003921/4b0fbeae-75dc-a0c5-c04f-dd7d3b708cec.png)

この記事の最後に答えを書きます！

# １．OISTとは
・2011年設立された沖縄県国頭郡恩納村字谷茶に本部を置く私立大学
・現時点の研究テーマは下記。
>生物学、化学、コンピュータサイエンス、生態学・進化学、工学・応用科学、海洋科学、数学、神経科学、物理学

https://www.oist.jp/ja/research#:~:text=%E7%94%9F%E7%89%A9%E5%AD%A6%E3%80%81%E5%8C%96%E5%AD%A6%E3%80%81%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9,%E3%81%AB%E9%9B%86%E7%B5%90%E3%81%95%E3%81%9B%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82


**恩納村ってどこ？**
![OIST地図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3003921/a76c259a-a4a9-a1fc-f79c-e711ddf22e2f.png)
(Googleマップより)

山の上にあり、海の眺めは最高です！
万座毛までは車で10分！
青の洞窟までは車で12分！


# ２．ここがポイント
**公式サイトで挙げられているポイント**
・国際的なベストプラクティスを手本とした、国内では珍しいガバナンス体制
・学際的アプローチによる教育および研究
・国際性および多様性豊かな教員、事務職員、学生コミュニティで英語を共通言語とする環境
・潤沢な教育・研究資金
・教員の独立性および研究の自由
・沖縄の経済発展に貢献する意欲

**キャンパスツアーで見聞きしたor感じたポイント**
・世界から注目されるように仕立て上げている戦略があった
　例えば・・・
 　　・ノーベル賞受賞候補者(スバンテ・ペーボ教授)に目を付けてリクルート。教授は受賞済み！
 　　・公用語は英語(施設内の掲示物は、ほぼ英語でした)
 　　・リゾート立地(白、エメラルドグリーン、ブルーのグラデーションの海が大学の窓から見える！天気がいいと遠くに島も見える)
 　　・理事会は合議制
 　　・学部がない(従来の学術分野の壁を取り払う)
 　　・優秀な学生は高校生の時点では希望進路を決めていることが多いので、もっと早いうちからOISTを知ってもらえるよう広報に力を入れている
 　　・文科省ではなく内閣府管轄。沖縄振興予算が使われている。


# ３．なんで内閣府？

内閣府による設立目的

>沖縄において世界最高水準の教育研究を行うことにより、①沖縄の復興と自立的発展、②世界の科学技術の発停に寄与することを目的とする

https://www8.cao.go.jp/okinawa/4/oist-info.html

だから沖縄振興予算が使われるんですね。


# ４．研究事例

https://www.oist.jp/ja/research#:~:text=%E7%94%9F%E7%89%A9%E5%AD%A6%E3%80%81%E5%8C%96%E5%AD%A6%E3%80%81%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9,%E3%81%AB%E9%9B%86%E7%B5%90%E3%81%95%E3%81%9B%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

・世界初のイカの養殖システム
・OISTサンゴプロジェクト(養殖サンゴ礁の育成やモニタリング調査が行われる予定)

沖縄らしいテーマがあるのも特色。

# ５．冒頭の答え
(1) シーサー（沖縄）
(2) 58　OISTのそばを国道58号線が通ってます。


キャンパスツアーは一般の方も申し込めますし、自由見学もできます。

https://www.oist.jp/ja/guided-campus-tour

周りは自然のみ！研究にも没頭でき、ヘルシーな生活をおくることができそうだなと思いました！
(好きな研究に打ち込みつつ、大学の行き来はちょっとした山登り(徒歩で片道20分ほどみたい)、オフタイムは海と戯れて・・・)