OmniAICreator/Qiita-1.07M huggingface dataset:
新入社員研修の内容を過去の自分に紹介しよう！～コミュニケーション/Tips編～

# はじめに
こんにちは、GxPのあさかです。
この記事は[グロースエクスパートナーズ Advend Calendar 2023](https://qiita.com/advent-calendar/2023/gxp)の15日目の記事です。
技術編は[こちら](https://qiita.com/asaka271/items/a48c66ce3b4197e1b6d8)からご覧ください。

GxPには今年僕を含め23名の新卒メンバーが入社しました。経歴、学部、年齢、趣味がみんなバラバラで、みんなの話を聞くのがとてもおもしろいです。

そこで、入社から今まで同期とのコミュニケーションで大切にしていたことや、用いたツール・活用法などを紹介しようと思います。

## 名前とその人のワンポイントを覚える
新しいコミュニティに属したとき、大抵の場合は自己紹介をすると思います。そこで話した内容ふまえてあとで話しかけてもらえると嬉しくないですか？(少なくとも僕は嬉しいです)
僕の場合は自己紹介で「競技プログラミングが趣味で、東京ディズニーリゾートに行くことが好きです」ということを最低限話します。「競プロやったことあるよー・聞いたことあるよー」といったことや「ディズニー私も好きだよー」といったことで話しかけてもらえると自分の話をしやすいですし、なにより覚えてもらえて嬉しいです。

インパクトのある自己紹介をしたり、普段の会話の中で自分の個性を(嫌がられない程度に)押し出すのは他人に覚えてもらうためのコツかもしれませんね。

## わからないこと/知らないことは周りの人に聞いてみる
わからないことがあったときにインターネットで調べたり、最近ではAIチャットに問いかけてみたりすることが多いと思います。そういったときにあえて周りの人に「これってどういう意味？」「なんか動かないんだけど解決方法わかる？」と聞いてみましょう。そうすることで、解決方法を知ることもできますし、その人が困ったときの解決方法を教えてもらえるかもしれません。
さらに、「あのとき〇〇さんに教えてもらったことだ」と結び付けて内容を覚えることもできます。

ただし、わからないことをインターネットで調べて解決することも大切なことなので、調べてすぐ出てきそうなことを人に聞くのはほどほどに、ですね。

## 自分の知識は最大限に活用する
上の内容に関連しますが、他人が困っているときやヘルプを求められたときは、自分の持ってる知識を最大限に活用しましょう。
嘘を伝えていないかどうか注意をする必要はありますが、「前こうやったらうまくいったよ」「そこは〇〇だからそういう挙動になってる」など、自分の持っている知識を他人に伝えると自分の復習にもなりますし、人助けにもなってWin-Winです。

## メモを取る
これは実案件に参加してから思ったことです。
「今からこれをやってください。そのあとこれをやってください。これをやる際はここに注意してください。終わったら作業内容をここにアップロードしてください。ではお願いします。」と説明を受けました。話を聞いてる最中は納得しながら作業内容を聞いているのですが、いざ着手し始めると「これが終わったらなにをするんだっけ？」となったり、注意すべきところを見落として再度指摘されたりなど、そのようなことを何度もしてしまいました。
僕の記憶力がそこまでよくないからかもしれませんが、指示されたことやミーティングで共有された内容はメモに残すのがいいと思いました。

メモを残す媒体や内容は他人に見せるわけではないので、自分がわかればなんでもいいです。僕はSlackの自分のダイレクトメッセージにメモを残すようにしています。
![2023-12-12_13h20_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3591318/8ba52b02-25c8-aa71-7a91-b6c1660e618e.png)

## やること・手順を明確にする/書き出してみる
上の内容のつづきのような感じです。
メモをとったあとに、手順を書きだします。すると、「どこまで終わったか」や「あとなにをやらないといけないか」が一目でわかるようになります。完了したものにチェックを付けるとわかりやすいですね。
ついでに残りのタスクがどんどん減っていくのが目で見てわかるので気持ちがいいです。

![2023-12-12_19h26_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3591318/5a576700-8992-98a9-6012-e82ae5ec30c9.png)
*自分のやることリストはさすがに業務のことばかりだったので趣味の内容*

## アウトプットをしてみる
なんでもいいです。
昨日勉強したことを同期に話してみる。SQLやコードを自動で採点してくれるサイトでコーディングの練習してみる。人を誘ってなにかWebアプリを作ってみる。など。
僕は今SQLの勉強をしていて、読んでいる本に「SQLはとにかく書いて覚える」と書いてありました。本で得た知識を業務中に一生懸命書いて身に着けています。

# さいごに
入社から今まで同期とのコミュニケーションで大切にしていたことや、用いたツール・活用法などをいくつか紹介しました。気になる内容があったらぜひ実践してみてください！

仕事をするとき、特にプログラミングのことをするとき、僕は「人の手を借りずに達成するのは不可能だな」と思いました。社内ルールのことや、かなりコアなエラーが発生した場合、インターネットで検索しても求めていた答えが得られなかったことが多々あります。
そのときに円滑な関係を築けていたら、スムーズに質問することができますよね。ついでに自分のスキルアップすることもできますよね。

そんなときにここで紹介したことが活きたら幸いです。

また、コミュニケーションに関してこちらの[GxP青木さんの記事](https://qiita.com/aoki-gxp/items/dba9f435aff1d0ecaee1)もとても面白かったです！
よろしければこちらも併せてご覧ください。
connpass APIアクセス時の403 Forbidden対処法：ユーザーエージェントの活用

# はじめに
[APIリファレンス - connpass](https://connpass.com/about/api/)を読んで実施してみたが403エラーになってしまったので、備忘録かねてまとめます。


# 問題
最初、こんな感じでシンプルなプログラムを書いたら403が返ってきました。

実行したプログラム
```python:main.py
import requests

def get_data():
    url = "https://connpass.com/api/v1/event/?keyword=python"
    response = requests.get(url)
    print("Status code:", response.status_code)
    print("Response body:", response.text)

if __name__ == "__main__":
    get_data()
```

```:実行した結果
Status code: 403
Response body: <html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>
```

# 解決方法
以下のようにユーザーエージェントを含めることで値をちゃんと取得できるようになりました。

## 修正後のプログラム
```python:main.py
import requests

def get_data():
    url = "https://connpass.com/api/v1/event/?keyword=python"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
    }
    response = requests.get(url, headers=headers)
    data = response.json()
    return data

if __name__ == "__main__":
    data = get_data()
    print(data)
```

```:実行した結果
{'results_start': 1, 'results_returned': 10, 'results_available': 10000, 'events': [{'event_id': 304019, 'title': '新ローレイヤー勉強会#1', 'catch': 'セキュリティ専門企業によるローレイヤー勉強会！', 'description': '<h1>申し込み・視聴方法</h1>\n<ul>\n<li>connpass画面「このイベントに申し込む」よりご登録ください</li>\n<li>当イベントは、Zoom にて開催予定です</li>\n<li>開催当日の朝、メールにて視聴URLをお送りしますので必ずご確認ください\n\u3000（※connpassページの「参加者への情報」にも記載します）</li>\n</ul>\n<h1>イベント概要</h1>・・・
```

# おわりに

サイトには
> ※過度な検索やクローリングに対しては、アクセス制限を施す可能性があります。robots.txt を遵守してください。

というのがありますが、それ以外でもアクセス制限がほどこされてるのかと良い勉強になりました。

# 参考
- [APIリファレンス - connpass](https://connpass.com/about/api/)

※記事の構成についてはこちらの記事を参考にさせていただきました。

https://qiita.com/Sicut_study/items/9b20ac5ded003cb6d55a
JavaScriptでテストデータを見やすく書けないか試してみた


この記事は、[Qiita株式会社のカレンダー | Advent Calendar 2023 - Qiita](https://qiita.com/advent-calendar/2023/qiita-inc)の12日目の記事です。

https://qiita.com/advent-calendar/2023/qiita-inc

---

JavaScriptで以下のようなテストデータがある場合、プロパティが増えてくると見づらくなるときがあると思います。

```js
const users = [
  { name: 'Yamada Taro', age: 20, email: 'taro@example.com' },
  { name: 'Yamada Hanako', age: 18, email: 'hanako@example.com' },
];
```

そこで、テストデータをCSVのように記述できないかを試してみたので記事にします。

## タグ付きテンプレートを使う

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Template_literals

テンプレートリテラルに対してタグをつけるとそれっぽい感じにできました。

```js
const parse = (strings, ...exps) => {
  const header = strings[0];
  const columnNames = header.split(',').map((s) => s.trim());

  const result = [];
  while (exps.length > 0) {
    const obj = {};

    for (let i = 0; i < columnNames.length; i++) {
      const key = columnNames[i];
      const val = exps.shift();
      obj[key] = val;
    }

    result.push(obj);
  }

  return result;
};

const users = parse`
name              , age  , email
${'Yamada Taro'}  , ${20}, ${'taro@example.com'}
${'Yamada Hanako'}, ${18}, ${'hanako@example.com'}
`;

console.log(users);
```

```
$ node main.js
[
  { name: 'Yamada Taro', age: 20, email: 'taro@example.com' },
  { name: 'Yamada Hanako', age: 18, email: 'hanako@example.com' }
]
```

良さそう！

## 最後に

試してみた後に気がついたのですが、Jestの`test.each`で同様のことができるみたいです。

https://jestjs.io/ja/docs/api#%EF%BC%92-testeachtablename-fn-timeout

```js
test.each`
  a    | b    | expected
  ${1} | ${1} | ${2}
  ${1} | ${2} | ${3}
  ${2} | ${1} | ${3}
`('returns $expected when $a is added to $b', ({ a, b, expected }) => {
  expect(a + b).toBe(expected);
});
```

これを使えば良さそうですね笑

---

記事を読んでいただきありがとうございます！
ぜひ、[Qiita株式会社のカレンダー | Advent Calendar 2023 - Qiita](https://qiita.com/advent-calendar/2023/qiita-inc)を購読設定して、明日の記事もご覧いただけると嬉しいです。
[Terraform] CloudSchedularの状態有効化

# 結論
`paused = true`を指定してスケジューラを止めた状態で作成すると、`paused`の記述を消しただけでは再開されない

## 記述変更

```diff_terraform
resource "google_cloud_scheduler_job" "sample" {
+ paused           = false
- paused           = true
  name             = "sample-schedular"
  description      = "定期実行サンプル"
  schedule         = "0 19 * * *"
  time_zone        = "Asia/Tokyo"
  attempt_deadline = "100s"
  retry_config {
    retry_count          = 1
    min_backoff_duration = "60s"
  }
  http_target {
    http_method = "POST"
    uri         = "https://workflowexecutions.googleapis.com/v1/projects/${var.pid}/locations/${var.region}/workflows/${google_workflows_workflow.sample.name}/executions"
    oauth_token {
      service_account_email = google_service_account.sample.email
    }
  }
}
```

### 差分が認識されない
pausedはoptionalなんですけどね....

https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_scheduler_job#paused

```diff_terraform
resource "google_cloud_scheduler_job" "sample" {
+ # paused           = true
  name             = "sample-schedular"
  description      = "定期実行サンプル"
  schedule         = "0 19 * * *"
  time_zone        = "Asia/Tokyo"
  attempt_deadline = "100s"
  retry_config {
    retry_count          = 1
    min_backoff_duration = "60s"
  }
  http_target {
    http_method = "POST"
    uri         = "https://workflowexecutions.googleapis.com/v1/projects/${var.pid}/locations/${var.region}/workflows/${google_workflows_workflow.sample.name}/executions"
    oauth_token {
      service_account_email = google_service_account.sample.email
    }
  }
}
```
他のプラグインに影響を及ぼしそうなコードをちょっと見つけたこと

ちょっと今年は余裕がなさすぎたのでコードも何もない。

みんな知ってるかもしれないけど聞いてくれ・・・。

プラグインが動く順番は下記ページにもあるように上から順番。

https://qiita.com/rex0220/items/9b9466f5e1ab425a30a2#:~:text=%E5%85%88%E3%81%ABJavaScript%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%80%81%E6%AC%A1,%E3%82%A4%E3%83%B3%E3%81%8C%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8B%E3%80%82

index.show のイベントで
上の方のプラグインで `event.records` になにか細工したら、下の方のプラグインにも影響するぞ👀！
別のプラグインでも共通の `event` を見てる？のかな🤔
というのを最近見つけました。

検証したかったけど余裕がなくてできなかったので、誰かやってみてください🥺

以上！
はじめてのチーム開発振り返り

## はじめに
私は現在[アプレンティスシップ](https://apprentice.jp/)に参加中です。
その中でチーム開発をすることがありましたので、学んだことや今後生かしていけたらと思うことをまとめていきます。

## チーム開発の流れ
約２週間でHTML/CSS/Ruby/SQLを使って、「自分たちの役に立つもの」をメンバー３人で作っていこうという課題でした。
全員初めてということもあり以下の記事を参考に要件定義から実装まで取り組んでいきました。

https://qiita.com/Saku731/items/741fcf0f40dd989ee4f8#%E6%A9%9F%E8%83%BD%E8%A8%AD%E8%A8%88

### 要件定義
どんなアプリを作ろうかというアイディア出しに始まり、
結果的に「お酒のアレンジレシピ投稿サービス」を作ろうとなりました。
そこから、以下のような必要な機能を列挙していき設計フェーズに移行しました。
- レビュー投稿
- レシピ投稿
- ユーザー登録/ログイン
- レシピ一覧
- レシピ詳細

### 設計
私は画面設計の一部とDB設計を担当しました。各設計は他のメンバーのレビューを行い問題がないかを確認しつつ作成していきました。
- デザイン
- 機能設計
- 画面設計(一部担当)
- DB設計(担当)
画面設計ではfigmaを使用し以下のような簡単なUIを作成しました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365570/7f85e6ee-469a-2e22-0eac-5f3c932b3e82.png" width="1000px">

DB設計ではmermaidを使用し最終的にはER図を作成しました。
```mermaid
erDiagram
  users ||--o{ reviews : ""
  users ||--o{ receipes : ""
  receipes ||--o{ reviews : ""
  receipes ||--o{ ingredients : ""
  receipes ||--o{ procedures : ""
  receipes ||--o{ receipe_genre : ""
  genres ||--o{  receipe_genre : ""

  users {
    bigint id PK
    varchar(255) name
    varchar(255) email
    varchar(255) password
    text image
  }

  reviews {
    bigint id PK
    text content
    text image
    bigint user_id FK
    bigint receipe_id FK
  }

  receipe_genre {
    bigint id PK
    bigint receipe_id FK
    bigint genre_id FK
  }

  genres {
    bigint id PK
    varchar(255) name
    varchar(255) categry
  }

  receipes {
    bigint id PK
    text name
    text point
    text image
    bigint user_id FK
    bigint genre_id FK
  }

  ingredients {
    bigint id PK
    bigint order_num
    varchar(255) name
    varchar(255) amount
    bigint receipe_id FK
  }

  procedures {
    bigint id PK
    bigint order_num 
    text procedure
    text image
    bigint receipe_id FK
  }

```
https://mermaid.js.org/

### 実装
Notionでタスク管理を行い、タスクごとに優先度を決め、
最低限この機能がないと成り立たないよねといったものを優先的に進めていきました。

## 今後のチーム開発で意識したいこと
今回のチーム開発を通して成功したことや失敗したことさまざまありますが、特に以下を意識していけたらと考えています。

### 1. 共通の環境を構築する
メンバーの一人がRuby/MysqlのDocker環境を事前に準備いただき、実装にスムーズに入ることができました。
__具体的な方法:__ Dockerのようなコンテナ技術を使用して、全員が同じ開発環境を共有できるようにする。また、Gitを使用して、コードの一貫性を保持する。

### 2. 〆切を決める
Notionでタスク管理はできていましたが、具体的な期限決めができていなかったため、成果物提出期限ギリギリになってタスクが完了していないという事態が発生してしまいました。
__具体的な方法:__ プロジェクトのスコープに基づいてリアルな期限を設定し、定期的な進捗確認を行う。アジャイル開発の手法を取り入れ、短期間でのイテレーションを行うことも有効。
TiDB関連のGitHub Repositoryを見てみよう

この記事は [TiDB Advent Calendar 2023](https://qiita.com/advent-calendar/2023/tidb)の13日目です。
今回、TiDB Advent Calendarの記事を書くにあたってQiitaアカウントを作りました。Qiita初心者ですので温かい目でご覧ください。

# はじめに
これまでのTiDB Advent Calendarの記事ですでに紹介されておりますが、TiDBはオープンソースの分散型SQLデータベースです。
関連するcodeはGitHub上で管理されており、公開されています。
また、codeだけでなくIssuesやPRも見れますので、どのような問題が見つかっていたりだとか修正が入るだとかも見ることが出来ます。

[6日目の記事](https://qiita.com/bohnen/items/dc2a92a7664ea8637be0#%E3%81%96%E3%81%A3%E3%81%8F%E3%82%8A%E3%81%A8%E3%81%97%E3%81%9F%E6%A7%8B%E6%88%90)で紹介しておりますようにTiDBは複数のコンポーネントがそれぞれの役割を担って分散データベースを構成しています。
基本的には各コンポーネントごとにGitHub Repositoryがあり、メンテナンスが行われています。
この記事では代表的なRepositoryをいくつかピックアップして紹介いたします。


## tikv/tikv

https://github.com/tikv/tikv

TiDB clusterにおいてStorage部分を担うTiKVのrepositoryです。
TiKVは [Cloud Native Computing Foundation](https://www.cncf.io/projects/tikv/) (CNCF)のGraduated Projectとなるため、RepositoryはPingCAPの管轄を離れて独立しています。
Key Value Storeとしての基本的な構造、Raftアルゴリズムで分散の仕組みをこちらで実装しています。

## tikv/pd

https://github.com/tikv/pd

PD(Placement Driver)もtikv配下にrepositoryがあります。
PDはTiKVのデータ分散を担保のために用意されているコンポーネントですので、Clusterの中でもPDとTiKVが密接な関係であることがよくわかります。


## pingcap/tidb

https://github.com/pingcap/tidb

SQL解析レイヤーを担うTiDBのrepositoryです。
こちらはまだCNCF Graduated Projectではないため、PingCAP organization配下のrepositoryになります。
（以下、紹介するrepositoryは全てPingCAP organizationにあります）
SQLからKey Value StoreへのAPIに変換するため、ここで実行計画やトランザクション、DDLのメカニズムの実装をこちらで行っています。

また、TiDB clusterのバックアップツールであるBR、TiDB Clusterからデータをエクスポートするためのツールのlightningもこの配下のディレクトリで管理しています。

https://github.com/pingcap/tidb/tree/master/br


## pingcap/tiflow

https://github.com/pingcap/tiflow

PingCAPが提供しているデータ移行用のツールであるDMとTiCDCをこちらで実装しています。


## pingcap/tiflash

https://github.com/pingcap/tiflash

TiDB clusterのOLAP/HTAPを担うTiFlashを実装しています。
TiKVからリアルタイムでデータ同期する仕組みがこちらで実装されています。

## pingcap/tiup

https://github.com/pingcap/tiup

Advent Calanderの[3日目の記事](https://zenn.dev/shigeyuki/articles/8663e1598ecfa5)と[4日目の記事](https://zenn.dev/shigeyuki/articles/8ed839bf37c927)の記事で紹介されたtiupはこちらのrepositoryで実装されています。
これまで紹介したTiKVやTiFlashは独立したコンポーネントとしてbuildを行うことが出来るのですが、そういった手順をほぼ過去のものに葬り去ってしまうくらいtiupは優秀ですので、ぜひ上記記事を参考に触っていただきたいです。
Playgroundの仕組みもこちらで実装されています。


## pingcap/docs

https://github.com/pingcap/docs

PingCAPがHPで公開しているマニュアルなどのドキュメントを管理しているrepositoryも公開されています。
各バージョンのリリースノートなどもこちらで管理されています。

https://github.com/pingcap/docs/blob/master/releases/release-notes.md


## pingcap/ossinsight

https://github.com/pingcap/ossinsight


PingCAPが提供している[OSSInsight](https://ossinsight.io/)についてもrepositoryを見ることができます。
OSSInsightとは何者なのかについてはこちらの[PingCAPの記事](https://pingcap.co.jp/ossinsight-io-about/)を参照ください。


# 最後に

TiDB Cloud serverlessやtiup playgroundなどこれまで簡単にTiDBに触れる方法を紹介していますが、より深く知ることが出来るのもTiDBの魅力の一つだと思います。
この記事では一つ一つのIssueやPRの紹介はしませんでしたが（機会があればするかも!?）、PingCAPがアクティブに機能改善や新機能を提供しようとしていることも見ていただくことが出来ると思います。

ご覧いただきありがとうございました。
Route53でドメイン購入→レンタルサーバで使用する際のざっくり設定手順

今回自分の経験として試しに行ってみた記録になります。
具体的な反映の時間などはあくまでも私の体験談なのでサンプル１という感じですが特にDNS周りの反映時間はダウンタイムにも関わってきたりしますので参考になれば嬉しく思います。

# Route53でドメインを購入する手続き
コンソールの構成がたまに変わるので公式のヘルプを見るのがおすすめです。
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/domain-register.html#domain-register-procedure-section

料金も途中で確認できると思いますので上記ページに従って進めてみてください。

# レンタルサーバ側での設定や確認
レンサバによってコンソールが違うので以下やることを書いてみます。

### ドメインの登録
コンソール画面からドメインを登録する場所があるので登録します。これは何をやっているかというと、いわゆるWebサーバにconfファイルでドメインを登録するということをコンソール画面上から行なっているのだと思います。この設定は即時反映されることが多いと思います。

### サーバIPの確認
これもコンソール画面からサーバ情報が見れるところがあるのでそのサーバのIPを確認します。xxx.xxx.xxx.xxxのような数値です。これは後でRoute53のコンソールで設定するのでコピーペーストできるようにしてください。

### ネームサーバのアドレス確認
これも上記サーバ情報などの画面で確認できると思いますので同じようにコピーペーストできるようにしておいてください。

# Route53での設定
レンタルサーバでの設定、確認が終わったらRoute53のコンソールで設定をしていきます。
「Route53コンソール」→「左メニューのホストゾーン」→「設定するドメイン」を開きます。
おそらく初期設定でNSレコードとSOAレコードが設定されていると思いますがこれらは Route53が使用するものなので削除できません。そのまま進めます。

### Aレコードを設定
まずはネイキッドドメイン用に設定します。
「レコードを作成ボタン」をクリックすると入力項目が表示されるので入力していきます。
「レコード名」は空欄で大丈夫です。
「レコードタイプ」はA-IPv4を選択します。
「値」にはレンタルサーバコンソールで確認したサーバのIPを貼り付けます。
「TTL」はキャッシュする時間を指定します。このキャッシュする時間は長くすればRoute53の料金が下げられますがその長くした分だけ反映が遅くなります。つまり設定を変更した際に反映されるまでの時間が長くなってしまうので変更する際にはダウンタイムが生じやすくなります。ですので必要に応じて変更してみてください。今回はデフォルトの300（５分）で設定していきます。ちなみにこの設定での請求は＄1.55でした。
「ルーティングポリシー」はシンプルルーティングに設定します。A/Bテストやトラフィック過多での分散処理、サーバダウンを想定している場合や世界中にユーザーがいて地理的な距離を考える必要がある場合などに設定を変更するようです。

これでドメインにアクセスが来たら指定したIPのサーバへデータを取りにいきますよという設定ができました。
サブドメイン（ホスト）でwwwやjpやtestなどのアドレスも使う場合は適宜Aレコードを同様に設定していきます。
その際は前述の「レコード名」に値を入れて設定します。
ちなみに私はwwwも使用していたのでAレコードは2つ設定（「レコード名」以外は同じ形で）する形になっています。

### NSレコード設定
次にNSレコードを設定していきます。
「レコード作成ボタン」をクリックします。
「レコード名」はサブドメインがあれば入力します。私の場合はwwwとしました。
「レコードタイプ」をNSに設定します。
「値」には前述のレンタルサーバコンソールで確認したネームサーバアドレスを入力します。
「TTL」は300を設定しました。

これでサイト表示に関する設定は完了です。数時間〜48時間でサイトが表示できていれば成功です。

# SSL設定
今回SSLはレンタルサーバで提供されているLet's encryptを使用しました。この設定もレンタルサーバコンソールから各サーバのマニュアルを見て設定すればいけると思います。

# 反映時間の体験談
今回サイト公開後運用している段階でLet's encryptの更新が失敗するという現象が起きました。原因としてRoute53に設定されていたAレコードが旧サーバに向いていたためということがわかり、設定を変更しました。その時の反映までの時間はざっくり17時間くらいでした。こちらはおそらくその時々で変わってくるかもしれませんが一つの例として参考になればと思います。

# ドメインレジストラを変えると何が変わるのか？
ドメインレジストラを変えると単純な価格や管理画面の使い方だけでなく、DDoS対策の機能、分散処理の機能など具体的な機能でも差が出るようです。これらの機能が必要な大規模サイトやグローバルなサイトでは注意が必要ですね。
amazonlinux2023でphp8.2-zipがインストールできなかった場合の対応

amazonlinux2023でphp8.2 + Laravelを構築しようとした際にphp8.2-zipのインストールに失敗した。

結論から言うと、amazonlinux2023のリリースバージョン違いでphp8.2-zipを保持していないバージョンがあった為、別のリリースバージョンから取得して解消した。
```dnf install --releasever=2023.2.20230920 php8.2-zip```

[経緯]
以前に他apiで使用していたc++環境のec2(amazonlinux2023)へphp8.2 + Laravel10.17の追加を行った。

事前にローカル環境でdockerDesktopとamazonlinux2023のコンテナを使って試作しており、構築手順は作成済みの状態だった。

だが既存のec2ではphp8.2-zipがamazonlinux2023のリポジトリに無いとエラーが出て、インストール失敗した。

ネットで調べてみると、ec2のamazonlinux2023のリリースバージョンがローカル環境より古い事が分かった。

```dnf update```をしてc++環境に影響があると良くないので、ローカル環境と同じリリースバージョン(2023.2.20230920)とパッケージ名を指定してインストールできないか確認した。

幸い今回はphp8.2のパッケージのみマイナーアップデートだった為、kernelやmakeには依存しなかった。

以上です。
TypeScriptでGoogleAppsScriptを書いて数値計算ライブラリを作っている

# 経緯  
 - 製造業に従事  
 - 外製品サプライヤーの工場見学へ  
 - GAS のトリガー機能で CNC-MC のスタートを切っていた ( 20230619 )  
 - クッソ影響される  
 - はじめは GAS の練習として友人と始めた  
 - JavaScript で書くのがいいねとなる  
 - 友人から GitHub ってのがあるんだけど使ってみない？と言われる  
  ^ 当時は名前こそ知っていたもののアカウントさえ作っていなかった  
  ^ 友人から Git ，GitHub ，VSCode ，SourceTree の OJT を受ける ( 20231013 )  
  
 - このあたりから激変  
 - Node.js って何……？とか，TypeScript とは？？？？？みたいな状況が続く  
  ^ GitHub & GAS 連携がうまくいかなかったので Node.js を採用したのだと思う  
  ^ このままではこのプロジェクト死ぬわと思い，人集めに奔走 ( 現在進行形 )  
  ^ 人集めとコミュニティ整備めっちゃ苦労するし，した ( このあたりは別記事で )  
  ^ 未経験者がコミュニティ内に増加してきたため Wiki の制定を予定している  
  ^ そのために新人さんにはまずわかんない単語リストを作ってもらう  
  
# 使っているデバイス
 - VersaPro VG-N win10 Pro  
 - Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz  
 - RAM 4.00 GB  
 - storage あまり気にしてない  

# 開発環境
 - VSCode  
 ^ 正直拡張機能で無料の奴はモリモリ入れていく方針  
 - SourceTree  
 ^ 正直最近の VSCode Update で Git 関連の機能が充実してきたためにもうええかな感  
 - Git，GitHub ( https://github.com/YoshitakaNaraoka )  
 - Node.js  

# Docker Rust Python の勉強をしたい
 - Docker でややこしい環境構築とかをまるっとひとつにしたい
 - Rust で機械を動かすことになると思うので
 - Python で自分のバックグラウンドであるところの化学に携わりたい

# その前にまず gs/js/ts の勉強からだけどな！！ Node.js もな！！！
 - Qiita，Zenn，Chietta などを用いて日頃から情報収集はしてます
 - あと，コミュニティ内での雑談も欠かさずに行ってはいるつもりです
 - Owner としての動きの悪さみたいなのは否定できないところはあります  
 ^ 私もまだまだ弱っちいミジンコということです  

# Discord or Slack は慎重に選んだ方がいい
 - Bot の作りやすさ ( 情報含め ) とか，使ってる人の多さみたいなところとか
 - 通話をいっぱいしましょう．コミュニケーションを大事にした方がいいし，ポエム書いた方がいい ( 特にマネージング層 )  

# 最終的に成したいこと
 - 古くてガッタガタの機械でも同軸度 0.005 とか出したいよね
 - まあ完全モニタリング工場とか作りてえ～～～
 - RPA が普及してきた昨今，そろそろみんな物理的なものの自動化にも目を向けてほしい
 - Rust と TypeScript で機械動かすぞウオー！！！

# 最後に
[GitHub Org](https://github.com/MathExpansion)  
[GitHub Repo](https://github.com/MathExpansion/MathExpansion)  
[Discord Server](https://discord.gg/a5sNHjFatW)  
  
助けてくれる人，お待ちしております．私も頑張ります．  
関わってくれる人全員が Contributer だと思って日々励んでおります．
TsukuCTF 2023 Writeup

# はじめに
TsukuCTF 2023に参加しました。1人チームで6273ポイント、343チーム中52位でした。

https://tsukuctf.sechack365.com/

TsukuCTFはセキュリティ系のハッカソン「SecHack365」修了生の方が運営しているCTFです。

https://sechack365.nict.go.jp/

当日にSecHack365修了生のイベントSecHack365 Returnsが行われており、私もそこへ行くつもりが体調を崩してしまい、しかし少し元気になり暇を持て余していたため参加することにしました。

問題はOSINTが多く工夫して検索できて楽しかったです。特に印象に残ったものをいくつかあげていきます。

# travel_with_tsukushi
画像から空港を特定し空港の3レターコード(IATA)を回答する問題。
![airport.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549656/c1565cc4-127f-06d7-dfe1-3bb078c1a280.png)
手前の2機の航空会社Air ArabiaとBatik Airは文字から特定できましたが、一番後ろがなかなかわかりませんでした。
二つの航空会社が両方運行しているのはマレーシアのようなので、マレーシアの航空会社をWikipediaで調べていき、最後の飛行機はマレーシア航空とわかりました。
https://en.wikipedia.org/wiki/Malaysia_Airlines
3つの航空会社が運行している空港はクアラルンプール国際空港なので、KULが答えです。
```
TsukuCTF23{KUL}
```

# castle
場所の緯度経度を回答する問題。
![castle.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549656/f5686a67-e45c-7b6b-3aba-a28e1e738eff.jpeg)
壁には白鳥が描かれているようです。「城　白鳥　壁画」で検索するとドイツのノイシュバンシュタイン城がヒット。
その中に兵庫県太陽公園の写真もあり、場所が判明。
Google Mapで検索して回答しました。
https://duckduckgo.com/?t=ffab&q=%E5%9F%8E%E3%80%80%E7%99%BD%E9%B3%A5%E3%80%80%E5%A3%81%E7%94%BB&iax=images&ia=images&iai=https%3A%2F%2Ftrip-camera.com%2Fwp-content%2Fuploads%2F2018%2F11%2Ftaiyo-park-shiratori-castle.jpg
```
TsukuCTF23{34.886_134.630}
```

# TrainWindow
場所の緯度経度を回答する問題。
![TrainWindow.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549656/cb7889db-3296-cfc5-dac8-b6c1a68d5311.jpeg)
奥に島があり、また西日本ぽい雰囲気を木から感じたため、九州・四国・近畿・東海・関東地方の海岸付近の島をGoogle mapsでしらみつぶしに探索したところ、伊豆半島で画像の島とよく似た島を発見しました。
画像中央付近にTTCとかかれた会社があり伊豆半島付近でGoogle Mapsで検索すると場所が判明。画像を参考にしながら位置を微調整して回答しました。
https://www.google.co.jp/maps/place/%EF%BC%88%E6%A0%AA%EF%BC%89%EF%BC%B4%EF%BC%B4%EF%BC%A3/@35.064186,139.0678431,17z/data=!3m1!4b1!4m6!3m5!1s0x6019bfbabd7510a9:0x391c7fc237081333!8m2!3d35.064186!4d139.070418!16s%2Fg%2F11btrrdlwb?hl=en&entry=ttu
TsukuCTF23{35.0641_139.0664}

# 3636
場所の緯度経度を回答する問題。
![3636.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549656/8126f7d6-232a-e2a9-f34e-cc9a0968b312.png)
まずed.jpドメインのリストを探しましたが、昔は公開していたが今は原則一般には非公開とのことで残念ながら見つかりませんでした。
https://ftp.nic.ad.jp/jpnic/domain/domain-list.txt
おそらく電話番号と思われる3636とed.jpを使って検索すると、福島県の幼稚園がヒット。
https://duckduckgo.com/?q=%22ed.jp%22+3636&t=ffab&ia=web
ストリートビューで幼稚園付近を探して看板を発見し回答しました。

```
TsukuCTF23{37.502_139.929}
```

# tennis
場所の緯度経度を回答する問題。
![tennis.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549656/afa530b5-fc71-7ad5-72e5-0a1b3e8ff949.jpeg)
電波望遠鏡のように見えるものが奥にあります。知っていた電波望遠鏡の野辺山宇宙電波観測所(長野県)や水沢VLBI観測所(岩手県)をGoogle Mapsで確認し、衛星写真から水沢のテニスコートと特定できました。野辺山にもテニスコートがあり紛らわしかったです。
```
TsukuCTF23{39.1349_141.1323}
```

# Yuki
場所の緯度経度を回答する問題。
![Yuki.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549656/c1b60c8e-f8e0-dd4a-e626-85bf34216299.jpeg)
橋がかかっていることから場所は雪国の渓谷、撮影者のいる建物は観光地のホテルに見えます。
2019年のSecHack365のオフライン回会場の定山渓を検索したところ定山渓ビューホテルが撮影場所とわかりました。泊まったところですね。
```
TsukuCTF23{42.969_141.167}
```

# おわりに
1年ぶりのCTFでしたが楽しかったです。
もっとCTFに参加していきたいなと思いました。
Pythonで「スライスを使ってリストの指定した範囲の要素が含まれる新しいリストを取得する」の動作を確認してみた

# 概要

Pythonで「スライスを使ってリストの指定した範囲の要素が含まれる新しいリストを取得する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/python/list/index3.html

# 実装

以下のファイルを作成しました。
```sample.py
colorlist = ["Blue", "Red", "Green", "White", "Black"]
print(colorlist[1:3])
print(colorlist[2:3])
colorlist = ["Blue", "Red", "Green", "White", "Black"]
print(colorlist[:3])
print(colorlist[2:])
print(colorlist[:])
```

以下のコマンドを実行しました。
```
$ python3 sample.py 
['Red', 'Green']
['Green']
['Blue', 'Red', 'Green']
['Green', 'White', 'Black']
['Blue', 'Red', 'Green', 'White', 'Black']
```

# まとめ

何かの役に立てばと。
ATMega328Pのピンアサイン表

意外なことにATMega328Pのピンアサインを詳しく説明しているサイトが無かったので
メモのため、記載しておきます。

なお外付け水晶発振器を使用せず内部8MHz動作にしているため
今回はPB6、PB7を使用できるようにしています。

とりあえず全てをデジタル出力Pinに変更

```c
void setup() {
  //  pinMode(PORTB , OUTPUT);    //エラーは出ないけど設定不可

  pinMode(0, OUTPUT);  //0番ピンをOUTPUT(出力)に指定(PD0)
  pinMode(1, OUTPUT);  //1番ピンをOUTPUT(出力)に指定(PD1)
  pinMode(2, OUTPUT);  //2番ピンをOUTPUT(出力)に指定(PD2)
  pinMode(3, OUTPUT);  //3番ピンをOUTPUT(出力)に指定(PD3)
  pinMode(4, OUTPUT);  //4番ピンをOUTPUT(出力)に指定(PD4)
  pinMode(5, OUTPUT);  //5番ピンをOUTPUT(出力)に指定(PD5)
  pinMode(6, OUTPUT);  //6番ピンをOUTPUT(出力)に指定(PD6)
  pinMode(7, OUTPUT);  //7番ピンをOUTPUT(出力)に指定(PD7)

  pinMode(8, OUTPUT);   //8番ピンをOUTPUT(出力)に指定(PB0)
  pinMode(9, OUTPUT);   //9番ピンをOUTPUT(出力)に指定(PB1)
  pinMode(10, OUTPUT);  //10番ピンをOUTPUT(出力)に指定(PB2)
  pinMode(11, OUTPUT);  //11番ピンをOUTPUT(出力)に指定(PB3)
  pinMode(12, OUTPUT);  //12番ピンをOUTPUT(出力)に指定(PB4)
  pinMode(13, OUTPUT);  //13番ピンをOUTPUT(出力)に指定(PB5)

  pinMode(20, OUTPUT);  //20番ピンをOUTPUT(出力)に指定(PB6)
  pinMode(21, OUTPUT);  //21番ピンをOUTPUT(出力)に指定(PB7)

  pinMode(14, OUTPUT);  //14番ピンをOUTPUT(出力)に指定(PC0)
  pinMode(15, OUTPUT);  //15番ピンをOUTPUT(出力)に指定(PC1)
  pinMode(16, OUTPUT);  //16番ピンをOUTPUT(出力)に指定(PC2)
  pinMode(17, OUTPUT);  //17番ピンをOUTPUT(出力)に指定(PC3)
  pinMode(18, OUTPUT);  //18番ピンをOUTPUT(出力)に指定(PC4)
  pinMode(19, OUTPUT);  //19番ピンをOUTPUT(出力)に指定(PC5)

}

void loop() {

  delay(1000);

}
```
ビジネスコミュニケーションで今年学んだこと

今年は海外の方がいらっしゃるプロジェクトに参画したり、コミュニティ(Cord Polaris)で技術書展出典に挑戦したりといろんな経験をさせてもらいました。コミュニケーション領域について、特に重要だと思った学びをまとめます。

![nakayoshi_world_kids.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3003921/19eb7bec-e966-23db-41f3-b83e4ed638d4.png)


１．**ゴールと目的、モチベーションの共有を最初に行う。**

２．**スケジュールは都度共有する。**
　　ゴールがここで、現時点がここ！状況はこう！
  
３．**タスクは必ず締め切りを設ける。そのタスクの目的も明確にする。**
　　締め切りはバッファを考慮する(自分の心を守るためにも大事。)

４．プロジェクト内で決める方針は、「決定してから発表する」よりも、**情報を出しながら一緒に進める(という姿勢を見せる)**
- といっても裏の根回し、ではなく、公の場でも途中経過をオープンにしたり、意見を聞く。
　→すると信頼関係強化にもつながったり、決定事項を運用していくうえでもエンゲージメントが高まる。

:::note info
 これはEUから実際に声があがってました。
:::

５．**感謝は言葉にして伝える。**

６．**雑談を大事にする。**
　コミュニケーションを取った量って話しやすさに反映するものだなぁと思いました。

７．**(欧米でも？)本音と建て前、メンツがある。**
 
 　アメリカは合理的な判断をするお国柄だと思ってたのですが、縄張りというか「本社の好きにはさせない」みたいな感情的な部分や、そこまでの感情はない本社の考えに沿う姿勢を見せると、現地側から「そっち寄り」と思われて仕事がやりにくくなる、みたいなドロドロっぽいのが垣間見えた今年の秋…でした…(遠い目)。
フォント名についている記号とは？

こんにちは。
オークファンでデザイナーをしています@af_takeです。
突然ですがみなさん、デザインでフォントを選ぶ際フォント名にくっついているアルファベットの意味ってご存知でしたか？
（こういうのです→A-OTF UD新ゴNT pro）
自分はというと以前はproと付いているのは何となく良さそうだなくらいの理由でフォントを決めていました:innocent:
ということで、知識の整理も兼ねて記号の意味を紹介してみたいと思います！

## はじめに
Photoshopなどのデザインツールでフォントを選択する際に、フォント名の前後にアルファベットの記号がついています。
同じフォントのようだけど、前後の記号が違う。これはどういう意味なのでしょう。

A-OTF 新ゴNT Min
A-OTF 新ゴNT pr5
A-OTF 新ゴNT pr6
A-OTF UD新ゴNT pro
A-OTF UD新ゴNT pr6
A-OTF UD新ゴNT pr6N

## そもそものフォント名
まずフォントの大枠となるフォントそのものの名前はどこになるのでしょう。
答えはは「A-OTF」などの次に来る箇所が該当します。

![font_img01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913908/0c1380fa-a894-5413-bb1f-9d03b49ca417.png)

こちらの例だと新ゴ、見出しゴMB1、リュウミン、筑紫明朝となります。

## 前後についている記号
では本題の前後についている記号について説明します。

### 1.ベンダー（開発会社）の記号
まずフォントの頭についている記号、これはフォントを開発したメーカーを表しています。

![font_img02-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913908/b4a9959b-753b-b1a7-33b4-f51557961d53.png)


モリサワフォントとAP版モリサワフォンというのが出てきましたが、このAP版とは「ペアカーニング情報」を持ったフォントかどうかを表しています。

ペアカーニング情報とは文字間が綺麗に見えるよう、自動で文字詰めを行ってくれるもので、Photoshopではカーニング設定を「メトリクス」にするとペアカーニングが有効になります。
また似た機能の「オプティカル」はソフト側で文字の形を見て自動で文字詰めを行ってくれるものになります。



### 2.UDフォント
次に来るのがUDフォントを表す「UD」という記号です。
UDとはユニバーサルデザインを意味しており、簡単に言うと年齢や身体的な能力、文化背景を超えて伝わるデザイン、フォントでいうと読みやすく、読み間違えのないよう配慮されたデザインとなります。

![font_img03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913908/061c8a05-0e8b-735a-5991-8c958c9f4189.png)

<font color="Gray">※ただし必ずしもUDフォントを選べば良いというものではないので、制作するデザインに合わせてフォントを選ぶ必要があります。ちなみに新ゴの後ろについている「NT」これもユニバーサルデザインを意識したデザインが盛り込まれたもので、新ゴと新ゴNTでは「かなもじ」がより読みやすくなっています。</font>

### 3.文字数
次が収録されている文字数を表す記号で、Pro、Std、Pr6と色々と種類があります。

![font_img04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913908/4d10ef81-282a-f226-5205-c6d255fe2f3f.png)

これは想像通りProと付くものの方が収録している文字数が多くなります。
下記のように付く記号で表示可能な文字数が変わります。より多くの文字数のものを選ぶのが無難ですが、Stdでも「常用漢字」や「人名用漢字」などのJIS第1水準や、第2水準の漢字が含まれているのでおおよその日本語表示にはこのStdフォントでも問題なさそうです。
* Std…9,354文字
* Pro…15,444文字
* Pr5…20,317文字
* Pr6…23,058文字
* Min…3,823文字
* Min2…4,833文字

### 4.Nつきフォント
最後に文字数の後ろにつくNについてです。

![font_img05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913908/3c61df25-571c-f9d5-d3a4-7cd4bc337b40.png)

このNは「JIS2004字形」に準拠しているかどうかを表しています。
JIS2004字形とは2004年に改定された日本工業規格（JIS）で定められた文字の規格で、168文字の漢字の字形に違いがあり、例として以下のようなものがあります。

![font_img06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913908/99d43f62-eb68-79da-ae18-2fbe1ea5f10b.png)


このNあり・Nなしフォントの選び方ですが、例えばNなしフォントで既に作成したデザインデータを編集する場合、同じ「Nなし」フォントから選ぶことで文字のトラブルを減らすことができます。
新たにデザインデータを作り始める場合は、現在広く使われている字形と同じ「Nあり」フォントを選ぶと良さそうです。
また案件によっては「辻」は1点辻でといったように特定の字形の表示が求められることもあるかと思いますので、その場合は要請に応じてNあり・Nなしを選ぶ必要がありそうです。

<font color="Gray">※ちなみにJIS2004字形の前はJIS90字形が使用されており、こちらは1990年に制定された規格になります。</font>

## さいごに
フォントの記号の意味を簡単に纏めてみましたが、改めて調べてみるとフォントの歴史や変化の背景などまだまだ学べることは多くあり、フォント奥が深いな〜と再認識しました。

またそれぞれのフォントには細かい部分にも書体デザイナーさんの思いが詰まっており、自分としてももう少し勉強したいなという気持ちが湧いた良い機会となりました。

これを読んで頂いた方にも少しでも有益なものがあれば幸いです。
それでは、最後までお読み頂きありがとうございました！
[11日目] 学校の食堂をIT化させる話　スマホやタブレットから注文できるシステムの話

こんにちは、なりかくんと申します。
この記事はなりかくん Advent Calender 2023の11日目の記事です。

この話は、1日目から始めた学校の食堂をIT化させる話の続きとなります。前回はキャッシュレス決済を導入する際に考えた注文方式の話をして、その中で予算問題などが発生しました。なので今回は、それを解決するための「スマホやタブレットから注文できるシステムの話」をしていこうと思います。

# スマホから注文できるシステム
今流行ってますよね～、スマホから注文できるシステム。それを私たちの学校の食堂にも取り入れたいと思っています。イメージとして掴みやすいのは、スターバックスのモバイルオーダーやマクドナルドのモバイルオーダーですね。

簡単に注文の流れを説明すると、スマホ上から商品を選択し、スマホ内で決済を完了させます。
決済が完了すると、注文番号が表示されるか送られてくるので、その番号で商品が出来るまで待つという至ってシンプルな流れです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/878ff5b4-be2c-25ef-6baa-fb1dbce7f1b0.png)

# どうすれば作りやすく・使いやすく出来るか
私は、このシステムをいかに簡単にかつ使いやすく作れるかを考えました。その結果、既存のサービスとAPIを使うことに決めました。そこで選んだのが、日本で最も使われている「LINE」です。

LINEは、基本的に日本人ならほぼ使っているサービス（だと私は思っています）なので、活用します。
また、LINEにはMessaging APIという簡単に双方向コミュニケーションが取れるAPIがあるのでそれを活用します。

https://developers.line.biz/ja/services/messaging-api/

# 実際の流れ
内容としては、LINE公式アカウントのリッチメニューから最初の操作を始めてそこから画面の指示に従って、カートに商品を追加する形となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/396c0cce-7484-053f-5e43-94ac00f05fea.png)

カートの中身が確定したら、支払いをするを押します。PayPayの決済ボタンが出てくるのでタッチすると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/a498e3ef-23d7-88b1-5ec9-c13b5c9b555e.png)

PayPayの画面に移動して、支払いを完了させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/dbd11ced-6041-51c6-fb15-20468bd7d2e4.png)

完了させたら、LINEの完了ボタンを押します。これで、番号が発券される流れとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/e9e53230-180a-0bf5-6858-e0ff6b06e2f2.png)

# 使用した技術面
今回、これを制作するのに以下の技術を利用しました。
- LINE Messaging API
- AWS Lambda
    - Python
- データベースAPI (PHP)
- PayPay API
    - paypayopa-sdk-python

このぐらいですね、維持のしやすさを重視し構成はシンプルにしました。

技術的な話は明日12日目に書こうと思います。

# 最後に
実は11日目の記事が間に合わなくて12日に書いてます。申し訳ない。
最後までお読みいただきありがとうございました。
関数宣言とアロー関数の違いについて

# はじめに
「世界一流エンジニアの思考法」を読んでアウトプットの重要性を認識しました。また基礎的なことが分かっていないとGoogleエンジニアになってしまうので細かくアウトプットしていこうと思います。
そのための備忘録です。
間違い等があれば教えていただけると嬉しいです。

# 問題
関数宣言とアロー関数ってどう違うのか改めて人に説明できるほど知らなかったので、調べてみました。

# 違い
### 関数宣言
```js
function Button () {
  return (
    XXX
  )
}
```
・JavaScriptのもともとの書き方。
・functionを書かなければいけないのがしんどい。
・関数が呼ばれたタイミングでthisが決定する。
・newを使用することでオブジェクトとして扱うことができる。
### アロー関数
```js
const Button = () => {
  return (
    xxxxx
  )
}
```
・関数宣言より機能が増えたわけではない。むしろオブジェクトを作れなくなったから機能は減っている。
・関数を設定した時点でthisが決定する。
・見た目が分かりやすい

# おわりに
ここまで書いてみて、このアウトプットは必要だったのか疑問が浮かびました。しかし、アウトプットの習慣化のスタートとしてならよかったかもしれないです。

# 参考
https://typescriptbook.jp/reference/functions/function-expression-vs-arrow-functions
STPケーブル対応Hubと廉価機のハード的な違い

# この記事の対象者
- LAN・HDMIケーブルによって速度の違いが出ることを実感したことがある方
- STPケーブル(LANケーブルの一種)に興味がある方
- クロストークノイズ被害にあったことがある方・会いたくない方
（わざとふわっと置いてるケーブル4Sさせられて、HDMIが映らなくなったことがあるとかｗ）
- 映像・音声のお仕事の方（ノイズ被害がすぐ露呈）
- アルミホイルを準備してる・換気扇の位置が気になる方

# 結論

- この記事が気になるような方は、**VLAN等に用がなくてもアンマネージプロ以上**にしておくとよいかもしれません。（+1100円程度～）

# STPケーブルのアース処理
- STPのLANケーブルは、ノイズ対策としてケーブル全体がアルミ箔などに包まれた層があり、このアルミ箔が金属のRJ45コネクタまでつながった構造のものです。
- この金属のRJ45コネクタが、LANポートの側面にある下赤部分に接触し、スイッチ・ルータのGNDに接続されます
- STPケーブルで正しくノイズ対策するには、ケーブルのアース対応が必要と言われています
![IMG_20231212_171321_834_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436645/d5b68619-e313-1c4e-4109-db5f66059a8d.jpeg)


# STP対応機種と廉価機
- STPケーブル対応のハブと、明記がないハブのハード的な違いがあるのか分解して確認してみます
### STP非対応機種(TL-SG105/TL-SG108等)
- TP-Link-SG105は2000円ほどで買える５ポートスイッチハブです。[仕様表](https://www.tp-link.com/jp/home-networking/soho-switch/tl-sg105/v8/#specifications)を見ると、特にSTP対応とは書かれていません。
### STP対応機種(TL-SG105E/TL-SG108E等)
- 一方、TP-Link TL-SG105Eは、3000円ほどで買える５ポートVLAN対応のアンマネージプロスイッチですが[仕様表](https://www.tp-link.com/jp/business-networking/easy-smart-switch/tl-sg105e/#specifications)をみるとUTP/**STPケーブル対応**と明記されています
![STPケーブル対応E.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436645/69e98dc8-e44e-3f9f-0bf9-07aa75538b50.jpeg)

# ハード的な違いを確認してみる
### 共通点
- どちらのハブもLANポート内側面の赤部分（一番最初の写真）と下写真の赤部が接続されており、基板上のいくつかのGNDと思わしき場所や、緑丸部分経由で金属ケース下部に繋がっています。手元のテスターで200Ωレンジで0Ω程度でした。
- 2000円の廉価ハブを選んでも、放熱だけのなんちゃって金属ケースではないようです。
![IMG_20231212_161408_473_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436645/aca58934-a8bd-73c0-e8bd-f30db00c5895.jpeg)
![IMG_20231212_160809_160_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436645/ef1d6394-f8cb-875d-f26e-b4c4d18b0b18.jpeg)
※テスト棒短絡でも5Ωなテスター使用

## 違い
- 蓋を開けると、違いが出てきます。
- SG-105/8はLANポート背面がプラむき出しで、上部に金属押さえがありません(右)。しかし、105E/108Eは金属押さえがあります。
![IMG_20231212_161447_585_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436645/afa728b9-d885-f60a-36fd-17627f280c17.jpeg)
- ファンレスのハブなのにビビり防止バネのような金属押さえがついている理由は、そこからフタ部分に導通を通しているためです。
- 下の写真の緑で囲った部分の無塗装部分からフタ部に導通させていました。なお、塗装部分は導通しません。もっと雑にマスクしても良さそうなものですが、フタ裏の無塗装の凸部にピッタリと本体の金属押さえ部が当たります。
- ![IMG_20231212_162350_742_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436645/316bf168-22fb-156f-1d08-9cbeb6d316fe.jpeg)

## 補足
- 1000円の差はファームだけでは無さそうです（SoCは未確認）
- ただ、廉価版(SG-105/108)でもSTPケーブルのシールドとスイッチ基板のGNDは繋がっているように見えます。また、上蓋についても黒の取り付けネジまでは導通してますので、上蓋のネジ穴部分の塗装を削れば蓋までGNDさせることはできそうです（自己責任で）
- 廉価版ハブにSTPケーブル挿すかはお任せしますが、私ならあと1000円出して貰えるようお願いしたいです。
- ノイズが共にあらんことを！
高速フーリエ変換を高速に理解する

# はじめに

フーリエ変換は自然科学や信号処理など、広い分野で用いられています。競技プログラミングでも畳み込みの計算を高速に実行するツールとしてよく利用されます。この記事は離散フーリエ変換を高速で実行する高速フーリエ変換(FFT)のコアとなるアイデア部分の備忘録です。

# 設定
長さ`N`の配列 `A = [A[0],...,A[N-1]]`の離散フーリエ変換
```math
\mathcal{F}_N(A)[k] = \sum_{j=0}^{N-1} A[j] e^{2\pi i\frac{jk}{N}} \qquad (k=0,...,N-1)
```
を計算する。簡単のため`N`は2のべき乗であるとする。配列のインデックスは`[]`で表す。

# 計算
和を偶奇に分けることで
```math
\mathcal{F}_N(A)[k] = \sum_{j=0}^{N/2-1} A[2j] e^{2\pi i\frac{2jk}{N}}
 + \sum_{j=0}^{N/2-1} A[2j+1] e^{2\pi i\frac{(2j+1)k}{N}}
```
と書ける。`N`は偶数であることに注意。変形すると

```math
\begin{align}
\mathcal{F}_N(A)[k] &= \sum_{j=0}^{N/2-1} A[2j] e^{2\pi i\frac{jk}{N/2}}+ e^{2\pi i\frac{k}{N}}\sum_{j=0}^{N/2-1} A[2j+1] e^{2\pi i\frac{jk}{N/2}} \\
 &=\mathcal{F}_{\frac{N}{2}}(A_\text{even})[k] + e^{2\pi i\frac{k}{N}}\mathcal{F}_{\frac{N}{2}}(A_\text{odd})[k] 
\end{align}
```
となる。$A_\text{even}$は`A`の偶数番目を取り出した配列(python風には`A[::2]`)、$A_\text{odd}$は`A`の奇数番目を取り出した配列(python風には`A[1::2]`)である。

この表式より、再帰的に半分の大きさの配列でのFFTに帰着できるため、一つの`k`に対して$O(\log N)$の計算量で離散フーリエ変換値を得られる。定義に従って愚直に和を取った場合は$O(N)$なのでかなり高速。

# その他
- 配列の長さが2ベキじゃないときは0埋めで次数調整。(と書いてあるところが多いけどだめだよね？)
- 配列の長さがmの倍数の時は和をmod mで分ければ同じことができる。
- その他モダンな高速化が多々開発・実装されているので、素直にライブラリを使うべし。
私がデザインレビューするときに大事にしている5つのこと

こんにちは。オークファン開発部のデザイナー @af_hoshino です。

レビュー、してますか？デザイナーであれば、セコムはしてなくてもレビューは多くの方が経験されてますよね。本記事では、私が大事にしているデザインレビューの心得に関する内容をお伝えします。手法的な概論ではなく、あくまで私の経験に基づく姿勢と考え方が中心です。

# かんたんに自己紹介

オークファンに入社してからもうすぐ3ヶ月になります。受託制作のフリーランスから事業会社に鞍替えして、日々新鮮な刺激とともに、成長を実感できる毎日を過ごしています。

オークファンのデザインチームでは、一人ひとりがディレクター的な立場で依頼主からヒアリングを行い、デザインからコーディング、公開まで制作に関わります。デザイナーという肩書以上にジェネラルなスキルを求められる環境です。

これまで制作会社を数社経験後、フリーランスとして活動してきました。転職してから特に大きな違いを感じているのは、制作フローに同職種間のレビュー（デザインレビューとコードレビュー）が含まれている点です。

# デザインレビューで大事にしていること

制作会社ではクライアント、ディレクター、デザイナー、エンジニアがバトンタッチをしながら、分業的に意見を交わすことが多かったのですが、これを縦の関係性のフィードバックとすると、オークファンでは横の関係性と表現したいと思います。

入社してからというもの、この横の関係性で”レビュイー”としてデザイン・コードの両面でフィードバックいただいており、経験豊富なチームメンバーからいただくレビューはとても勉強になります。

一方で”レビュアー”としては、まずはデザインレビューから参加させていただいてます。他者のプロジェクトも自分ごととして責任あるコメントを検討することは、チームへの貢献とともに、自分自身も得ることが多いと感じています。

異なるカテゴリーからjoinしたての今だからこそ、新鮮に感じていること、忘れてはいけないこと、大事にしていることをこの節目に、心に刻み込むように言語化しておきたいと思ったわけです。

## 解決策より問い

横の関係性において、レビューは指示ではなく感想を伝え合う場。私のように環境に慣れない新入りが受けるレビューは、教育視点の指示的なレビューも多分に含まれますが、そうでない限り采配はレビュイーに委ねられます。

そこにどういった問題が存在するのか。その先の解決策まで示すこともありますが、まずは気づきを与えることを心がけています。相手に考えるきっかけを提供することで、単に結果を得るだけでなく、プロセス自体に価値があるという考え方です。

## 仮説をぶつける

自分では考えもしなかった視点や感覚を得ることができるのは、レビューの醍醐味のひとつといえます。ですので、基本的には忖度なく個人の考えを言ってもいいと思っています。ただ好みや偏見ということではなく、プロジェクトの要件や目標に基づいて評価する必要があります。

レビューは仮説をぶつけ合う壁打ちのようなもの。客観性の解像度が高くなれば、成果物に対する新たな理解を深めることができます。チームレビューは単なる批評の場ではなく、そのデザインが受け入れられるにはどうすればいいかを議論する場にもなっています。

## 良いものは褒める

良いと感じたものは迷わず褒めるようにしています。レビューというと、どうしてもマイナスをゼロにするコメントが並びがち。それもレビューの重要な機能である一方で、どの要素が特に印象的か、どのように感じたかといった良い面を共有する。

粗探しをして欠点や悪い部分ばかりにフォーカスを当てるのではなく、長所や特長を見つけることが良い雰囲気を生むのは、人付き合いでも同じですよね。その人が得意なことや好きなことを常に探すようにしています。

## 美意識を信じない

「僕はあまり美意識を信じてない。」これは私が宣伝会議のアートディレクター養成講座に通っていたときに、大好きなグラフィックデザイナーの菊地敦己さんが言っていたフレーズ。第一線で活躍されているアートディレクターのこの一言に圧倒されたのを覚えています。

経験を積めば積むほど、お決まりのやり慣れたパターンが出来上がってしまうもの。特に工業デザインの分野では、なんでも様式化してしまいがちなだけに、積み上げられたセオリーや美意識に対して「それって本当なの？」というクリティカルな視点はいつも持っておきたいと思っています。

## Agree to disagree

意見の不一致を認める。直訳するとこのような意味になるのですが、これはレビューに限らず私がコミュニケーションのベースにしている考え方です。

数字的な根拠がいつも揃うわけではない、正解のないデザインという分野だからこそ、意見の相違は避けられません。そのときに感情的になるのではなく、多様な視点やアイデアが交わるオープンな議論を心がけています。

# まとめ

オークファンのやり方に慣れるために、まずはチームのみなさんを100%なぞろうと腹をくくって入りました。徐々に自分の理想も見つけていきながら、慣れてきたら提案も小出ししていきたいですね。

最後に… レビューは愛だ！私にとってレビューは自己を肯定も否定もする場所ではなく、その成果物がより良くなるための自己効力を満たせる場所です。人に貢献するのは気持ちのいいことですよね。私は今日も自分のためにデザインレビューをしています。
The Art of Crafting User Stories

『The Art of Crafting User Stories』は、ユーザストーリーの書き方に関する書籍です。結構な分量があるものの、多くの例が載っているわけではなく、べき論的な話がつらつらと書いてあって、これを読んだだけでは、必要なことは山ほどあることが分かるけれども、実践には結びつきにくい、と感じました。

<a href="https://www.amazon.co.jp/Art-Crafting-User-Stories-collaboration/dp/1837639493"><img src="
https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8475/871b7afb-a864-469f-900f-30667be4cf82.png
" alt="The Art of Crafting User Stories" width="200"/></a>

## ユーザストーリーの書き方

基本的に、以下のテンプレート形式で要求を記述します。

> 私が [ペルソナ] なら、[希望] を実行することで [目標] を達成したい

良いユーザストーリーは、以下の性質を満たすと良いとされます。頭文字をとってINVESTモデルと言われることもあります。

* **独立**: ユーザストーリーは、他のユーザーストーリーに依存せず、自己完結していなければならない。
* **交渉可能**: ユーザストーリーは交渉可能であるべきで、議論や変更が可能であるべきです。
* **価値あるもの**: ユーザストーリーはユーザーに価値を提供する
* **見積もり可能**: ユーザストーリーに必要な労力を見積もることができる
* **小さい**: ユーザストーリーは、1回のイテレーションで完了するのに十分小さいべきである。
* **テスト可能**: ユーザストーリーは、それがユーザーのニーズを満たすことを確実にするために、テスト可能であるべきだ

## ユーザストーリーからどう実装するのか?

ユーザストーリー自体の有用性は理解しつつも、そこからどう開発へ繋げていくのかは、言及されているものがあまり見つかりません。ユーザストーリーを元にGerkhinでAcceptance Test書こう、みたいな話はあるものの、モデリング → プログラミングのところは抜けている文献が多いし『The Art of Crafting User Stories』も同様でした。

ユーザストーリーと似たようなもの、ユーザストーリー + EventStormingといった手法にDomain Storytellingというものがあって、この１２章には、Domain Storytellingからドメインモデリングへ、の話が載っています。

<a href="https://www.amazon.co.jp/Domain-Storytelling-Collaborative-Domain-Driven-Addison-Wesley/dp/0137458916"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8475/1841c04b-3c67-0d38-62ea-de79b4c4f218.png" alt="Domain Storytelling書影" width="200"/></a>

が、残念ながらユーザストーリーから、唐突にクラスが抽出されているようにみえます。ただし、Domain Storytellingは、ダイアグラム中に型定義や振る舞いの定義に必要な情報が書かれるので、なんとかなるイメージです。

具体的にDomain Storytellingからコードに落としていく様は、以下のDDD EUのライブコーディングで見れます。

https://www.youtube.com/watch?v=kWbALI5Ik0A

ということで、やはりユーザストーリーの記述テンプレートでは、実際にモデリングするには、情報、語彙が足らないので、そのギャップを埋める手法はどうやったって別途必要になるんじゃないか、という印象を受けました。
【Swift】カメラと写真のアクセス許可を取得する


# はじめに
Swiftで開発していて、カメラと写真のアクセス許可を取得する実装する機会があったので備忘録として記事にします。

# カメラのアクセス許可
カメラのアクセス許可は、[AVCaptureDevice](https://developer.apple.com/documentation/avfoundation/avcapturedevice)で取得できるようです。

```swift
  // カメラのアクセス許可の状態を取得する
  let status = AVCaptureDevice.authorizationStatus(for: .video)
  switch (c) {
    case .authorized:
      print("camera is authorized")
    case .denied:
      print("camera is denied")
    case .restricted:
      print("camera is restricted")
    case .notDetermined:
      print("camera is notDetermined")
    @unknown default:
      print("camera is unknown")
  }
```


# 写真のアクセス許可
写真のアクセス許可は、[PHPhotoLibrary](https://developer.apple.com/documentation/photokit/phphotolibrary)で取得できるようです。

:::note warn
注意事項
iOS14以降ではauthorizationStatus(for:)を使わないと、「選択した写真」という許可状態（.limited）が取得できないみたいです。
authorizationStatus()を使うと、「選択した写真」という許可状態は.authorizedで返ってきます。
:::

```swift
var status: PHAuthorizationStatus
if #available(iOS 14, *) {
  status = PHPhotoLibrary.authorizationStatus(for: .readWrite)
} else {
  status = PHPhotoLibrary.authorizationStatus()
}
        
switch (status) {
  case .authorized:
    print("photo is authorized")
  case .denied:
    print("photo is denied")
  case .restricted:
    print("photo is restricted")
  case .notDetermined:
    print("photo is notDetermined")
  case .limited:
    print("photo is limited")
  @unknown default:
  print("photo is unknown")
}
```

<!--
```swift
// 設定画面に遷移する
            if let appSettings = URL(string: UIApplication.openSettingsURLString) {
                UIApplication.shared.open(appSettings, options: [:], completionHandler: nil)
            }
```

```swift
// ダイアログを出す
let alert = UIAlertController(
            title: "",
            message: "",
            preferredStyle: .alert
        )
        let defaultAction = UIAlertAction(
            title: "設定する",
            style: .default
        ) {_ in 
            if let appSettings = URL(string: UIApplication.openSettingsURLString) {
                UIApplication.shared.open(appSettings, options: [:], completionHandler: nil)
            }
        }
        let cancelAction = UIAlertAction(
            title: 
                "キャンセル",
            style: .cancel,
            handler: nil
        )
        alert.addAction(cancelAction)
        alert.addAction(defaultAction)
        cameraViewController.present(alert, animated: true)
```
-->
Rails7×Svelte でWebアプリ開発 part2


# はじめに

こちらは [Rails7×Svelte でWebアプリ開発 part1 (環境設定、簡単な表示まで)](https://qiita.com/Satoooon/items/cc6df7679ecd74c2fa11) の続きになります

# Svelte コンポーネントに props を渡す


User model, 詳細画面用の controller, views を作成します

```
$ bin/rails g model User name:string email:string
$ bin/rails db:migrate
$ bin/rails g controller users show
```

適当なデータを作成します試しにこちらを使います

```
irb(main):001> User.find(1)
  TRANSACTION (0.0ms)  begin transaction
  User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
=> 
#<User:0x000000011303a890
 id: 1,
 name: "Taro",
 email: "taro@example.com",
 created_at: Mon, 11 Dec 2023 13:18:54.652145000 UTC +00:00,
 updated_at: Mon, 11 Dec 2023 13:18:54.652145000 UTC +00:00>
```

これらを erb でviewを作成します。
そのHTMLにelementを設置, ユーザーデータを送信します

```app/views/users/show.html.erb
<p style='color: green'><%= notice %></p>

<%= content_tag :div, '', id: 'users-show', data: { name: @user.name, email: @user.email }%>
<%= vite_javascript_tag 'users-show' %>
```

それらをフロント側で使います

```app/frontend/entrypoints/users-show.js
import UsersShow from '../components/UsersShow.svelte'

const target = document.getElementById('users-show')

new UsersShow({
  target: target,
    props: {
      user: {
        name: target.dataset['name'],
        email: target.dataset['email'],
      },
    }
})
```

```app/frontend/components/UsersShow.svelte
<script>
  export let user;
</script>

<p>User: {user.name}</p>
<p>Email: {user.email}</p>
```

javascriptで送ったデータをsvelteコンポーネントに渡してrenderできます。

![スクリーンショット 2023-12-11 22.33.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226348/7d301ab5-9433-0cc4-6a19-c17ac2509b0c.png)

# overmind を使う

前回の動作確認した際、以下の２つターミナルからサーバーを２つ立てる必要がありました

```
$ bin/rails s
$ bin/vite dev
```

foreman, overemind を使ってまとめてサーバーを立てるように改善しましょう

参考) https://way-too-mainstream.vercel.app/articles/using-overmind-for-vite-rails-dev

macであれば brewから tmux, overmind をインストールします

```
$ brew install tmux
$ brew install overmind
```

立ち上げるコマンドを以下のファイルで作成

```Procfile.dev
vite: bin/vite dev
web: bin/rails s
```

こちらのファイルからovermind を起動することでrails, svelte サーバーを立ち上げられるようになりました！！

```
$ overmind start -f Procfile.dev
```

# さいごに

- svelteにデータを送る
- overmindを使って vite, rails サーバーを楽に立ち上げることをできるようにしました
UnityのProjectテンプレ化

## やりたいこと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/985cd94e-eb14-1840-1051-60b2a33ad04a.png)
新しいプロジェクトで自分の設定したテンプレを作りたい。

## 手順
まずはUnityでテンプレ化したプロジェクトを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/8c4a4d43-c290-3a65-cf3b-c9dc259af20f.png)
この３つがテンプレ化する。

## Unityテンプレフォルダを編集する。

テンプレの場所は
\Unity\Hub\Editor\2022.3.15f1\Editor\Data\Resources\PackageManager\ProjectTemplates

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/dff66b91-5a84-2e3b-2e05-f2701d96969e.png)
2Dのテンプレを作成するなら2D用の適当な場所にコピー、解凍する。

解凍したフォルダの
\package\ProjectData~
から
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/9bf4f727-f3e7-264f-8576-e2079f78e062.png)
３つを削除し、テンプレ用に作成した元と入れ替える。
入れ替えたProjectSettings内の
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/4f1b7aba-6eb7-b244-be8e-5e5043eab78c.png)
ProjectVersion.txtを削除する。

## package.jsonの編集
com.unity.template.2d-7.0.3\package\package.json

を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/17562831-f90a-8db9-8c28-3a5bad78bae5.png)
３項目を編集
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/180cda31-7884-aa60-5829-50686fa80be2.png)
tar形式で圧縮する。拡張子はtgzに変更する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/40124437-fcd4-4554-c19c-eaacffb1c3d5.png)
tgzを開くとすぐ下にpackageフォルダがある形に圧縮。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/62ecf2b5-3d79-43d5-a835-193a4a02c8b6.png)
完成したものを
Unity\Hub\Editor\2022.3.15f1\Editor\Data\Resources\PackageManager\ProjectTemplates
に追加。

UnityHubを再起動する。
タスクバーに隠れていることもあるので注意して再起動する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/d2d55ec4-a820-3482-dd85-5e09c2939834.png)
自分のテンプレが追加できた。やったね。
「We Make New Works！」 パーパス・ミッション検討プロジェクトのお話

# はじめに
こんにちは！
HRBrain ESG推進室の柳川（yue）です。
この記事は、HRBrainアドベントカレンダー2023の18日目の記事です。

https://qiita.com/advent-calendar/2023/hrbrain


今年のアドベントカレンダーは去年の順位を超えたい、つまり1位を目指す🔥とのことで、インターンメンバーが一生懸命推進してくれているので、私も少しでも役に立たねば！！という思いで、顔面蒼白になりながらキーボードを叩いています。

盛り上げ隊長の@inanohashiさん、@nakampanyさん、本当にありがとう🫶
<br>
こちらの記事では、今年10月に変更した弊社のミッションとアップデートしたパーパスについて、変更までの道のりと、込めた思いを社内外に向けて伝えられたらと思っています。


# パーパス・ミッション検討の道のり
ちょうど今年の今頃にESG推進室が立ち上がり、まず最初に **環境（Environment）・社会（Social）・ガバナンス（Governance）** の観点での弊社としての重要課題（マテリアリティ）の特定を進めていました。

課題特定にあたって、まずはHRBrainの目指す姿についてメンバーで何度も議論を重ねていたのですが、その中でパーパスやミッションに対する認識の微妙なズレや「これってつまりどういうこと？」という疑問が湧き上がるような場面があり、改めて最上流である **パーパス・ミッションを検討する場を設けた方が良い** という考えに至り、このプロジェクトがスタートしました。
<br>
一般的なパーパス・ビジョン・ミッション・バリューの意味や位置付けを丁寧に整理しながら、弊社に落とし込むとしたらどういった形が最適なのか、パーパス・ミッション・バリューの変更や、ビジョン新設の可能性も含めて、チーム内でかなり熟考しました。

また、現状の課題把握のために有志を募ってワークショップを実施し、パーパス・ミッション・バリューに対するメンバーの思いを知ることによるリアルな課題把握にも努めました。
<br>
以前のパーパス・ミッションの抱えていた課題を例として挙げると、以下のようなものがありました。（あくまで一例となります）
**・ パーパスの抽象度が高く、個人による解釈の違いが起きやすい**
**・ ミッションがパーパスと比較すると、覚えにくい**
**・ 実際の仕事とミッションの紐付きを体感しづらい**


これらの課題を解決し、メンバーに愛されるパーパス・ミッションを設定するために、数ヶ月間にわたってCEO堀・CFO井出と話し合い、経営ボード陣との話し合いも数回に渡り重ねて、晴れてパーパスのアップデートと新ミッションが決定しました。


# パーパス / ミッション に込めた思い
### パーパス
![2023_presentation_pttp_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913834/c07e49cf-deb0-150b-b875-191618f4962f.png)

もともとのパーパス「Power to the People」に、「企業はますます人なり」という言葉を追加し、私たちの成すべきことは「人々」に向けて為すのであり、つまり「人々の集う企業」に向けて為すのであるということを端的に表しました。

AIの進化やDXが進むこの時代において、企業はますます”人の力”を持ってして成長を遂げていくであろうと考えられます。

**「”人”と、人々が集う”企業”の双方がパワーを最大限発揮できる社会をつくりたい。」**

**そのような社会をつくるために、はたらくひとりひとりの生産性やエンゲージメントを向上し、企業の人的資本経営を支えたいという思いが、このパーパスには込められています。**

### ミッション
![2023_presentation_wmnw_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913834/be4dd0ca-41df-bbfa-9376-87d008c00f82.png)

新ミッションは、パーパスを実現するために私たちがやるべきことをシャープに伝えられるように意識し、パーパスと同じようにキャッチーで覚えやすい言葉に落とし込みました。

**はたらく人と企業が最大限パワーを発揮できる社会を実現するために、「はたらく」を軸に独自性溢れる価値を提供し続けることが、私たちのミッションです。**

**「積極的にDXを推し進め、働き方や組織改善の在り方を生み出したい。」**
**「新たな事業や独自の価値を生み出し続けることで、パーパスの実現を成し遂げたい。」**

**既成概念的な「はたらく」に対し、独自の付加価値を与えることで、あらゆるステークホルダーと共に「はたらく」をアップデートしていきたいという強い思いが、このミッションには込められています。**

余談ですが、「We Make New Works」の複数形の"s"は、文法的には間違っているのですが、あえて複数形にすることで「多様な働き方」「マルチプロダクト」といった意味を乗せています。


# プロジェクトを推進してみて
パーパス・ミッションの検討を推進する中で、私自身かなりパーパス・ミッションの解像度が上がりましたし、パーパス・ミッションに対して強い誇りを持つようになりました。

メンバー全員にとって、パーパス・ミッションがそういった存在になれるといいなと思いますし、そうなるためにさらに浸透活動を推進していきたいと思っています。

また、継続的に課題の洗い出しを実施し、議論し続けていけたらと思います。

<br>
こういった大きなプロジェクトを動かすことで、自身の非力さを身に染みて感じた日々でしたが、関係各所の皆さんがいつもポジティブに協力してくださったおかげで、プロジェクトを完遂することができました。

特に、キービジュアル作成に関わっていただいたメンバーに関しては、短い期間の中で今回のプロジェクトの意図を汲み取っていただき、とても素敵な作品に落とし込んでいただいて、本当に感謝しています。

10月の総会でパーパス・ミッションのアップデートを発表した際に、メンバー全員に新たにデザインされたパーパス・ミッションのステッカーを配布しました。

とても可愛くて、私自身かなりお気に入りです💚

![mac_sticker.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913834/3eed82ed-c3b5-fc6d-13a9-2b8a93252d53.jpeg)


# おわりに
弊社のパーパス・ミッションに共感してくださった方、少しでも気になった方、一度気軽にお話ししてみませんか？

ぜひお待ちしています！

https://www.hrbrain.co.jp/recruit