OmniAICreator/Qiita-1.07M huggingface dataset:
あつまれ！世界中のmicro:bitファンのみなさーん！



はじめまして、Microbit Educational Foundationで日本コミュニティの担当をしております、畑といいます。

micro:bitファンのみなさん、突然ですが「micro:bit live」というイベントはご存知でしょうか？

![microbit_Live_2021_Icon_White_Green2000px (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2339945/2ed85922-e84b-dded-0100-83e51262ad69.png)

2019年までは毎年、世界中のmicro:bitユーザーの中でも選ばれし方々がイギリスに集まって
`情報交換やネットワーキング`をするのが恒例だったのです。（私も参加したことない）
各国のmicro:bit活用事例や知る人ぞ知るtipsなんかを共有しあって、自国での活動に還元してもらうことを目的としていました。

しかし皆さんご存知の通り昨今はどんなイベントも会合もオンラインでの開催となりました。
micro:bit liveもオンラインで...ということは`誰でも参加できる`ようになったのです！


#2021年のmicro:bit live！

今年は`28ヶ国以上の80を超える登壇者`がリアルタイムでのスピーチを披露してくれたり、Expoエリアでの動画を寄せてくれたりしています！ こんなイベントってすごくないですか？:eyes::earth_africa:

それも、営利企業の販促とかは一切なしで、ボランティアの取り組みや、教育・研究などについて、`micro:bitに関するものからもっと広くComputer Scienceに関すること`をテーマにしています。


<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Bring back Classic Games with the micro:bit&#39;s Radio Feature<br><br>The <a href="https://twitter.com/hashtag/microbit?src=hash&amp;ref_src=twsrc%5Etfw">#microbit</a> radio feature is a game-changer when introduced with classic games like hot potato, battleship &amp; more! <br><br>Join us for guaranteed fun at <a href="https://twitter.com/hashtag/microbitLIVE?src=hash&amp;ref_src=twsrc%5Etfw">#microbitLIVE</a> 2021<br><br>Registration is FREE <a href="https://t.co/XvCUunGIFj">https://t.co/XvCUunGIFj</a> <a href="https://t.co/2LFEMZ2paY">pic.twitter.com/2LFEMZ2paY</a></p>&mdash; Micro:bit Educational Foundation (@microbit_edu) <a href="https://twitter.com/microbit_edu/status/1463496372703969283?ref_src=twsrc%5Etfw">November 24, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


-----

メインのKeynoteは`ScratchのMitch Resnik氏とShawna氏`から！

その他にも、海外の実践を知ったり、micro:bitをつかった作例の動画や発表は、きっと言葉の壁を超えたつながりやInspirationを与えてくれるはずです:bulb:

#日本からのスピーカー紹介！

誰が登壇してくださったのか...言いたくて言いたくて、とっても豪華です。
どんなテーマが出ているのかはざっくりご紹介しますね:point_up:

* **Scratchlinkだけじゃない、micro:bitとscratchを連携させる方法**
* **1年生からでもできる micro:bitを使った授業実践**
* **地域を超えた子ども向けプログラミング体験の場づくりや地域でのつながり**
* **Computer Science 教育の価値やその促進**
* **初めてでも楽しい！micro:bitをつかったたのしい作品集**
* **オンラインワークショップでハードウェア体験は大変なことばっかりってホント?**

学校の先生から大学教授、ワークショップやウェブサイトの運営をされている方などなど、本当にいろんな方々がいろんな視点でmicro:bitやComputer Science Education、子どもたちとプログラミングの関連についてお話してくださっています。

**「で、誰なのよ？」って気になった方はぜひ[こちら](https://hopin.com/events/micro-bit-live-2021#booths)をご覧ください！**

---

### 裏話
micro:bitは各地域でのパートナーとの関わりをエコシステムと呼んでいます:shamrock:
このエコシステムに、どんな人がいるのかを知ってほしいなと思って、いろーんな取り組みをしている人たちにお声掛けしました。

#気になった人は申し込み！

日本時間では`12/3 21:00〜12/5 5:00`までの３２時間オープンのイベントスペース「Hopin」にお越しください。

お申し込みはこちら:point_down:
https://hopin.com/events/micro-bit-live-2021

上記イベントページから、他国のspeakerに関する情報もご確認いただけます。
Notionでシンプルテーブルを作ろう

アルプ株式会社でエンジニアをしています、集約のエンティティ@pictinyです。
これは[Notion Advent Calendar 2021](https://qiita.com/advent-calendar/2021/notion) 1日目のエントリです。

# シンプルテーブル
Notionでは `/database` で[データベース](https://qiita.com/pictiny/items/dba21dd5d226ac5b6849)を作ることができますが、シンプルテーブルを使えばデータベースよりも簡易的な表を作ることができます。

`/table` コマンドでシンプルテーブルのブロックを追加することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427952/08423a11-5544-441e-11fd-a4557916ab16.png)

表の右下にマウスオーバーすると表示される `+` のアイコンは、クリックすると列と行が1つずつ追加でき、ドラッグすると列と行を任意の数だけ追加削除できます。

![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427952/d62742ef-f69c-2067-4280-10780ff6c42f.png)

# まとめ
ちょっとした表を作るときにデータベースの機能がリッチすぎることがありますが、シンプルテーブルを使えば表現が楽になりそうですね！

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">SIMPLE TABLES are here! Type /table to get started 🏓 <a href="https://t.co/YMPuR51LKn">pic.twitter.com/YMPuR51LKn</a></p>&mdash; Notion (@NotionHQ) <a href="https://twitter.com/NotionHQ/status/1460657784815435782?ref_src=twsrc%5Etfw">November 16, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ついに、シンプルテーブルなテーブルが実装されました！ 🎉<br><br>データベースほどリッチじゃ無くてもいいけど、表組み表示をしたい。<br>そんなニーズに応えられるのがシンプルテーブルです！<br><br>/table からご利用ください🏓 <a href="https://t.co/CdSrd2TtUh">https://t.co/CdSrd2TtUh</a></p>&mdash; Notion Japan 🇯🇵 (@NotionJP) <a href="https://twitter.com/NotionJP/status/1460756835208609792?ref_src=twsrc%5Etfw">November 16, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
魚字ぷよぷよに挑戦してみた

[UMITRON Advent Calendar 2021](https://adventar.org/calendars/6652) 3日目の記事です。

https://adventar.org/calendars/6652

私はウミトロン株式会社で、お魚の養殖に使う IoT デバイスの仕事をしています。

仕事とは関係ないのですが、魚の漢字でぷよぷよを作ったので、そのお話を書きます。
![puyopuyo-monaka-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117087/bfc3a39f-6b45-5de0-ad29-e18018adbb4d.gif)

# いきさつ
先日、青森県のりんごを題材にしたぷよぷよが話題になりました。青りんごも追加されてパワーアップしているようです。

https://twitter.com/marugotoaomori/status/1464393395984470018

自分の周りでも、種類が多くてごちゃごちゃするものがあったような...?
と考えて、思い出したのが、魚の漢字です。

ぷよの画像のところにそのまま文字を置いたら面白いんじゃないか、と思ってやってみました

# やったこと
Monaca を使った方法を紹介します。

https://edu.monaca.io/puyo

1. 上記のぷよぷよプログラミングのページを開き、まずは Monaca に登録 （メールアドレスとかだけなので簡単です）
1. セガ様が公開しているプロジェクトをインポートするため、基礎コースを選択 (コースはなんでもいいのですが、私はプログラミングを学ぶことが目的ではなかったので最小のもの）　
1. リンクが貼ってあるガイド小冊子の PDF を開き、言われるがままに実装を追加（基礎コースであれば4行）
1. index.html 26行目付近で下記の修正を行う

```diff:index.html
         <div id="score" style="margin: 0 auto; overflow: hidden; text-align: right;"></div>
         <div style="display:none">
-            <img src="img/puyo_1.png" id="puyo_1">
-            <img src="img/puyo_2.png" id="puyo_2">
-            <img src="img/puyo_3.png" id="puyo_3">
-            <img src="img/puyo_4.png" id="puyo_4">
-            <img src="img/puyo_5.png" id="puyo_5">
+            <a id="puyo_1" style='width: 52px; height: 52px; font-size: 44px; padding: 0px 4px; margin-top: -7px;'>鯖</a>
+            <a id="puyo_2" style='width: 52px; height: 52px; font-size: 44px; padding: 0px 4px; margin-top: -7px;'>鯛</a>
+            <a id="puyo_3" style='width: 52px; height: 52px; font-size: 44px; padding: 0px 4px; margin-top: -7px;'>鮪</a>
+            <a id="puyo_4" style='width: 52px; height: 52px; font-size: 44px; padding: 0px 4px; margin-top: -7px;'>鮭</a>
+            <a id="puyo_5" style='width: 52px; height: 52px; font-size: 44px; padding: 0px 4px; margin-top: -7px;'>鰤</a>
             <img src="img/batankyu.png" id="batankyu">
             <img src="img/zenkeshi.png" id="zenkeshi">
```

30分ほどで完成！！
CSS の調整に少々時間を使ったので、上記を参照すればもっと簡単にできると思います。

なお、デフォルトでは「ぷよ」は4種類なので、上記例で鰤を出現させるためには config.js の　 `Config.puyoColors` を5にする必要があります

----

ここまでで、画像の代わりに文字を使う方法が確立されています。

よく考えると魚じゃなくてもいいので、魑魅魍魎ぷよぷよも作ってみました

<img width="180px" alt="魑魅魍魎ぷよぷよ" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117087/6b34a701-fa6e-0709-06c7-86c99420b27b.png">


----

ウミトロンでは一緒に働く仲間を募集しております。

https://umitron.com/ja/career.html

https://open.talentio.com/1/c/umitron/requisitions/746
Visual Studioでメモリを見る

C/C++だと良く使うメモリの状態を確認する方法
(あえて記事にするようなものでもないかもしれないけど)

Visual Studio 2019を使っているけど、他のバージョンでもさほど差はないはず。

基本情報とかで2進数や16進数などを勉強する場合なども
実際にメモリを見たほうがわかりやすい事もあると思うので、そういう場合にも使えなくはないかも？

# メモリウィンドウを出す

## 1. 適当にブレークポイントを置いて処理を止める

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57524/0e99dd01-18fb-bad8-620c-42f56fddeab4.png)

## 2. メモリウィンドウを表示する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57524/832e5801-16e6-6303-8d31-7db43bd01cf8.png)

メニューバーのデバッグ(D) → ウィンドウ(W) → メモリ(M) と辿っていきメモリウィンドウを表示する

## 3. メモリウィンドウがでる

多分このようなものが出るはず。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57524/ffd1cd4d-7758-564f-8b84-2fd3e224aca3.png)

アドレス欄にメモリのアドレスを入力すると、そのアドレス付近のメモリの内容が表示されるというもの
C/C++で何かを作っているときはとても重宝する。

# 変数の中身を見てみる

`num`という変数がメモリウィンドウで確認してみる。
C/C++では変数名の前に&をつけると、その変数のアドレスになるので
メモリウィンドウのアドレス欄に「&num」と入力するとこうなる↓

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57524/341bc4e7-355f-87e3-9e1d-80955f967315.png)

この状態でEnter!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57524/1ab9740a-ef9e-d829-ca4f-97da65730f5c.png)

アドレス欄は`num`のアドレスになる。
`num`には`0xFF`を入れていたので、メモリでも`ff`(一番左上)が入っている事が確認できた。

※メモリウィンドウは0xFFじゃなくて0xffと小文字で表示されるけど同じもの。

# おまけ

## エンディアンを見る

4byteの`int`の変数`num`を見てみる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57524/3823ccae-1b08-94a9-258f-f9244d83c3c1.png)

