OmniAICreator/Qiita-1.07M huggingface dataset:
Elasticsearchの基本的な用語まとめてみた

# 前提条件
## 背景
自分なりに噛み砕いた用語集がほしかったので記載

## 環境

Elasticsearch 7.8

## この記事を読んだ方がいい人
・MySQLの経験がある程度あってSQLってこんな感じだよねー、な感覚がある人。
・RDBでは遅くなってしまう検索を解決してくれるイケイケな道具があることを知りつつ、それがなんなのかよくわからない人。

## この記事を読まない方がいい人
・Elasticsearchの実務経験がすでにあって全文検索エンジンとマブダチな人。
・日本人ならGroongaにしろよ、って人。

# 論理概念

## 用語一覧
| **用語**           |               | **意味**                                                     | **補足**                                                     |
| :----------------- | :------------ | :----------------------------------------------------------- | :----------------------------------------------------------- |
| ドキュメント       | Document      | RDBでいうところのレコード                                    | json形式                                                     |
| フィールド         | Field         | RDBでいうところのカラム。ドキュメント内のkey-valueを言い表す |                                                              |
| インデックス       | Index         | RDBでいうところのテーブル                                    | 実際にはアナライザによる単語分割などが行われてから保存される。kuromojiとかはアナライザの一種 |
| ドキュメントタイプ | Document Type | RDBでいうところのテーブル定義                                | Elasticsearch7.x系では1つのインデックスに複数のドキュメントタイプを定義できない |
| マッピング         | Mapping       | Document Typeとほぼ同義？Document Typeの具体的な内容のことを指している | 下記マッピング定義のリクエストを参照。<br>my_index:インデックス名<br>tweet:ドキュメントタイプ　　　ドキュメントに名前がつけられるこれがない場合はElasticsearchが自動的にマッピングを定義してからドキュメントを格納してくれる。scoutは多分これを利用している。 |

```
cur
l -XPUT http://elasticsearch:9200/my_index/_mapping/tweet -H 'Content-Type:application/json' -d '
{
    "properties": {
        "user_name": {"type": "text"},
        "message": {"type": "text"}
} }
```

## イメージ
![elastic_logical_words.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2373655/6627e026-d807-3f92-1882-f79c792c5cfa.png)


# 物理概念
## 用語一覧

| **用語** |         | **意味**                               | **補足**                                                     |
| :------- | :------ | :------------------------------------- | :----------------------------------------------------------- |
| ノード   | node    | Elasticsearchが動作する各サーバ        |                                                              |
| クラスタ | Cluster | 複数ノードで構成するグループ           |                                                              |
| シャード | Shard   | インデックスデータを分割した部分のこと | 複数ノードで分割して、サーバのリソースが足りなくならないようにする。インデックス作成後にはシャードは増やせない。 |
| レプリカ | Replica | シャードやノードの冗長化               |                                                              |

## イメージ
![elastic_physical_words.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2373655/3d6500ad-acc6-8afb-5b70-2d259de04deb.png)

# 補足
ElasticsearchのクエリはHTTPのボディにJson形式で指定する方式になっている。
REST APIでのインターフェースを提供しているので、なかなか直感的に操作を理解できる。

ただ、GETとPOST、どっちも参照系として使用されるみたい。全部かどうかはわかんないけど。

GETのリクエスト時にはHTTPボディを指定できないクライアントがいるんじゃない？っていう配慮らしい。

やさすてぃっく。
FEがやるUIデザイン勉強会のススメ

## はじめに
私の職場ではセクションを横断してフロントエンドエンジニア６名ほどで、UIデザインの勉強会を行っています。
この記事ではなぜフロントエンドエンジニア（以下FE）がUIデザインを学ぶのか、UIデザインを学ぶことでどんないいことがあるのかを書いていきたいと思います。

## 輪読会
勉強会の形式は輪読会です。
毎週木曜日にオンラインで開催しています。

