OmniAICreator/Qiita-1.07M huggingface dataset:
ダイソーのびりびりタバコを分解する

これは[一人でダイソーのおもちゃを毎日分解する Advent Calendar 2022](https://qiita.com/advent-calendar/2022/daiso-toy-disassembly)の23日目（3日目）の記事です。

こんにちは、@tama_Udです。今回はダイソーで売っているパーティーグッズ「びりびりタバコ」を分解したいと思います。

## 分解する商品スペック
店: DAISO
価格： ¥200（税込¥220）
商品url: https://jp.daisonet.com/products/4549131764260
商品写真: （撮影する前に出してしまったので無し）

## 分解していく

### 商品を取り出す

取り出したところ
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/0f641d33-c3b6-7768-f9d6-f2b8effa316c.jpeg>
マルボロ赤をイメージしたデザインのようですが、表面がテカテカしているためあまり本物っぽくないですね。
一見何の商品かわからないので補足しますと、飛び出たタバコ部分を触ると電気がビリッとくるパーティーグッズのようです（電池交換不可）。
試してみたところ全くビリッとこないので電池切れだったのかもしれません。

### 本体を開ける
さっそく分解していきましょう。本体の溝にマイナスドライバーを入れ、シール部分を切って本体を開けます。
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/1fe7a0df-7a27-13f1-8495-60add3e0d5f3.jpeg>

中身はこんな感じ。
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/ee147cef-fd69-b966-2089-5c78ce977e75.jpeg>
電池、コイル、ばねとスイッチのみです。シンプルでいいですね。

### 観察してみる
中身のアップ
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/0d965ba0-a968-6d42-b34b-7fc8da5b5911.jpeg>
右側のスイッチを押し込むと、（わかりづらいですが）バネが押されて電気が流れる仕組みのようです。

タバコの金色部分（導体）に直でリード線が貼り付けられています。
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/199edf57-e9b3-9467-6ef2-19c3660adba1.jpeg>

このコイルがなぜついているかよくわからなかったのですが、有識者によると『昇圧回路』ではないかとのこと。
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/6ffffb50-0e4a-c6b4-4650-b3b32631772f.jpeg>

https://techweb.rohm.co.jp/trend/glossary/12854/

コイルの性質を利用して、スイッチONでボタン電池の電圧を高める -> 人間が金色の導体を触る（電圧が一気に下がる≒スイッチOFF状態） -> 入力電源以上の電圧がコンデンサに充電され、放電する （人間に電流が流れる）

多分、スイッチを長押しする時間が長いほど電流が流れるってことですかね。
コンデンサの容量によって制限かかるとは思うんですが。（ここの詳しい説明、誰か教えてほしい......。）

そしてよくみたらコイルのはんだ付けがひとつ取れていました。そりゃ動かないですね......。
今日は焼く基盤がないのでこれでおしまいです。

## 終わりに

分解するより記事を書く時間の方が長いんですが頑張ります。
明日は@tama_Udさんの『[ダイソーのデジタルウォッチを分解する](https://qiita.com/tama_Ud/items/81e1dfc016c9dd9d7bcf)』です。お楽しみに！
自宅サーバーを置くときに失敗したこと・考慮に入れたほうが良いこと

皆さんは、自宅サーバーあこがれたことは1度や2度ではないと思います。また、突然魔が差して中古PCを購入してしまうことやなぞにPCを譲り受ける機会があると思います。そんなときのために用意しておく心構えや失敗したことを記述していこうと思います。

# 大概のデスクトップPCにはWifiモジュールが搭載されていない/外付けWifiモジュールを手に入れるのは意外と大変

これは特に実家暮らしの場合は有線接続ができないケースも考えられるためWifiモジュールの有無ない場合は使いたいOSに対応したドライバーがあるかを確認してWifiモジュールを「あらかじめ」購入しておきましょう。
正直なところ、有線でつなげるようにしたほうが楽だと思います。

# IP固定VS自宅内専用

自宅内のサーバーを立てて満足しがちですがいつかIPを固定して使いたいという気持ちになることがあります。そのためIPを固定する手段を最初から考えオペレーションするべきでしょう。この手の話は経験者に聞くのが一番かと思います。固定サービスを利用して固定している人は時々見かける印象です。自宅でのみ開発するなら自宅のKube鯖はDevelop用本番は本番用をAWSに建てるなどが良いでしょう。

# コンセントは外れないよう固定しよう

自宅鯖の大敵は「電気の給電が切れる」ことです。日々のブレーカーを落とさないことはもちろんのこと、うっかりコンセントが抜けてしまうことがないように保護することが大切です。電気工事士の資格かつ持ち家であれば抜け止めが付いた埋め込みコンセントを使うというのも手段の一つかと思います。
ダイソーのソーラー電池式電卓を分解する

これは[一人でダイソーのおもちゃを毎日分解する Advent Calendar 2022](https://qiita.com/advent-calendar/2022/daiso-toy-disassembly)の22日目（2日目）の記事です。

こんにちは、@tama_Udです。今日はダイソーで売っているソーラー電池式電卓「プリント電卓（ウッド調）」を分解したいと思います。

## 分解する商品スペック
店: DAISO
価格： ¥100（税込 ¥110）
商品url: https://jp.daisonet.com/products/4549131683127
商品写真: 
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/f7fda550-4b66-0625-3933-57f93a8c08d1.jpeg>

## 分解していく

### 商品を取り出す

取り出したところ
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/99b85292-095a-ce74-034c-bfb570e5cc54.jpeg>
ウッド調のプリントが施された電卓です。

裏側
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/4492940f-7242-72fa-906c-1730db3ef83e.jpeg>
電池ボックスと絶縁体が見えます。
ソーラー・電池併用で動作するため、ボタン電池がなくても計算できます。
ボタン電池なしでパネルを10秒程度覆うと液晶の表示は消えますが、再度光に当てると元の数値を表示するので、電池なしでも問題く使用できそうです（おそらくパネルを覆った状態だとボタン電池のみの動作も可能なはずですが、確認忘れました）。

### 本体を開ける
さっそく分解していきましょう。電池ボックスのネジを外し、ボタン電池と絶縁体を抜き取ります。
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/47ffea30-5f2d-6505-9503-a781a5d2b7e2.jpeg>
すでに基盤らしいものが見えていますね。

表側の透明なカバーとプリントを外します。
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/c27ebfd4-1726-8a54-bb44-bfa1558e1b58.jpeg>

表面端の溝にマイナスドライバーを入れて、黒いカバーを開けます。
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/3f736d80-0223-788a-f24f-11f188396b0a.jpeg>
基盤と液晶への配線が見えました。

### 観察してみる
基盤のアップ
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/e23f19ea-ab7b-1f44-b159-49806b2d46cd.jpeg>
やはりチップ部分はモールドされているんですね。

基盤の裏面、もといボタン側
<img width=450 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622484/19d1f073-a192-82fa-6626-b9c8296110fb.jpeg>
鈍い銅色の部分とボタンの穴はピッタリ一致します。ボタンの内側には導体が仕込んであるっぽいですね。
鈍い銅色の部分を指やハサミの先などで触ると入力できます。

こちらの基盤は『両面基盤』のようです。

https://arrow-sg.co.jp/kiban-no-hatena/%E7%89%87%E9%9D%A2%E5%9F%BA%E6%9D%BF%E3%83%BB%E4%B8%A1%E9%9D%A2%E5%9F%BA%E6%9D%BF%E3%83%BB%E5%A4%9A%E5%B1%A4%E5%9F%BA%E6%9D%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/

基盤って重ねられるんですね（ソフトウェアエンジニア並感想）。
確かにVIAホールと呼ばれる穴が空いているのが見えますね。表面（電池がある側）の電流が、この穴の内側に施された導体メッキを通って裏面（ボタンがある側）に流れる仕組みなっているんですねー。
立体交差の基盤バージョンみたいなものでしょうか。

今回の液晶部分の配線はテープで止められているようです。ちゃんと一本ずつ配線部分を合わせて貼ってあるので、ちょっと手間がかかっているのかもしれません。

今日は基盤を炙りません！以上！

## 終わりに
25日まで5日間毎日分解を頑張れなかったので、25日の昼に3記事まとめて書いています。
良い子の皆はこんな大人にならないように。メリークリスマス。

明日は@tama_Udさんの『[ダイソーのびりびりタバコを分解する](https://qiita.com/tama_Ud/items/6ce27811a9bc2d42b895)』です。お楽しみに！
既存サービスにNFTを付加する際に意識したい5つのポイント

これは[no plan inc.の Advent Calendar 2022](https://qiita.com/advent-calendar/2022/noplan_inc)の17日目の記事です。

みなさんこんにちは！no planのあっきーです。

今回の記事ではも開発サイドの視点ではなく、ビジネスサイドの視点からNFTの活用方法についてお伝えできればと思います。

自社のサービスやプロダクトに新たにNFT付加するにあたって最も大切なのが、ユーザーに負荷や学習コストをかけない体験設計を描くことです。

一部のユーザーは新たな機能追加に対して拒否反応を起こします。

ウォレットや暗号資産に馴染みのないユーザーであれば、尚更拒否反応を起こしてしまう可能性が高いので特に負荷をかけないような設計が求められます。

# ユーザーに負荷をかけない体験設計

ウォレットや暗号資産の管理、ガス代の支払い等、NFTの売買や送付といったような一定のリテラシーが要求されるという状況をユーザー側で発生させてしまうと、せっかく付加したNFTの利用率が上がらず結果的に意味のないものとなってしまいます。

既存サービスに対してNFTを付加する場合は、ウォレットや暗号資産に馴染みのないユーザーを前提として以下のような設計を行うことをお勧めします。

no plan社でNFTに関するコンサルティングや開発のお手伝いをさせて頂く中でお伝えしている、体験設計のポイントをお伝えします。

## 1/ 独自ウォレットの作成

あなたのサービスのためにMetaMaskのようなウォレットを自ら用意する。といったことは、現時点でウォレットや暗号資産に馴染みのないユーザーにとって現実的ではありません。

ユーザーにウォレット作成の負荷をかけるのではなく、ユーザーのアカウントに紐付けたウォレットをサービス側で用意することが必須となります。

特にポイントの代替としてNFTを利用する場合や、商品の付加価値としてNFTを送付する場合は必須機能といっても過言ではありません。

## 2/ シンプルで馴染みのあるUI

どこかのサービスで見たことのあるような、馴染みのあるUIを採用することも重要なポイントとなります。

既にポイント機能があるサービスであれば、そのデザインに即したUIを採用することをお勧めします。NFTに馴染みのないユーザーが受ける認識として、ポイントの亜種くらいに受け止めて頂ければ大成功です。

付与されるものがNFTであることを意識させないような設計にすることで、ユーザーの心理的障壁を取り払いましょう。

馴染みのある形で拒否反応なくNFTを受け入れてもらい、少しづつNFTの機能を理解してもらえるようなチュートリアルを作成することも追加機能としてNFTを導入する際のポイントとなります。

## 3/ 独自マーケットプレイスの作成

オープンなプラットフォームでNFTの交換・売買を可能とするサービス設計にする場合は、まずサービス内でNFT売買ができる独自のマーケットプレイスを先行リリースしましょう。

いきなりNFTをMetaMaskに移管し、openseaなどで販売してもらうとなるとハードルが高すぎます。

独自マーケットプレイスといった環境を提供することによって、ユーザーはアクティブ環境での売交換・売買の経験値を積むことができ、同時にリテラシーを高めることができます。

## 4/ 購入手順の簡略化

NFTを買うための手続きを簡単に行えるような設計にすることも、ユーザーが苦労なくNFTを活用できるような設計の1つです。

ウォレットや暗号資産に馴染みのないユーザーがNFTを購入するにあたり、PolygonやEthereumといった暗号通貨を購入させることはハードルの高いものとなります。

そのため、アプリ内ポイントとNFTとの交換や、アプリでの課金、クレジット決済といった気軽に購入できる仕組みが必要となります。

また、高速なトランザクション処理も重要な機能の一つとなります。

初めてNFTを購入するユーザーさんは期待半分、不安半分の状態です。トランザクションの処理が遅くなればなるほど、不安感情の方が上回ってしまい、結果的にユーザー体験を損ねてしまう可能性があります。

## 5/ コレクションページのリッチ化

NFTをコレクションするタイプの設計を行う場合、コレクションページもしくはマイページのリッチ化を行うことも重要なポイントとなります。

コレクションページを充実させることで、NFTを収集することがより楽しくなります。NFTを収集することは、自分の所有物を増やすことであり、趣味のようなものでもあります。

NFTを動機に既存サービスの利用回数が増えることが見込めるほか、リッチなコレクションページを提供することで、ユーザー自身のエンゲージメントの向上を図れるほか、友達やSNSで共有してもらえる可能性が高まります。

# **おわりに**

今回はかなり広い視点で既存のビジネスにNFTを付加する際に気を付けるポイントについてご紹介させていただきました。しかし勿論サービスごとに重要なポイントは少しづつ異なってくるので、今回ご紹介いただいた5つのポイントを参考に検討いただければと思います。

**引き続き、ビジネス視点でのNFTの活用についての記事を見たい方はいいねと[Twitter](https://twitter.com/noplan_inc)のフォロー、記事の拡散をお願いします！**

# **no plan株式会社について**

- no plan株式会社は、ブロックチェーン技術、Webサイト開発、ネイティブアプリ開発、チーム育成、などWebサービス全般の開発から運用や教育、支援などを行っています。よくわからない、ふわふわしたノープラン状態でも大丈夫！ご一緒にプランを立てていきましょう！
- [no plan株式会社について](https://noplan-inc.com/)
- [no plan株式会社 | ブロックチェーン実績](https://noplan-inc.com/blockchain)
- [no plan株式会社 | ブログ一覧](https://noplan-inc.com/blog)
【合格体験記】AWS認定DevOpsエンジニア-プロフェッショナル(DOP-C01)

# 本記事の概要

AWS認定DevOpsエンジニア–プロフェッショナル(DOP-C01) を取得したので勉強方法を備忘録として投稿します。
AWS-DOPを受けようと思っている方や、現在勉強している方がこの記事を参考の一つにしていただけたら幸いです。

# 使用した教材

・[AWS Certified DevOps Engineer Professional 2022 - Hands On!](https://www.udemy.com/course/aws-certified-devops-engineer-professional-hands-on/)

・[AWS Certified DevOps Engineer Professional Practice Exams](https://www.udemy.com/course/aws-certified-devops-engineer-professional-practice-exams-amazon/)

・[TeckStock WEB問題集で学習しよう](https://techstock.jp/)

# 勉強の流れ

基本的な流れは以下の通りです。

1. Udemy (AWS Certified DevOps Engineer Professional 2022 - Hands On!)
2. Udemy (AWS Certified DevOps Engineer Professional Practice Exams)
3. TeckStock WEB問題集で学習使用

## 1. Udemy (AWS Certified DevOps Engineer Professional 2022 - Hands On!)

SAP取得が半年ほど前ということもありSAPでインプットした知識に不安があったため、ハンズオンで学習可能なUdemyの教材を使用しました。
DevOpsの試験ということもありハンズオンでの学習は各サービスの操作をイメージするのに役立ちました。
全てを通して視聴するとかなりの時間になりますので、1.25倍速でかつ、不安なサービスに絞って視聴しインプットの段階をなるべく早く終わらせることをオススメします。

## 2. Udemy (AWS Certified DevOps Engineer Professional Practice Exams)

本教材では、本番試験と同等もしくはそれ以上の難易度の問題が75問×2セット学習できます。
ただ、難点として全問解き終わらないと答えの確認ができない点、そもそも英語のためgoogle翻訳にかけて学習するのですが意図が汲み取り辛い箇所がある点が挙げられます。
私は一問一答形式で学習したかったため1セットだけ解いて次の教材に移行しました。
なお、1週しか問題演習せず正答率も4割ほどの状態でした。

## 3. TeckStock WEB問題集で学習しよう

AWS認定試験を学習している方々にとって有名なkoiwa clubですが名前が変わったんですね。
私はDevOps試験のためだけに加入したので少しお高めの料金ですが、個人的に効果は絶大でした。
7問1セットで、一問一答形式で学習出来るのでもし利用したことがない方がいらっしゃればぜひおすすめの教材です。
問題のレベルも本試験でほぼ同等かと思います。とにかく問題数が豊富で、私は時間が足らず全セクションを1週できませんでした。
正答率は7割ほどで、間違えた問題は再度実施、学習メモに残すという形をとり記憶に定着するようにしました。

# 試験結果

受験日：2022年12月24日
スコア：792
合格ライン：750
結果：pass

[証明バッヂ](https://www.credly.com/badges/30318198-243f-43cf-a5ca-91873c9c1234/public_url)

なんと悲しいことにクリスマス・イブに試験を受けました。
これで不合格だったら目も当たられませんが合格して本当に良かったです...
同じプロフェッショナル試験のSAPと比べると、やはり問題文がとっつきやすい印象でした。
SAPは75問中ほとんどの問題が長文でしたが、DOPは比較的サクサク解ける問題が半分、SAP同様の長文問題が半分といった具合でしょうか。（あくまで私の体感です）
SAPの時は50問を過ぎたあたりから頭がふわふわしてきましたが、DOPではそのような事もなく、75問全てに比較的集中して臨めたと思います。

# 受験後の感想

今回の勉強期間は1ヶ月程でした。

今回で専門知識以外のAWS認定資格を取得できましたが、これからもAWSで専門知識の分野に進むか、別クラウドサービスの資格を取得するか迷っています。
せっかくTeckStock有料プランに加入して残り2ヶ月以上あるから専門知識分野を進めようかな...
**（とにかく来年度はさっさと基本情報を取れ）**

この記事を開いていただき、また、
ここまで読んでいただきありがとうございました。
どなたかのお役に立てれば幸いです。
基本情報の擬似言語をもとにクイックソート書いてみたその１

基本情報技術者の擬似言語の学習のため実際にプログラム化してみました。
仕様はそのままに一部アルゴリズム強化のため自分で自分で条件式等を考えているため実際の擬似言語プログラムとは差異があります。

基準値は(始まりの要素番号＋終わりの要素番号）/2で決めております。別パターンも近いうち投稿したいと思います。

```java:qiita.java
import java.util.*;

public class QuickSort {
  public static void main(String[] args) {

    // データ配列：[80, 60, 40, 70, 30, 10, 50, 20]
    // int[] data_array = { 80, 60, 40, 70, 30, 10, 50, 20 };
    // int[] data_array = { 80, 60, 40, 70, 30, 10, 50, 70 };
    int[] data_array = { 70, 60, 40, 70, 30, 70, 50, 70 };
    // int[] data_array = { 80, 70, 60, 50, 40, 30, 20, 10 };

    int start = 0; // 始まりの添字
    int end = data_array.length - 1; // 終わりの添字

    quickSort(start, end, data_array); // 参照呼び出し
    System.out.println("クイックソート並び替え結果");
    printDataArray(data_array);

  }

  // 出力結果
  public static void printDataArray(int[] data_array) {
    System.out.println(Arrays.toString(data_array));
  }

  public static void quickSort(int start, int end, int[] data_array) {

    int left = start;
    int right = end;
    int mid = (start + end) / 2; // 並べ替え範囲の真ん中の添字
    int shaft = data_array[mid]; // 軸

    int tmp = 0;
    // クイックソート
    while (left < right) {

      // 左側で軸より大きい要素（軸以上）を捜索
      while (data_array[left] < shaft) {
        left++;
      }

      // 右側で軸より小さい要素を捜索
      while (data_array[right] > shaft) {
        right--;
      }

      /*
       * data_arrayに同じ値の要素が含まれているかつ軸と比較が起きた時、
       * 比較対象を軸の右側へ
       */
      if (left != right && data_array[left] == data_array[right]) {
        right--;
      }

      // 入れ替え left = rightである場合は要素はそのまま次の探索へ
      if (left < right) {
        tmp = data_array[left];
        data_array[left] = data_array[right];
        data_array[right] = tmp;
        // left++; // これかも
        // right--;
      }
    }

    // 途中結果 left = rightの時ループ抜ける
    System.out.println("途中結果");
    System.out.println("左 :" + left + "右 :" + right);
    System.out.println("軸" + shaft);
    System.out.println(Arrays.toString(data_array));
    // データ配列：[80, 60, 40, 70, 30, 10, 50, 20]

    // 軸よりも左側を探索
    if (start < left - 1) {
      System.out.println("----軸より小さい配列要素組み-----");
      quickSort(start, left - 1, data_array);
    }

    // 軸よりも右側を探索
    if (right + 1 < end) {
      System.out.println("-----軸より小さい配列要素組み-----");
      quickSort(right + 1, end, data_array);
    }

  }

}
ハッカソンで役に立つサービス（コミュニケーションツール）

# はじめに
この記事は[**ハッカソン Advent Calendar 2022**](https://qiita.com/advent-calendar/2022/hackathon)の21日目の記事です。
本日は、ハッカソンで役に立つ**コミュニケーションツール**について書きます。
本記事では、**オンライン**でコミュニケーションをとることを前提とします

## 結論

私のオススメは`Discord`と`Slack`です
運営がコミュニケーションツールを用意してくれることもありますが、
自分たちで作成した方が良い気がします（チャネル作成など自由にできるので）

https://discord.com/

https://slack.com/intl/ja-jp

### どちらを選べぶか迷った時は
それぞれ使える機能は大差ないです
チームで使い慣れている方を選択すれば良いと思います！
`slack`は仕事で使っている人が多いイメージがあります

# おわりに
他におすすめのコミュニケーションツールがあれば、コメントで教えてください！
【ゆく年2022】ついに Spresensをワイヤレス給電したよ

# 1. はじめに
Spresensをワイヤレス給電したい
じゃやっとく？

# 2. 準備
## Qi の受信機を準備する
リナちゃんは持ってたから分解して使った
https://s.click.aliexpress.com/e/_DB3eDkb
## 適当なガラス瓶を用意する
ダイソーで良いかと思うよ

## Spresens に適当なcodeを書き込む
WiFi が搭載されていないから
ローカルで動くのがいいと思う
WiFiでOTGとかやったら便利なのにねぇ

``` main.ino

//========================================
// ledary
//========================================
#define LEDS_MAXCNT (4)
static uint8_t ledary[LEDS_MAXCNT] = {
  LED0, LED1, LED2, LED3
};

//========================================
// ledOnOff
//========================================
void ledOnOff(int ledid) {
  static int stat = 0;
  if (stat) ledOn (ledary[ledid]);
  else      ledOff(ledary[ledid]);
  stat = !stat;
}

//========================================
// ledOnOffNoDelay
//========================================
void ledOnOffNoDelay(int ledid, uint32_t delaytm) {
  static uint32_t tm = millis();
  if ((millis() - tm) > delaytm) {
    tm = millis();
    ledOnOff(ledid);
  }
}

//========================================
// ledOnOffNoWhite
//========================================
void ledOnOffWhile(int ledid, uint32_t delaytm) {
  while (1) {
    ledOnOffNoDelay(ledid, 1000);
  }
}

//========================================
// setup
//========================================
void setup() {
  Serial.begin( 115200 ); while (!Serial);
  for (int i = 0; i < LEDS_MAXCNT; i++) {
    ledOff(ledary[i]);
  }
}

//========================================
// loop
//========================================
void loop() {
  static int i = 0;
  ledOnOffNoDelay(i, 50);
  i = (i + 1) % LEDS_MAXCNT;
}


```

# 3. 組み込み
USBからだとサイズが大きくなっちゃうので無理やり電源PINから入力する
コネクタの向きに注意

![0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2063214/36747cfa-b245-fa02-a89d-d48c4248fd43.jpeg)


# 4. 実際の駆動状況
https://twitter.com/chrmlinux03/status/1606875123214319616?s=20&t=a3386oVRRCcrq1vhDqwORQ

# 5. さいごに
お疲れさまでございました
来年もよろしくお願い申し上げます
緯度経度から比較的小さい範囲の店をサーチするための計算式

MapAPIから緯度・経度情報をとってくるのは簡単です。
一方でMAPAPI単体では`N km内にOOな業態の店があるか`を調べるのは少し難しく思えます。  今回は十分に小さい（大体10km以内）であれば緯度経度情報だけで簡単な式で範囲内検索を行えることを紹介していこうと思います。

緯度経度についてですがkm換算した場合には5km程度では誤差の範囲に収まると考えています。
[wikipedia](https://ja.wikipedia.org/wiki/%E5%9C%B0%E7%90%83%E6%A5%95%E5%86%86%E4%BD%93)によると地球の扁平率は1/300であり、これをもとに地球を真円（球）と仮定したときに出る実際の位置との誤差は1kmあたり3m程度であり5km程度の範囲であれば十分に無視できる誤差であるといえるだろう。そのため、今回は地球のゆがみについて考慮せずに議論を行うことができる。


1. 調べたいもののざっくりとした緯度経度情報を取得する。
    例えば、Nkm県内には何市と何市が含まれるのでそれぞれの市内の〇〇業態の住所のリストからGoogleMapAPI等で緯度経度情報を調べCSVなどにまとめる。

1. 1kmあたりに増える緯度経度は（赤道半径をもとに計算すると）約0.010966(°)とわかる。ので基準の場所の緯度経度を(X,Y)対象の緯度経度を(x,y)とすると以下の式を満たしている場合に条件が満たされていることがわかる。
    ```
    (x-X)^2+(y-Y)^2 =< 0.0030063289
    ```
Unityでメダル落とし

[【完走目指す】初心者が25日で強くなる Advent Calendar 2022](https://qiita.com/advent-calendar/2022/aruhitoganbaru)
24日目です。昔作ったゲームがどっか行ったので、代わりにライツアウトを作ります
# クリスマス
クリスマスなのに、クリスマスネタが思い浮かばなかったので、メダル落としを作ります。
# 制作
メダルを作ります
![スクリーンショット_20221225_121500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/efd45244-d32b-0542-0e68-e12de3b91647.png)
メダルはcylinderでできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/c3561f9b-96e3-e429-8e1b-b7e6b0b50dfd.png)

次に、メダルを落とす枠組みを用意します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/0728b765-abce-c0f1-741c-6c0206de5082.png)
メダルが落ちないようにします。
画像では見えていないと思いますが、前面に透明のcubeを設置してあります。これでメダルの動きを見ることができるとともに、メダルが脱線してしまうのを防いでいます。
では、いったんメダルを落として確認します
![スクリーンショット_20221225_122617.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/6676393c-f1c2-860e-0034-b2b4513e94c7.png)
メダルが元の位置から動きませんでした。
どうやら壁に挟まってるっぽいです。
# capsule collider
メダルの当たり判定にはこのCapsule Colliderを使っています。
Cubeとかのcolliderは、cube自体の大きさを変えた時にいい感じに調整されます。
しかし、これの場合は
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/ba338e3c-6d6f-30db-4da9-bc522c0e99fc.png)
なんかおかしいことになるようです。
なので、手動で直しましょう。
mesh colliderに変えて、convexにチェックを入れます。
最終的に
![スクリーンショット_20221225_124117.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/ac1fb5ae-a549-01e3-292a-89b0af81b995.png)

こうなりました
ちゃんと地面でメダルが止まりました。
# 障害物
障害物を作ります
例えば、棒を置いておけばメダルが当たった時にいい感じに左右のどちらかに移動してくれます。よくあるやつです。
メダルと同じ要領で作りました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/1a50d3a9-b945-14e0-58f4-1497d35e2d15.png)
メダルと同じ大きさにすると、途中でメダルが引っかかって止まることがあるのでメダルの大きさを倍にしました。
これに加えて、メダルがワープするものも作ってみようと思います。
まずは画像を用意します
![ワープ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/e574a326-4aec-c2b5-9d64-926669d1c233.png)


```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class Warp : MonoBehaviour
{
    public GameObject Medal;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    public void OnCollisionEnter(Collision collision)
    { if (collision.gameObject.tag == "Medal")
        {
            Medal.transform.position = new Vector3(0.2f, 21, 0);
        }
      
}
}

```
前にやった衝突を使います。
メダルのタグが付いているオブジェクトが衝突したら、メダルの位置が変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/3a469bdb-e342-8314-7363-68fe4cab78c9.png)
衝突すると、上に移動します。
# メダルを落とす
今の状態では同じ場所から落として同じ位置に移動しているので、同じ結果が得られます。
しかし、それだとよくないので任意でメダルの出す位置とかを変えられるようにします。
とりあえず、今日はここまで。
# 今日のまとめ
衝突検知の仕方の復習をした。
Rust初心者がChatGPTでアプリ作ってみる

:rice_ball:ChatGPTに聞きつつRustでアプリを作ってみます。
![スクリーンショット 2022-12-25 12.55.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3081581/38e321e9-bbcf-626c-423e-399fdc7a33a8.png)
:watermelon: RustはMozillaの作ったプログラミング言語で、早くて安全で並行性がある。ファイルシステム、ネットワークサービスがOSによく使われてるけど、幅広いアプリにも使える。
:hot_pepper:nullや無効なメモリ領域のポインタ参照エラーを防いだり、コンパイル時のコード生成マクロシステム、非同期プログラミングとアクターモデルで軽量の同時実行性を持つ。
:grapes:ふむふむ。じゃあ次は環境を教えてもらおう。
![スクリーンショット 2022-12-25 13.09.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3081581/d068dc9d-c93a-c1a8-9139-1c6d06c94fb5.png)
:tomato:https://www.rust-lang.org
:green_apple:Rustコンパイラーは"rustc"で、パッケージマネージャーは"cargo"
:dango:まずは簡単なメッセージ表示、計算をやってみて、それからコマンドラインアプリ、簡易Webサーバがいいらしい。
![スクリーンショット 2022-12-25 13.18.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3081581/7b8a6a1e-ade3-2c73-0980-e709d5e2acc9.png)
:cake:人気のIDEは、VSCode、CLion、InteliJ IDEA、Eclipse、Sublime。まずはVSCodeを試してみる
![スクリーンショット 2022-12-27 22.18.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3081581/6eb4752d-4e6a-3709-71c6-dd2fa4030028.png)
![スクリーンショット 2022-12-27 22.30.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3081581/e6d73ad0-d669-b80f-2e32-38664af2d22f.png)
:hamburger:実行結果も表示できる。書いたプログラムに対して実行結果を返してくれるのかな？
エンジニア育成やナンパについて

これは[no plan inc.の Advent Calendar 2022](https://qiita.com/advent-calendar/2022/noplan_inc)の18日目の記事です。

no plan株式会社では、一緒に働いたら楽しそうな仲間を採用目的のナンパ(男女問わずお声がけ)をします。
大事にしていることを伝えたいと思い筆を取りました。
2022年12月の考えであり、どんどん考えは変化していく組織ですの情報がすでに古い場合があります。

# この記事
- no plan株式会社のエンジニア育成やナンパについて
- エンジニアの育成についてどうやっているか

# no plan株式会社のメンバー
- CEO おかむー([@okamu_ro](https://twitter.com/okamu_ro))
- CTO ブロックチェーンエンジニア セリヌンティウス([@_serununtius](https://twitter.com/_serinuntius))
- フリーランスさん10~15名程度でやっています!!

![IMG_1495_Original.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62822/8d4b67af-3360-3600-12f7-e2c63c304e15.jpeg)


# 最初に表現など細かいこだわり
そんな細かい定義なんてどうでもいい、実績出してから言えと言われるかもですが、ここは譲れないのです。

- 従業員ではない、仲間、メンバー、クルーと表現しています
    - 従うという漢字がそもそもマッチしていません
- 採用ではない、ナンパ(男女問わずお声がけ)させてもらい仲間になってもらいたいかどうかみてもらう
    - 弊社には、採用担当ではなくナンパ担当大臣がおります

# 大事にしていること
この大事にしていることを満たしたとき、育成やナンパを実施しています(会社のタイミングにもよります)
### 長所と短所はあればあるほどいい
- みんな全部できる必要ないです
- それを補える集団を目指しています
- ましてや短所は気にせず得意分野をさらに取り組んでほしいです

### 好きだ、面白いと思うこといいとことんやれる人かどうか
- 何かに熱中できる人はとても美しいです
    - それができる人は何かしらの考えや経験があり貴重です

### 実践的技術力
  - 全部できなくていいが最低限の基礎知識があるかは見ています

### 最新テクノロジー吸収力
  - 既存の知識に満足してしまいがちになる人も一定数いるかと思います
  - 吸収力があれば、頭のいい人の実装や例を見て自分も進化することができます

### 知識のインプットアウトプット力
  - 自力で引っ張ってくる
  - 情報にたくさん触れる
  - 社内だけでもいいのでまずは発表する

# 社内では育成カリキュラムを用意しています
- Web2人財育成カリキュラム
- Web3人財育成カリキュラム

# ばりーさんの事例
もともと量子力学専攻の学生さんでしたが、「ブロックチェーン x 量子力学」でプロダクト制作を支援させていただきました!!

[プログラミング初心者が、量子コンピュータとブロックチェーンを使って"ノープラン"でNFTアプリをローンチした話](https://zenn.dev/mi2valley/articles/d0aff245f48100)

![og-base_z4sxah.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62822/06eae25a-af29-7c73-0d90-df85e9770083.png)


### 1: ブレストから
- **まずは彼の得意分野と学びたい分野の掛け合わせをブレストしました**

### 2: 設計と実装
- Webアプリケーション開発におけるDB設計やフレームワーク、Gitの概念などを一緒に学んでいきました

### 3: 定期的な振り返りとレビュー
- スクラム開発を学んでもらうためチケットの整理や起票を実際に行なってもらいます

### 4: リリース
- 本番化を行い実際に記事を書いてもらいました

### 5: 運用メンテ
- サイトのアップデート
- コントラクトのアップデート
など体験してもらいました

### 完成したのがこちら
量子コンピュータとブロックチェーンを使って俳句NFTを生成するアプリ、「HaiQ」です
https://www.haiq.app/

![スクリーンショット 2021-10-30 0.10.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62822/a07a824f-d158-7599-3ff0-3b2534ee8f46.png)


# まとめ
- 育成やナンパを実施しています
- 人がさらに成長するには得意なことや熱量があることと学びたいことの掛け算することが成長につながると思っています

# no plan株式会社について
- no plan株式会社は、ブロックチェーン技術、Webサイト開発、ネイティブアプリ開発、チーム育成、メタバースなどWebサービス全般の開発から運用や教育、支援などを行っています。よくわからない、ふわふわしたノープラン状態でも大丈夫！ご一緒にプランを立てていきましょう！
- [no plan株式会社について](https://noplan-inc.com)
- [no plan株式会社 | ブロックチェーン実績](https://noplan-inc.com/blockchain)
- [no plan株式会社 | ブログ一覧](https://noplan-inc.com/blog)
- [お問い合わせはこちら](https://noplan-inc.com/contact)
AtCoder Beginner Contest 283 A〜C問題をPythonで解いてみました

ABC283(AtCoder Beginners Contest 283)
A〜C問題をPythonで解いてみました。

- コードは雑めです。ゆるしてー
- 競技プログラミングの勉強一切したこと無いので、テクニックは知らないよ。ごめんねー

## A問題(diff=8)
[提出コード](https://atcoder.jp/contests/abc283/submissions/37531528)
```python
a, b = map(int,input().split())
print(a**b)
```

Pythonでは累乗を`**`で書けます


## B問題(diff=35)
[提出コード](https://atcoder.jp/contests/abc283/submissions/37532868)
```python
n = int(input())
a = list(map(int,input().split()))
q = int(input())
# print("a=",a)
 
for q_i in range(q):
  query = list(map(int,input().split()))
  # print(f"queriy_{q_i}=",query)
  k2 = query[1]-1
  if query[0] == 1:
    a[k2] = query[2]
  elif query[0] == 2:
    print(a[k2])
```

プログラミングに慣れていないとちょっと戸惑ったかもしれませんね。（というか「AtCoderの問題文に」かもしれませんが）
$A_N$の配列を $ Q_Q $ で書き換えつつ、print()で出力していく問題になっているので、落ち着いて理解すれば大丈夫です。
- まず $N$と$A_N$、$Q$を通常通り取得します。
- $Q$の回数分$query$を受け取りながら、$query[0]$ の数値によって処理を分けます（if文の部分ですね）
    - $query[0]$が1の場合は$a[k-1]$の部分を$query[2]$で書き換えます
    - $query[0]$が2の場合は$print(a[k-1])$します。

という感じですね。
diff=35とA問題のような難易度でしたので解けた方は多かったようです。


## C問題(diff=88)
[提出コード](https://atcoder.jp/contests/abc283/submissions/37533021)
```python
s = input()
pointer = 0
push_count = 0
end_s = len(s)
 
while pointer < end_s:
  if s[pointer] == '0':
    if pointer+1 < end_s:
      if s[pointer+1] == '0':
        pointer += 1
  pointer += 1
  push_count += 1
print(push_count)
```

単純化すると `0が連なっている時だけ押した数を減らす` 問題です。
私のプログラムでは、pointerは文字列の操作用、push_countはレジ打ち回数カウント用です。
`0`が見つかったとき(s[pointer] == '0')だけ、次も`0`かどうかを見て（s[pointer+1] == '0'）、`0`の場合はpointerのみ+1しています。
こちらもdiff=88とA〜B問題のような難易度でしたので解けた方は多かったようです。

# 感想
ここ何回か、A~C問題めちゃくちゃ簡単ですね。
WindowsでMavenを使えるようにする。


Javaでmvnコマンドが使いたくなったのでその時のメモです。
## Mavenのダウンロード
ApacheのサイトからMavenのZipファイルをダウンロードする。

https://maven.apache.org/download.cgi
## Mavenのフォルダを配置する。
Zipを回答しC:\Program Files配下に配置する。
※場所は環境変数PATHで指定できればどこでもよいがコマンドラインで利用するものはProgram Filesに置くのが一般的

## 環境変数の設定

### コマンドプロンプトで実行する場合

下記コマンドを実行する。
`SETX /M PATH "%PATH%;C:\Program Files\maven\bin"`

### GUI操作の場合

Windowsキーを押し検索バーから「システム環境変数の編集」を入力して選択
環境変数のPATHを選択し編集ボタンを押す。
![環境変数の指定(pic1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89244/d9afbffd-55d8-6a86-a865-4f50faa279ec.png)
遷移した画面で新規を押し、「C:\Program Files\maven\bin」を追加する。
![環境変数の編集(pic2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89244/8319f87e-f11b-13ae-f0f4-ba188e812562.png)

## mvnコマンドの動作確認

下記コマンドを実行してバージョンが表示されればOK
`mvn -v`
![動作確認(pic3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89244/dd870cdf-0f7a-3c31-6d6b-ec59e9515e54.png)
ハッカソンで役に立つサービス（toio）

# はじめに
この記事は[**ハッカソン Advent Calendar 2022**](https://qiita.com/advent-calendar/2022/hackathon)の20日目の記事です。
本日は、ハッカソンで役に立つサービス**toio**について書きます。

## toioとは

公式サイトより引用
> いろいろなものを取り付けて自由にあそべるtoio。はじめの一歩はガイドにそって。少しずつ変えながら、想像を形に。つくる楽しさ、つくったものであそぶ喜び、そこで出会う偶然の発見がひらめきにつながっていく。手を動かして夢中になるうちに、小さなひらめきが積み重なって、創意工夫が自然に生まれる。そんな体験がtoioには詰まっています。

https://toio.io/about.html


## toioを使うメリット

### 初心者でも開発できる
小学生から開発できます

https://toio.io/do/

## toioを使った作品一覧

https://protopedia.net/material/460

# おわりに
**toio**はYahooのハッカソン「Digital HackDay2022」の提供テクノロジーで紹介されていました
プログラミング未経験でも楽しく開発ができるの良いですね！
shopify アプリ作成をGitHub Codespacesで行う

基本的なやりからはQiita記事を参考にすればOK.

https://qiita.com/index_suke/items/4f702ff67a3652e27d53

こちらとか分かりやすいです。

ただ、github codespacesから行うと、ポートフォワードの問題からエラーが出ます。

![スクリーンショット 2022-12-25 130339.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157360/4981daaf-09ee-3cc8-72dc-0cb8816e4dd5.png)

こちらをPublicに変更。

これが分からず、ローカル環境にインストールしたり、ngrokの設定を行ってみたりと苦労しました。
【AWS初学者向け】請求料金の詳細を確認する方法

## 知らず知らずのうちに料金が、、、
AWSソリューションアーキテクトの勉強でAWS環境をポチポチしているうちに、気づいたら課金されていました。。。

[![Image from Gyazo](https://i.gyazo.com/9f75ed7a38cd4c29524bd9c5527ca999.png)](https://gyazo.com/9f75ed7a38cd4c29524bd9c5527ca999)


実際に、CloudWatchやEC2のどこで料金が発生しているのかを、どのページで確認できるか分かりずらかったので備忘録的に記します✏️

<br>

## 結論

https://us-east-1.console.aws.amazon.com/billing/home?region=us-east-1#/bills?year=2022&month=12

↑こちらのページに、どのリージョンの、どのサービスで料金が発生しているのかを見れます👀
具体的には、Billing＞請求書ページに詳細が載っています！

[![Image from Gyazo](https://i.gyazo.com/e89db4029b8ff190e2e08ef0e9eb4ddd.png)](https://gyazo.com/e89db4029b8ff190e2e08ef0e9eb4ddd)

<br>

## 最後に

AWS勉強中で多少の課金はしょうがないといえど、こまめにチェックしてインスタンスの消し忘れなどには気をつけたいですね🫠
"yyプラグインプラス"の学習効果について

# 概要　
`yyプラグインプラス`を学習に活用する例について記述します。
yyプラグインプラスは、以下のサイトでインストールできます。
[yyプラグインプラスのインストール(無料)](https://chrome.google.com/webstore/detail/yy%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/edooldmlaabbmllldenkkceddlbbeing?hl=ja&authuser=0)
[yyプラグインプラスデモ(youtube)](https://youtu.be/7VX3FJ8uDRo)
[yyプラグインデモx.265(youtube)](https://youtu.be/zCczDNii_xM)

(バージョンアップについて)
yyプラグインは、2023-01-05付けで「yyプラグインプラス v2.0」としてバージョンアップしました。一部で修正漏れで前のバージョンが表示されていますので、次回のバージョンアップで修正します。ご了承ください。


# 活用例
youtubeには様々なジャンルの動画が蓄積されています。
娯楽の動画もあり、知識・教養の動画もあります。今回は、この知識・教養の動画で学習のために活用する動画の例をいくつか取り上げて行きたいと思います。
### 「キャッシュフロー」についての学習利用
いきなりですが、ネットサーフィンをしていて、この言葉が目に付きましたりで、取り上げたいと思います。ネットで、「確定申告」などの税務関係のテキスト文字で動画の検索を行うと動画のタイトルに、この文字「キャッシュフロー」が出てくる動画がヒットされることがあります。この言葉の意味については、以前もいろいろ調べてその時は理解したつもりでいました。しかし、時が経つと、忘れてしまいます。今は、個人事業も廃業していて、青色申告はしていませんので、確定申告もしていません。しかし、当時を思い出して、再度、調べてみようと思いました。
「キャッシュフロー」という言葉はよく、目にしますので、「yyプラグインプラス」でサーチしてみようと思ったことがその発端です。
### サンプル画面
以下の画面は、yyプラグインプラスで、「キャッシュフロー」をクェリーとしてyoutubeサーチを実行した結果のリスト再生画面です。

![キャッシュフロー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/198006/501a912e-6800-2d82-1ef5-afcb8ecc447a.png)


#### (1)サーチ結果のリスト
![リスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/198006/c056ddce-c304-b71c-19cd-f8da3ec949b3.png)


画面のリストは、「キャッシュフロー」で検索した結果のリストです。
このリストのトップにある動画は再生回数の高い動画になります。この動画ように
キャッシュフローについて学習したいときは、これらの動画を見て学習して行くことができます。なお、リスト画面の右側にあるキーワード一覧は、リストのタイトルにあるキーワードを切り出したものです。この切り出しはgooラボのAPIを使用しています。これらのキーワードを選択してここで、再検索ができます。こうすることで、ネットサーフィンを続行できます。

#### (2)クェリーについて
youtubeサーチページで検索するクェリーは、出来るだけシンプルな言葉がヒット率がいいようです。短い文章でも検索できますが、その場合は想定していたタイトルの動画のヒット率はよくないようです。文章の中にある、いくつかの言葉で検索しているようで、想定以外の動画もヒットしてしまいます。

#### (3)動画の良し悪し
検索結果には、品質の良い動画、あまりよくない動画もあります。リストの先頭には比較的よい動画が検索されているようです。実際に、再生してみて、確認することが必要です。中には、学習用として、非常に参考になる動画もあります。

#### (4)リスト内のタイトルからサーチ
検索結果のリストのタイトルに調べたい言葉がある場合は、その言葉を選択して、再検索を実行できます。例えば、タイトルの中の「キャッシュフロー計算書（C/F）」を選択して動画を検索することもできます。
このように、次から次へと、リストのタイトルから繰り返し、動画検索ができます。
# 場所を選ばず学習
(1)耳だけの学習
私の場合は、Bluetooth対応のイャフォンで聴いています。家の中で動きながらも聴いていられますので、パソコンに張り付いて他の作業ができないことはありません。
ながら学習をしています。


# あとがき
youtube動画をネットサーフィンするときに活用するのがこの「yyプラグインプラス」です。youtubeには、良質の学習に最適な動画もたくさんあります。書籍からは得られない、動画ならではの学習効果を期待できます。
その時に役に立つプラグインがyyプラグインプラスです。
ValueObject Money SpecialCase

![24.ValueObject Money SpecialCase.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11525/dd21cf2f-2c7c-dfe0-5025-aff87ee55e51.png)

https://bliki-ja.github.io/pofeaa/ValueObject/

https://bliki-ja.github.io/pofeaa/Money/

https://bliki-ja.github.io/pofeaa/SpecialCase/

Value Object とは、ビジネスロジックで管理する対象ではない、単なる値でしかないオブジェクトです。

Identity Map はエンティティの重複を避けるパターンでした。プログラムで扱うものに対して、重複したインスタンスが存在すると、矛盾した状態が生まれてしまい、問題になります。Value Object はそうした一意性の問題とは無関係な、いくら重複しても問題にならない小さなオブジェクトです。Value Object の決定的な特徴は、一意性がなく、等価性が重要である点です。

C++ や Java のようなパフォーマンスを重視する言語には、オブジェクト型でないプリミティブ値があります。通常、単純な数値はこのプリミティブを使って表現します。けれど、日付や分数などは、要素となるバラバラの数値で扱うのではなく、複合的な値の組み合わせにしたほうが扱いやすくなります。オブジェクトの形を取っているけれど、プリミティブ値のように、意味さえあっていればいいのでインスタンスの管理は不要 (とくに Java のように優れた GC を持つ言語では) と言えるオブジェクトが Value Object です。

Value Object は、変化する状態を持たないイミュータブルなオブジェクトにできるなら、積極的にそうしたほうが有利です。もし意図せずインスタンスを共有していたら、中身が書きかわってしまわないと保証できません。Java や Python は、最適化によって内容が同じ文字列オブジェクトを共有します。これは String がイミュータブルだから可能な方法です。

だかといって、不変にすることが必要条件というわけでもありません。たとえば Query Object のクライテリアは Value Object です。Query Object のコンポジットに追加的に条件を入れたくなったとき、すべて再構築しないといけないのは厳しすぎます。そもそも、クエリの大枠の原型に `add()` して作っていくことができず、末端から積み上げないと構築できないのは、ビルダーとして不便すぎますね。

Money は Value Object の代表格です。業務プログラミングは金額を扱うことが多々あります。金額を生のプリミティブ値で管理するのは、インターネット時代のプログラムとしては少々不出来です。なぜなら、オンラインのビジネスは国境を超えやすいのがメリットで、それを活かすには、為替レートの異なる通貨での決済が不可欠だからです。同じ国の中でも、発行者が異なる各種電子マネーでのトレードも活発になりました。

数値だけを見て単純に足し算してはいけないお金が数多くあります。コンピューターはそんな事情を知らないので、数字でありさえすれば、言われたとおり演算してしまいます。お金の扱いでのうっかりミスは、大事故になります。それぞれのビジネスには、お金の扱いに関する制約が必要なので、それをモデリングするのに、お金タイプの Value Object を活かす Money パターンが有効です。

Special Case は、オブジェクトの多態性を活かして、特別なデータの場合に、同じ抽象クラスを共有する異なる具象クラスのインスタンスを生成し、透過的に扱えるようにするパターンです。

Value Object における Special Case の代表は Null Object です。null の可能性を考慮し忘れてオブジェクトのメソッドを呼び出すと、あの有名なヌルポ (NullPointerException) が発生します。扱う Value Object の型と同じ型の派生で null を意味するバージョンを設け、それを使うようにすることで、そのままメソッドを呼び出すように記述することができます。通常は何らかの処理が実行されるけれど、その特殊ケースとして、何も起きないという処理になります。

Single Table Inheritance はエンティティの Special Case を実現するのに最適です。無効レコードも特別扱いレコードも、多態性で振る舞いの変化をあらかじめ作っておけるので、扱う方は何も考えず、同じメソッドコールをするだけで済みます。

**追記**
ベースパターンには他に、Gateway、Mapper、Layer Supertype、Record Set が紹介されています。先に登場した各パータンにすでに含まれている語彙ばかりです。業務 Web アプリケーションに限らず、基礎をおさえる意味で、最後に補足的に説明されています。

ちょっとそのままではないのが Layer Supertype ですが、これは「Service Layer の一般化」のことです。Domain Model のファサードとなるサービスに、再利用可能な共通した機構を設けておき、横断的な関心の扱いが機能によって違うといった一貫性のなさを排除するのに利用できます。Implicit Lock のような仕組みに活用できるでしょう。

https://bliki-ja.github.io/pofeaa/Gateway/

https://bliki-ja.github.io/pofeaa/Mapper/

https://bliki-ja.github.io/pofeaa/LayerSupertype/

https://bliki-ja.github.io/pofeaa/RecordSet/
今年の（私の周りで主観的に観測した）技術同人誌界隈

# 今年の（私の周りで主観的に観測した）技術同人誌界隈

この記事は[技術同人誌 Advent Calendar 2022](https://adventar.org/calendars/8144)の25日目の記事です。
(今のところ)1つ前の一昨日(12/23)はmasuipeoさん[^fun]の[2022年に書いた技術書やアウトプット](https://note.com/masuipeo/n/n6d3cceb9f884)です。

[^fun]: 実はファンです

今年も例によって、そもそもの技術同人誌の盛り上がりがそれとなく落ち着いてしまったな(ビフォーコロナ比で)[^corona_ga_warui]
　という感じの2022年だったように思いますが、皆様いかがお過ごしでしょうか。

[^corona_ga_warui]: だいたいコロナが悪い

今年そんな技術同人誌関連どっぷり浸かっていないような……　と思っていた時期が私にもありましたが振り返ってみると全然濃かったですね。


## 厚さは暴力だった(今年の前半の総括)

技術同人誌的には今年の前半(1月～6月)は基本的に「僕のアジャイル100本ノック(以下、「100アジャ」と記載します)」関連の事ばっかやってた覚えがあります。

この本、最終的に102章450ページを束ねあげるという意味のわかんない事になっており、結果としての本を見ると「すげー！」ってなるんですが、そんな簡単に100章集めるのは成立してないです 笑


なおこの時期、並行してプライベートで転職があったりはした[^tenshoku_sitayo]ので、なんか異様な忙しさとしんどさがありましたね……　精神的に削られると全部がしんどいんだけど最中はなかなか気づけない（今俯瞰してみるとずいぶんヤバかったな　という感想を得ています）

[^tenshoku_sitayo]: 無事7月から新天地で働いています。kintone楽しいです！


### 1回締切が吹っ飛んで結果としてよかった100アジャ

そもそも、100アジャは2月の技書博6で発行予定だったのですが、コロナの拡大が止まらない事もあって、技書博6の催行は断念されちゃったのですよね。

私も実は技書博6からコアスタッフとして参加していたので、裏側もよく知ってはいたのですが……　催行できるものならそりゃしたいし、かと言って社会情勢的にはさすがに開催するのは厳しいだろう　という話で、現場としては苦渋の決断ではあったわけです。

100アジャもなんか雰囲気が落ち着いちゃうだろうな　と思っていたらまあ当然締切がめちゃ伸びたので執筆してるみなさんの足も止まりました。仕方ないですね。一回休みです。

なお今だからこそネタとしてお伝えできるのですが、2022/1/29時点ではたった35章でした。これぐらいだと普通の技術合同誌ぐらいですね。（なおそれだけの原稿が集まっただけでも、結構すんごい部類ではある。）

その後、GWぐらいで56章250pになった　というチャットのログが残っていました。[^nice] かわいく育ってきたぜ……
[^nice]: ナイス俺。

結局最後102章450pにふとましく成長して爆誕、コミケ100で無事に世に放たれました。厚くてかわいいぜ……


なお入稿直前にどこまで校閲をやるか？という点についてはもともと親方さんと意見交換していた際には「寄稿してもらってるしそこまで見なくていいんじゃない？」という雰囲気ではあったのですが、私の個人的な感覚としては今回始めて技術同人誌を書いて、やったー！ってなる人が多いのだろうな……　そこに誤字脱字があるとテンション絶対下がるよね　成功体験を得て欲しいね！

という思いがあり、2周ほど450pと戦い、誤字脱字を徹底的に叩き潰しました。(私の目も眼精疲労で叩き潰されましたｗ)

ちなみに　自分の原稿は大丈夫だろうと思っていたら自分のところに誤字脱字が残っており、そこを思いっきり見逃したまま印刷されちゃいました。　こういうのはペアレビューがやっぱり要りますね。(450pでは今のリソース的にやるとまず無理なので、レビューアを増やさないと厳しいですね……)

### 意外なところで表彰された100アジャ

その後100アジャはなんと、技術書典さんの「第５回　刺され！技術書アワード」ニュースタンダード部門の優秀賞を獲得しました！

https://youtu.be/6e2B3ng8TdM?t=4423

正直なところ記事書いたり、集めたり、校閲作業は非常に大変だったのですが、ここまで凄いことになるとは思っていませんでしたわ……　頑張って良かったです　笑


## 厚さは暴力みたいな本が終わったので

大物が終わったので色々と他の事を始められるようになりました。

締切が終わった時に訪れるのは次の締切だとある人も言っています。仕方ありませんね。

### Web0本

さっぴー川原さんが「ロストテクノロジー　いちばんやさしいWeb0の話」という技術同人誌を作る　というので前回みたく寄稿したり校閲したりしてました。

※なお前回の「カジュアル面談のトリセツ」でも全く同じような関わり方をさせてもらってて、今回も引き続き～　という感じです。ありがたい話です。

### 積み基板本

同人誌版をそのまま商業誌移行するみたいな話に一瞬なったのですが、それでは勿体ないだろう……との事で、ちゃんとしっかり追記を入れました。(Arduinoの実験キット買って遊んだりしたのでそういう内容が増えてる。)
12/16に無事出たようです。[積み基板を作らないための電子工作入門](https://nextpublishing.jp/book/15993.html)

### 技書博７

技書博７に行こうと思っていたら流行りのビッグウェーブに乘ってしまいそもそもの予定が吹っ飛びました…
なので例によって会場以外からのフォローをひたすらしていた技書博当日でした。
行きたかったなぁ……

### 100コミュニケーション(reboot)

親方さんが電子版だけで出してたやつをRebootして印刷版として出すんだそうで。(当初はC101で出す予定だったのですが伸びました)
前書いてからずいぶん経ってるから新ネタ絞り出せるかな？今年の技術同人誌書き収めになる可能性もあるのでがっつり取り組んでみたいと思います。

## 来年の技術同人誌はどうなるのだろう

今年は色々とイベントがあったので　気づいたら年末やん……！　となっていた感じが強いのですが、来年はどうなっていくのでしょうね。

と思っていたら、

https://twitter.com/gishohaku/status/1597083491572719616?s=20&t=sZdCjpM8eDxUaVzf7-eoxQ

技書博キャラバンが再起動するようです。

なお私も　技書博キャラバン２０１９＠大阪　で技術同人誌界隈に足を踏み入れたので[^adcl]、こういうイベントで地方からの技術同人誌界隈への参加者が増えるのは良いな　と感じています。

来年こそはコロナウイルス感染症が一段落して、従来の技術同人誌界隈の活況が戻ってきてほしいものですね。

[^adcl]: 去年のアドカレにもちょっと書いてる https://qiita.com/ditflame/items/cd15257dbe12dbb86a0e
ハッカソンで役に立つサービス（Unity）

# はじめに
この記事は[**ハッカソン Advent Calendar 2022**](https://qiita.com/advent-calendar/2022/hackathon)の19日目の記事です。
本日は、ハッカソンで役に立つサービス**Unity**について書きます。

## Unityとは
一言でいうと、『**ゲームの開発プラットフォーム**』です！
Unityを活用した有名なゲームには`ポケモンGO`などがあげられます

公式ドキュメントの説明
> Unity は、世界最高のリアルタイム開発プラットフォームであるだけではなく、皆さんを成功に導くように設計された堅牢なエコシステムでもあります。Unity の活発なクリエイターコミュニティにご参加ください。描いているビジョンを実現するために必要なものを入手できます。

https://unity.com/ja

## Unityを使うメリット

### 1. 豊富なデザインが用意されている
`Unity Asset Store`でデザインを購入することができます
無料で使えるデザインもあります

https://assetstore.unity.com/

### 2. 様々なプラットフォームで動作する
「PC、VR/AR、モバイル、ゲーム機」など様々な環境で動作させることが可能です

### 3. 費用が低い
ハッカソンで使う分には、無料で使えると思います！

https://store.unity.com/ja

### 4.ドキュメントや教材が豊富
人気な開発プラットフォームだけあって、ドキュメントが豊富です
私はUdemyで学習しました

## おわりに
**Unity**での開発は慣れるまで少し時間はかかりますが、簡単なアプリであれば初心者でもサクッと作れるのでオススメです！
ハッカソンで役に立つサービス（kintone）

# はじめに
この記事は[**ハッカソン Advent Calendar 2022**](https://qiita.com/advent-calendar/2022/hackathon)の18日目の記事です。
本日は、ハッカソンで役に立つサービス**kintone**について書きます。

## kintoneとは
一言でいうと、『**シンプルなアプリが「サクッと」開発できるサービス**』です！

公式ドキュメントの説明
> kintone（キントーン）とは、
累計20,000社以上・毎月500社以上が導入するサイボウズのクラウドサービス。
表計算ソフトよりも快適に、専門システムより柔軟に、自社でシステムを開発するよりスピーディー＆低コストに、「サクッと」思いついた業務改善をすぐに実行できるのが特徴です。

https://kintone.cybozu.co.jp/what_is_kintone/

## kintoneを使うメリット

### 1. 非エンジニアでも触れる
**GUI**で簡単にアプリが開発できます

### 2. サンプルがたくさんある
100種類以上のサンプルが用意されています

### 3. 外部サービスとの連携も可能
API連携やJavaScriptで機能を拡張することが可能です


# おわりに
**kintone**は触ったことがないですが、とても人気な開発ツールなのでいつか触ってみようと思います
エンジニアとして成長するために必要な7のこと

## はじめに

僕も成長の過程にいるのであまり偉そうなことは言えないのですが、

- 学生時代: （アルバイト）Androidアプリ開発やLaravel、Vue.jsを用いた業務支援サービスの開発
- 新卒1年目: PHPを用いた大規模な自社サービスの機能改善
- 新卒2~3年目: Vue.js、Railsを用いた業務支援（管理画面）の開発
- 新卒3~4年目: Vue.js、Railsを用いた新規サービスの開発
- 新卒4~6年目: React、GraphQL、Goを用いた新規サービスの開発

その他、細々と色々と経験してきましたが、ありがたいことに、新規サービスの開発に多く携わってきたりしました。
そんな僕がエンジニアとして成長するために必要だと感じることを7つのことをまとめてみようと思います。

## 1. 変化を認識し、試着してみる

技術の刷新は本当に早いです。
jQueryでDOMを操作していた時代から、たった10年しかたっていないのにありとあらゆるものが変わりました。

2022年現在であれば、VueやReactが人気だし何かいいことがあるんだろうな、JavaScriptではなくTypeScriptを使っているサービスが多いと聞くし、難しそうだけど、一度、**試着してみる（使ってみる）**かという気持ちが重要です。

## 2. トレンドを業務に取り入れる

**業務はプライベートで使う技術と違って遊びじゃないんだから、1のように簡単に入れるわけにはいかないんだよ！**
と思われるかもしれません。

**実際に難しいです。**

作られてきた大規模なサービスにいきなりReactを入れる。TypeScriptを入れる。みたいなことは本当に難しいことだと思います。

でも、業務時間ってめちゃくちゃ長いです。
新しいサービスや会社はどんどんモダンな技術を取り入れているというのに、レガシーなものをずっとメンテナンスし続けるということは自分の人生のほとんどの時間を使って市場価値が上がらないことをする。ということになりかねません。

なんとかして、業務に入れてやる！！
と考え出すと、脳ができる方法をめちゃくちゃ考えてくれます。

- 社内で新規サービスが立ち上がるときに真っ先に手を上げよう。
- 他に影響を出さず新しく記述するところだけ、TypeScriptで書けるようにしよう！

究極には、転職しよう！となるかもしれませんが、もしかしたら今の会社に所属しながらでもくぐり抜けてできるかもしれませんよ
脳をなんとかできないかという方に倒してみましょう。

## 3. エキスパートと一緒に仕事をしよう

特に自分が未経験の領域というのは、一人でやるのはかなり難しいです。
エキスパートを自分のチームに引き入れるのが一番手っ取り早いです。

僕の場合はReactでかなりつよつよエンジニアの方が社内にいたので、新規サービス立ち上げ時に半年~一年ほどサポートしてもらいました。

そんな人社内にいねーよ。というチームもあると思います。
社外で探してもいいかもしれませんね。

副業等でアドバイスやコードレビューにだけ入ってもらうみたいなこともいいんじゃないでしょうか？
ベストプラクティスから外れていっているコードを指摘してもらったり、勉強会にだけ参加してもらったりするだけですごく価値があると思います。

## 4. 勉強会を開催しよう

僕は面倒臭がりなので、一人でプライベートに勉強しようと思ってもだらけて、ゲーム始めたりします。
仕事している間や、何か作ってる間は楽しいのですが、勉強だと思うと急に面倒になるんですよねぇ、、

そんな人は、勉強会を開催してもいいんじゃないでしょうか？
あなたが危機感を感じているということは、誰かも感じている可能性が高いかなと思います。

誰かとやるとサボれなくなるのでおすすめです。

## 5. 非エンジニアや上司と信頼関係を築こう

会社に入ってきたばかりのペーペーが何を言っても響きません。

飲みに行くみたいな手もあると思いますが、本質的な信頼ではなく、仲良しこよしで仕事をしているわけではないので、他の方法で手っ取り早く信頼関係を築く方法があります。

**業務を期待されていた150%でやってください。**

口だけじゃなく、この人は完璧以上に仕事をこなす。ということが分かれば人は意見を聞いてくれることが多いかなと思います。
そうじゃないのであれば会社を変えましょう。

## 6. アウトプットする習慣とせざるを得ない状況を作る

アウトプットってやっぱり大事です。
知識の体系化に繋がるし、成果の一部にもなる。

わかっていても

> 僕は面倒臭がりなので、一人でプライベートに勉強しようと思ってもだらけて、ゲーム始めたりします。

が邪魔をするんですね。

だから、**習慣**と**せざるを得ない状況**を作ることが大切だなと思います。

僕の場合、

**習慣: Zennに纏めながら調べる**

- [Next conf 2022まとめ](https://zenn.dev/anneau/scraps/dfb22c89294ae0)
- [エッジコンピューティング](https://zenn.dev/anneau/scraps/9cce5860fa8c64)
- [Next.js×Emotion×Storybookについて](https://zenn.dev/anneau/scraps/5fdba1769a3a5b)

みたいな感じで言語化しながら雑にまとめるという習慣をつけたりしてます。

**せざるを得ない状況: Qiitaアドベントカレンダー**

まさにこの記事がそうですが、Qiitaのアドベントカレンダーに乗っかって自分がせざるを得ない状況を作るというのはとても大切だと思います。

https://qiita.com/advent-calendar/2022/kobo-frontend-review-book

## 7. 後輩を育てる

育てるのはマネージャーの仕事だと思っているなら大きな間違いです。

テックリードは技術のリードをしている人でもあり、エンジニア一人一人をリードする立場でもあります。

それに後輩を育てるということはメリットも大きいです。
自分の知識が曖昧なところを言語化する必要が出てくるんですね。

なぜこのコードがダメでこのコードが良いのか。
自分が考えるアーキテクチャの理想系はどういう形なのか。

あなた自身のためにも後輩を育てるというのは避けてはいけません。

## まとめ

実はフロントエンドに絞った話のみでアドベントカレンダーをしようと思っていたのですが、最後の記事はエンジニア全般に向けた記事になってしまいましたね（汗

お付き合いいただきありがとうございました :bow:

https://qiita.com/advent-calendar/2022/kobo-frontend-review-book
【VPS+wireguard】自宅でsymbolノードを公開する際に詰まった話（解決済み）


# はじめに
自宅でVPS+wireguardを使ってsymbolノードを構築する時に
詰まった話について記事にします。

この問題を解決するまでに多くの人に助けられました！
本当にありがとうございました！

## 環境
#### VPN
・WebARENA Indigo １GBプラン
・Instance 2vCPU,2GB RAM, 40GB SSD, 100Mbps
・ubuntu 22.04 LTS

#### Client PC
・ubuntu 22.04 LTS

### 自宅LAN環境
・マンション内で無料でインターネットができる環境。
・個人ではなく、マンション全体でプロバイダと契約してる？
・グローバルIPはもらえない。

## 問題発生までの手順
下記のもなかさんの記事を参考に「接続」の章までやる。

https://qiita.com/monakaJP/items/032ccba08331b172853c

そこまでやって特に問題がなければOKです！
しかし、私の場合は記事通りにやっても何故か上手くいきませんでした。。

# どんな状態になったか
１\. wireguardで接続をするとClient PCがインターネットに繋がらなくなる。
（繋がるけど極端に遅い）
２\. wireguardで接続中でもvps-client間のpingは双方ともに通る。
３\. wireguardを停止するとClient PCがインターネットに繋がるようになる。

**この状態になってしまうとノードの立ち上げはできず、
また起動中のノードがあってもheightが上がらない状態になってしまいます。
(wireguardを停止すればどちらも問題なく動きます。)**

# 解決のために行ったこと
ファイヤーウォールが原因だと思い、以下の対応を行いました。

１\. WebARENA Indigoのダッシュボードからファイヤーウォールを解除。
２\. VPSのファイヤーウォール停止
３\. Client PCのファイヤーウォール停止

しかし、問題は解決しませんでした。

# 原因は何だったのか
Client PCの動的IPアドレスを割当していた(DHCP機能)ことが問題でした。

:::note warn
WireGuard は、ネットワーク層 (レイヤー 3) で動作します。そのため、DHCP を使用できず、静的 IP アドレスまたは IPv6 リンクローカルアドレスを、サーバーとクライアントの両方のトンネルデバイスに割り当てる必要があります。
:::

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/assembly_setting-up-a-wireguard-vpn_configuring-and-managing-networking

よってClientPCには静的IPアドレスを割り振らないと駄目なことがわかりました！
なのでClient PCで固定IPの設定を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2532264/503d63fd-b044-a96e-5865-0c4011aad403.png)

※固定IPを付与する場合、wifiルーターのDHCPで端末に付与されるIPのレンジとClientPCに設定したIPのレンジがかぶらないように注意してください。
※使用しているルーターによって設定は異なりますのであくまで参考にしてください。



こちらの対応を行いますが、**もう一つ問題が残りました。**

# httpには繋がるがhttpsには繋がらない
Client PCがインターネットに繋がったのでやったー！
と思っていたのも柄の間、相変わらずノードの立ち上げはできず、
立ち上がっていてもheightは上がらない状況に変化はありません。

この問題に関してはサーバー側のwireguardの設定ファイルに
以下の内容を追記してもらえればOKです。

```
/etc/wireguard/wg0.conf(サーバー側)

[Interface]
MTU = 1350
```

参考にしたリンク↓
https://bbs.archlinux.org/viewtopic.php?id=254896

## 解決
ここまでの作業を行うことで無事に自宅でも
symbolノードを公開することができました。

今後、自宅でノード構築に挑戦する方の参考になればと思って記事にしました。

皆も気楽に自宅でsymbolノード構築！！！

**改めて、**

**今回の問題で助けて頂いた方々、**

**本当にありがとうございました！**

### 余談
ここだけの話ですが、ノード構築を始めようとして完成するまで13日が経過してました…。

特に問題がなければ1日あれば十分構築可能な作業量ですので、
それ以上かかるようなら#symbolタグを付けて質問しましょう！
ChromeのURL欄で自社ドキュメント検索

この投稿は、株式会社bitFlyerによる[アドベントカレンダー](https://qiita.com/advent-calendar/2022/bitflyer)の25日目になります。

株式会社bitFlyerでエンジニアとして働いている大和屋です。
ほぼ毎日仕事で私が使用している便利なTipsを紹介します。

ChromeのURL欄で自社ドキュメント検索
当社は社内ドキュメントやチケット管理ツールとしてAtlassianのConfluenceとJIRAを使用しています。
社内ドキュメントやチケットを検索したい時に、それぞれのサイトを開いて検索するのは少し面倒なので私は次のように普段検索しています。

ChromeのURL欄に次のような検索ワードを入れて、Enterキーを押します。

![y1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/905b8a52-73d1-242a-3001-8ae683cc636e.png)



次のようにConfluenceで検索結果画面が表示されます。
![y2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/f1f05b36-43db-0365-536d-28aee2c96c03.png)


ちょっとした省略可ですがとても便利で一度使い出してから手放せなくなりました。
3年前に教えてくれた同僚に感謝しかありません。

同様にJIRAでも検索したいので検索してみます。

![y3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/13960344-7a52-5b91-30a3-61adad63f057.png)



BFというJIRAプロジェクトで「報告」というキーワードで検索された結果が表示されました。とても便利です。

![y4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/6cbeb529-d57f-f73e-2b53-fb4e6a7e826d.png)



とても便利なので次は、JIRAのPMというプロジェクトでアドベントカレンダーを調べたいと思います。調べる前に、PMというプロジェクトで検索できるように設定する方法を紹介します。

まずは、Chromeのメニューバーから「設定」を選択します。
![y5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/b32dce01-293b-1618-2ddc-ad9a587adb26.png)



左側のサイドメニューから「検索エンジン」を選択し、右側の「▲」を選択します。
![y6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/def52a4d-7a10-da69-537f-78c4170be9b5.png)


右側のウィンドウをさげて、「サイト内検索」の箇所を表示し、「追加」ボタンを選択します。

![y7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/ccb91a2b-b750-0dc0-dbff-240a2bc18c4b.png)







開いたウィンドウに必要な情報を入力します。

![y8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/e586a371-3a4b-fa21-62df-8dc93398600b.png)


「検索エンジン」は任意の文字列で、自分が後からみてわかるような名前を入力します。
「ショートカット」は検索する際に、今回設定した検索方法で検索することを示すので、短めで覚えやすいアルファベットの文字列をいれます。今回の例では、PMチケットを検索するので、「pm」としました。

「URL」は、JIRAで検索したときのURLを使用します。

検索した結果のウィンドウのURLをコピーします。
![y9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/89863073-a2ea-e1e6-7bab-8849aa1bd555.png)


例えば以下の様な文字列になります。
太字の部分が検索ワードになります。検索ワードとしては、「%22」で囲われている部分です。
![y10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/d0e6cfee-53e2-5eee-2626-a1d32d92abcf.png)

この太字部分を次のURL例のように「%s」とします。この文字列を「URL」に入力します。

`https://xxxxxxxxxx.atlassian.net/issues/?jql=project%20%3D%20pm%20and%20text%20~%20%22%s%22`

最後に、追加ボタンを押します。

これで準備が完了したので、URL欄にまず、「pm」と入力して、スペースを入れます。
今入れた「pm」が先ほど「ショートカット」で入れた文字列と同じです。
そうするとURL欄が、「JIRA PMチケットを検索」と変わりました。

![y11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/e13b897d-f26b-d4e4-8ff0-38bb753b2a7e.png)

そしてアドベントカレンダーと入れて検索してみます。

![y12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952758/d7fe530e-7d62-0e72-a5db-bc30ac1e9a99.png)

無事にJIRAのPMプロジェクトで、アドベントカレンダーで検索できました。


同様のことは、JIRAやConfluenceに限らずクエリストリングを使うサイトなら設定できるので、ぜひ皆様の検索ライフのお供にどうぞ。
Rails関係記事　リスト一覧[自分の記事のまとめ]

<h1>環境構築</h1>
<h6>
<ol>
<ul>

・[本番環境用のgemを開発環境にインストールしたくない時の対処法](https://qiita.com/Ktsuki16/items/4cee16e285aa842dfd3e)

</ul>
<ul>

・[rails開発でincompatible library versionが出た時の対処法](https://qiita.com/Ktsuki16/items/4b0290bac7d0499c65cf)

</ul>

<ul>

・[環境変数の設定に困ったときに読むべき記事[備忘録]](https://qiita.com/Ktsuki16/items/7a95ce679a2ee67ece94)

</ul>

<ul>

・[nodenvライブラリをインストールしたはずなのに、nodenvコマンドが使えなかったので解決してみた。[パスを通せば解決。]](https://qiita.com/Ktsuki16/items/8e594c015ea4c4d37e6b)

</ul>

<ul>

・[rbenv localでrubyのバージョンが変わらなかったので解決してみた
](https://qiita.com/Ktsuki16/items/3dcfecac185006da5677)

</ul>
<ul>

・[]()

</ul>

<ul>

・

</ul>
</ol>
</h6>






<h1>heroku</h1>
<h6>
<ol>
<ul>

・[herokuデプロイでcouldn't find repositoryが出た時の対処法](https://qiita.com/Ktsuki16/items/17603981b6fdffd03569)

</ul>
<ul>

・[herokuで"We're sorry, but something went wrong."が出たので解決してみた。](https://qiita.com/Ktsuki16/items/aac10a2a615ab7afd0f1)

</ul>

<ul>

・[railsアプリをherokuにデプロイしようとして、 error Command "webpack" not found.が出た時の対処法](https://qiita.com/Ktsuki16/items/91db45838ebc6264acd8)

</ul>

<ul>

・[heroku-22をheroku-20に変える方法](https://qiita.com/Ktsuki16/items/365f2c2f3e45e3941a38)

</ul>

<ul>

・

</ul>

<ul>

・

</ul>
</ol>
</h6>






<h1>node.js</h1>
<h6>
<ol>
<ul>

・[Node.jsのバージョンを下げる方法](https://qiita.com/Ktsuki16/items/d52b873e6e518dae884b)

</ul>
<ul>・</ul>
</ol>
</h6>





<h1>テスト</h1>
<h6>
<ol>
<ul>

・[Rails　リンクが正しく動作しているかテストする方法](https://qiita.com/Ktsuki16/items/8624cd4dcbdc4b57eb6b) 

</ul>
<ul>

・[rails　テストのGreenとRedが見やすくなるコード](https://qiita.com/Ktsuki16/items/19b9f71f907427f25a1b)

</ul>

<ul>

・[railsのテストコードを少し読んでみた](https://qiita.com/Ktsuki16/items/19b9f71f907427f25a1b)

</ul>

<ul>

・[Rails モデルのテストコードについて[備忘録]](https://qiita.com/Ktsuki16/items/5acfd9653fc0a894762c)

</ul>
</ol>
</h6>



<h1>Railsルーティング</h1>
<h6>
<ol>
<ul>

・[Rails ルーティングについて備忘録](https://qiita.com/Ktsuki16/items/1cd8e3418b7fb2b1757d)

</ul>
<ul>

・

</ul>
</ol>
</h6>

<h1>Railsモデル</h1>
<h6>
<ol>
<ul>

・[Rails データベース作成　モデルの基本操作](https://qiita.com/Ktsuki16/items/6e958210750e1d761684)

</ul>
<ul>

・

</ul>
</ol>
</h6>

<h1>レイアウト</h1>
<h6>
<ol>
<ul>

・[パーシャルについての備忘録[Rails]](https://qiita.com/Ktsuki16/items/a847a69fb163488071ac)

</ul>
<ul>

・

</ul>
</ol>
</h6>


<h1>Bootstrap</h1>
<h6>
<ol>
<ul>

・[RailsチュートリアルでSass::SyntaxError: File to import not found or unreadable: bootstrap-sprockets.が出たので解決策を探ってみた。](https://qiita.com/Ktsuki16/items/69672a73141d146e4c99)

</ul>
<ul>

・

</ul>
</ol>
</h6>

<h1>Railsメソッド</h1>
<h6>
<ol>
<ul>

・[railsヘルパー link_toメソッド](https://qiita.com/Ktsuki16/items/6f49bf8be2ff2e319bf6)

</ul>
<ul>

・[rails provideメソッド](https://qiita.com/Ktsuki16/items/c29e8372ea80ca5d7de5)

</ul>
</ol>
</h6>


<h1>Railsコマンド</h1>
<h6>
<ol>
<ul>

・[railsコマンドまとめ[備忘録:随時追加予定]](https://qiita.com/Ktsuki16/items/4acc804102ea6ed3c9bf)

</ul>
<ul>

・[rails newしたときにNo value provided for required arguments 'app_path'が出た時の対処法](https://qiita.com/Ktsuki16/items/bc03f68861aa048bbb8c)

</ul>
</ol>
</h6>




<h1>Git/Github</h1>
<h6>
<ol>
<ul>

・[間違えてディレクトリを削除してしまったときの対処法https://qiita.com/Ktsuki16/items/7cf8b17e39aa25c497d6]()

</ul>
<ul>

・

</ul>
</ol>
</h6>
SFSpeechRecognizerでIsFormatSampleRateAndChannelCountValidエラーで落ちる


Youtubeのように音楽を流しながら音声入力するとエラーでアプリが落ちる
```
required condition is false: IsFormatSampleRateAndChannelCountValid(format) 
```
AVAudioSessionの設定の問題のようでsetCategoryの第一引数を.recordから.playAndRecordに変えることで落ちなくなる
```
try audioSession.setCategory(.playAndRecord, mode: .measurement, options: .duckOthers)
```