`num`には`0xA0B0C0D0`を代入しているけど、メモリウィンドウでは`d0c0b0a0`となっている。
これはエンディアンというもので、ざっくりいうと人間は1234の方が見やすいけど、メモリは4321と
桁を逆にして持っていた方が都合がいいケースがあり、Windowsは逆持ちが基本なのだ。

このあたりはエンディアンとかリトルエンディアン、ビックエンディアンなど調べてみるといいだろう。

## 配列を見る

char型の配列、要素は4つで4byteである。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57524/0a7fdac0-8c6f-12bf-3d1c-58562255953d.png)

メモリウィンドウを見ると、`01 02 03 04`と配列の中身が並んで格納されていることが確認できる。
Qiitaで知らない言葉の多さに面食らったら

# はじめに

[UdonTech Advent Calendar 2021](https://qiita.com/advent-calendar/2021/udontech) の1日目です。

プログラミング初学者の方と話していた時、「Qiitaを見ても知らない言葉だらけで何を書いてあるのか分かりません」と相談を受けましたので、その時の回答を記事にしてみます。

Qiitaを見て、知らない言葉の多さに面食らった方が想定している読者となります。


# QiitaとWeb系技術のトレンド

Qiitaには日本のWeb系開発の技術トレンドがよく反映されています。
日常的にQiitaの記事フィードを眺める習慣があると、日本のWeb系開発では今どんなことが流行っているか、感じ取る事ができます。
技術のトレンドを追っかける目的でも使えますし、自分の技術はトレンドから置いてけぼりになっているのではないかとセルフチェックにも使えます。

プログラミングを学び始めた方や、Web系開発のトレンドを意識する必要のない技術者の方がQiitaの記事を見始めると、最初の頃は知らない言葉のオンパレードで面食らうことでしょう。
かくいう私も業務系からWeb系に移った組なのですが、シフトした頃は知らない言葉ばかりで驚きました。

そんな知らない言葉の海を、自分の知識を広げるための味方に変えましょう。


# Qiitaで出会った知らない言葉を1日10個ググろう

やり方は簡単。
毎朝Qiitaを見て、タイトルに出てくる知らない言葉をググりましょう。

基準は1日10個とか、1日30分とかご自身の続けられそうなもので大丈夫です。
毎日続けると、少しずつリテラシーが上がっていきます。

学生の頃、就職活動を始めるときに誰かから「日経新聞を読んで知らない言葉を調べよう。少しずつ経済用語がわかるようになる」なんて言われたことはありませんか？
それと同じような習慣です。



# 技術用語を理解しやすくするググり方

さて、ここで次の問題が発生します。
ググったけれど、解説してある文章が理解できない問題です。

それは「説明に使われている言葉が、これまた知らない言葉だらけである」か、「説明が抽象的すぎて、わかっている人にしかわからない」ことが往々にしてあるからです。

APIという言葉をググったときに「アプリケーションやソフトウェアの構築と統合 (インテグレーション) に使われるツール、定義、プロトコルです。」と説明されても、残念ながら何のことかわかりません。

こんなときはGoogleの検索結果を「すべて」から「画像」に変更してみてください。
図解が大量に出てくると思いますので、なんとなく雰囲気が掴めると思います。
そして、気に入った図解の解説サイトで、じっくり解説を読み込んで理解を深めてください。

最初はそんなところから少しずつ知っている言葉、理解できる言葉を増やしていくと、技術トレンドの話にも多少ついていけるようになると思いますので、是非チャレンジしてみてください。
Databricksは自己所有している静的パブリックIPアドレスからアウトバウンドできる数少ないPaaSのデータ分析サービス

## 概要
Databricksでは、自己が所有している静的なパブリックIPアドレス（PIP）からアウトバウンド可能な数少ないPaaSのデータ分析サービスであるため、他のクラウドサービスと連携を行う際にセキュリティを担保しやすくなります。

たとえば、Snowflakeと連携する際に効果を発揮します。

Snowflalek社のドキュメントである[Microsoft Azureからの一括ロード — Snowflake Documentation](https://docs.snowflake.com/ja/user-guide/data-load-azure.html)の手順でAzure StorageとSowflakeを接続した場合には、下記のリスクがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/4b133a3a-ae27-edf4-4bab-e98fe66bda39.png)

Snowflakeのネットワークポリシー機能（アカウントレベル、あるいは、ユーザーレベルでネットワーク構成できる機能）により、Databricksの静的アドレスからの接続のみに制限することができます。Snowflakeにて、Azure Private Link機能を利用するにはビジネスクリティカル以上が必要となるのに対して、ネットワークポリシーはスタンダード以上で利用できることからも、コストの最適化を実施することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/794ce715-9da5-f7f8-4cb5-cd545699ca5c.png)

クラウド上でのセキュリティとして多層防御の必要性がより重視されている最近の事情からも、IPフィルタリングを可能となることでネットワークにおいてもセキュリティ向上をできる本機能は重宝しそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/edcdd46d-ff54-00de-409c-e7378fb44b82.png)
引用元：​	[多層防御 - Learn | Microsoft Docs](https://docs.microsoft.com/ja-jp/learn/modules/azure-well-architected-security/2-defense-in-depth)

## 注意事項
検証をAzure Databricksで実施しているため、AWSやGCPのDatabricksでは本記事内容と同等のことを実施できない可能性もあります。

AWS版については、下記のドキュメントによれば同様のことが実施できそうです。

[Proxy traffic through a NAT gateway | Databricks on AWS](https://docs.databricks.com/administration-guide/cloud-configurations/aws/nat-gateway-proxying.html)

## 構築方法
Azure Databricks構築する際に、`ネットワーク`タブにて、`Secure Cluster Connectivity による Azure Databricks ワークスペースのデプロイ (パブリック IP なし)`の
項目にて、`はい`を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/27d60a70-691c-d34b-3ed6-94ea07f79661.png)

## 構築後のリソースについて

`管理対象リソース グループ`にて、`NAT ゲートウェイ`と`パブリック IP アドレス`が作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/88209787-8b27-5469-10bd-f79644e3e70c.png)

NATゲートウェイにて、設定されている送信IPからアウトバウンドされるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/c64290ef-6bb3-1437-a4c5-1eb354a56a3d.png)

Databricks上でPIPを確認すると、上記と同じ値を取得できます。