**「[はじめてのUIデザイン](https://ui-design.studio.site/) 改訂版 (**著：池田 拓司, 宇野 雄, 上ノ郷谷 太一, 坪田 朋 , 元山 和之 , 吉竹 遼 )**」**
を各自読み、各週の担当者が軽くまとめて発表＆ファシリテートしています。

この本は”UIデザインを学びたいと思った方が最初に手に取る1冊”となるようにという願いがこめられた本であり、実際にUIデザイン初心者や私たちエンジニアにもわかりやすいように構成されています。
イチからUIデザインを学ぶには最適な本なのではないかと思います。

## FEがUIデザインを学ぶとどうなるの？
実のところ、デザインのことを完璧にはわからなくてもFEのお仕事はできるのだろうな〜と思います。

デザイン再現の技術的な実装を担保するのがFEのお仕事であり、デザイナーもFEも自分たちの業務範囲の中で責任を持つのが分業なのだな、と私は思っています。

では、分業された業務から染み出してFEがUIデザインを学ぶとどんないいことがあるのでしょうか？

### ①共通言語を理解できる→認識齟齬が減る

UIデザインパーツの名前などデザイナーが普段使用している言葉で「？」と思ったことや、なんとなくで使用しているけどどのような状態のもののことなのかがわかっていないということはありませんか？

例えば、このUIパーツわかりますか？？
<img width="600px" alt="モーダルダイアログ" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322267/9209d3bf-fe59-f190-3e48-dac5e1c8b010.png">

「モーダル」？「ダイアログ」？

私は輪読会で勉強するまでは上記2つは一緒のものだと思っていました。（人によって呼び方が違うんだろうな〜などと思ってました...）
実際はそれぞれきちんと意味があります。

#### モーダル

UIの**状態**のことを指す言葉で、「モーダル」と「モードレス」がある。

>モーダルとは「モードがある」状態を示しています。一方で、モードレスは言葉のとおり「モードがない」状態を示しています。モードとは、ユーザーが特定のモードに入り、そのモード内での操作を完了、またはキャンセルするまで他の操作ができない状態を言います。
出典元: 池田 拓司 “はじめてのUIデザイン 改訂版”

つまり、上の写真はモーダル（な状態）であるといえるんですね。


#### ダイアログ

ダイアログは状態を指す言葉ではなく、“元の画面の上に被せて一時的に確認や操作をさせるための**コンポーネント**”のことを言います。
ユーザーに入力操作を行なって欲しい時や、警告（アラート）などで用いられます。
<img width="600px" alt="モーダルダイアログ" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322267/6388321f-5ee5-f8ef-acc0-527695bcc16c.png">


つまり最初の写真は**モーダルな状態のダイアログコンポーネントが表示されている**ということになります。


実際にデザイナーと話すときにFEが上記2つのことを混同しているとなんとなく噛み合っていない…ということも起こるかもしれないですよね。
モーダルやダイアログ以外にUIデザインパーツの名前や意味を理解しているとデザイナーとの認識の齟齬を防ぐことができ、実装までのスピードもUPします。

### ②UIデザインができるまでのプロセスを知り、リスペクトが生まれる
この本では、デザインが出来上がるまでの思考プロセスや手法についても丁寧に解説されています。

デザインが出来上がるまでには、
- 情報の整理
- 情報設計
- ペルソナをつくる
- （ペルソナにどう動いて欲しいのかという）シナリオをつくる
のような調査、調査、思考、調査、思考.....にさまざまな適切なUIパーツを組み合わせ、サービスに合ったトーンやあしらいを使い、やっとデザインとしてアウトプットされます。

私の働く現場ではデザイナーが作成し、完成したデザインデータをもらうことがほとんどです。
最初からきれいに完成されているものを渡してもらえるので、今まで気にとめられていなかったのですが、私たちの手に渡るまでに様々なプロセスがあると知ることができました。

### ③関わっているサービスの狙いや方向性がわかる
UIデザインはプランナー（ディレクター）がサービスや今回の施策の意図などを説明し、デザイナーがそれをデザインに落とし込むという流れで作成することが多いと思います。

デザインがFEに渡ってきたときにUIデザインのいろはがわかっていると、
「今回はここのCVを測るテストだからメインカラーを使って目立たせているのか〜」
「この情報の方が大切だから文字のジャンプ率をあげているんだな〜」

などなど、サービスの情報設計に関しても気づきが得られます。
このような視点を持ってサービスに関わることで、ただの実装者としてではなく一緒にサービスをつくる一員としての気持ちが芽生えます。

この気持ちがあることで、ワイヤーフレームやデザイン作成時では気づかなかった小さな見落としをFEが気付くことができるので、大きな事故を防ぐことにもつながるのではないかと思います。

## おわりに

勉強会で知った知見やUIデザインを学ぶことで実務にどう良い影響を与えるのかを中心に記述しましたが、FEが集まってやるUIデザイン勉強会自体が単純にとっても楽しいです！！

見識がないことも多いですが、その都度みんなで調べ、一緒に考え、率直な疑問や意見を交換します。
「このUI実装したことあるよ〜！」とか「このUIはめっちゃいいけど実装難しそう…」などFEならではの話ができるのもこの勉強会をやってよかった点でした。
引き続きFE内でデザイン勉強会を行い、デザインの知見も高めていきたいと思います。

FEのみなさん、ぜひUIデザインの勉強を始めてみてはいかがでしょうか？
社会人エンジニアがアメリカに住む方法６選！！

自分がアメリカに住もうと考えてから、調べたことや、聞いたことをまとめました。

話を聞いた人↓

- アメリカにいるエンジニア3人
- カナダにいるエンジニア1人
- アメリカの学生1人
- リクルーターやマネージャー4人


## なんせビザ
1にビザ、2にビザ、3にビザ！
ビザがないと始まらない。

どれくらいの期間住みたいかによりますが、90日以上滞在したい場合は何かしらビザが必要です。
ビザの種類はこのサイトを見るとわかります。
[アメリカビザ種類と解説](https://www.usavisa.jp/guide/guide_category.html)

可能性のあるビザは、以下の通りです。
※ビザによって、滞在できる期間や、仕事の制限は異なります。

- H-1B（専門家）
- L（企業内転勤者）
- E-1,2（駐在員）
- J（交流訪問者）
- F（学生）
- グリーンカード（永住権）

上の4つはスポンサー企業が必要です。
スポンサー企業が見つかれば、弁護士さんがいい感じに発行できそうなビザを選んで頑張ってくれます。
（ビザによっては、スポンサー企業がいて弁護士さんが見つかっても、ガチャで落選することも）

いろんなビザがありますが、どのビザを取得するかよりも
**どうやってビザを取得する機会を得るか**が重要です。

## アメリカへの行き方

どうやってビザを取得する機会を得るか、について私が実際に聞いた話をもとに紹介していきます。

## その1: アメリカで採用される

一番シンプルで一番難しい行き方です。
普通にレジュメを送っても「ビザを持っていない」という理由ではじかれます。

企業がビザなしの人を採用した場合、その人のスポンサーとなり、
ビザ発行のサポートをする必要があります。（弁護士を雇ったり）
お金も時間もかかり、結構めんどくさいです。
それだったら現地で雇った方が早いし楽。
わざわざビザなしの日本人を採用しようとは思いません。

じゃあ無理やん！

と思いますが、日本語が話せることを活かせる場合があります。
「日本企業のクライアントを持っている」「日本進出を考えている」というように、
日本語が話せるエンジニアを求めている企業を狙います。

私が話したうち2人はこの方法でアメリカに行っていました。
1人目は、LinkedInで企業からオファーが来た
2人目は、語学留学の学生ビザでアメリカに行き現地で就活をした
と言っていました。

いずれも日本語が話せるエンジニアを求めていた企業から内定をもらったそうです。

## その2: アメリカに支社または本社を持つ企業に日本で入社し、アメリカオフィスへの転籍を狙う

安定の行き方です。
ただし、時間がかかります。

企業または発行するビザによっては、入社後数年間は日本オフィスで働く必要があったり、
マネージャークラスにならないと転籍権利が得られない場合があります。
また、アメリカオフィスへの転籍の際に、改めてアメリカのチームとの面接がある企業も多いです。

企業によって転籍に対する考え方が異なり、入社時の面接で、
アメリカへ行きたいことを言う方がいい場合と、言わない方がいい場合がありました。

こういった企業は日本オフィスの外国人割合が高いことが多く、公用語は英語だったりします。
私が見た企業では採用段階で、CEFR B2の英語力が求められることが多かったです。
https://englishtest.duolingo.com/en/scores

時間はかかるかもしれませんが、
職を手にしながら、アメリカへ行く機会をうかがえるという点で安定と言えます。

## その3: アメリカの大学に入学する

受験とお金の壁があります。
年間500万円くらいかかるそうです。高いっ

成績が良ければ返済不要の奨学金がもらえるかも！

卒業後はOPT(Optional Practical Training)という制度があり、
1年間企業でインターンを行うことができます。
その期間中に内定をもらい、ビザを発行してもらえるとアメリカで働くことができます。

## その4: アメリカの大学のPhDに進学する

多くの場合、学費が免除されます。
2年または5年後に卒業し、その3と同じ流れになります。

大学によると思いますが、合格するには、教授とのコネクションが重要そうでした。
私が話を聞いた人は、教授にメールを送りまくって、
返信をくれた人に直接アメリカまで会いに行っていました。

英語はTOEFL80~100点が目安。


## その5: 永住権ガチャに当選する
毎年、永住権（グリーンカード）の大抽選会が10月ごろに行われます。
世界中から国ごとにほぼランダムで選出されます。
ほとんどの日本人に[応募資格](https://www.green-card.jp/what/qualification.html)があります。



自力で申し込むと、入力情報や証明写真の不備で落選することがあるので、
心配なら以下のようなサイトを通すのが安心です。8000円くらいします💸
https://www.green-card.jp/

私は今年の分申し込みました！
当選確率約1%！発表は5月！ドキドキ！

## その6: アメリカ人と結婚💍
シンプル！！


## 番外編
その2に似た感じで、日本ではなくドイツを経由してアメリカに行った人がいました。
ヨーロッパもアメリカも行けて一石二鳥！

ビザがより取りやすいカナダに住んで、アメリカに遊びに行くという手もあります。


## まとめ
新しい人と話すたびに別の話が出てくるので、上記以外にも行き方があるかもしれません。
アメリカに住みたいと考えてる人は、たくさんの人の話を直接聞くことをおすすめします！

まちがってたり、新情報があればぜひ教えてください！！
「1枚のシート」でエンジニアとデザイナーのストレスが激減した話

# 「考慮もれ」「手戻り」をなくしたい
モチベーションクラウドシリーズのデザイナーです。
フロントエンドエンジニアのみなさんは、画面デザインを見て**「どう実装するんだ？」**とストレスを感じたことはないですか？
例えば...
👨‍💻 フロントエンド「Emptyのときはどうするんだろう？最初から考慮してほしいな...（ストレス）」
👩‍🎨 デザイナー「この状態も考えないといけないのか。確認するだけで1日終わるな...（ストレス）」
　→お互いにとって、よくない！！！！！

こうした状態を受けて、**お互いにとってストレスなく開発するために、**デザイナーとフロントエンドで制作プロセスを改善しました。
今回は、**プロセス改善のステップや導入してみて効果的だったツール（シート）**についてお伝えします。


# 【まず初めに】  「UI Stack（状態デザイン）」の必要性の周知
UI Stackとは、**UIの考慮すべき5つの側面**のことです。
以下の5つを設計時に考えることで、漏れなく統一的なUIを作成・実装することができます。

参照元：How to fix a bad user interface, Scott Hurff

https://www.scotthurff.com/posts/why-your-user-interface-is-awkward-youre-ignoring-the-ui-stack

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/886860/dddde8e1-9e1b-b3de-c0b8-4b1f514468ff.png)


**- Blank State（データが入っていない状態）**
**- Error State（エラー状態）**
**- Loading State（ローディング状態）**
**- Partial State（部分達成状態）**
**- Ideal State（理想状態）**
        
それぞれの具体例は、こちらの方の記事がとても参考になります。

https://note.com/nowim/n/n185d63cfda5c

当初、私たちの開発チームでは、デザイナーによってUI Stackに対する認識や対応の度合いが異なっていました。
あるタイミングでフロントエンドの方からUI Stackについて提案を受け、**「理想」状態だけでなくそれ以外の状態も、デザイナー全員が考慮してフロントエンドに引き継ぐべきだよね！**とチーム全体で認識を揃えました。


# 【次に】開発プロセスにUI Stackの確認を埋め込む
「意識しましょう！」だけでは変えるのは難しいため、デザイナーとフロントエンドの引き継ぎプロセスを改善しました。
具体的には、UI Stackを踏まえた「画面一覧」を開発の早いタイミングで確認するようにしました。

###1. 「画面一覧」の作成
- いつ：
    - **開発PJTが始まってすぐ**
- どのように：
    - **デザイナー（ワイヤーフレーム制作担当）が「画面一覧」を作成**
        - わかる範囲でOK、まず資料がある状態にしておく

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/886860/2495eb56-af73-e02a-b9d6-06f79a28a3eb.png)
最初はこのくらいざっくり



### 2. 「画面一覧」をもとに、画面数や実装工数を確認する
- いつ：
    - **要件定義書が大体書き終わった後、1週間後くらい**
- どのように：
    - デザイナー（ワイヤーフレーム制作担当）が、**UI Stackも考慮してワイヤーフレームを作成→「画面一覧」を更新**
    - フロントエンドエンジニアが、**事前にWFと画面一覧を見て、考慮・追加してほしい画面や要素がないか確認**
    - デザイナーとフロントエンドでミーティングを実施・認識合わせを行い、考慮漏れについて対応
    - 上記がある程度完了後、UIデザイン制作に移る

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/886860/cbe8c915-ce41-818a-5fef-b9e2241a916a.png)
デザイナーがわかる範囲で洗い出し、すり合わせる


# 【結果】生産性の向上・ストレスの軽減→UX/UIの質向上に
- **後から考慮もれが発覚して手戻りすることがなくなり、**開発全体の生産性が向上しました。
- 早い段階で全体像を把握しておくことで、**各状態デザインに対して統一的なUX/UIの設計に余裕を持って対応できる**ようになりました。

合わせて、こんな効果もありました。

- 「画面一覧」に完了日や進捗状況を記入する欄を作ったことで、「作成中」など**デザインの進捗も分かるようになり、無駄な確認作業を大幅に減らす**ことができました。
- 結果として、**お互いの作業状況が常にわかることで、安心感を持って開発を進める**ことができるようになりました。
- また、テストケースの抜け漏れを確認しやすくなり、QAメンバーにとっても良い影響がありました。

# 【最後に】プロセス自体を変えてみよう

追加の工数が増えるようで、最初は面倒に感じるかもしれません。

「管理コスト増えそうだな〜」
「ガチガチにやるとスピード落ちそうだな」
「全部洗い出したり、更新するのがめんどい・・・」などなど

実際、私たちもそうでしたw
最初の立ち上げ段階では、フォーマットを整えたり、ミーティングを入れたりなど、シンプルに「追加対応」なので瞬間的に工数が増えるのは間違いありません。