```python
from requests import get

public_ip = get('https://api.ipify.org').content.decode('utf8')

print(public_ip)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/c263aa9a-d1ae-3442-4e1f-01ffcf7133b1.png)
材料屋からエンジニアになってみて

# 前職の内容
大学院での研究内容を活かしてそのまま材料系の会社に入社しました。配属先では航空機のエンジン部材の製造プロセス設計に従事していました。下図の「Low-Pressure Turbine」に相当する部分の部品を作っていました。
![unnamed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326593/b08b3e15-726e-626e-b7b8-d5f4393fd530.png)

# エンジニアになろうと思ったきっかけ
Paizaのスキルチェックにハマって、そこからずぶずぶとプログラミングの楽しさを覚え始め、これを手に職にしたいと思ったのがきっかけです。

初めて関わったプログラミング言語はPythonです。業務の一環である「顕微鏡を用いて金属の品質を測る」検査をやっていたときに、「これって流行りの画像認識とかでもっと楽にならんかな〜」と思い調べてたところ、OpenCVの存在を知り、そこから興味ドリブン(not 業務ドリブン)でプログラミングを勉強し始めました。ちなみに[こちらの記事](https://qiita.com/tktk0430/items/ef15f9ce15c4aa79881d)がその時に書いたものです。なんとなく文章が初々しい。

そんなある日Paizaスキルチェックに出会います。アルゴリズムプログラミングに初めて触れた自分は、その世界に完全に魅了され、昼も夜も平日も休日も問題を解き明かすくらいにはプログラミングにドハマリしました。（画像はPaizaスキルチェックのレーティング推移。前半はギチギチにやってますね）
![スクリーンショット 2021-12-01 21.36.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326593/2ee8b223-5350-f0c3-1dc1-bc1a2755bb18.png)

こんなにハマれるものなら仕事にしたいと思い、齢30を目前にしてITエンジニアへの転身を決断しました。

# エンジニアとして働いてみた感想（前職と比べてどう変わったか）
やりたかった「プログラミングを書いてものづくりする」というちゃんと仕事に関わることができました。

あとはこれまで以上に自由度の高い働き方ができるようになったのは間違いないです。前職はいつ転勤辞令が下るかもわからない状況でしたので。。
働き方、働く場所、いろいろなものを「自分で選べるようになった」というのは大きな変化です。

# 今後はどんなエンジニアを目指したいか
プロダクト作りに関わっている多くの人たちと協調・コミュニケーションしながら実際にものを作るエンジニアとして活躍したいと思っています。また、言われたことをこなすだけ、どこかの記事に書いてあったことをそのまま展開するだけのようなエンジニアではなく、それらを組織や人やプロダクトに合わせて最適化できる応用力をもったエンジニアを目指しています。
プリザンターの通知機能が存在する世界に生きていてよかった。

本記事は Pleasanter(プリザンター) Advent Calendar 2021の2日目の記事です。

プリザンターは、ノーコードで素早く簡単に業務アプリが作成できるうえに、ローコードで強力に柔軟に機能を拡張することができるオープンソースの開発プラットフォームです。

プリザンターなら、マウス操作だけで業務アプリを作成し現場のスピード感で素早くシステムを業務にフィットさせることが可能です。さらに、僅かなコードを記述するだけでそのシステムをもっともっと便利に機能拡張することもできるのです。それがプリザンターの掲げる「小さく始めて、大きく広げる」という"やり方"のひとつでもあります。

プリザンター：
https://pleasanter.org/

## はじめに
今回の記事では、プリザンターの通知機能について紹介します。
プリザンターには、標準機能として、情報の作成・更新・削除を監視して、メールはもちろん、Microsoft TeamsやSlack、Chatworkなど各種のコミュニケーションツールに通知を出す機能が実装されています。
おそらくプリザンターユーザの多くも便利に使っているのではないかと思います。

テーブルの管理：通知 | Pleasanter
https://pleasanter.org/manual/table-management-notification

なんらかのレコードが更新されたタイミングで通知されるのでこれだけでも非常に便利なのですが、実は意外と知らない方もいるのではないかな、という通知機能のちょっと便利な使い方のご紹介です。

## オトナな通知の使い方

![スクリーンショット 2021-12-01 20.31.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/834556/1e249191-5f22-183d-02ae-11dd2f3ea87d.png)

通常ですと、上図のように監視する項目を有効化して、その項目が更新されたタイミングで指定したメールアドレスなどに通知されます(新規作成と削除時も)。
ですが、実はビュー機能を組み合わせてあげることで更に条件を絞り込むことができるのですが、皆さんご存知でしたでしょうか。
まずはビューを作ってみましょう。

![スクリーンショット 2021-12-01 20.28.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/834556/f0472611-6923-8190-e0ba-a6999ce02a34.png)

担当者が「山田やま男」さんで、「期限が近い」レコードのみを抽出するというフィルタ設定をビューとして追加します。
そして、もう一度、通知の新規作成画面に戻ると。

![スクリーンショット 2021-12-01 20.31.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/834556/29836660-b8e5-80b4-ecfb-be0b7a8e648f.png)


先程までは無かった項目が表示されています。
この項目は、ビューが作成されていないと、そもそも表示されない項目であるため、結構知らない方も多い気がします。
先程作ったビューを指定してあげることで「担当者が山田さんで、期限が近いレコード」が更新された時のみ、通知することができるのです。
頻繁に更新されるプロジェクト管理テーブルなどでは山程通知メールが飛んできて重要な通知を見落としてしまうというケースもあるかもしれません。そんな際は、このビューをうまく活用することで、必要な更新情報のみ通知するような設定を実現できます。
例えば、
・期限が近いレコードが更新された場合のみ通知
・状況項目が「実施中」から「レビュー」に変更された場合のみ通知
・購入備品の「金額」が200,000円を超えるレコードが作成された場合のみ通知
といったように条件を絞り込むことが可能です。

更にいうと、デフォルトでは数値項目のフィルタは10〜、1000〜、2000〜のような区切りでのフィルタになるのですが、実は、それぞれの項目には別途フィルタのモードを選択することができるのです。

テーブルの管理：フィルタ | Pleasanter
https://pleasanter.org/manual/table-management-filter

例えば、日付項目も規定ですと、月単位であったりQ単位であったりのフィルタになるのですが、範囲指定にしてあげれば、12月1日〜12月25日までのように具体的な期間を指定することができます。
同様に進捗率も範囲指定に設定することで、「締め切り1週間前なのに進捗率が70%以下のタスク」のみ通知するということが可能です。

一覧画面での表示項目を切り替えたい場合に使われるビュー機能ですが、実は通知機能を更に便利に使える機能でもあるのです。

テーブルの管理：ビュー | Pleasanter
https://pleasanter.org/manual/table-management-view

更にいうと、メール通知の場合ですが、通知設定ダイアログには「アドレス」と表記されているので「test@example.com」のようにメールアドレスを指定するものとばかり思われがちですが、実は「担当者」「管理者」などを指定することも可能だったりします。
```test＠example.com, [担当者], [管理者]```
のように指定してあげることで、それぞれに紐付いたメールアドレスに通知することも可能ですし、「分類A」などをメールアドレス入力用の項目として設定しておけば、「分類A」に入力/選択されているメールアドレス宛に通知することも可能なのです。
思った以上にプリザンターの通知機能って便利ですよね？
通知の届かない異世界に転生しない限りは、是非、ご活用ください！

## さいごに
プリザンターは標準で備えている機能が非常に豊富なため、あまり知られていない機能も結構あるのではないかと思います。
実は複数の機能をうまく組み合わせることで、もっともっと便利に使えるのですが、"汎用"を謳うプリザンターだけにありとあらゆる業務で使われるため、そのすべてを網羅して紹介するのはなかなか難しいところです。

しかも、標準機能の組み合わせでもこんなに便利に使えるうえに、サーバスクリプトなどほんの数行のコードを記述するだけでも更に便利に機能を拡張できる、そんな、ローコード開発プラットフォームのプリザンター。皆様のお仕事の快適化に是非お役立て頂ければ幸いです。

それでは本日の記事はこれにて。最後までお読み頂きましてありがとうございました。
sarを自分スクリプトにしてcronで動かす

http://infra.blog.shinobi.jp/Entry/125/

元祖の手順書そのままで申し訳ありませんが。。。

**1秒ごと かつ 1日（86400秒）で設定**

```loadget.sh
#!/bin/sh

/usr/bin/sar -A -o sar_`date +%Y%m%d`.txt 1 8640
```

cronに登録
crontab -e

```
1 * * * * /root/loadget.sh
```

吐き出したログを確認する。

CPUコアごと版

```
sar -P ALL -f log.txt
```

cpuマージ版

```
sar -p -f log.txt
```

ネットワーク

```
sar -n DEV -f log.txt
```

メモリ

```
sar -r -f log.txt
```

停止方法 ※これしか思いつかなかった。。。

```
ps -ef | grep sar
kill PID
```
既存テーブルにカラムを追加するには

都道府県を選んだときに、選んだ都道府県に応じた市区町村が表示されるような、
都道府県と市区町村の連動をするための、カラム追加を行います。

具体的には、citiesテーブルにprefecture_idを追加します。

```
php artisan make:migration add_prefecture_id_to_cities_table --table=cities
```

下記コマンドの（）内が、状況に応じて入る値が変化するところです。
php artisan make:migration add_（追加するカラム名）_to_（追加するテーブル名）_table --table=（紐づけたい既存のテーブル名）

◆注意点◆
コマンド後半部分の、cities_tableの、tableと記載することを忘れてしまいがちなので、
ここは個人的に注意したいと思います。

その後は、php artisan migrateを実行。

最後に、citiesテーブルにprefecture_idが入っているかを確認します。

```
sqlite> PRAGMA TABLE_INFO('cities');
0|id|integer|1||1
1|name|varchar|1||0
2|created_at|datetime|0||0
3|updated_at|datetime|0||0
4|prefecture_id|integer|0||0
```
見事、入っていました！
git pushのやり方  Please make sure you have the correct access rights and the repository exists.

```
git remote add origin https://github.com/Harasou21/repo_name
```

をやって、

```
$ git push origin master

```

を実行したら

```
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```

と表示が出てきた人も多いと思う。


これは、誰でも彼でもpushできるようになったらいけないので、
pushできる権限を付与してあげる必要がある。
言い換えれば、自分がgithubのアカウントの持ち主だよ。と認証してあげる必要がある。

# push のやり方

![スクリーンショット 2021-12-01 21.11.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653881/2c202567-7e1e-d94c-360b-b305c7302351.png)

ユーザー画面のセッティングをクリック



![スクリーンショット 2021-12-01 21.11.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653881/0814748f-aba5-84b1-4024-f9b65759be2a.png)

セッティング画面の「Developer Settings」をクリック

![スクリーンショット 2021-12-01 21.13.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653881/a61a6f0d-ceb6-a275-a3a0-1d681a689d44.png)

Personal access tokensをクリックして
Generate new tokenをクリック

したらいろいろでてくるが、トークンの名前は適当でもよくて、
expire(トークンの有効期限)も、任意の有効期限でいいと思います。
もちろん短ければ短いほど、セキュリティは高まりますが、有効期限切れるたびに再登録はめんどくさい。
いろいろなチェックリストもありますが、全部にチェックしといて大丈夫

![スクリーンショット 2021-12-01 21.15.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653881/14653c7d-a224-231b-d8b6-b7bcc8a86e2a.png)

したらこのようにトークンがでてるくので
メモ帳とかにはりつけておいてください。
あとで使うので


ターミナルに戻って

```
soichirohara@SoichironoMacBook-Pro ideaFrameworks % git push origin master
Username for 'https://github.com': 
Password for 'https://Harasou21@github.com': 
````

Usernameの部分は、自分のユーザーネーム

passowordの部分は、自分がさっき取得したトークンを入力します。

そうしたら、pushされるはずです。
点群のNeighborhoodについて

最近ロボットと点群の勉強にはまっています。

https://link.springer.com/book/10.1007/978-3-319-29246-5


Reconstruction and Analysis of 3D Scenesに、点群のNeighborhoodについて書かれていたのでまとめました。2次元の画像処理と違い、点群の場合は隣の画素という概念がありません。そのために、近くの点を定義する必要があります。

# neighborhood の定義とパラメータ
この本では3つの定義が紹介されています。それぞれの定義とパラメータを説明します。

## a spherical neighborhood definition
一番直感的な考え方で3次元的にある範囲にある点をneighborhoodと見なします。
この時のパラメータは、球の半径をあらわす $R_s$ になります。

## a cylindriacl neighborhood definition
球ではなく円柱状に領域を取ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/327/c9e398e2-77e1-0214-29f6-29422d530fa5.png)

Fig6-2から
この図の真ん中のイメージです。
パラメータは円柱の半径 $R_c$ がパラメータになります。

## a neighborhood definition
3次元の距離が近い物から一定数をneighborhoodとします。
一定数 $k$ がパラメータになります。

# 使い分け
具体的な使い分けはあまり書いてなかったのですが、点群の状態に応じて適切な定義とパラメータを選ぶ必要があります。全領域で同じパラメータを使うのか（single-scale)、場所によって変えるのか（multi-scale)も大事な観点になります。

円柱状にneighborhoodを取るcylindriacl neighborhood definitionは、点群の特定の場所（物体の表面イメージ）の法線ベクトルを取り、そのベクトルを中心に半径を定義して使う事で、表面上の点群から近い所を見つける事ができます。このやり方だと半径 $R_c$ だけじゃなくて高さ $h$ もパラメーターにした方が良さそうですが、単一のステレオカメラやセンサーで生成される点群だと裏側にさらに点群があるケースはないので、こういうのもありなのかなと思いました。
C#でYoutubeDataAPIでチャンネル名と概要を取得

#C#でYoutubeDataAPIでチャンネル名と概要を取得
調べてもすぐ情報が出てこなかったのでサンプルで書いておく。

```C#:api.cs
        public void GetChannelDetail()
        {
            var url = "https://www.googleapis.com/youtube/v3/";
            url += "channels";
            url += "?part=snippet";　　　　　　　　　　　//とりあえずsnippetでいいらしい
            url += "&id=UCZf__ehlCEBPop-_sldpBUQ"; 　　//HIKAKINさんのチャンネルID
            url += "&key=xxxxxxxxxxxxxxxxxxxxxxxxxx";  //自分のAPIKEY

            WebRequest request = WebRequest.Create(url);
            Stream stream = request.GetResponse().GetResponseStream();
            StreamReader reader = new StreamReader(stream);
            var json = JObject.Parse(reader.ReadToEnd());
            var channelName = json["items"][0]["snippet"]["title"].ToString();
            var description = json["items"][0]["snippet"]["description"].ToString();

            Console.WriteLine($"チャンネル名:{channelName}");
            Console.WriteLine($"概要:{description}");
        }
```
データラーニングギルドAdventCalendar2021始まります！

データラーニングギルド代表の村上です。

みなさん、今年一年、いかがお過ごしだったでしょうか？

データラーニングギルドのアドベントカレンダーですが、今年でついに3年目となりました。当初は未経験だったのに現在はデータサイエンティストに転職してバリバリ働いる方もいますし、3年もあると色々と状況も変わりますね！

この記事では、本Advent Clendarの趣旨を説明させて頂こうと思います。