しかし、開発における「シフトレフト（Shift Left）」の考え方があるように、考慮すべき要件を前倒してデザイン段階で発見・対応することは、（後々必ず確認が発生することでもあるので）開発プロセス全体の効率向上につながりました。
また、より良いプロセスを模索する状態を作ったことで、様々なメンバーから**「こうしたら良いのでは？」など声が挙がりやすくなり、結果として継続的・長期的な生産性向上につながっている**と実感しています。

魅力的なプロダクトを作るには、プロセスも大事。
私たちもまだまだ試行錯誤の途中ですが、日々進化する開発チームをつくっていきたいと思います。
AWS Certified Solutions Architect - Associate(SAA-C02) 合格体験記

ここ半年、会社の業務で AWS を触る機会があったので、せっかくならということで Solutions Architect - Associate(SAA-C02) を受検し、合格したので受検記録を投稿します。

合格時のスコアレポートは以下の通り。

![Screen Shot 2021-12-10 at 12.25.02 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66988/1514e997-34d0-0e66-0a91-c68b50cab756.png)

# 受検前の知識レベル

AWS の主要なサービスがどんなものかは知っている。
また、業務で触ってたトピックとしては以下。いわゆるマネージドサービスはあまり使っていない。

- VPC
- EC2
- NLB
- SecurityGroup, Network ACL
- Route53
- ACM
- CloudFormation

# 受検に向けた勉強

勉強期間としては約1ヶ月で、主に利用したのは以下。どれも結構前に購入して積んでいたもの。

## Udemy

突破講座はハンズオンはまったくやらずに確認問題だけ。あとは問題集をぶん回していました。

https://www.udemy.com/course/aws-associate/

https://www.udemy.com/course/aws-knan/

## 参考書

いわゆる黒本というやつ。
上記 Udemy の問題集は基本問題と高難易度問題で分かれていて、基本問題を一通りやった後に黒本をさらっと通し読み。

https://book.impress.co.jp/books/1118101069

## 公式の模擬試験

最近無料化されたのでせっかくならということで。

https://dev.classmethod.jp/articles/aws-exam-free-practice/

これらのリソースを利用して、問題集を中心に理解度を測っていました。何度やっても誤答してしまうようなトピックについては、追加で Black Belt の資料を読んだり。
業務では AWS の他に Oracle Cloud や Google Cloud Platform も触っていて、そちらではマネージドサービスも使っているので勉強中はそれらのサービスと対比して理解するようにしていました。

# 試験内容と感想

- 試験会場
    - 自宅を片付けるのがめんどくさかったので、当日はテストセンターで受けてきました。
    - テストセンターも初めての利用だったのですが、予約した時間に行くだけで全てお膳立てされたマシンが案内されるんですね。これは便利。
    - 座席にはイヤーマフと耳栓があるため、周囲のノイズを気にする場合はこれらを利用できる。私は普段ヘッドホンで音楽を聴いており、感覚を合わせるためイヤーマフを着用しました。
- 試験の内容
    - Udemy の問題集における"高難易度"っぽい問題が多かった印象。
    - 各種サービスの知識を組み合わせて、求められているユースケースに合致する答えを選ぶ必要があるものが多く、脊髄反射的に答えられる問題は少なかったように思います。
- 試験時間
    - 試験時間は130分で、個人的には十分すぎるほど時間があったように感じられました。
    - 慎重に問題を解いても半分くらい時間が余ったので、見直しをする時間は十分に確保できていました。
    - 試験のインターフェースでは問題にフラグを立てることが可能で、自信のない問題や後でじっくりと取り組みたい問題に目印をつけておくことができます。これが見直しに役立ちました。

# おわりに

AWS 試験は試験終了後即結果が表示されるので、結果待ちのやきもきした時間を過ごさずに済むのは良いところだと思いました。
ただ、受検料が少し高いのと、そのわりに Free Retake がないのはちょっとつらい。

来年は DVA を取ろうかなあ。
固定翼機の離陸角度の失敗例についての考察

１２月１０日は無人航空機記念日です。
アドベントカレンダーでも特別な日を取ってしまっていました。

さて、ドローンのオペレーターは数多くいますが、固定翼機のフライト経験を持つ方はまだまだ少ない。
また、カタパルト式など、離陸装置と言えるものがある場合を除いて、手で投げるタイプについての離陸角度について考えます。

#固定翼の特徴
ドローンバードで所持している固定翼機は
-Parrot社 Disco PRO AG
-Sensefly社 eBeeX eBee-Clasic
等があり、お尻の部分にプロペラが１つ付いているタイプです。

プロペラ１つで前進する力を持って、両翼に揚力を得て宙に浮いているという方法で飛行します。
翼にあるエルロンを制御して左右に旋回しますが、回転翼と違い空中に静止することはできず、とどまる場合、最低半径の円を上空で描きながら、待機するということになります。

いずれの機体も胴体着陸をする方法で着陸しますが、着陸に必要な直線距離は種別で異なり、また着陸直前に速度を抑えるように機体頭部を上に向ける動作などは、備え付けられている否かも違います。

#離陸時の注意点
追い風にならない方向を風力計や、雑草などを投げて葉っぱの流れを見ましょう。
谷間の場合は乱気流になっているので、離発着に適さないことがあります。（後日書きます。）

離陸するためにプロペラが回転した後、機体は前進する力を得ます。
投げる時の基本的な持ち方として、両翼を両手で持つ持ち方が初心者には良いでしょう。
多くのフライトに関する動画でも、そのような光景を目にすることが多いです。

両手で持ち場合には、風の強さを考えておく必要があります。
平均風速５ｍを超えるような風のある日は、離陸時の手を離した瞬間に、機体が自分の方向へ押されることを想定して離陸の角度を考える必要があります。最悪の場合、プロペラと接触してケガをする原因となります。
この点に関して回転翼機とのリスク差があると言えます。

片翼を持って投げるタイプで飛ばす場合には、勢いあまって翼がジョイントしている部分が抜けないように気を付けなければなりません。
上記の風で戻って来ることが想定されいる場合や、瞬間風速が強まる場合に有効な方法ですが、片翼を持って投げる練習が必要です。
練習する場合は、片翼で投げた経験のある操縦者と一緒に練習し、細かいアドバイスを受けることをお勧めします。

#離陸角度
風のない日には、離陸角度は思いのほか高く設定する必要があります。
固定翼は一旦、上空に向かって飛びますが、上層するためにエルロンを上げる為、一瞬、頭が下がることがあります。
この時に高度が下がりますので、墜落しない高さまで上がっていることが必要です。
また、墜落を避けたとしても、周囲の建物や樹木に待機高度まで上げる航路に障害がないかリリースする場所も考慮に入れて飛ばす必要があります。

固定翼は、離発着に気を使いますが、省電力で広範囲の撮影ができる方法として、選択できます。
ただ、日ごろの練習が、回転翼のように留まっていられない特性があるために、欠かすことができないことも大きくあります。
いろいろなドローンを飛ばせる技術があるということは、大変良いことだと思いますので、固定翼機を買えないなぁと思っている方は、Drone Birdの訓練に参加してスキルを上げていきましょう！
ActiveReports 14.0J の情報集

# はじめに

ActiveReports は、面倒くさい帳票設計＆PDF出力などでとても便利な開発ライブラリです。
紹介はこちらをご参照下さい。

https://www.grapecity.co.jp/developer/activereports

現在の最新バージョンは 14.0J なのですが、ネットで情報を集めようとすると旧バージョンも多く引っかかってきてしまうので、14.0J に関連した情報に限って情報を集めてみました。

# Web上の情報

## 公式ページ

基本の「き」のサイトです。

https://docs.grapecity.com/help/activereports-14/overview.html

必要なものが集約されていますが、重要なものをピックアップします。