## このAdvent Calendarに関して
[データラーニングギルド](https://data-learning.com/guild)に所属するデータ分析に関わっているメンバー25人に、データ活用、DX、この1年で学んだことなどに関して執筆頂く予定です！

2019年、2020年から引き続き執筆頂いている方もいらしゃるので、そういった方の成長を見てロールモデルにできると良いなぁと思っています。

■2019年
https://qiita.com/advent-calendar/2019/data-learning-guild

■2020年
https://qiita.com/advent-calendar/2020/data-learning-guild2020

## データラーニングギルドって？
詳しくは[データラーニングギルド](https://data-learning.com/guild)のページを参照して頂ければと思うのですが、簡単に言うと、「データ分析領域で働く人達の互助組織」です。名前に「ギルド」とついているように、ギルド型組織を目指して、データ分析人材がお互いに助け合えるような環境を目指しています。執筆時点での参加メンバーは約250名ほどで、情報交換を行ったり、仕事の紹介をしたりしています。

去年まではガッツリと「企画をやるぞ！」という感じだったのですが、今年の中盤頃から長期的なコミュニティになるべく、緩いつながりを継続することを個人的なテーマに運営を行っています。

## どんな人がどんな記事を書くの？
現役バリバリのデータサイエンティストから、駆け出しのデータサイエンティストまで、製造業からWeb系企業、受託分析企業で働く人まで様々な方に執筆頂く予定です！

- 2年前の時点では全くデータサイエンスの実務経験が無かった人けどデータサイエンティストとして転職できた人
- 現役のデータサイエンティストとして働いている方
- 現役のデータエンジニアとして働いている方
- 大企業の中でDXの推進を担当している方
- 受託分析会社側で分析のサポートを行っている方
- 事業会社の中でデータ分析人材として働かれている方

## どんな記事を書くの？
テーマに関しては比較的自由ですが、データの話とかDXの話とかです！目次を見ている限り、以下のようなことを執筆頂けるようです！

- データラーニングギルド内で実施した分析プロジェクトに関して
- この1年で学んだことに関する振り返り
- データ人材としての個人の振り返り
- データ人材としての転職とその後の話
- DXプロジェクトで取り組んだ内容

こうやって3年目を迎えることができて、嬉しい気持ちでいっぱいです！それでは、Adventカレンダーをお楽しみください〜！
【Node.js】ExpressとFirebase Admin SDKで画像アップロードを実装する

# ■はじめに
普段はVue.js, Nuxt.jsを使っているのですが、Expressで画像アップロードを実装しようとしたらいつもと勝手が違ったのとサーバー側でFirebaseを使う時はFirebase SDKではなくFirebase Admin SDKを使わないといけないことを理解しておらず詰まったのでメモ。

```plugins/firebase.js:
const admin = require("firebase-admin");
require("dotenv").config();
const ServiceAccount = require("../ServiceAccount.json");

if (admin.apps.length === 0) {
  admin.initializeApp({
    credential: admin.credential.cert(ServiceAccount),
    storageBucket: process.env.FIREBASE_ADMIN_STORAGE_BUCKET
  });
}

module.exports = admin;
```
```testRoute.js:
const express = require("express");
const multer = require("multer");
const router = express.Router();
const testController = require("../controllers/testController");
const upload = multer({
  storage: multer.memoryStorage(),
});

router.post("/", upload.single("file"), listController.list_create_post);

module.exports = router;
```
```testController.js:
const admin = require("../plugins/firebase");
const db = admin.firestore();
const bucket = admin.storage().bucket();

const test_create_post = async (req, res) => {
  const file = bucket.file(
    `thumbnail/${req.file.originalname}`
  );
    await file.save(req.file.buffer);
};

module.exports = {
  list_create_post,
};
```
```html:create.ejs
<!DOCTYPE html>
<html lang="ja">
  <body>
    <div class="create-blog content">
      <form action="/lists" method="POST" enctype="multipart/form-data">
        <label for="file">File:</label>
        <input type="file" id="file" name="file" required />
        <button>Submit</button>
      </form>
    </div>
  </body>
</html>
```
# おわりに
ExpressとFirebaseで画像アップロードをするには下記が必要なことがわかりました。
①formタグをmultipart/form-dataにする。
②multipart/form-dataの処理ができるmulterをインポートする。
③Firebase SDKではなくFirebase Admin SDKを使用する。

サーバーの方にとっては基本的なことかもしれませんが、フロントだけやってるとこんなところで躓くのかーという感想です。GCSにあげる際はCloud Functionsでとか、そもそもFirestoreは使わないでMongoDBにあげるなど色々あるので試してみたいです。
# 参考URL
https://dev.to/rizkyrajitha/lets-upload-files-using-expressjs-server-4l0i

https://levelup.gitconnected.com/upload-files-to-firebase-cloud-storage-using-vue-js-and-node-js-9b61ea3c77df
今年も1年をふりかえってみよう（ふりかえりアドベントカレンダー2022）

この記事は「ふりかえりアドベントカレンダー2022」の1日目の記事です。

https://adventar.org/calendars/6327

# ぐぐぐっとハードルをさげる

今年は「これからふりかえりしてみよっかなー」と思う人たちのために、ハードルを極限まで下げたいと思います。

ふりかえりをしたいなー、でも時間がなー、という人たちもいるかもしれません。
そんな人は

- 1行でもOK
- なんならつぶやき（TwitterとかFacebookとか）でもOK
- どんなことでもOK

です。
まずはふりかえってみて、アウトプットしてみて。
そうすると、色々と記憶が掘り起こされていきます。
それを書きたければ書き留めればいいし、改善や未来につなげたいならつなげばいい。
ふりかえりは自由です。

# ふりかえりアドベントカレンダーに書くとよいこと

ふりかえりに関することならなんでもOkです。

**ふりかえりをしてみるもの**

- 1年をふりかえる
- ここ半年をふりかえる
- ここ数か月をふりかえる
- ここ1か月をふりかえる
- ここ1週間をふりかえる
- 今日のふりかえりをしてみる

**ふりかえりに関する話**

- 最近ふりかえりで好きな手法
- ふりかえり始めてみてどうだったか
- ふりかえりの悩み
- ふりかえりのテクニック
- 自慢したい成功・共有したい失敗談
- などなど

**その他、ふりかえりに関連するなーと本人が思ったことであれば、なんでもOKです。**

まだ枠は空いていますので、今年の総決算に、一度ふりかえりをしてみてはいかがでしょうか？
登録はこちら！
https://adventar.org/calendars/6327

# 私のふりかえり（ハードル下げ下げバージョン）

今年をふりかえってみます。

- Miroの代理店POになった。楽しいしやりがいがある。好きなプロダクト扱うっていいですね。
- ふりかえり手法をたくさん生み出した気がする
- vTuberになった
- 今年もいろんなカンファレンス登壇させていただいた
- デブサミとか。
- ふりかえりガイドブックを発行した。本っていいよね。

ぱっと思いつくのはこんなところですね。これをベースに、後日もう少し掘り下げてふりかえってみようと思います。
ただ、始まりはこんな感じでいいんだと思います。

みなさんも楽しいふりかえりライフを！
MySQLのInnoDBの日本語全文検索インデックスを試す（上から順にSQLはるだけ）

GMOさんのこちらの記事を試した上で、もう少しデータを増やしたものです。
https://techblog.gmo-ap.jp/2020/01/06/mysql-innodb-fulltext-search-tuto/

### 全文検索とは
長い文章に含まれる単語ごとの出現回数リストを用意することで、SQLのlike文より柔軟にほしい文書を早く検索する機能です。現実の用途としてはGoogleなど検索エンジンが代表的なもので、Amazonで何を検索しても商品名から解説文までマッチして一瞬で結果一覧が出るのも、Macのファイルやアプリを探すSpotlight検索やそのCLI版であるmdfind命令も似たような仕組みで動いていると思われます。

以前はMySQLに専用製品を組み合わせたり、ElasticSearchなどの別製品で扱われることが多かったのですが、2015年のMySQL5.7から標準で日本語の全文検索がつきました。

### しくみ
文章を分解して、単語ごとの出現回数リスト(Index=もくじ)を作り、本文でなくそのインデックスに問い合わせることで、通常のlike文などの直接全テキストを探す方法よりも、ほしい文書を早く柔軟に見つけ重要な順に表示します。

登録時に時間をかけてインデックス化して整理することで、問い合わせの応答を早くするという仕組みなので、あまり更新されない大量のデータ(50年分の新聞記事、100年分の裁判例)や、更新されるけれど問い合わせの方がはるかに多いサービス（数億サイトを扱うWeb検索エンジン、マッチングサイト200万人のプロフィール検索）に向いています。

### 日本語と英語

単語出現のリストを作るにあたって、英語などの単語を空白で区切る言語ではリスト作成が簡単で、日本語や中国語は単語の区切りがないぶん工夫が必要で、機械的に数文字ごとにリスト化するN-gramや、単語辞書と文法を用意した上でリスト化する形態素解析（文章を最小要素に分解すること）などの手法があります。

### 歴史
もともと2000年ごろにGoogleなど検索エンジン周辺の必要からオープンソースで開発が進み、それが事業化する形でElastic社のElasticSearchなどが出てきて、MySQLも日本語全文検索できるよう改造したものが売られたり（ひろゆきさんの未来検索ブラジルという会社）しましたが、2015年のMySQL5.7で公式に日本語全文検索がつきました。

### InnoDBのテーブル作る

MySQLで日本語全文検索をつけられるストレージエンジンはInnoDBです。
TEXT型のbody（本文）という列に日本語全文検索をつけます。
全文検索の仕組みはインデックスなので列のデータ型はVARCHARでもTEXTでも構いません。

```
CREATE TABLE full_text_test (
  id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
  body TEXT
) ENGINE=InnoDB CHARACTER SET utf8mb4;
```

###データつくる

東京や大阪や京都といった単語が一回あるいは大量に使われた文章を登録します。

```
INSERT INTO full_text_test (body) VALUES
  ('東京都で遊ぶ'),
  ('京都で遊ぶ'),
  ('大阪で遊ぶ'),
  ('京都と大阪で遊ぶ'),
  ('東京都で働く'),
  ('京都で働く'),
  ('大阪で働く'),
  ('京都と大阪で働く'),
  ('京都と大阪で遊ぶけど、やっぱり京都が好きで5回京都に行ったし京都に住んだこともあるし、働いたこともある'),
  ('東京都で遊ぶといえば、東京駅から初めて東京都庁をめぐり・・・。'),
 ('大阪大好き！ 大阪大阪大阪大阪大阪大阪大阪大阪！！ 大阪大阪大阪大阪大阪大阪大阪大阪！！'),
 ('東京大好き！ 東京東京東京東京東京東京東京！！ 東京東京東京東京東京東京東京！！'),
 ('東京大好き！ 東京東京東京東京東京東京東京！！ 遊びまくる、遊ぶ遊ぶ遊ぶ遊ぶ遊ぶ！'),
 ('東京大好き！ 東京東京東京東京東京東京東京！！ 働きまくる！ 働く働く働く働く働く働く！');
```

### フルテキスト（全文検索）インデックスをはる

n-gram方式のインデックスをbody列につけます。

```
ALTER TABLE full_text_test 
ADD FULLTEXT INDEX ngram_idx (body) WITH PARSER ngram;
```

### 取り出してみる boolean mode

```
SELECT * FROM full_text_test WHERE MATCH (body) 
AGAINST ('東京' IN BOOLEAN MODE); // 東京と関係が深い順
```
![Screen Shot 2021-12-02 at 13.55.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31243/ab258ac3-af5e-4db1-b88b-dd85f6cf878d.png)


```
SELECT * FROM full_text_test WHERE MATCH (body) 
AGAINST ('大阪' IN BOOLEAN MODE); // 大阪と関係が深い順
```
![Screen Shot 2021-12-02 at 13.55.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31243/31c610ed-cfaf-3f61-6e4b-b1669b6ea7ad.png)


```
SELECT * FROM full_text_test WHERE MATCH (body) 
AGAINST ('京都' IN BOOLEAN MODE); // 京都と関係が深い順
SELECT * FROM full_text_test WHERE MATCH (body) 
AGAINST ('労働' IN BOOLEAN MODE); // 労働と関係が深い順
SELECT * FROM full_text_test WHERE MATCH (body) 
AGAINST ('+東京 都庁 '  IN BOOLEAN MODE); // 東京があって、都庁もあればなお良い

SELECT * FROM full_text_test WHERE MATCH (body) 
AGAINST ('+京都 -東京' IN BOOLEAN MODE); // 京都があって東京がないものを重要度順に
SELECT * FROM full_text_test WHERE MATCH (body) 
AGAINST ('+京都 +大阪 -東京' IN BOOLEAN MODE);
SELECT * FROM full_text_test WHERE MATCH (body) 
AGAINST ('+京都 大阪 -東京' IN BOOLEAN MODE);
```
AWS DOP合格記(2021/12/1投稿)

# はじめに
この度AWS認定のDevOps Proを受験してきましたので、勉強した内容と受験した感想を書いておきます。
これから受験される方の参考になれば幸いです。

今回でAWS認定は7冠を達成しました。

* [2019-07-04 AWS Certified Cloud Practitioner](https://qiita.com/handy-dd18/items/c2b62ad58206e47f1345)
* [2019-07-24 AWS Certified Solutions Architect - Associate](https://qiita.com/handy-dd18/items/96a9f374a64663b10e24)
* 2021-02-25 AWS Certified Data Analytics - Specialty (DAS)
* [2021-07-23 AWS Certified Developer - Associate (DVA)](https://qiita.com/handy-dd18/items/33ba3e6cfa100903912c)
* [2021-10-26 AWS Certified SysOps Administrator - Associate (SOA)](https://qiita.com/handy-dd18/items/2ff92ea79de13c326656)
* [2021-11-13 AWS Certified Security - Specialty (SCS)](https://qiita.com/handy-dd18/items/803eadbcdabf0b9f8671)
* 2021-12-01 AWS Certified DevOps Engineer - Professional (DOP)　← 今回

# 前提
* AWS経験は２年と半年程度
* 普段はデータ分析系のサービスを使うことが多い
* 最近は業務でセキュリティ周りのこともやる機会が増えてきた
* Code系はほとんど使わない
* コンテナ周りは少々触る

# 学習内容
今回は以下の順番で勉強を進めました。

* [①練習試験](AWS Certified DevOps Engineer - Professional 模擬試験)
* [②Web問題集](https://aws.koiwaclub.com/)

## 練習問題
これまではAWS公式の模擬問題を使ってましたが、最近公式から無料版の練習問題が提供され始めたので、今回はこちらを利用して最初に学習しました。
20問というのは変わってないですが、ちゃんと問題に対して正答と解説がついているので模擬問題の頃に比べてだいぶ親切になっています。

https://twitter.com/kuwablo/status/1460752040230014981?s=20

20問解いた後はこんな感じでどの部分が間違いが多いかを見れるようになっているので、間違った項目に関連するサービスを調べる→再度解く、というサイクルで進めました。
これは3回ぐらい解いて正答率が90%を超えるまでやりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440403/6f76fda0-067a-039c-9ebb-c53d131d9ca8.png)

## Web問題集
あとはいつもどおりkoiwaclubの問題集を利用しました。(というか残りはほとんどこれしかしていない

こちらも前回と同じように[scrapbox](https://scrapbox.io/?lang=ja)に回答結果をメモしながら進めました。
合格記を見ると何週もしましたというコメントを見るのですが、自分は忘れやすいので100%になるまで繰り返し解いて覚えています。
あとBeanstalkやCodeシリーズはAWS公式のチュートリアルを試しに動かすところまでやってます。
(![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440403/3faddba2-3e34-0829-1270-fb78dba94422.png)
)

時間の関係もあったので、問題集の25問目以降45問目しかやっておらず、このせいで明らかに知識が足りない部分があったので、時間がある人はちゃんと全部解いてみるのをオススメします。



# 受験した感想
問題集と類似している問題はそこまで多くなかったですが、問題集を解きながらデプロイ方式や各サービスを利用する際の特徴などはつかめていたのでそこまで悩みはしませんでした。
ただ明らかに知識が不足していると思われる問題はあったので、そういった問題は回答するのに4分ぐらいかかってました。
この機能知らないというものが出ても問題文を読んで冷静に選択肢を除外していると案外解けた気がします。
完全にわからないという問題は5問ぐらいでした。

# 受験結果
スコアは852と自分の思うよりも100ぐらい多かったです笑
絶対受かってもギリギリだと思ったんですけどね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440403/af17ed9a-97c2-6403-30f3-4e49dc4dfd87.png)

# おわりに
Codeシリーズは業務でほとんど使ってなかったので正直受かるとは思わなかったですが、何とか無事合格できて良かったです。

この勢いで次はDBスペシャリティあたりの合格を目指してみようかと思います！
githubからQiita記事に画像をupしてみた。

# Qiita記事に画像をupできない。
初めて記事を投稿してみようと思い、もそもそ下書きに画像をupしていたところ、

Something went wrong

と言われました。
直訳すると、"なにかがうまくいきませんでした"といったあたりでしょうか。
なにかってなんやねん。

調べてみました。

https://qiita.com/unsoluble_sugar/items/f61be798972883e44877

こちらの記事によると、一件でも投稿すると100MBまで上限が解放されるということなのですが、それが本当の原因なのかは一件目を投稿するまで分かりません。
というわけで作成したのがこの記事だったりします。

# せっかくなのでgithubを活用してみる。
先人の方々の記事をMarkdownで確認してみると、githubから画像を引っ張っている方が多いように見受けられました。
やってみました。

手順は以下の通りです。

![ここに文章書くの忘れてました。編集します。Markdownの確認をしてみて下さい、と書いておいてなんですが、特に書くことはないです。せいぜい、ここは画像の仮タイトルを入れるところらしいです。じゃあ本タイトルってなに？という感じですが。と思っていたんですけど、よく調べてみると仮タイトルではなく、代替テキストのことでした。はやとちりはよくない。要するに、画像をうまく読み取れなかったときとか、音声読み上げを使用したときに、このテキストが現れるのでしょうか？　長ったらしいですね。ちゃんと読み込めてますか？　この文章が現れたら多分失敗です。](https://user-images.githubusercontent.com/91016271/144224841-db0d73e3-315b-422a-9026-0b03461bfbb6.png)

# 補足
雑にURLをコピペしただけの場合、ただURLが表示されるに終わりました。
画像埋め込みで記述する必要がありそうです。

```
# 画像埋め込み
![代替テキスト](画像のアドレス)
```

まあ、githubで現れた「!」以下の文字列をそのままコピペすればいいだけなんですけどね。

#おわりに
このやり方を活用すれば、容量の大きいものも投稿できそうです。

この記事が少しでも参考になれば幸いです。

:::note info
この記事を投稿後、早速確認してみました。
"Something went wrong"
と言われることもなく、Qiitaに直接画像をupすることができました。
やはりアップロード容量の問題だったのかもしれません。
:::

追記
Notionからも試してみました。→[NotionからQiita記事に画像をupしてみた。](https://qiita.com/kmmz/items/c9bc930b9cd01b831a19)
QAエンジニアの心理的安全性

この記事は [カオナビ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/kaonavi) 18日目です。

はじめまして！　QAエンジニアのfenecrg1218と申します。
Seleniumを長年使ってきて、現在は業務を通じてTestCafeを勉強中です。今回のアドカレは賑やかし枠として参加してみました。

この度、コロナ禍をきっかけにフルリモートでのQA/QC活動を経験することができましたので、起きた問題と改善の取り組みについて、ゆるく振り返ってみようと思います。

# 質問するハードルが高い
コロナ禍以降に参画されたメンバーから「質問するハードルが高い」といった意見が挙がりました。

+ まとまった資料は多数あるが、どれを見ればよいか分からない。
+ どこで誰に対して何を質問、相談すればよいか分からない。
+ <font color="Red">余計なこと、見当違いなことを言うと怒られるのではないか。</font>

この時点では、フルリモートになったことで**チーム間やQAエンジニア間の繋がりが希薄になってしまったことが原因**ではないかと推測しました。

# 面識、コミュニティの有無でハードルが上がる
ヒアリングを続けて深堀りしていくと、下記の違いがあることに気付きました。

+ コロナ禍以前に参画したメンバーはハードルの高さを感じてはいない。
+ <font color="Red">コロナ禍以降に参画したメンバーはハードルの高さを感じている。</font>

弊社では過去にQA組織が存在しました。会社全体で品質意識を保持するため、現在はQA組織を解体、各チーム内にQAエンジニアが所属してQC活動を行っています。つまり、**対面での面識があり、対人関係が築けている。または、質問や相談ができるコミュニティを形成できている。**この有無が関係していることが発覚しました。

※アジャイル開発におけるQC活動では、企画者、開発者、デザイナーなど各職種と仲良くなり、そのチームに合った手段で仕様上の不明点や進捗を明確にしていく、テストのために環境やデータ準備などちょっとした協力を依頼していく能動的な姿勢が必須です。また、チーム外で同じくQC活動を担当するメンバー間で伝授・継承されていくその現場ならではのノウハウも重要となります。**横の繋がりなくして品質は担保できません。**

# 心理的安全性をつくる
人間関係で相性や価値観の相違はつきものです。必ずしも共通したやり方が通じるわけではありません。少しでも参考になればと思い、久し振りに「実践アジャイルテスト」や「SCRUM BOOT CAMP THE BOOK」を読み返したり、巷で話題の「心理的安全性のつくりかた」を読みつつ、同僚の皆様にも相談して、コロナ禍以降に参画したメンバーのハードルを下げる取っ掛かりとなる改善策を考えて以下を実行していきました。

参考1：[テスターとアジャイルチームのための実践ガイド 実践アジャイルテスト｜翔泳社の本](https://www.shoeisha.co.jp/book/detail/9784798119977) |
---

参考2：[SCRUM BOOT CAMP THE BOOK【増補改訂版】 スクラムチームではじめるアジャイル開発｜翔泳社の本](https://www.shoeisha.co.jp/book/detail/9784798167282) |
---

参考3：[心理的安全性のつくりかた - JMAM 日本能率協会マネジメントセンター 「人・組織・経営の変化」を支援するJMAMの書籍](https://pub.jmam.co.jp/book/b517388.html) |
---

+ QAエンジニアが集まり相談する場を設ける。
+ 質問しやすい雰囲気を心掛けて、成功体験を繰り返して信頼関係を築く。
+ 文字でのコミュニケーションにて、冷たい印象を避けるため、表現を和らげる。
+ **起きたことで誰かを責めず、自分自身を「問題」の中に入れる。（当事者意識を持つ。）**
+ MTGや口頭で決まったことは明文化して関係者に周知。認識を合わせる。
+ 「知っているはず」と思い込みをせず、経緯と背景を伝える。
+ 日報、分報などでお互いのタスクや進捗を共有する。
+ 気軽に質問、相談してね！ ではなく、俯瞰して、自分事として能動的に立ち回る。
+ **感謝を伝える。（仕事はひとりではできない。敬意を持って人に接する。）**

# 改善活動の結果
チームメンバー全員が平等となり、健全な議論や助け合いが行われるようになりました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2286939/93a64948-c35a-9e69-2e3f-58812c1c7905.png" width=50%>

例えば「XXXって分かりますか？」と質問されたとき、もし分からなければ叱られると萎縮して黙り込んでしまう場合、「教えてください！」と遠慮なく言える場合の二通りがあると仮定します。質問者は善意で教えてあげたいと思っていても、様々な理由で前者になりがちです。寡黙で口調がややキツめだが実は優しくて面白い人、おおらかな人、話すのが苦手/好きな人など、お互いに人となりが分からないと誤解や遠慮をしてしまうため、<font color="Red">**リモートワークこそ適度な雑談が必要だと学びがありました。**</font>

せっかくなので直近で見聞きした雑談アイデアを少しだけご紹介。

+ 分報で近況報告。とあるエンジニアさんの分報を見てオススメのみかんを買いました。
+ 出入り自由の「談話室」チャンネルにて小休憩を兼ねて雑談していました。
+ とあるチームではコーヒーブレイクの通話時間を設けて交流を図っていました。
+ 業務終了後、出社したメンバーでクリスマス会 + 外部勉強会を上映して登壇者を応援していました。

個人的には、通話中に乱入する犬猫配信は最高に癒されますね！！！

# おわりに
実際に改善活動をやってみて、QC活動で普段から心掛けていることと変わらないことに気付きました。相手を知り自分を知ること。レビューやバグ報告では言い方ひとつすら気を遣うため、QAエンジニアは心理的安全性に敏感な人が多いのかもしれません。

お読みいただきありがとうございました！
明日のカオナビ Advent Calendarもお楽しみにです！！
AWSってなんだっけ？

# はじめに

どーも、のぶこふです。

この記事は[GFAMアドベントカレンダー2021](https://qiita.com/advent-calendar/2021/gfam)の1日目の記事です。

弊社では、今年（2021年）よりAWSに注力していくという方針となり、
自身を奮い立たすためにも、技術ブログ的にAWS向けのアドベントカレンダーを立ち上げて、完走を目指します。


# で、AWSってなんだっけ？

タイトルです。
今更、「え、そこ？」となるかもしれませんが、
> 「敵を知り己を知れば百戦殆うからず」

![昔のエライ人](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306608/277021b8-50fd-930e-4268-1ded52df3a0b.png "昔のエライ人")

と昔のエライ人が言っていたように、まずは知るところから始めます。

# AWSとは
AWS（Amazon Web Service **s**：アマゾン ウェブ サービス）は、Amazon.comにより提供されているクラウドコンピューティングサービスです。[^1]

AWSには200を超えるサービスがあります。
皆様おなじみのEC2といったコンピューティングから、データベース、私も少しかじっていたブロックチェーン、IoTやXR関連まであります。[^2]
めっちゃ多いですね。

試験ではサービス名はバンバン出てきますが、触ったことがないのが大多数なので、今回のアドベントカレンダーで、色々と触っていこうと思います。

## AWSの強み
クラウドってなんだっけ？とか入ると、とてもまとまりきらないので、AWSの強みを見てみましょう。（まるっと引用します）[^3]

### 1.豊富な機能
> AWS には、コンピューティング、ストレージ、データベースなどのインフラストラクチャテクノロジーから機械学習、AI、データレイクと分析、IoT などの最新鋭のテクノロジーに至るまで、他のどのクラウドプロバイダーよりもはるかに多くのサービスを提供しており、それぞれのサービスが豊富な機能を備えています。より速く、より簡単に、より高い費用対効果で既存のアプリケーションをクラウドに移行し、想像できるものはほぼすべて構築することが可能です。
>
> AWS サービスは最も充実した機能を提供します。例えば、AWS はさまざまな種類のアプリケーション専用に設計された幅広いデータベースを提供しているため、ジョブに最適なツールを選択して、最高のコストとパフォーマンスを実現できます。

→めっちゃサービスあるよ！！

### 2.顧客とパートナーをつなぐ最大のコミュニティ
> AWS には最も活発で最大規模のコミュニティがあり、世界中に何百万ものアクティブなお客様と数万のパートナーがいます。ほとんどの業界で、スタートアップ、大企業、公共部門の組織が、お客様の規模を問わず考えつく限りの場面で AWS を実行しています。AWS パートナーネットワーク (APN) には、AWS のサービスを専門とする多くのシステムインテグレーターと、AWS で機能するように自社のテクノロジーを適応させた多数の独立系ソフトウェアベンダー (ISV) が参加しています。 

→いろんなコミュニティがめっちゃあるよ！！みんな使ってるよ！！

### 3.最もセキュア
> AWS のクラウドコンピューティング環境は、現時点で最高レベルとなる柔軟性とセキュリティを発揮するよう設計されています。AWS のコアインフラストラクチャは、軍隊、国際展開している銀行、およびその他高い機密性が求められる組織のセキュリティ要件を満たすように構築されています。こうしたセキュリティをクラウドで実現するための強力なツールには、230 のセキュリティ、コンプライアンス、およびガバナンスのサービスと機能が含まれています。また、AWS は 90 のセキュリティ標準とコンプライアンス認証をサポートしており、お客様のデータを保存する 117 の AWS のサービスすべてがデータ暗号化機能を提供しています。

→セキュリティはしっかりしてるよ（ただし上に乗せるアプリについては、利用者によるため、その限りではない）！！

### 4.最速の革新ペース
> AWS を使用すると、最新のテクノロジーを活用して、より迅速に実験と革新を行うことができます。AWS ではお客様のビジネスの変革に使用できるまったく新しいテクノロジーを発明するために、イノベーションのペースを絶えず加速させています。例えば、2014 年には AWS Lambda の発売によりサーバーレスコンピューティングの分野を開拓しました。これにより、デベロッパーはサーバーをプロビジョニングしたり管理することなくコードを実行できるようになりました。また、AWS は Amazon SageMaker を開発しました。この完全マネージド型の機械学習サービスにより、デベロッパーと科学者は、経験がなくても日常的に機械学習を使用できるようになりました。

→ばんばん新しいサービスが出て、色々できるようになるよ！！

### 5.最も実績のある運用上の専門知識
> AWS は、成長を続ける中で、どこよりもお客様に信頼いただけるセキュリティとパフォーマンスを提供してきました。こうして培ってきた比類のない経験をお客様の最も重要なアプリケーションにご利用いただけます。AWS は 15 年以上にわたり、世界中の数百万のお客様にクラウドサービスを提供し続け、さまざまな場面で活用されてきました。AWS は、クラウドプロバイダーの中で最も豊富な運用経験を持っています。

→経験値、あるよ！！

## おわりに
すごいざっくりとした説明ですが、AWSの強みは触ってこそ実感できると思います。
次回からは、実際にサービスを触っていき、理解を深めていこうと思います。

今回はここまでです。
ありがとうございました。



[^1]: [Wikipedia](https://ja.wikipedia.org/wiki/Amazon_Web_Services)より
[^2]: [AWSの製品・サービス一覧](https://aws.amazon.com/jp/products/?hp=tile&so-exp=below)
[^3]: [what-is-aws](https://aws.amazon.com/jp/what-is-aws/)
SalesforceのStreaming API使い分け

#Streaming APIとは
Salesforceでは、何らかのイベント(データ変更、画面操作等)が発生したタイミングでプッシュ技術を使用してSubscriber(他システム、他処理等)に対して通知を行う機能があります。これを[Streaming API](https://developer.salesforce.com/docs/atlas.ja-jp.230.0.api_streaming.meta/api_streaming/intro_stream.htm)と呼びます。

Streaming APIには以下の4種類が存在しています。
1. 変更データキャプチャイベント
2. PushTopic イベント
3. プラットフォームイベント
4. 汎用イベント


#Streaming API選定方法
とても便利なStreaming APIですが、上記の4種類のうちどれを選定するかはよく考えなければなりません。
選定の基準が複雑なので、まとめてみました。

|#|機能|主なユースケース|ユースケースの例|イベントの契機|送られるデータ|特殊能力|イベント保持期間|
|:----|:----|:----|:----|:----|:----|:----|:----|
|1|変更データキャプチャ|SFDCから他システムへのデータ同期|「取引先」オブジェクトにレコードを挿入すると、自動的にDWHやERPにデータを連携する。|レコードの変更|レコードの全項目|①対象オブジェクトの全レコードを取得できる。(その代わり"すべて参照"権限が必要であるため一般ユーザ向けではなく、システム間のデータ複製に使われることが多い)<br />②イベントに対するトリガを作れる|3日|
|2|PushTopic|DBのレコードが更新されたタイミングで画面の表示を更新する|LWCに「他ユーザがレコードを更新しました。画面をリロードしますか？」と表示する。|レコードの変更|レコードの指定された項目|①対象オブジェクトの一部レコードをSOQLで指定して取得できる。<br />②取得するユーザごとにレコード共有が反映される。(よって"すべて参照"権限は不要となるため、一般ユーザの画面表示に使える。)|1日|
|3|プラットフォームイベント|Fire and forget形式のシステム連携|契約に必要なデータ一式がSFDCに登録された時点で、カスタムプラットフォームイベントを公開する。ESB(もしくはSalesforceのApex/Flow)がそれをSubscribeしており、イベントを契機として当該データ一式をバックエンドに流す。|任意のタイミング(Apex, Flow, Process Builder, API)|事前定義した型に従って自由に設定可能(複数オブジェクトの情報を入れることや文字列加工も可能)|①同じイベントを全Subscriberに公開できる。<br />②イベントに対するトリガを作れる|1日または3日<br />※大規模プラットフォームイベントは最大 3 日間保持される|
|4|汎用イベント|ユーザを指定した通知|Aさんにお勧めなパンフレット(PDF)がアップロードされたタイミングで、Aさんの端末がそのことを検知し、バックグラウンドで予めダウンロードしておく。|任意のタイミング(API)|自由に設定可能(複数オブジェクトの情報を入れることや文字列加工も可能)|①特定のユーザに公開できる。|1日|

#参考ページ
[ストリーミングイベント機能 | ストリーミング API 開発者ガイド](Developershttps://developer.salesforce.com/docs/atlas.ja-jp.230.0.api_streaming.meta/api_streaming/event_comparison.htm)
Hermesを導入してAndroidのパフォーマンスを向上した話（ReactNative）

## 自己紹介
株式会社Another worksでエンジニアインターンをしている@hakeと申します。
主にTypescriptとReactNativeでクロスプラットフォーム開発をしております。


## 経緯
弊社ではAndroidアプリのパフォーマンスが悪いことが課題の一つとして上がっていました。
ReactNative開発ではあるあるだと思っています。
そこで今回、HermesというJavaScriptエンジンを導入することで改善を図りました。

## Hermesとは
Meta(旧Facebook)が開発しているReactNative用に最適化されたオープンソースのJavaScriptエンジン。
Hermesを有効にすると、起動時間が改善され、メモリ使用量が減少し、アプリのサイズが小さくなります。
いいことづくしですね！

参考
https://reactnative.dev/docs/hermes

## 仕組み
### バイトコードの事前コンパイル
通常のJavaScriptエンジンは、JavaScriptソースがロードされた後に解析し、バイトコードを生成しますが、HermesはJavaScriptを事前コンパイルによりバイトコードを生成しています。
また、実行時にJavaScriptをパースしてバイトコードを生成するというステップが省略できることによる起動時間の短縮を実現しています。

下記の図がとてもわかりやすかったです。
### 通常のJavascriptエンジン
parseとconpileがRun timeに行われます。

### Hermes
ParseとCompileがビルド時に行われる
![HermesOSSChainReact_blog_FIN_1-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1628649/cb2630eb-0bdd-d6ea-42e1-422ffc4e46eb.gif)



その他にも***JITコンパイラの廃止***や***ガベージコレクタの最適化***などを行っているらしいです。

詳しく知りたい方は下記を読んでみてください！

参考
https://engineering.fb.com/2019/07/12/android/hermes/

## Hermesについて
Android：ReactNative 0.60.4以上
iOS：React Native 0.64以上

expoを利用している場合
Android：SDK42以上
iOS：SDK43以上（SDK43では実験的サポートになっているので注意）

また、expo buildではなくeas buildを使用する必要があります。
（eas buildを利用することでnative層の変更も可能になるため）
先日ちょうどexpo buildの利用は2023年までと発表があったので、どこかのタイミングで切り替えていく必要があります。
https://blog.expo.dev/turtle-goes-out-to-sea-d334db2a6b60

## 導入
基本的にドキュメントに沿って実装すれば大丈夫でした。
実際に導入で詰まる点はありませんでした。

また、リロードを高速に保つために、デバッグビルドは事前コンパイルを使用していません。
なので導入したからと言って開発体験が悪くなるといった問題も今の所はないです。

ReactNative
https://reactnative.dev/docs/hermes

expoを利用している場合
https://docs.expo.dev/guides/using-hermes/


## 導入結果
### 初期起動時間の減少
約6秒程度から3秒程度に(端末によって異なる場合あり)
→起動からhome画面に遷移するまでの時間を計測

### アプリサイズ減少
デバイス上のアプリサイズが約8MB減少
48MB→40MB

### 全体的にパフォーマンスが向上
メモリの使用率が減ったことにより、全体的にパフォーマンスが向上


## 最後に
仕組みや開発背景についてはMeta公式のブログに詳しく書かれているので興味のある方はぜひ見てください。
https://engineering.fb.com/2019/07/12/android/hermes/

▼複業でスキルを活かしてみませんか？複業クラウドの登録はこちら！
https://talent.aw-anotherworks.com/
【RSpec】JSONの値を確認するテスト

##環境
Ruby 3.0.2
Rails 6.1.4.1

##APIのリクエストテスト
gemを使わずにjsonが期待通りに取れているかのテストを書くとこうなる。

```ruby
describe "GET /api/v1/fruits" do
    subject { get '/api/v1/fruits', headers: headers }
    let!(:available_fruits1) { create(:fruit) }
    let!(:available_fruits2) { create(:fruit) }
    let!(:unavailable_fruits) { create(:fruit, :unavailable) }

  it '旬の果物を返すこと' do
    subject
    json = JSON.parse(response.body)
    expect(response.status).to eq 200

    # 果物が3つあり、そのうち旬の果物が２つ、旬じゃないのが1つ。jsonで取れるのは果物が２つ
    expect(json['fruits'].length).to eq 2

    # 旬の果物の2つは含まれているか
    expect(json['fruits'][0]).to include({"id"=>available_fruits1.id})
    expect(json['fruits'][1]).to include({"id"=>available_fruits2.id})

    # 旬でない果物は含まれていないか
    expect(json['fruits'][0]).not_to include({"id"=>unavailable_fruits.id})
    expect(json['fruits'][1]).not_to include({"id"=>unavailable_fruits.id})
  end
end
```

##参考

https://qiita.com/kat0/items/41dbd5163e6d31184cc7
SQLの基本

##SQLの機能
リレーショナルデータベースを操作するために規格化されたデータベース言語で、大きく分けて三つの機能を持っている。
１．データ定義
２．データ操作
３．データ制御

##データ操作
SQLのデータ操作は以下の4つから構成されている。

SELECT文・・・テーブルからデータを抽出する。
INSERT文・・・テーブルにレコードを追加する。
UPDATE文・・・テーブル中にあるレコードのデータの内容を更新する。
DELETE文・・・テーブル中にあるレコードを削除する。

##ＳＥＬＥＣＴ文の基本構文

```
--すべてのデータを表示
SELECT	カラム名,カラム名...
FROM	テーブル名
```
SELECTの後ろにカラム名をカンマ区切りで記述する。SELECT *（アスタリスク）と記載することで、すべてのカラムを表示させることもできる。

##演算子の利用

```
--SAL（給料）を10倍にして表示
SELECT	EMPNO,SAL * 10
FROM	EMP
```
SELECT文には算術式を記載することで、計算結果を表示することが可能。

##ＷＥＨＲＥ句を使ったレコードの選択の仕方

```
--SAL(給与)が2000以上のレコードを選択
SELECT	ENAME,JOB,SAL
FROM	EMP
WHERE	SAL >= 2000
```
WEHRE句の後ろに条件式を記述することで、条件に合致したレコードのみを選択することができる。
表示するもの→テーブル→条件
※WHEREの条件に使用可能な比較演算子

|=|左辺が右辺と等しい     |
|--|--|
|<   |	左辺が右辺より小さい   |
|<=  |	左辺が右辺以下         |
|>   |	左辺が右辺より大きい   |
|>=  |	左辺が右辺以上         |
|<>  |	左辺と右辺が等しくない |

##複合条件によるレコード選択

```
--JOBが'CLERK'かつSALが1000以上の従業員を選択
SELECT	ENAME,JOB,SAL
FROM	EMP
WHERE	JOB = 'CLERK' AND SAL >= 1000

```
複合条件でレコードを選択する場合は論理演算子を使用する。
AND	かつ
OR	または
NOT	否定
論理演算子には優先順位があり、NOT、AND、ORの順で演算される。(カッコ)を使うことで、演算の優先順位付けを行うことが可能。
【watchOS 8】コンプリケーションのアイコン設定方法

# どういうことか

おそらくあなたが抱えている悩みは2つある。

1. コンプリケーションの選択画面でアイコンが下記画像のように真っ白なものが表示される
2. もしくはまったく表示されない

![Simulator Screen Shot - Apple Watch Series 7 - 41mm - 2021-12-01 at 20.01.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413699/51eba743-9e5c-9b8f-c159-f292bfec06d3.png)

自分もそうだった。しかし解決した。

## アイコンの設定方法

直感的にXcodeを眺めたらWatchKit ExtensionのAssetsに適切なサイズの画像を当てはめていけばいいだろうと思う。[^1]
[^1]: しかしこのコンプリケーション用の画像サイズ、よくある "icon generator" 的なやつが未対応なのでいちいち自分で画像をリサイズする必要がある。

![3ad68b9dafa54d520cc9e9104bf19f64.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413699/2412b091-6c10-7bfd-0ff0-c9cbbec954b8.png)

しかしうまく表示されないので、そもそもこの設定方法は間違ってるのでは？？といろいろ調べたところ**watchOS 8は以前まで設定方法が異なるらしく**参考にならなかった（そもそも記事が少ない）。

## 答え

結論から言うと**上記の画像設定方法は間違っていない**。

### なぜ真っ白な画像が出るのか

Assetsで設定する一覧の**頭に "Graphic"とついているもの以外**は**単色の透過された画像**を設定しないと表示されない。なんと。

![Simulator Screen Shot - Apple Watch Series 7 - 41mm - 2021-12-08 at 20.35.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413699/28b9917a-38f0-03f7-e522-c7de71dc3835.png)

ちなみに背景塗りつぶしであれば円形で仕上げたほうが見た目はきれい。

### フルカラーのアイコンが表示されない

上記のパターン以外（**頭に "Graphic"とついているもの**）はフルカラーのアイコンを設定できるが、それでも表示されない。なぜか。
実のところこれはキャッシュの問題のようで、正しく設定されていれば**Apple Watchを再起動すると出てくる**。これでめちゃくちゃハマった。

## あいさつ

以上です。
スクリーンショットにあるアプリはApple Watch専用としてリリースした卓球の点数カウンターアプリです。
スタンドアロンアプリは知見も少なく正直よくわかんないことだらけですが、なんとかアップデートしたり記事書いたりしていく予定です。

https://apps.apple.com/jp/app/table-tennis-counter-watch/id1596560405

おわり(´・ω・｀)
エンジニア生存戦略と組織

12月ということで、今年も[PTA](https://qiita.com/wataru420/items/8968f1127d0af00aea99)でアドベントカレンダーを開催しております。

今日はその1日目ということで、今回はエンジニアのキャリアと組織について少し書かせてください。
[CyberAgent PTA Advent Calendar 2021](https://adventar.org/calendars/6450)

去年のアドベントカレンダーはこちらです、
[CyberAgent PTA Advent Calendar 2020](https://adventar.org/calendars/5741)
## 技術力とは
個人的にはQuality（品質）、Cost（コスト）、Delivery（納期）だと考えています。
つまりエンジニアはベースQCDを向上させていく能力が求められます。

担当プロダクトが突如Hitし、高負荷状態になると落ちてしまう。
リリース後に頻繁に障害が発生する。
ビジネスに影響がでる障害がいつまでも解決されない。
等は最低限解決していく能力が求められます。

コストに関しては無駄遣いせず、また無理にコストを下げることなく適切なコストを維持する能力が求められます。
当然求められた納期の中ですべてのバランスを保ちながら開発していくことになります。

しかし、これらは安定稼働しているシステムの運用をしている場合、ある時点からあまり成長を感じなくなるのではないでしょうか？

そこであなたは思うでしょう。
「ここではもう成長できない、転職しよう」

## 生存戦略
担当プロダクトにおいてある程度QCDをコントロールできるエンジニアになった場合のキャリアを考えてみました。
その結果、王道なキャリアはこの４つかなと思います。

**①転職する**
より大きな、自分の足りないスキルが得られる職場に転職することでさらにスキルを伸ばす

**②エンジニアリングマネージャーになる**
複数のエンジニアを組織し、コーチング・育成する

**③人事になる**
エンジニアの知見を活かし、エンジニア採用に貢献する

**④プロダクトをグロースさせる**
所属プロダクトそのものを拡大させ、自分の成長につなげる

正解がどれだかはわかりません。
しかし、僕は④を目指すエンジニアが増えてほしいなと思っています。

Webサービスが乱立する時代は終わりました。
プロダクトが成長しないと管理職のニーズも増えないし、採用ニーズも増えない。
となると④に向き合うしか無いのではないか？
と考えています。

世界のPdMの多くはエンジニア出身と聞きます。
日本でももっとプロダクトのグロースに向き合うエンジニアが増えると良いのではないでしょうか？
## 組織
しかし、上述したようなプロダクトのグロースにエンジニアが向き合うには個人の力では難しい場合もあります。
PdMとエンジニアの距離が遠い場合や、お互いの仕事の範囲を明確に分けているような組織の場合、うまくいきません。
ではどのように開発組織をつくっていくといいか。

こちらに関しては先日のオレシカナイトVol16で発表してますので、是非ご覧ください。
<iframe width="560" height="315" src="https://www.youtube.com/embed/Fh14fDaPTxQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 最後に
今年はPTAとして運営するオレシカナイトのデザインが一新、また配信YoutubeChも弊社公式のChとなりました。
今日から始まるこのアドベントカレンダーでもエンジニアの働き方やカルチャーが少しでも伝わればいいなと思っております。
最後までお楽しみください。

そんなPTAの活動に興味を持って頂けたなら、是非一緒に働きましょう！
[応募はこちらから](https://hrmos.co/pages/cyberagent-group/jobs/0000004)