- [旧バージョンからの移行](https://docs.grapecity.com/help/activereports-14/migrating-from-previous-version.html)
- [ActiveReportsを使用するための準備](https://docs.grapecity.com/help/activereports-14/UsingActiveReportsJPContent.html)
- [レポートの表示](https://docs.grapecity.com/help/activereports-14/viewing-reports.html)
- [概念](https://docs.grapecity.com/help/activereports-14/concepts.html)
- [エクスポート](https://docs.grapecity.com/help/activereports-14/exporting.html)
- [サンプルとチュートリアル](https://docs.grapecity.com/help/activereports-14/samples-and-walkthroughs.html)

## ナレッジベース

Q&A や不具合情報などが掲載されています。あれ？と思ったら見てみるといいと思います。

https://developer-tools.zendesk.com/hc/ja/categories/360000723535-ActiveReports-for-NET-14-0J

# 技術者サイト

## Qiita

https://qiita.com/search?q=activereports+14

## teratail

https://teratail.com/search?q=activereports&sort=updated-desc

## StackOverflow

https://stackoverflow.com/search?q=activereports+14

# 書籍

ちょっと古いですが、体系的に学ぶにはいいと思います。

https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E5%88%86%E3%81%8B%E3%82%8BActiveReports%E5%B8%B3%E7%A5%A8%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-CodeZine-BOOKS-%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%97%E3%82%B7%E3%83%86%E3%82%A3%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE-ActiveReports%E3%83%81%E3%83%BC%E3%83%A0/dp/4798149780/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=activereports&qid=1639107159&sr=8-1

# プレス

製品紹介サイトです。

https://www.atpress.ne.jp/news/209573

https://cloud.watch.impress.co.jp/docs/news/1245798.html


# まとめ

検索能力が低いせいか、思ったより引っかかりませんでした。期待した方すいません。
ただ、上述のものはとても有益ですので、ご参考下さい。
Laravel+vueでエラー原因がわからない

##はじめに
Laravel+vue.jsのaxiosでデータベースにデータを保存しようとしても、「500 (Internal Server Error)」とだけ表示され、Laravel側のエラー内容がわからない。。

##Laravelエラー確認方法
シンプルにログを確認したらよかったです。パスはstorage/logs/laravel.logですね。
これで一発で原因が分かりました。（僕の1週間返して）
【Ruby】クラス内要素の記述順序

##クラス内要素の記述順序

- クラスメソッド
- 初期化メソッド
- パブリックなインスタンスメソッド
- プライベートメソッド

```ruby
class Sample
  # publicなクラスメソッドはその次にインライン形式で書く（class << selfでもよい: 後述）
  def self.some_method
  end

  # 初期化メソッドはクラスメソッドと他のインスタンスメソッドの間に書く
  def initialize
  end

  # publicなインスタンスメソッドはその後に書く
  def some_method
  end

  # protectedメソッドやprivateメソッドは末尾にまとめる
  protected

  def some_protected_method
  end

  private

  def some_private_method
  end
end
```

- クラスメソッドが複数ある場合は```class << self```を使うほうが向いてる

```ruby
class Sample
  class << self
    def first_method
    end

    def second_method
    end
  end
end
```

##参考

https://techracho.bpsinc.jp/hachi8833/2017_02_27/36206
Jetpack ComposeにおけるLayoutの共通化処理について

## 概要
おはこんにちは！
エキサイトホールディングス新卒の奥田です！
本日はJetpack Composeを使用したLayoutの共通化処理について記事を執筆していきます。（具体的な実装方法については[公式ドキュメント](https://developer.android.com/jetpack/compose/documentation?hl=ja)を参照していただけると幸いです。）

## 論点
Jetpack ComposeでLayoutを作成する場合に共通化することで実装を効果的に進めることができます。
具体的には「チーム内でのLayoutの統一」ができる、「Layout全体に修正がある場合にも柔軟に対応可能」などの利点があります。

## 実装

実際の共通化したLayoutが下記になります。

```kotlin:sample.kt
@Composable
fun AppColumnLayout(
    modifier: Modifier = Modifier,
    horizontalAlignment: Alignment.Horizontal = Alignment.CenterHorizontally,
    verticalArrangement: Arrangement.Vertical = Arrangement.Center,
    backgroundColor: Color = MaterialTheme.colors.background,
    contentColor: Color = contentColorFor(backgroundColor),
    content: @Composable ColumnScope.() -> Unit,
) {
    Scaffold(
        modifier = modifier.fillMaxSize(),
        backgroundColor = backgroundColor,
        contentColor = contentColor,
    ) {
        Column(
            verticalArrangement = verticalArrangement,
            horizontalAlignment = horizontalAlignment,
            modifier = Modifier.fillMaxSize(),
            content = content,
        )
    }
}

```

共通化する場合のポイントとして
1. 取り回しのしやすさをそのままに拡張性を担保する
2. TopAppBarなど全体に共通する実装を内包することでボイラープレートを抑えることができ、実装に集中することができる
3. 引数に`content: @Composable ColumnScope.() -> Unit`を指定することで構成要素を動的に変更できるので柔軟にUIの実装ができる


## 使用方法

共通化したLayoutを使用する場合は下記のように簡単に実装することができます。
外部から共通化した箇所を認識することなく実装ができ、大変便利です。

```kotlin:sampleView.kt
    AppColumnLayout {
        Text(text = "確認用文言")
    }
```

## まとめ
今回は「Jetpack ComposeにおけるLayoutの共通化処理について」の記事を執筆しました。
共通化することで様々なメリットを受けることができるのでぜひ活用していきましょう！
他にも共通化する場合の方法などがあればどしどしコメント欄に意見いただけると幸いです🙇‍♂️

最後に弊社では一緒に働いてくれる仲間を募集中です！
興味のある方は下記から応募お願いいたします✨

https://www.wantedly.com/companies/excite
WSL(Ubuntu 20.04.3 LTS)で、MeCab を Install して Python3系で動作させる

#経緯
形態素解析で利用する MeCab をそのまま```pipenv install mecab-python3```としても、Install できなかったので忘備録です。

# 環境

- OS: Windows10(WSL: Ubuntu 20.04.3 LTS)
- Python: 3.10.0
- pipenv: 2021.5.29

# MeCab に必要な Package を Install する
下記の Package が、MeCab が動作するのに必要で、こちらを Install しないと ```pipenv install mecab-python3```としても Error が発生して Install できませんでした。

```bash
$ sudo apt update
$ sudo apt install mecab mecab-ipadic-utf8 libmecab-dev swig
```

# MeCab を Install する
```bash
$ pipenv install mecab-python3
```

無事に Install され Python で動作しました。
インディーゲーム開発でのテスト手段について考えてみる

#はじめに
ゲーム開発をするなら必要不可欠でありながら、インディー開発ではコストをかけにくいデバッグ・テスト工程。
特に（自分のような）ノウハウのほとんどないインディーゲーム開発初心者の場合、チーム内にテスト・デバッグチームを持つのも大変かと思います。
ここでは、そんなインディーゲーム開発者がデバッグ・テストでとれる手段（テストの「方法」ではなくテストの「手段」）についてまとめていきたいと思います。
（自分個人でも超小規模なゲーム開発を行っているため、自分の備忘録とてしても書きまとめていこうと思います）

##インディーゲーム開発でのテストの重要性
基本的に、個人も商業ゲーム開発もテストの重要性は同じだと思います。
重要性については他の優れた記事で散々熱弁されているので割愛しますが、品質や不具合の確認・修正だけでなく、場合によってはゲーム全体のデザインもテスト工程で行う場合もあると思います。
また、どんなに優れたゲームでも、不具合一つで評判が大きく変わることも多々あります。
（実際に小規模から大規模なAAAタイトルでも、不具合一つ二つで大きく評価が変わるのはよく目にします）
そのためにも、テスト工程をないがしろにせず、きちんと行っていきましょう。

##インディーゲーム開発でのテストのコスト
そもそも、なぜインディー開発でデバッグ・テスト工程にコストをかけ辛いのか、またかけた場合でも芳しくない結果になるのか自分なりに考えてみました。
（あくまで極小規模なインディー開発の例です）
（金銭的な面は言わずもがななので、省略します）
####■スケジュールの問題
これは商業ベースのゲームでも同じかもしれません。
納期内にゲームを開発するため、時間が足りない場合に削られやすいのがテスト工程です。
時間がない中で行う場合、どうしても「確認の粒度が下がる」「焦りが出る」など作業の内容も効率も落ちてしまいます。
####■人手の問題
これが個人製作では最も大きな問題かもしれません。
数名のメンバーで作成する場合、どうしてもプログラマーなどが兼業で行うことが多くなります。
しかし経験上、内部の仕様やシーケンスを知っていると、客観的かつ幅広い視点が取り辛くなります。
また、他の作業を行っている時はテストが行えず、場合によっては短期間でチェックすることになり、上記のスケジュールの問題にも陥ってしまいます。
####■スキルの問題
テストは誰でもできると思われがちですが、やはりプログラマーやデザイナーなどと同じでスキルが必要になってきます。
しかし、テストの場合はスキルを持っていない人間も担当しがちです。
これは上記の「人手の問題」とも重なりますが、ある程度のスキルもない人間が行うと、多くの不具合を取りこぼしやすくなります。
できれば、ある程度デバッグ・テストに通じた人間を担当させたいものです。

#インディーゲーム開発でのテストの手段
とはいえ、インディーゲーム開発でとれる手段はどれだけあるのか。
大規模なゲーム開発とは違い、小規模な開発においては、お金も人手も時間も限られてきます。
上記の問題も踏まえつつ、インディ開発者がとれる手段がどれだけあるかをまとめていきます。
##手段１：身内で頑張る
一番手っ取り早い方法。
開発チーム内またはメンバーの身内に頼んでテストしてもらう方法。
メリットとしては低コストで行え、スケジュール調整の融通が利きやすいと思います。
デメリットとしては、（メンバー内にテスト専門チームがいる場合を除き）品質が上がりにくいことがあります。
スケジュールの融通が利きやすい一方で、後回しにして「スケジュールの問題」に陥ることもよくあります。
また、メンバーの能力によっては「スキルの問題」に直面することも多いでしょう。

##手段２：他者に頼む
最近はSNSなどで多くの人に無償または有償でお手伝いを頼むケースもよく見ます。
メリットは比較的低コストを行え、外部の人間に忌憚ない意見が聞くことが出来ます。
運が良ければ野生の凄腕デバッガーに出会う可能性もあるでしょう。
一方デメリットは、必ずしも引き受けてくれる人が現れると限らず、テストスケジュールが立てにくい、頼んだ後に音信不通になるケースがある、などなど。
博打要素は高いですが、大人数に頼むことが出来ればそれなりの品質は担保できるかもしれません。

##手段３：専門会社に頼む
ゲームデバッグ専門会社に頼むのも一つの手です。
メリットとしては、専門家に頼むことで品質も上げやすく、意思の疎通も図りやすくスケジュールも提案してもらえる、などなど。
また、最近ではインディーゲーム開発の認知度もあがっているので、以前よりは依頼するハードルも下がっているのではないかと思います。
デメリットととしては、一番大きいのは「お金」がかかること。
資金が潤沢ではない小規模な開発では、なかなか手を出すのは難しいかと思います。
もし金銭的（あと交渉力）に自信があるなら、最も品質を上げられる手であると思います。

##手段４：その他の手段
他にも、
####■インディーゲーム開発を支援してる企業に応募する
テスト支援がメインではなく、ゲーム開発を総合的に支援してくれますが、応募規定や選評が必要なものがほとんどです。
（↓こんな感じのものがありました）
https://creatorslab.kodansha.co.jp/gcl
https://igi.dev/
####■デバッグ・テストツールを使用する
チェックシートなどに沿って、自動でテストを行ってくれるツールもあります。
「高性能なツールは有償」「環境を準備する必要がある」など敷居は高く、複雑なテストやデバッグは難しいかもしれません。
しかし、使いこなすことが出来れば、基礎部分の確認はツールで、ユーザ操作が行う様な複雑な操作は人力で、と分担することで効率的に作業を進めることが出来るかも。
####■自分のデバッグ・テスト能力を磨いてから、ゲームを開発する
長期的なスケジュールになるかもしれませんが、長い目で見れば一番コスパの良い方法かもしれません。
（ただし、自分で多くの作業を抱え込むことで、開発が座礁してしまう可能性もありますが）

などがあるかなと思います。

#最後に
他にも方法はあるかもしれませんが、ざっと初心者でもできそうな手段を考え、まとめてみました。
上手く利用して、より良いゲームを作っていけたらと思います。
今更聞けない、Elasticsearchを超簡単に説明

# 前提条件
## 背景
Laravel × Elasticsearchの事例がそこまで多くなかったので
自分が調べたことが今からやろうと思ってる人の助けに少しでもあればと思いまして。

## 環境
PHP 7.4

Laravel 6.2

Elasticsearch 7.8

## この記事を読んだ方がいい人

・MySQLの経験がある程度あってSQLってこんな感じだよねー、な感覚がある人。
・RDBでは遅くなってしまう検索を解決してくれるイケイケな道具があることを知りつつ、それがなんなのかよくわからない人。

## この記事を読まない方がいい人

・Elasticsearchの実務経験がすでにあって全文検索エンジンとマブダチな人。
・日本人ならGroongaにしろよ、って人。

# Elasticsearchとは
全文検索エンジンの一種。

そもそもそれってなに？

ざっっっっくり言うと、MySQLのLIKE検索をちょーはやくするためのやつ。

# なんではやいの？
文字列の検索には２種類あるらしい。

逐次検索　と　索引検索

前者はGrepコマンドでお馴染み、ぜーんぶのデータを確認して合致するものを探す力技作業。

後者は、「Qiita」の文字列を含むデータはこことここにあるよ！的な状態をあらかじめ作っておくことで素早くけんさくできるようになってるもの。

# 他にはどんな種類のものがあるの

|                   | **どこ**                                    | **概要**                      | **備考**                                                     |
| :---------------- | :------------------------------------------ | :---------------------------- | :----------------------------------------------------------- |
| **Elasticsearch** | オランダのElastic社。Kibanaだしてるところ。 | 名前がかっこいい。            | AWSはこのソフトウェアをラップしてサービス化してるだけっぽい。Elasticって単語はAmazonが大好きだからAmazonが名付けたのかと思ってた |
| **Algolia**       | フランスのAlgolia社                         | Laravelが標準サポートしてる。 |                                                              |
| **MySQL**         | Oracle                                      | みんな大好き                  | MySQLにも全文検索の機能提供してた気がする詳しくは知らん      |
| **Groonga**       | 未来検索ブラジル                            |                               | 2ちゃんのひろゆきが役員やってる？やってた？会社              |


# 難しい言葉が出てきてつらい
日本語をインデクシング (インデックスすること)するにあたって避けて通れない言葉がこの2つ。
日本語は英語と違って単語と単語の間にスペースがないから、単語の区切り目が判断できない。

その問題を解決するための手法がこの2つということ。

**N-gram**

**形態素解析**

逆に言えばわけのわからん言葉はこれくらい。

## N-gram
Nというのはエンジニアお馴染みの数字を表したパラメータ。
n=1 ~ n=3には特別な名前がついている

・uni-gram
・bi-gram
・tri-gram

要は文字をn文字ずつに分けて解釈するわ、っていう手法。

`完全におならだと勘違いしていたよ`

のような文章なら

`完全|全に|にお|おな|なら|らだ|だと|と勘|勘違|違い|いし|して|てい|いた|たよ|`

みたいな感じでインデクシングする。

「おなら」という言葉を検知するのに「おな」とか「なら」とかは意味がないので、ちょっと効率悪いのが特徴。


## 形態素解析

日本語を読み取って意味のあるかたまりに分けながらインデクシングする。

そのための日本語形態素解析エンジンといわれるもの。

はっ？そんなんあるなら最初から言えや！

って感じですが、内部に辞書を保持する必要があり言葉のブレを微調整する必要ある場合も。

# まとめ
今回はElasticsearchの概要の概要のみを書きました。

次回は基本的な用語をまとめたいと思います。
使えるかもしれない AWK & sed & コマンド 集 19 (MAC用)

こんにちはエンジニアのG高橋です。
良いネタが思いつかなかったので、
手元にある過去によく使っていたコマンドをまとめてみました。

特に役立つ知識ではないのでお暇な方のみご覧ください。


### 1. サブディレクトリのグラフィカルツリー
```
$ ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'
```
### 2. ソートせずにファイル内の重複エントリを削除します。
```
$ awk '!x[$0]++' sample_file.txt
```
### 3. ファイル内の長い行を特定する
```
$ awk 'length>290' sample_file.txt
```

### 4. マシンのIPアドレスを素早く確認
```
$ curl -s icanhazip.com
```

### 5. 簡易ストップウォッチ
```
$ time read (※ ctl+dでストップ)
^D
real	0m3.625s
user	0m0.000s
sys	0m0.000s
```


### 6. less を途中からtailに変える
```
$ less sample_file.txt
 (※表示中に大文字Fを押す)

```

### 7. マトリックス風
```
$ LC_CTYPE=C tr -c "[:digit:]" " " < /dev/urandom  | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"
``` 
![matrix.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/971631/105195af-588b-4fca-bc0d-ca71aeb938ec.gif)

### 8. 特定の列をターゲットにしてパターン置換を行う
```
$ awk '{gsub("hoge","fuga",$5)}1' sample_file.txt
```
➔ 5列目のみ、hogeのすべてのインスタンスをfugaに置き換えます。

### 9. サイトのSSL証明書の日付を確認する
```
$ echo | openssl s_client -connect www.google.com:443 2>/dev/null |openssl x509 -dates -noout
```

### 10. BASHのコマンド出力から複数の変数を割り当てる
```
$ read day month year <<< $(date +'%d %m %y')
$ echo $day
 09
```

### 11. クイック計算機能
```
$ ? () { echo "$*" | bc -l; }
$ ? 20*1+3
23
```

### 12. ファイルの名前をすばやく変更
```
$ touch test.txt
$ mv test.{txt,old.txt}
 test.txt -> test.old.txt
```

### 13. 指定時間にコマンドを実行します。　１回限りのタスクです。
```
$ echo “ls -l” | at midnight
```

### 14. リモートファイルとローカルファイルを比較する
```
$ ssh user@host cat /path/to/remotefile | diff /path/to/localfile –
```

### 15. ホストの接続数をグラフ化します
```
$ netstat -an | grep ESTABLISHED | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | awk ‘{ printf(“%s\t%s\t”,$2,$1) ; for (i = 0; i < $1; i++) {printf(“*”)}; print “” }’
```

### 16. 最も頻繁に使用するコマンドのリスト
```
$ history | awk ‘{a[$2]++}END{for(i in a){print a[i] ” ” i}}’ | sort -rn | head
```

### 17. ネットワークサービスのアクティビティをリアルタイムで
```
lsof -i
```

### 18. 懐かしのSLコマンドを実行する
```
$ brew install sl
$ alias ls='sl -aF'
$ sl
```
![sl.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/971631/4a4ef176-6233-faf4-ac15-82aeae562dc9.gif)

### 19. 急にスターウォーズがみたくなった
```
$ brew install telnet
$ telnet towel.blinkenlights.nl 23
```
![starwars.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/971631/aa8b1237-10e6-e15e-0f90-e64c69677231.gif)

# まとめ
以上、つかえるかもしれないコマンド集でした。
これからも役に立つかもしれないコマンドを集めたいと思います。
【ruby on rails】回答数0の質問を表示

以下記事の続きとして

質問一覧画面の表示を回答数0のものを表示させる方法を追記

https://qiita.com/syokaturyou/items/0893bbac58637765be58


# 追記箇所

以下ファイルに 回答数0の場合を追記する。

```app/controllers/posts_controller.rb
class PostsController < ApplicationController

  def index # 質問一覧を表示する画面 
    @posts = Post.all
    @range = params[:range] # 並べ替え選択時のページネーションを場合分け
    case @range
    ...
    (~省略~)
    ...
    when "回答数0"
      @posts = Post.left_joins(:answers).where(answers: {member_id: nil}).page(params[:page]).per(10)
    end
  end

  .....
```

ロジックとしては
postモデルに関連するanswerモデルの(member_id)カラムが存在しないものを抽出している
このようにすることで回答がない質問を選ぶことができる。

該当viewファイルにはプルダウンメニューの選択肢として

["回答数0"]　

を追記しておく

```app/views/posts/index.html.erb
<%= form_with url: posts_path, local: true, method: :get do |f| %>
 <%= f.select :range, options_for_select([['投稿Noが新しい順に'],['投稿Noが古い順に'],['更新日時が新しい順に'],['更新日時が古い順に'],["回答数の多い順に"],["回答数の少ない順に"],["回答数0"]]) %>
 <%= f.submit "回答並べ替え", class: "btn btn-dark", data: {"turbolinks"=>false} %>
<% end %>
```

# 結果

上記のように追記すると"回答数0"のプルダウン選択時に
回答数0の質問一覧だけを表示させることができる。

以下は余談となるが

「.order(updated_at: 'DESC')」を追加したりすれば
回答数0の中でさらに更新日時順並びなどの条件を指定したりできる

```
@posts = Post.left_joins(:answers).where(answers: {member_id: nil}).order(updated_at: 'DESC').page(params[:page]).per(10)
```
Flutterで設定画面を実装してみた


# はじめに
Flutterで設定画面を実装することになり自前で作ろうかと思っていた矢先、
ググったら良さげなパッケージがあったので、使ってみたら設定画面が楽に実装できました。

https://pub.dev/packages/settings_ui

本記事で実際にできる画面がこちら。
Android、iOSでUIがよしなに変わってくれるのも嬉しいところ。

| Android | iOS |
| ---- | ---- |
| ![Screenshot_1639098059.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682830/3d87b656-eb44-78c9-ca48-e36d4bb04e5a.png)　|　![Simulator Screen Shot - iPhone 12 Pro Max - 2021-12-10 at 10.56.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682830/11ed198a-bb71-d4f4-8ea5-2906554a94ab.png)　| 


では、早速実装していきます。
# 設定画面実装
pubspec.yamlにsettings_uiを追加

```pubspec.yaml
dependencies:
  settings_ui: ^1.0.0
```

利用できるWidgetについては以下の4つで、これらを組み合わせて設定画面を作っていきます。
- SettingsList
- SettingsSection
- SettingsTile
- CustomSection

まずは、ScaffoldのbodyにSettingsListを配置します。

```setting_view.dart 
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Settings UI')),
      body: SettingsList( 
        sections: [
          // SettingsSectionを並べていく。
        ],
      )
    );
  }
```

次に、SettingsListのsectionsに、以下３つのwidgetを配置していきます。

- SettingsSection　→ 設定の種別ごとに配置、tilesにSettingsTileかCustomSectionを配置
- SettingsTile　→ 設定項目
- CustomSection → 説明文が必要な場合や、スライダーなどを実装したい際に配置

```setting_view.dart
        sections: [
          SettingsSection(
            title: 'Common',
            tiles: [
              SettingsTile(
                title: 'Language',
                subtitle: 'English',
                leading: Icon(Icons.language),
                onPressed: (context) {
                  Navigator.of(context).push(MaterialPageRoute(
                    builder: (_) => LanguagesScreen(),
                  ));
                },
              ),
              CustomTile(
                child: Container(
                  color: Color(0xFFEFEFF4),
                  padding: EdgeInsetsDirectional.only(
                    start: 14,
                    top: 12,
                    bottom: 30,
                    end: 14,
                  ),
                  child: Text(
                    'You can setup the language you want',
                    style: TextStyle(
                      color: Colors.grey.shade700,
                      fontWeight: FontWeight.w400,
                      fontSize: 13.5,
                      letterSpacing: -0.5,
                    ),
                  ),
                ),
              ),
            ],
          ),
        ],
      )

```
SettingsTileのonPressedで次の画面へ遷移し、
LanguageであればEnglish、Japaneseなどを言語を選択するLanguage選択画面を実装します。

Language選択画面は、同じようにSettingsList > SettingsSection > SettingsTileを順に配置し、
SettingsTileのonPressedで、SharedPreferencesを使って選択された値を保存するだけです。

これで設定画面のUIと機能が実装できました。

# 採用に関して
弊社では、現在、エンジニアを募集しております。
物流に興味・関心がある方はもちろん、
Flutterやモバイル開発に強みがある方、心よりお待ちしております！

https://www.wantedly.com/companies/company_3244501/projects
UiPath例外処理の落とし穴


mainから子xamlを呼び出し手処理させている場合、mainと子のどちらにtrycatchを入れるとよいのか。

mainにて[invoke workflow file]をtrycatchで囲むと、
子にて例外が発生した場合、out引数に値が設定されない。
デフォルト値となる（データテーブルであればnull,Boolean型であればfalse)
右クリックにバッチを追加する

# 発端
Windows10のPCを使っていて、今見ているフォルダより下にあるファイルのリストが見たいと思うことがままあった。

WSLを開いてfindとかすればいいが、もっとサクッとできるように、自作のバッチファイルを右クリックから実行できるようにする。

# 大まかな流れ
非常に単純で、以下の3ステップで実現する

1. 実現したい機能を持つ実行形式のファイルを作る
1. どっかパスが変わらないであろう場所に安置する（C直下とか）
1. 右クリックに登録する

##　1.実行形式のファイルを作る
実行形式ファイルは.exeとかでもいいがここでは簡単のためバッチ(.bat)
今回やりたいことがshellのfindなので非常に単純。
とはいってもコマンドプロンプトで同じことをするためにdirコマンドを使う。
以下ようなファイルを作る

```bat:find.bat
@echo off
dir /S /B /A-D
cmd /k
```

これでダブルクリックで実行した場所以下のフォルダを羅列してくれる。

## 2.安置する
手順3でパスを指定するため、どっか適当な場所に置いておくと、後でなんかやらかしてパスがズレて使えない、とかあるかもしれない。
なのでイイ感じの場所に置く。
Cドライブ直下にOresama_ga_tsukutta_toolフォルダを作成してそこに安置しよう。

C:\Oresama_ga_tsukutta_tool\find.bat

といった感じ。

## 3.右クリックに登録
レジストリエディタを使って右クリックに登録する。
ちゃんと使用すればレジストリエディタは怖くないが、
そういう意図をもって操作すればＰＣを起動できないようにすることもレジストリエディタからできるので、操作はくれぐれも<font color=red >自己責任</font>でお願いします。

具体的な手順は以下

1. レジストリエディタを立ち上げる。
1. "コンピューター\HKEY_CLASSES_ROOT\Directory\Background\shell" 以下に新規キーを作成する。ここでの名前が右クリックしたときに表示される。
1. 作ったキーにさらに新規キーを作成する。名前は"command"（固定）
1. 作ったcommandキーの中の(既定)文字列値を修正し、データをC:\Oresama_ga_tsukutta_tool\find.batにする

これで右クリックするとあなたのバッチが右クリックから呼び出される

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617466/1638c83b-0209-44a1-c51f-f62f72845f8c.png)

おめでとうございます。便利になりましたね
SQliteを使ったWordPressサイトが復旧できない

こちらで質問した通り私は、2015当時ロリポップのサーバーで運用されていたWordPressの復旧作業で、手間取っています。

XAMPPの中で最新のバージョンのWordPressでウェブサイトを作り、SQliteで動くようにしました。
そして、テスト投稿してデータベースの構造を確認しました。

その結果、ファイルは文字化けしていないようです。
新しくできたデータベースのファイルの文字コードが、西ヨーロッパとなっていました。

そのためFTPでダウンロードするときに、バイナリーファイルなのにバイナリー設定ではなく、ASCIIコードのモードでダウンロードしたのでは？と思い始めています。

でも、すでに、ロリポップで契約していたサーバーは、依頼主が解約しているため確かめる術がありません。

https://teratail.com/questions/371731

元のファイル
![スクリーンショット 2021-12-09 133637_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20977/bf901cb2-e3a0-9d24-963c-e29498efaa18.jpeg)

新しいファイル

![新しいWordPressのデータベース.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20977/07b2575e-439c-08e6-6608-80428fae862e.png)

データベースをSQliteのコマンドラインから復旧する方法をネットで知り試しましたが、効果ありませんでした。

https://qiita.com/tsunet111/items/2c21706fd67f5ecb047d

https://pyopyopyo.hatenablog.com/entry/2020/10/13/231919

https://qastack.jp/superuser/111998/how-do-i-repair-a-corrupted-firefox-placessqlite-database

https://www.pgmemo.tokyo/data/archives/901.html

##WordPressにSQlite3を使う方法
こちらの記事を参考にして、最新のWordPressでSQlite3を作りました。
https://blog2.k05.biz/2020/12/wp-sqlite.html

##Windws10でSQlite3を使うとき
こちら記事を参考にしました。
https://qiita.com/tabizou/items/af8687201961e4d6b8a4

コマンドラインでSQlite3を使うときは、こちらの記事が役立ちます。
https://www.dbonline.jp/sqlite/install/index1.html#section1

##私の場合は、このエラーが出ます。
.readを試した結果です。
```SQL
PS C:\test\database\coconara_sip> sqlite3 new_.ht.sqlite
SQLite version 3.37.0 2021-11-27 14:13:22
Enter ".help" for usage hints.
sqlite> .read ./old_file
sqlite> .read ./old_file.sqlite
Error: near line 1: in prepare, near "SQLite": syntax error (1)
Error: near line 228: in prepare, near "";s:7:"": syntax error (1)
Error: near line 298: in prepare, near "";s:7:"": syntax error (1)
Error: near line 802: in prepare, near "RewriteEngine": syntax error (1)
Error: near line 1019: in prepare, near "return": syntax error (1)
Error: near line 1020: in prepare, unrecognized token: "}" (1)
Error: near line 1022: in prepare, near "$args": syntax error (1)
Error: near line 1026: in prepare, near "$my_limi": syntax error (1)
Error: near line 1027: in prepare, near "?": syntax error (1)
Error: near line 1029: in prepare, near "&": syntax error (1)
Error: near line 1031: in prepare, near "&": syntax error (1)
Error: near line 1033: in prepare, near "&": syntax error (1)
Error: near line 1034: in prepare, near "&": syntax error (1)
Error: near line 1035: in prepare, near "&": syntax error (1)
Error: near line 1040: in prepare, near "&": syntax error (1)
Error: near line 1064: in prepare, near "&": syntax error (1)
Error: near line 1065: in prepare, near "&": syntax error (1)
Error: near line 1221: in prepare, near "/": syntax error (1)
Error: near line 1223: in prepare, near "/": syntax error (1)
Error: near line 1225: in prepare, unrecognized token: "}" (1)
sqlite>
```
.dumpを結果です。
```SQL
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
COMMIT;
```
このような状況のため、データベースの復旧方法をご教授頂けましたら幸いです。
【Android】CameraXの導入

#はじめに
現時点でのCameraXの導入手順のメモ。

#ライブラリの導入
build.gradle(:app)に以下のライブラリを追加

```build.gradle
implementation "androidx.camera:camera-core:1.0.2"
implementation "androidx.camera:camera-camera2:1.0.2"
implementation "androidx.camera:camera-lifecycle:1.0.2"
implementation 'androidx.camera:camera-view:1.0.0-alpha31'
```

#カメラパーミッションの使用
マニフェストファイルにカメラを使用することを宣言。

```AndroidManifest.xml
<uses-permission android:name="android.permission.CAMERA"/>
```

#レイアウト作成
PreviewViewを使用してカメラ映像を表示。

```activity_main.xml
<androidx.constraintlayout.widget.ConstraintLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:app="http://schemas.android.com/apk/res-auto"
	android:id="@+id/camera_container"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:background="@android:color/black">

	<androidx.camera.view.PreviewView
		android:id="@+id/view_finder"
		android:layout_width="0dp"
		android:layout_height="0dp"
		app:layout_constraintBottom_toBottomOf="parent"
		app:layout_constraintEnd_toEndOf="parent"
		app:layout_constraintStart_toStartOf="parent"
		app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
```

#処理部分
カメラのパーミッション許可部分がややこしいが、ポイントはstartCameraメソッド。ここでカメラを起動している。

```MainActivity.kt
class MainActivity : AppCompatActivity() {

	companion object {
		private const val REQUEST_CODE_PERMISSIONS = 10
		private val REQUIRED_PERMISSIONS = arrayOf(Manifest.permission.CAMERA)
	}

	private lateinit var binding: ActivityMainBinding

	override fun onCreate(savedInstanceState: Bundle?) {
		super.onCreate(savedInstanceState)
		binding = ActivityMainBinding.inflate(layoutInflater)
		setContentView(binding.root)
		if (allPermissionsGranted()) {
			startCamera()
		} else {
			ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS)
		}
	}

	override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
		super.onRequestPermissionsResult(requestCode, permissions, grantResults)
		if (requestCode == REQUEST_CODE_PERMISSIONS) {
			if (allPermissionsGranted()) {
				startCamera()
			} else {
				Toast.makeText(this, "Permissions not granted by the user.", Toast.LENGTH_SHORT).show()
				finish()
			}
		}
	}

	private fun allPermissionsGranted() = REQUIRED_PERMISSIONS.all {
		ContextCompat.checkSelfPermission(baseContext, it) == PackageManager.PERMISSION_GRANTED
	}

	private fun startCamera() {
		val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
		cameraProviderFuture.addListener({ bindPreview(cameraProviderFuture.get()) }, ContextCompat.getMainExecutor(this))
	}

	private fun bindPreview(cameraProvider: ProcessCameraProvider) {
		val preview = Preview.Builder().build()
		val cameraSelector = CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build()
		preview.setSurfaceProvider(binding.viewFinder.surfaceProvider)
		cameraProvider.bindToLifecycle(this as LifecycleOwner, cameraSelector, preview)
	}
}
```
Ubuntu+Apache+FuelPHP苦闘メモ

大学の講義でApacheたちと戯れる機会があったので苦戦したものの備忘録的な感じでメモ


#環境
大体の学生の環境はこんな感じ（なはず…）

- CPU:第7世代intel Core i5
- メモリ:8GB
- OS:Ubuntu 18.04 LTS

#権限がねえ！
##問題
userdirを指定したのはいいものの，index.htmlで403 Forbiddenが出まくった．
##対処法
おそらくどこかの権限がおかしくなっている．
`ls -la`等を使っておかしなところを探し出して`chmod`で適切に権限を設定しよう．
~~間違っても僕みたいにとりあえず全部777にすればええやろ!などと思わないように．後悔しますよ~~

#FuelPHPが500エラー
##問題
URLでlocalhost/fuelと指定した際、500 Internal Server Errorになる
##対処法
`public_html/fuel/.htaccess`の以下の記述を削除。

```
Options +FollowSymLinks -Indexes
```

参考:[coreserverでFuelPHPを使うとInternal Server Errorになる時の対処法](https://qiita.com/shoaooki/items/d360a3d5f182fd7b04a6)
The stream or file "/var/www/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission deniedではまった件

laradockにlaravelプロジェクトを立ち上げ、ワクワクしながらアクセスすると
![スクリーンショット (1627).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281946/d10832e5-f41b-392f-d110-8448d5faad1f.png)

<h2>(　д)　ﾟ　ﾟ</h2>

どうやらstorrage/logs/laravel.logにアクセスする権限がないことらしい
ググっても英語の記事ばかりでよくわからない

<h2>解決法</h2>

```
chmod -R 777 storage bootstrap/cache
```

を打ち込んで解決しました

![スクリーンショット (1629).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281946/f7c49e79-d228-fff0-c88b-ad1fe4c5e8a2.png)

##感想##
１時間も調べたのに解決があっさり過ぎて、これがプログラミングかと思ったよ・・・

##関連記事##
https://qiita.com/ucan-lab/items/54575fd939b9067d1cb6
ESXi Arm Edition version 1.7 — December 07, 2021 の登場

VMware Flings で公開している ESXi Arm Edition の新しいバージョンの登場です。今回は  version 1.7 で、今回もまだ vSphere 7.0 0 ベースで、Build 1902576 です。
今回もとても小規模な修正にとどまっています。新しいハードウエアをサポートしたことがメインで、特に機能の追加や変更はありません。追加された新しいハードウエアのサポートは以下の通りです。

Pine64 Quartz64 ボードの実験的サポート
VMware SVGAドライバーのサポート
（AS 上の Fusion と互換性あり、Fedora F35の黒い画面の問題は修正済）
NUMA 対応 VMM、デュアルソケット Ampere Altra マシンのパフォーマンス向上
IORT のないシステムの互換性の向上
Debian 10 や Photon 4 などの新しい Linux カーネルゲスト OS のパフォーマンスの問題を修正
A55 対応
MM / VMK での TLBI 処理の改善
アトミックオペレーションの競合の改善
私のようにラズパイ使いの人には特に影響はありません。

詳細は以下に書きました。
[ESXi Arm Edition version 1.7 — December 07, 2021 の登場](https://imaisato.hatenablog.jp/entry/2021/12/10/103131)
Pythonのlambdaを使う

# はじめに
　最近はPythonが書けるようになってきて、ある程度作りたいものをPythonで実現できるようになったので、Python初心者からの脱却を目指して、今までプログラム書くときに使ってこなかった機能を使えるようにしていきたいと思います。
　今回は**lambda**の使い方を学びたいと思います。

# lambdaとは
　無名関数を作るもの

# 使ってみる
```py:lambdaの書式
lambda 引数1, 引数2: 返り値
```
といった感じで書くが、実際に利用するときには、後ろに引数に代入する値を書く必要がある。

```py
(lambda 引数1, 引数2: 返り値)(値1, 値2)
```
**引数1**には**値1**が、**引数2**には**値2**が代入される。

今回は、簡単な計算をする処理を書いてみる。

```py:通常の関数
def add(a, b):
  return a+b
```

```py:lambdaを使用
(lambda a, b: a+b)(2, 5)
```
どちらの書き方でも結果は同じになる。

# 変数にlambdaを渡す
```py
add = lambda a, b: a+b
add(2, 5)
```
先ほどの利用方法では**無名関数**と呼ばれるものを作りましたが、
変数に代入することで、普通の関数のように使うことができます。

# lambdaの利用
**構想関数**　・・・　引数に関数を用いる関数
lambdaは構想関数と組み合わせて使われる。

これから書く処理
> 文字列のリストから文字コードのリストを作成する

```py:文字列のリスト
fruits = ['apple', 'grape', 'orange']
```
```:欲しい結果
[6170706c65, 6772617065, 6f72616e6765]
```
```py:for文を利用
codes = []
for fruit in fruits:
  codes.append(fruit.encode('utf-8').hex())
```
```py:lambdaを利用
codes = list(map(lambda fruit: fruit.encode('utf-8').hex(), fruits))
```

**map関数**　・・・　リストの全要素に対して同じ処理を行う

```py:map関数の書式
map(関数, リスト)
```
１．map関数によってfruit（lambda式）にfruitsの中の要素が1つ渡される
２．fruitをutf-8にエンコードする
３．エンコードしたものを16進数の文字コードに変換する
４．map関数から得た結果をリストに変換する

ざっくりですが、こんな処理を1行で書けます。

# まとめ
lambdaを使うことですっきり書くことができるので、今後も使いたいものだとは思いましたが、コードの可読性が下がる可能性があるので、気を付けて使いたいと思います。

参考 : https://www.youtube.com/watch?v=dF492ntFcKU
就活作品としてのDirectX12について


#1. はじめに
この記事はDirectX12を勉強するのは就活作品として、どうなの？みたいな話をしていきます。

DirectXよくわからん。興味あるけど何するのか知らん。みたいな人向けです。
詳しい内容とか入れずにサクッと行きます。

#2. DirectXとは
MicroSoftのwikiには「マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合である。」とかよくわからんこと書いてあります。
つまりどういうことかというと、ゲームやマルチメディア用のライブラリの集まりです。
よってDirectXの勉強はよくわからんライブラリを勉強することになります。

#3. DirectXのバージョンについて
DirectXは基本的にバージョンを上げると機能が増えて、実装が大変になりめんどくさくなります。
9より10、10より11、11より12のが難しくやることが多いです。
9とかは割と簡単でUnity、UEとかが出てくる前の学生コンテスト作品はDirectX9のことが多かったみたいです。

つまり、12はめんどいけどこれやっとけばＯＫ！ってやつです。

#4. DirectXを触るメリット
まず、DirectXをやることでよいこと（メリット）を書いていきます。

1.ハードウェア寄りのプログラムに触れる
　今までUnityとかでやってたのと違いCPUとかGPUを意識したり、画面表示などの低階層からやっていくことなります。

2.C++ができるようになる
　Unityで使っているC#でなく、C++での作品になるのでC++ができるようになります。

3.数学を使ったプログラムみたいなのでアピールができる
　DirectXでのオブジェクトの移動などは座標を行列に入れて計算したりするので、行列計算とかベクトル計算などの勉強もできて、「数学を使用した3Dプログラミング」として使えます。

4.きちんとした作品ができたときに評価されやすい
　やることが多く、作品を一つ作るのが結構大変です。その分完成した時に評価は大きいと思います。

#5. DirectXを触るデメリット
次に、やるデメリットについて話します。

1.時間がかかる
　DirectXはやることが多いです。今までUnityでゲーム開発をしていたら、C#を使っているのでC++の勉強、DirectXの勉強、HLSLなどのシェーダーの勉強。これにプラスして作り始めるのは画面表示から自分でプログラムを組まないといけないです。大変です。

2.刺さる企業を選ぶ
　当たり前の話かもしれないけど、C++やDirectX使ってないとこにはあんまり刺さらないかも、スマホ系でUnity使ってるみたいな企業はUniRXとかやったほうが、絶対いい

#6. 上記をまとめての就活作品について
DirectXって何ぞやってところから、メリット、デメリットをまとめて就活作品としてどうなのか自分の考えです。

自分は就活作品では最初にはやらないほうがいいと思います。理由として、デメリットにある時間が掛かるのがとてつもなく大きいです。
就活作品一つもない状態で、DirectXやってて完成してないのに企業の応募が始まって出せないとかなるのが一番もったいないです。そこで、自分のおすすめはUnityでいろんな企業に出せる作品をまず作りましょう。そのあとにDirectXを始めて面接とかでやってますっていうのがいいと思います。

#7. まとめ
最後にまとめです。
DirectXをやるなら、企業に出す用の作品を別に持っておこうって話しです。本当に完成するまで時間がかかるのがネックです。就活までの期間とかいろいろ考慮しながらやりましょう。
DirectXについていろいろ書きましたが、就活作品は自分の行きたい企業に合わせて作るのが一番強いのでそこを一番に考えましょう。


自分は今3Dモデルにボーンを入れて、アニメーションさせるみたいなところをやってます。
全然わかりせん、わかる人教えてください。
【Rails】resourcesとresourceの違い

表記ミスかと思ったらちゃんと```resource```も存在した。

##resources

```routes.rb
...
resources :posts
...
```

```
Prefix Verb              URI Pattern               Controller#Action
posts_path      GET  	/posts(.:format)	       posts#index
                POST	/posts(.:format)	       posts#create
new_post_path	GET  	/posts/new(.:format)	   posts#new
edit_post_path	GET	    /posts/:id/edit(.:format)  posts#edit
post_path	    GET	    /posts/:id(.:format)       posts#show
                PATCH	/posts/:id(.:format)	   posts#update
                PUT	    /posts/:id(.:format)	   posts#update
                DELETE	/posts/:id(.:format)	   posts#destroy
```


##resource

**indexとid付きのパスが生成されない。**

>たとえば、/profileでは常に「現在ログインしているユーザー自身」のプロファイルを表示し、他のユーザーidを参照する必要がないとする。
引用：https://railsguides.jp/routing.html#%E5%8D%98%E6%95%B0%E5%BD%A2%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9

**単数形で定義するのに注意！**

```routes.rb
...
resource :post
...
```

```
Prefix Verb              URI Pattern               Controller#Action
new_post_path	GET  	/post/new(.:format)	      posts#new
edit_post_path	GET	    /post/edit(.:format)      posts#edit
post_path	    GET	    /post(.:format)           posts#show
                PATCH	/post(.:format)	          posts#update
                PUT	    /post(.:format)	          posts#update
                DELETE	/post(.:format)	          posts#destroy
                POST	/post(.:format)	          posts#create
```


どちらも同じコントローラーで同時に定義できる。
相手のトレーナーのポケモン俺のより格好良くね！？

# はじめに
目を閉じて想像して下さい。今あなたはポケモンをやっています。あなたはまだ始めたてなので手持ちは御三家とビッパとムックルです。そんな時、道端を歩いているとポケモントレーナーにバトルを仕掛けられました。
そして始まったポケモンバトル、あなたはムックルを出します。相手は何を出すのか･･･　なんと**ミロカロス**を出しました！　そんな時あなたは何を思うでしょう？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323150/3c69c94d-1283-fe20-99ba-bbf9d39e1222.png)

　なにあのポケモン！　綺麗な見た目やん！！

そしてあなたはポケモンバトルをします。いつかあのポケモンを自分の手持ちに入れる日を心に描きながら･･･

# ゲームあるある
よくゲームをやっているとこんなシチュエーションはありませんか？
・相手の使うユニットが格好いい・可愛い(ポケモン)
・ショップにめっちゃ高い商品が置いてる(ドラクエ など)
・宝箱が見える位置(川や壁の向こう、高い所)に置いてあるけど、行き方が分からない(ドラクエ・ダークソウル など)
・なんだか壊せそうな壁がある(ゼルダの伝説 など)
・洞窟の分岐点、右が正解なんだけど左には何があるだろう？　(ドラクエ・ポケモン など)
 
実はこれらはゲームに**期待を持たせる**という良い仕事をしているのです！！

# ゲームの期待
ゲームの面白さのデザインのひとつとして、期待とその回収のサイクルがあります。
例えば、川や壁の向こうに宝箱があったら「いつかあそこに冒険に行けるのか？　あの宝箱には良いのが入っているのだろうか？」という期待をプレイヤーは持ちます。そして冒険を進めることで宝箱にたどり着き、プレイヤーはその期待を回収出来るのです。中に強そうな武器とかが置いていたら最高ですよね！
そのような期待と回収の小さなサイクルがゲームの面白さを引き立てるひとつであり、ゲームを遊び続けたいという推進力になります。

そう考えると「はじめに」のポケモンの例もゲームデザイン的に頷けますよね。冒険していて見つけてしまった綺麗なポケモンの姿を追いかけながら、トレーナーは冒険をするのです。いつかあのポケモンを手に入れられるのではないかという期待を胸に抱きながら･･･

#最後に
ゲームデザインの記事は好きなのでたまに見てるのですが、ゲームって遠目で見ても面白そうだし、その細部でも面白さを引き立てるために色々やってるんですよね。なので普段やっているゲームの細かい演出に注目してみると、もしかしたらそこにはゲームデザイナーの意図が宿っているかもしれません。
neosでlogix その21

# 概要

niosでlogixやってみる。
共有フォルダのneosrecを使ってみた。

# 参考にしたページ。

https://qiita.com/kazu0617/items/665633f4c32827f49e32

# 写真


![blog.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/1e4ff0ee-548e-e7c3-3181-baa33a55ac7c.jpeg)


# 手順

- 「neosrec:///U-ohisama/R-0ee1ec21-db19-425b-ba63-9a699caff48e」をコピー。
- セッションに入って、ctrl + v して、フォルダーをスポーン。
- それをグラブして、ctrl + s で、インベントリーに保存。



以上。
pgx_dmpallおよびpg_basebackupにおけるテーブル単位のリストア

【前提】DBのバックアップはpgx_dmpallまたはpg_basebackupを使用
Q.上記2つのモードにおいて、バックアップファイルからテーブル単位等一部のデータのみをリストアは可能か。
A.不可。pgx_dmpall および pg_basebackup を利用して取得したバックアップから、テーブル単位でのリストアは行えない。

Q.差分バックアップ（アーカイブWAL）のデータも含めて可能か
A.アーカイブ WAL が出力されている場合でも、テーブル単位でのリストアは行うことは
できない。

【補足】テーブル単位でのバックアップ／リストアを行いたい場合は、以下の2通りの方法がある（他にもあるかも）
1.pg_dump コマンドに -t オプションをつけて取得したバックアップファイルをリストア
2.pg_dump コマンドに -Fc オプションなどの圧縮形式で取得するオプションをつけてバックアップファイルを取得し、pg_restore コマンドに -t オプションをつけてリストア
ERROR: 57014: canceling statement due to user request

<h3>ERROR: 57014: canceling statement due to user requestのエラーの原因</h3>
【前提】
・接続タイムアウトやコマンドタイムアウト設定は100秒以上
・普通のSELECTクエリの実行
・サーバーおよびNpgsqlを使用しているクライアント側にて、実行から最長でも1秒程度で「ERROR: 57014: canceling statement due to user request」が発生。
・その前後や同時刻頃の別端末では発生なし
・対象テーブルのレコード数も1000件程度

【原因】
・SQL 実行中に DB クライアントから明示的にキャンセルが発行された場合（DB クライアント側でタイムアウト制御をしていたり、psql で Ctrl-C が押下された場合など）
・SQL 処理を担当している postgres プロセスに INT シグナルが送信された場合に発生。
・クライアントがサーバに大量のリクエストを送った後に応答を待つ時に、クライアント側のタイムアウト制御に引っ掛かり、クライアント側からキャンセル処理が送られていることが考えられる。