OmniAICreator/Qiita-1.07M huggingface dataset:
[2025年版] ブラウザのサイドパネルも活用しながらブックマーク管理とタブの固定化に依存しない運用を考える

:::note
自分用のメモを兼ねてますが、振り返ってみると結構有用だなと思ったので公開しました
:::

:::note warn
個人的には「2025年1月」と「2025年12月」「2026年1月」を一緒くたに書かれる可能性のあるタイトルのプレフィクス（本稿でも採用している「2025年版」）はどうかなー、っていう気がするんですが「いつ読む人を対象にしているのか」を明示することで古い記事になっている事に気付かれない可能性を排除したいので、このように書いています。
:::

## まずはブラウザの各機能の仕様確認
### 今回使用する環境と設定
- ブラウザ：brave
- ユーザーは普段から大量のページを登録している
  - 後で読む感覚でブックマークしたり、よく使うページをブックマークしたり、Xで常に追いかけたい人をブックマークしたり
  - とはいえ、XなどのSNSは別途専用アプリもある。どちらも併用している
- ブックマークバーは常に出しっぱなし
- よく使うタブは固定（開きっぱなし）
- サイドバーは常に表示
  - [念の為設定方法](brave://settings/?search=%E3%82%B5%E3%82%A4%E3%83%89%E3%83%90%E3%83%BC)
  - 個人的に、タブは左に、サイドバーは右に置く運用をしている

### 本題：比較評価
ここでの評価軸[^個人の感想]は以下の通り
【凡例：○・△・× / 可・-】

[^個人の感想]: 【評価軸】個人の感想です。

| 項目 | ブックマーク | サイドパネル | タブ固定 | 観点のポイント |
| --- | ---------- | ---------- | ------ | ------------ |
| 見やすさ | △ | × | ○ | [OneTab(chrome拡張)](https://chromewebstore.google.com/detail/onetab/chphlpgkkbolifaimnlloiipkdnihall?hl=ja)を使えばタブ固定とブックマークのいいとこどりができる。タブグループ化は固定タブを操作できないが、うまく運用すると移動する固定タブ相当の振る舞いができる | 
| 学習コスト | ○(△) | △ | ○ | 少ないうちはたいして困らないが、ブックマーク管理は試行錯誤（オレオレルール）が必要になりやすい |
| 急いでいる時の利便性 | ○ | ○ | ○ | Web会議に遅れそうなシチュエーションを想定し、普段から運用を気をつけた場合。クリック範囲が広いと言う意味でブックマークバーが優勢。 |
| 異なる端末間連携 | 可 | - | -(可) | [OneTab(chrome拡張)](https://chromewebstore.google.com/detail/onetab/chphlpgkkbolifaimnlloiipkdnihall?hl=ja)を使えばタブでも実質可能。brave syncを使う（タブグループを保存したり、他端末のタブを直接参照する）場合、うまくいかない時があり安定しない（原因不明） |
| 一覧性 | ○ | × | ×(△) | タブグループの使い方次第。サイドパネルは実質ディスプレイ幅が上限 |

## 運用考察
### ブックマーク（ブックマークバー）
昨今、オンライン会議が増えた事で、画面共有を使いたい場合にブックマークバーが邪魔になりやすい。
同様に垂直タブの幅やサイドパネルが常に表示されることで、メインコンテンツの表示幅が狭まるため、少しでも枠を広げるために非表示にしたいことが結構多い。
そのため、画面共有を前提にする場合はなるべく使いたくない

### タブ（固定タブ・タブグループ・新規ウィンドウ）
オンライン会議はスピードが求められる。もたつかないようにしておくとか、動画を使う場合はあらかじめ開いておいてストリーミングをキャッシュしておいたり、ローカルファイルを使う事が求められる事もあるだろう。

私が講義を実施する場合は、基本的に見せる用の共有ウィンドウ（ブラウザ）と手元作業用のウィンドウ（ブラウザ）を分けるようにしている
OneTabの恩恵を強く受ける

### サイドパネル
サイドパネルは登録しているページがfaviconでしか伝わらないので、ブックマーク（相当）に対する秘匿性が高いと言うことである
これは、画面を録画している際にうっかりやらかしにくいという多大なメリットがある。
ただし、ブックマークバーと同様、画面をやや圧縮するため基本的には非表示にしておくべき項目であることは相違ない。

## 結論
:::note
画面共有を前提にブラウザを活用する場合は、いっそのこと画面共有用のブラウザかプロファイルを別途作成しておくのが一番良いでしょう。
:::

現状でブックマークやタブを活用されている方も多いと思うが、サイドパネルという選択肢を知っていただければ、今日私がやりたいことは達成である。
サイドパネルには固定タブのようにずっと開きっぱなしにしておく必要はないけど、ブックマークの中でもよく使うものを入れておくと良さそうだ。

ここでは、サイドパネルの中でもリーディングリストを使うので例示する。
たとえば、ブックマークは追加するのは楽だけど削除したり管理系は結構面倒なので放置しっぱなしではないだろうか？　私はほったらかしである。で、後で中身も確認せずにフォルダごと削除する。これでは勿体無い気がするのだ。
後で読む系のブックマークは、いったんは二度と使わないだろうという前提でブックマークではなくリーディングリストに突っ込んでおいて、読了後（既読後）に後で読みたくなったらブックマークに置いておく、というようにブックマークするページの質や頻度に注目して、なるべく捨てやすい運用を考えていきたい。

他にもQiitaやYoutubeなどは各サービスごとに後で読む機能があるので、これらのサイトを使う場合はあえてブックマークにもリーディングリストにも入れないという選択肢が取れる（うれしい）。
そのため、サイドパネルに入れるページはサービスを横断するものであり、案件に特化したリーディングリストのページであったり、MiroなりFigmaなりスプレッドシートか、あるいはGitHubページが良いだろう。Webメールもよく使われるか。

繰り返しになるが、ポイントは「サイドバーはすぐに捨てられるもの」であったり、「今すぐは捨てないけど、捨てる時期がある程度決まっているもの」にするのが、ベストプラクティスというほどのものではないが良い活用方法だろうと思う。
この辺りは知見があればぜひディスカッションしたいところだ。

### 注釈
重心移動歩行ロボット工作セット + toio core cube

タミヤの「[重心移動歩行ロボット工作セット](https://www.tamiya.com/japan/products/70256/index.html)」ですが、モーターで、ギヤボックスと電池ゆにっとを左右に動かして重心を変えることで歩行する仕組みです。

ということは重心をtoio core cubeで変えてあげれば動くんじゃないかと思って段ボール紙で試作してみました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431649/9f44e92b-15c9-c3f7-68c1-15144c1cfe95.jpeg" width=50% />


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431649/41c96320-8428-d96b-1a4b-825de28f7b6a.jpeg" width=50% />

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431649/9bed7de9-35b9-db57-b0d7-f12c183847f0.jpeg" width=50% />


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431649/2772de86-b83b-8aac-e337-723d65990a1c.jpeg" width=50% />

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431649/a818ccda-a56d-89d3-5ac4-9df21b2a7099.jpeg" width=50% />

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431649/1b66a025-8dba-3b7d-ec87-d4aeeb2ac3b0.jpeg" width=50% />

# 動かしてみた

これはtoio core cubeをリモコン操作で手動で動かしていますが、一応歩行っぽく動きそうです。

<iframe width="640" height="360" src="https://www.youtube.com/embed/1o6iDs8t1ME" title="重心移動歩行ロボット工作セット + toio core cube 段ボール試作" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

https://youtu.be/1o6iDs8t1ME

toio core cubeのIMUで傾きなどを検知しながら動かすと自動運転できるかも。

3Dプリント版も作っては見ましたがまだ試せてません。後日がんばる。

https://www.thingiverse.com/thing:6851587
備忘録: SlackにRSSフィードを登録する手順

:::note warn
2025年の執筆時点の手順によるため、サービスのアップデート状況によっては本手順は実施できない可能性がある
:::

## 最低限やること
1. slackのRSSサービス: `https://(your-workspace).slack.com/marketplace/A0F81R7U7-rss` にアクセスする
1. ワークスペースをインストールしたい場所に切り替える
1. RSSサービスをインストール
1. RSSサービスにRSSフィードを登録する（投稿先のチャンネルは適宜設定のこと）

※ `(your-workspace)` には導入したいワークスペース名を入れる

作業はシンプルな割に探すと見つかりにくい上に説明が長ったらしいサイトばかりなので、これ以上書かない事にする。
解説は他のサイトに譲る。

## サイトのRSSフィードを探してみる
昨今のサイトはRSSを採用していない事があり、探すのが大変になったが、いい感じのサービスがあるので探してみよう。
執筆時点では、以下のサービスを活用させていただいている。

https://berss.com/feed

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122800/307b82a0-f361-e7e2-c406-6f6a60f3d14f.png)

使い方は見たままなので説明不要だろう。

### 本サービスが終了してしまった場合は？
- 代替サービスを探す
- `sitemap.xml` とか `.rss` などを探してみる
- AIを使う

など、さまざまな方法が考えられる。
Javascriptはフレームワークを使おう

こんにちは。　僕はJavascriptとC#を主に得意言語としているんですが、JSで、本格的なアプリを作ろうとすると結構大変です。　なのでjQueryとかReactとか使った方が効率がいいと思います。

以上です。
短くなってしまいました
BSONについて

BSONはBinary JSONの略で、その名の通りJSONをバイナリで表現したものです。
xSONのなかではJSONに次ぐ知名度を持っており、MongoDBで使われていることで有名です。

JSONがテキスト形式なのに対してBSONバイナリ形式のため、JSONと比較してコンパクトで高速な一方で人間にとっての可読性は低いです。

基本的にはJSONをバイナリ形式にしただけですが、以下のような違いがあります。

# データ型
BSONはJSONには存在しない以下のデータ型があります。

- 日付
- 正規表現

また数値型についてもBSONは少々異なります。バイナリで表現されるために数値型が厳格になっています

- 32bit整数
- 64bit整数
- IEEE 754形式の64bit 浮動小数点数
- decimal128形式の10進数浮動小数点数

# データサイズを表すヘッダー

JSONで　`{"hello": "world"}` というデータはBSONでは以下のようになります。
データの先頭に全体のサイズを表すヘッダーがあることが分かります。
また、文字列 `world` の先頭にもフィールドサイズを表すヘッダーがあることが分かります。(文字列の終端であるnullを含むためにサイズは6です)

```
\x16\x00\x00\x00          // total document size
\x02                      // 0x02 = type String
hello\x00                 // field name
\x06\x00\x00\x00world\x00 // field value (size of value, value, null terminator)
\x00                      // 0x00 = type EOO ('end of object')
```

出展: 

https://en.wikipedia.org/wiki/BSON

この様にデータサイズを表す4バイトのヘッダーがあるため、効率良くフィールドをスキップすることができます。
また、一般的にはJSONよりもBSONの方がサイズが小さくなる傾向にはありますが、ヘッダーの影響で小さいオブジェクトはBSONにするとかえってサイズが大きくなってしまうこともあります。
AWSサービスの分類：リージョンサービス、AZサービス、グローバルサービスの違いと具体例

AWSのサービスは、その提供範囲に応じて **リージョンサービス**、**アベイラビリティゾーン (AZ) サービス**、および **グローバルサービス** の3つに分類されます。それぞれの特性や用途を詳しく解説します。

---

### 1. **リージョンサービス**

#### **概要**
- **リージョンごと**に提供されるサービス。
- 各リージョンで独立して動作し、他のリージョンのサービスと分離されています。
- ユーザーは利用するリージョンを選択して、その範囲内でリソースを構築・管理します。

#### **サービス**
#### **コンピューティング**
- Amazon EC2 (Elastic Compute Cloud)
- Amazon Lightsail
- AWS Lambda (リージョンごとに機能分離)
- AWS Batch

#### **ストレージ**
- Amazon S3 (Simple Storage Service)
- Amazon EFS (Elastic File System)
- Amazon Glacier

#### **データベース**
- Amazon RDS (Relational Database Service)
- Amazon DynamoDB
- Amazon Aurora
- Amazon Redshift

#### **ネットワーク**
- Elastic Load Balancing (ELB)
- Amazon VPC (Virtual Private Cloud)

#### **機械学習**
- Amazon SageMaker
- Amazon Translate
- Amazon Rekognition

#### **アナリティクス**
- Amazon EMR (Elastic MapReduce)
- Amazon Athena
- Amazon Kinesis

#### **セキュリティ**
- AWS Key Management Service (KMS)

#### **用途**
- データのローカライゼーション（国や地域の規制に従う）。
- レイテンシ削減のために、ユーザーに近いリージョンを選択。

---

### 2. **アベイラビリティゾーン (AZ) サービス**

#### **概要**
- リージョン内の複数の **アベイラビリティゾーン (AZ)** を利用して提供されるサービス。
- 各AZは地理的に独立したデータセンター群で構成され、相互に高速ネットワークで接続されています。
- 高可用性や耐障害性を目的としたサービス。

#### **サービス**
#### **コンピューティング**
- Amazon EC2 インスタンス (特定のAZにデプロイ)
- Amazon ECS (Elastic Container Service)

#### **ストレージ**
- Amazon EBS (Elastic Block Store)
  - EBSボリュームは特定のAZに存在。
- Amazon FSx

#### **データベース**
- Amazon RDS (マルチAZ構成)
- Amazon ElastiCache
- Amazon Neptune


#### **用途**
- 高可用性のシステム設計（複数AZにまたがる構成）。
- データレプリケーションやバックアップで障害対策を実現。

---

### 3. **グローバルサービス**

#### **概要**
- **AWS全体で一元的に提供されるサービス**。
- リージョンをまたいで利用可能で、データや設定がグローバルに適用されます。

#### **サービス**
#### **ネットワーク**
- Amazon Route 53 (DNSサービス)
- Amazon CloudFront (コンテンツ配信)
- AWS Global Accelerator

#### **セキュリティ**
- AWS IAM (Identity and Access Management)
- AWS WAF (Web Application Firewall)
- AWS Shield (DDoS対策)

#### **モニタリング・管理**
- AWS CloudTrail
- AWS Config
- Amazon CloudWatch (一部グローバル機能あり)

#### **アナリティクス**
- AWS Glue (クロスリージョンサポート可能)


#### **用途**
- リージョン間の統一した管理。
- 世界中のユーザー向けにサービスを提供。

---

### **サービスごとの提供範囲の違い**

| 項目                 | リージョンサービス          | AZサービス              | グローバルサービス          |
|----------------------|---------------------------|------------------------|---------------------------|
| **適用範囲**         | 特定のリージョン内だけ    | 特定のAZ内で動作       | リージョン全体をまたぐ     |
| **高可用性の設計**   | 複数リージョンを組み合わせる | 複数AZを利用          | サービス自体がグローバル   |
| **管理対象**         | リージョン単位            | AZ単位                | AWS全体で統一管理         |

---

### **活用例と選択基準**

1. **リージョンサービス**
   - **ローカル規制**が存在する場合。
   - **低レイテンシ**を重視し、特定地域のユーザーをターゲットにする場合。
   - 例: オンプレミスと近い地域にデプロイ。

2. **AZサービス**
   - **高可用性**を実現するため、リソースを複数AZに分散。
   - 例: Amazon RDSでマルチAZを設定してデータベースの冗長化。

3. **グローバルサービス**
   - **世界中に一貫性のあるエクスペリエンス**を提供する場合。
   - 例: CloudFrontを使って、世界中のユーザーに高速なウェブコンテンツ配信。

---

### **ベストプラクティス**

- リージョンサービスとAZサービスを組み合わせて、耐障害性を向上。
  - 例: EC2を複数AZに配置し、ロードバランサーを使ってトラフィックを分散。
- グローバルサービスを活用して、複数リージョンのリソースを統合管理。
  - 例: IAMを使ってアクセス制御を一元管理。
iOSアプリ開発で気に入ったカラーを手早くコードに変換する方法

## 手順
### 1. Flat UI でカラーを探す
サイトURLはこれ。
https://flatuicolors.com/
### 2. 使いたいカラーのHEXコードをコピーする
カラーの上にカーソルを合わせると「COPY」の文字が出てくるので、クリックすると、HEXコードを入手できる。
### 3. HEXコードを任意のプログラムコードに変換する
サイトURLはこれ。
https://www.uicolor.io/
HEXコードを入力フィールドにペーストすると、Swiftやobjective-Cなどのコードに変換される。なお、RこのサイトではGBでも同様のことが可能。
【データサイエンス】データサイエンスのリテラシー認定を終えての振り返り

データイサイエンス リテラシー試験を受けてきました。
目的として、試験合格ではなく
- データサイエンス
- データエンジニアリング
- ビジネス力
を理解して、足りていない部分を把握する為にベンチマークとして受けてきました。
それぞれ下記の能力エリアになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/381629/7b02e1e1-99be-eb99-bc52-6a9169a5e112.png)

スコア値を確認したところ、
-　データサイエンス　89.1%
-　データエンジニアリング 89.2%
-　ビジネス 84.6%
でスコア的には、基準を満たしていると考えられるでしょう。

　ただ、目的は試験を通じて「足りていない部分」と「職務に求められる最低限の知識エリア」を習得することですので、あらためてできなかった部分の内容を整理してきたいと思います。

## データサイエンス領域


### トランスダクティブ学習

**概要**
トランスダクティブ学習は、学習時に訓練データだけでなく、ラベルのないテストデータの分布も考慮に入れる手法です。 

**関連項目**
半教師あり学習、転移学習、ブースティング

### リフト値

**概要**
リフト値は、ある商品Aの購入が商品Bの購入をどれだけ促進しているかを示す指標で、マーケットバスケット分析で使用されます。 

**関連項目**
支持度、確信度、アソシエーションルール


### 決定木（深さ、外れ値の影響など）

**概要**
決定木は、データを条件に基づいて分割し、分類や回帰を行う手法です。木の深さはモデルの複雑さを示し、深すぎると過学習のリスクがあります。外れ値は分割基準に影響を与え、モデルの精度を低下させる可能性があります。 

関連項目: ランダムフォレスト、ブースティング、剪定

### アソシエーション分析

概要: アソシエーション分析は、データ中の項目間の関連性を見つける手法で、マーケットバスケット分析などで使用されます。 

**関連項目** 
Aprioriアルゴリズム、FP-Growthアルゴリズム、アソシエーションルール

## エンジニアリング領域

### ネットワーク分析（ノードとエッジ）

**概要**
ネットワーク分析は、ノード（点）とエッジ（線）で構成されるネットワーク構造を解析し、要素間の関係性や構造を明らかにする手法です。

**関連項目**
グラフ理論、ソーシャルネットワーク分析、クラスタリング

### 大域説明、局所説明
https://qiita.com/kazuya_minakuchi/items/95fcf9e55d2702b6e7a6

**概要** 
モデルの予測結果に対して、その理由や要因を個別に説明する手法です。

**関連項目**
SHAP値、LIME、解釈可能な機械学習

## ビジネス領域

### カバレッジ（条件網羅）
**概要**
カバレッジは、特定の条件やルールがデータ全体の中でどれだけの割合を占めているかを示す指標です。

**関連項目**
支持度、確信度、リフト値

### Society5.0
人類の進化を「社会の発展段階」として以下のように分類しています。

- 狩猟社会（Society 1.0）
人々は狩猟や採集を行い、自然の中で生活する社会。

- 農耕社会（Society 2.0）
農業が中心となり、定住生活を営む社会。

- 工業社会（Society 3.0）
工業化が進み、大量生産が可能になった社会。

- 情報社会（Society 4.0）
IT技術の発展により情報が共有・活用される社会。

- 超スマート社会（Society 5.0）
サイバー空間（仮想空間）とフィジカル空間（現実空間）を高度に融合させることで、新たな価値を創造する社会。


### まとめ

半教師あり学習: ラベル付きデータとラベルなしデータを組み合わせて学習する手法。
転移学習: 既存のモデルや知識を新たなタスクに適用する学習手法。
ブースティング: 複数の弱い学習器を組み合わせて強い学習器を作る手法。
支持度・確信度: アソシエーションルールの評価指標で、ルールの有用性を測る。
ランダムフォレスト: 多数の決定木を組み合わせて予測精度を高める手法。
剪定: 決定木の複雑さを制御し、過学習を防ぐための手法。
グラフ理論: ネットワーク構造を数学的に解析する理論。
ソーシャルネットワーク分析: 社会的なネットワーク構造を解析する手法。
クラスタリング: データを類似性に基づいてグループ化する手法。
SHAP値・LIME: モデルの予測を個別に説明するための手法。
解釈可能な機械学習: モデルの予測結果を人間が理解できる形で説明する研究分野
【Java】文字列比較

久しぶり（新入社員研修ぶり）にJavaを触りました。

その際、String型の同値を"=="を使用し比較したところ、文法はあっているはず...にも拘らず、期待結果通りになりませんでした。

その際に調べた結論について、自分用の備忘録としてまとめてみます。

今回、使用したif文は下記のように記載していました。

```
String st = "10";
String db_data = "10";

if (st == db_data) {
    System.out.println("値は同じ")
} else {
    System.out.println("値は別");
}

// 出力結果
// 値は別
```

本当ならば "値は同じ" であることを出力させたいのですが、上記で出力されたのは、"値は別" と判定されました。

### 原因
原因はString型が参照型のデータ型であり、参照型の比較には「equalsメソッド」を使用する必要がある。という点でした。

### 参照型とは？
参照型はJavaのデータ型の一つで、Stringや配列、Listなどが当てはまります。
値そのものを保持するのではなく、値が置いてある場所を保持します。

細かいところは調べればたくさん出てくるので、今回は省きます。

### 文字列をどう比較するか
文字列の値同士を比較する場合は、"==" で比較するのではなく、eqialsメソッドを用いて比較します。

```
String st = "10";
String db_data = "10";

if (st.equals(db_data)) {
    System.out.println("値は同じ")
} else {
    System.out.println("値は別");
}

// 出力結果
// 値は同じ
```
この場合は "==" とは違い、"値は同じ" で出力されます。

### まとめ
今回Javaを久しぶりに触れたため、忘れていたことも多く、初歩的なところで躓いてしまいました。
文字列比較をする際は「eqialsメソッド」を使用しましょう（自戒）


【参考】
・[【Java】初心者が文字列比較で失敗する等価比較。間違いに気づいていない可能性も！？](https://qiita.com/awesam86/items/5d3461ecd4af30d88d71)
・[Javaのプリミティブ型と参照型について](https://qiita.com/hiroki-harada/items/cb6fa4affffab2019cde)
・[==演算子とequalsメソッドの違い](https://qiita.com/dsk_dog/items/1251e86d9d22507d309a)
day5 『内側から見た富士通』「成果主義」の崩壊

## はじめに
　この書籍は、日本の企業が「成果主義」を導入してどうなったか、を観測し分析したものになります。
　現在では当時より更に多くの企業が成果主義に移行していますが、成果主義ではなかった時代に対してどのような変化が合ったのか、どんなメリット／デメリットが言われていたかを知る良いケースかと思います。

![内側から見た富士通「成果主義」の崩壊  目次2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533414/a428656c-eda8-9336-1e74-9dd641f0f7e3.png)


 
 **誤解ないように!!** 
 **本書は2000年初頭(過去)の「富士通」を扱ったものです。現在の「富士通」の実状とは異なります。本書の主題は富士通ではなく成果主義の事例という点となります。**

## ポイント
### 成果主義と目標管理制度
- 1993年、バブル崩壊で単年度赤字を契機に**シリコンバレーの成果主義を真似て**始めた。
- 制度概要
    - 部門ごとの目標作成と個人へのブレークダウン。
    - 評価結果の賞与・給与への反映。１０倍もらえる人もでる。
    - 裁量労働性の導入。極論すれば毎日会社に出なくても良い。月の最低労働時間も定められていない。
    - 管理職への導入、５年後に全社員に導入。
- スーパーパフォーマーを生み出す仕組み。

### 優秀な人材から離職
- 成果主義で「スーパーパフォーマー」を目指すどころか、**優秀な人材ほど会社を去って**いった。
- 他者からエースを引き抜くという戦略は最初はうまく言ったが、徐々に、他者をリストラされた人になっていった。

### 人事制度の歪み（相対評価への当てはめ）
- 人事が事前に評価の分布被率を作っていて、そこに合わせていくことが「評価委員会」という名目で行われていた。よって、上司と合意した評価結果は「評価委員会」にて一方的に変更される。そして下がった理由は通知されなかった。
- 評価委員会では、**新任の部長の配下の担当者が犠牲になる**ことが多かった。

### チームから個人へ
- 制度導入後、チームで１つの成果を上げていた社員が、**自分だけの目標に固執する**ようになった。
- 目標シートに書けない隙間業務、トラブル対応や仕様変更対応などは、**誰も自分からやろうとしなくなった**。
- 「富士通製品は質が良くない」と聞かれるようになった。品質チェック部門は数値的な目標がたてづらい。何も起こらないのが一番良い。しかし、**無理して目標たてることになったから**、「どんな小さな障害でも探し出してやる」という目的意識が失われ、「単に目標を達成する」という**ドライなものに変わった**。

### 人件費の増加
- 裁量労働も人事から「節度ある運用」という通達が出て、実態として「定時出社、定時退社を守り、残業をするな」という指示だった。
- 経営側では、裁量労働制は、人件費カットが目的だった。しかし、人件費が２割増えてしまった。
- 社員は２極化し、最初から高い評価が貰えそうな少数の社員は裁量労働を選択。高い評価がもらえないと自覚している多くの社員は裁量労働をやめてダラダラ残業を増やしだした。

### 人事の方針変更（絶対評価）と評価のインフレーション、そしてスーパーパフォーマーが辞職
- 問題を自覚した人事は評価制度を「相対評価（＝人事の分布に当てはめる）」から、「絶対評価」に変更した。
- すると、**評価のインフレーションが起きた**。Ａ評価が増加したが、ボーナス平均支給額は本部毎に一律という規定があったため、Ａ評価の価値がＢ評価の価値しか持たなくなっていった。
- スーパーパフォーマーが実質的に賃金・賞与が減って、辞めていく。

### 
- 降格制度が機能していたら・・・
- 公表されない管理職の「目標」と「成果」
    - 管理職が失敗の責任を部下に押し付けたり、逆に自分のものにすることを防げない。不信感が生まれる。
    - 管理職は最初から絶対評価。評価のインフレーションだった。

### 本部長・事業部長・営業は目標達成のために自社製品を売らなくなり、負のスパイラルへ


### 事業部

### 
- 皆がＡ評価をもらえる制度になってしまったので、目標水準も低下していった。新しいチャレンジはせず、失敗しないことを優先するようになった。
- 富士通はその数年で、愛社精神、チームワーク、優秀な人材と技術力、を失った。


## 書誌情報
- 書籍名：内側から見た富士通「成果主義」の崩壊
- 著者：城　繁幸
- 出版社：光文社
- ISBN：4-334-93339-4

## 参考
-
LeetCodeを1日1題解いてみる (day31)

31日目に取り組んだ問題はこちら！

# 141. Linked List Cycle

https://leetcode.com/problems/linked-list-cycle/description/

## 問題文
Given head, the head of a linked list, determine if the linked list has a cycle in it.

There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the next pointer. Internally, pos is used to denote the index of the node that tail's next pointer is connected to. Note that pos is not passed as a parameter.

Return true if there is a cycle in the linked list. Otherwise, return false.

## 僕の回答 (失敗作)
```py
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def hasCycle(self, head: Optional[ListNode]) -> bool:
        curr = head
        print(curr)
        while curr:
            print(curr.val)
            if not curr.val:
                return True
            curr.val = None
            curr = curr.next
        return False
```

## 効率の良い回答例

```py
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def hasCycle(self, head: Optional[ListNode]) -> bool:
        slow = head
        fast = head
        
        if not head:
            return False
            
        while fast and fast.next:
            slow = slow.next
            fast = fast.next.next

            if slow == fast:
                return True

        return False 
```

## コメント
訪れたフラグとして訪れたところの値を`None`に設定していくようにしたが、うまくいかなかった。2つの移動速度の違うポインターを使うという発想がなかったから知れて勉強になった。

## 次の問題はこちら!
https://qiita.com/h_y_s_d/items/d813a268cbaee1841189
day3 『合議の知を求めて』グループの意思決定

## はじめに
　職場で、すぐに『**ブレストしようぜ！**』と騒ぐ人がいました。その人との時間はいつも無駄だなぁ、と感じていました。そもそもブレインストーミングのルールに従っていないし、当人がアイディアを出すことはないし・・・。そう、彼はピーターの高原に居るフリーラーダーだったのです。

![合議の知を求めて 目次2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533414/b8c51aad-2b2f-f404-788c-9dcfb4e60bb0.png)


## ポイント
### 古典的理論「３人よれば文殊の知恵」
- グループは個人に比べて平均的に優れた知的達成を示すという事実。論理課題を正しく解ける程度は、平均的な個人よりもグループの方が高い。
　例えば、１／２の確率で解ける問題を・・・、
　１人で独立に解くと、正解確率は１／２。
　２人で独立に解くと、正解確率は３／４　＝（１－（１－1/2）✕（１－1/2））
　３人で独立に解くと、正解確率は７／８　＝（１－（１－1/2）✕（１－1/2）✕（１－1/2））
- 各人が独立して解く場合を「タコ壺」と呼ぶことにする。
- 協調して相乗効果（創発）が出れば、さらに良くなる可能性がある。・・・期待

### 「３人よれば文殊の知恵」は、その中の最良のメンバの知恵を超えない
- 実験結果では、グループの正解率は、タコ壺の正解確率さえ超えられなかった。
- つまり、単純な論理課題の遂行において、グループレベルの**創発**に至ることは極めて**まれ**。
- グループの遂行が平均的メンバーの遂行を上回るとしても、その中の最良のメンバの個人遂行には、多くの場合には届かない。
- 一人で正解を出せる確率が１／２を下回る場合、誤った多数派が形成された場合、質の悪い判断になるリスクが高い。

### 合議の無駄：タダ乗り者、社会的な発話抑制
- 合議の無駄は、**タダ乗り者**(free ridier)の発生や、相互調整によるロスで生じる。
- **バンドワゴン効果**：世論が流動的な中で、たまたま特定な立場が優勢になったとき、この立場が賛同者をさらに吸収し勢力を強めていく現象。
　「**不利になるから／面倒だから、反対を表明せず、沈黙しよう**・・・」
- 合議において、しばしば声の大きさや存在感の程度が、事を決めてしまう。

### 投票のパラドックス
- グループだから民主的だと言いやすい。しかし、実は。
- **コンドルセのパラドックス**：３つ以上の選択肢に対する多数決投票は、投票の経路（多段階の投票による選択）によって結果が変わる。変えることができる。

### ブレイン・ストーミング
- オズボーンによれば、ブレインストーミングにより一人当たり２倍のアイディアを生み出せる。
- テイラーの研究によれば、ブレインストーミング集団の遂行は、一人ひとりの結果を集約したものに比べ、質的・量的に下回る。

## 書誌情報
- 書籍名：合議の知を求めて　グループの意思決定
- 著者：亀田　達也
- 出版社：共立出版
- ISBN：978-4-320-02853-1

## 参考
-
【体験談/SE】転職前と転職後の心構え話

# はじめに

私は20代後半に某IT企業から某IT企業に転職をしました。前職が外資系だったこともあって額面だけで見るとそこまで昇給したわけではないですが、改めて振り返っても転職をして良かったと思っています。

そんな転職経験勢として、現在20代後半の方に向けて「転職前にやっておくべきこと/転職後にやるべきこと」を一つずつ書いてみました。

# 現職を頑張ろう

まずは転職前の心構え。

私は転職する際に、給与は前社以上を希望すると点は強調していました。外資系の給与テーブルなので他社から見るとかなり高めだったと思いますが、前社に対してリスペクトはあったので「給与が下がっているのに転職するのは前の会社にも顔向けできない」とも思っていました。

実際、給与交渉する際に「前の会社での待遇」というのがスタートラインになります。現職の待遇に不満があるから転職を検討するのに、いい条件で転職をしようとするなら現職でいい待遇をもらう必要があるんですよね。実際、入社した際は前年度の源泉徴収票の提出を求められました。

https://x.com/yryrse/status/1605880798887915520

なので、転職を考えている人ほど必死になって仕事に向き合った方がいいと思っています。そして、自分がやっている仕事を客観的に分析し、区切りが着いたタイミングで「何が目的で」「どこに課題があり」「それをどう工夫して解決をした」をまとめておくことをオススメします。これは転職をする際に使えるエピソードになりますし、転職をしなくてもその視点を持っていると年度末の自分のアピールへも使えます。

https://x.com/yryrse/status/1374310087154561026

# 転職直後はかなり頑張ろう

続いて転職後の心構え。

ITエンジニアの転職ということは、経験者採用です。古株に混じった新入りとして、こいつはどの程度できるの？と注意深く見られてしまいます。

https://x.com/yryrse/status/1600462926384869376

私はこれを転職のデメリットと考えていて、これが嫌で今いる職場で頑張るという選択をする方もまた正しいと思っています。

こういう集団に放り込まれた時、最初の印象がかなり大事なんですよね。中学でも高校でも一発目のテストでクラストップを取ると、周りから「あいつは賢いやつだ」と見られ、その視線を意識して結局卒業するまでトップクラスにいる...というのと同じロジック。最初に「この人外から来たけど仕事できるな」と思われておかないと、なかなか挽回できません。

つまり規模は違いすぎますが、気分は移籍して一年目でMVPを取った大谷翔平選手です。野球の移籍もIT業界での転職も、やろうと思えば最初から結果は出せると思います。頑張りましょう。

https://x.com/yryrse/status/1685430642702532609

# 終わりに

上にはこうやればもっと良かったな〜ということを書いてみました。私はどちらもできたとはお世辞にも言えないですが、一応そういうことは考えながら動いてきました。（ツイートは転職前のものを抜粋）

転職をするしないに関わらず、本記事が悩める若者の参考の一助になれば幸いです。

https://x.com/yryrse/status/1741466705455731110

よきエンジニアライフを。
相談や調整のミーティングの際に意識していること／してほしいこと

:::note info
この記事は、[ラクス Advent Calendar 2024](https://qiita.com/advent-calendar/2024/rakus)の1日目の記事です。
初めて1日目に記事を書くけど頑張るぞ！（なお技術記事ではない）
:::

エンジニア7年目のchoreiです。

7年目ともなると、相談や調整でミーティングを行うことが増えました。
また、今までは周りにベテランが多かったのですが、最近は経験の浅いメンバーと接することが増えました。

結果、仕事の進め方について考えることが増えたので、自分の考えをまとめてみようと思います。文書化することでわが身を振り返ると同時に、少しでも後輩たちの参考になればと思います（この思いよ届け！）

## ミーティングの際に意識していること

### 1. 事前に根回しする

ミーティングの場で急に説明してもうまくいかないことが多いです。
大体、1人1つくらいは引っかかるポイントがあるので、全員にいきなり説明するといろんな意見が出て議論が発散してしまい、まとまらなくなってしまいます。
事前に根回しをしておくことで、ミーティングでの議論を減らせますし、他の人からの指摘に対する説明時も味方になってもらえます。

全員に根回しするのはコストが高いので、身の回りの先輩や上長、ミーティング参加者の中で影響力が高い人などに絞って相談しておけるとよいです。
根回しと聞くと何か悪いことをしている気がしてきますが、大丈夫です。みんなやってます。（根回しの言い方が悪ければ事前相談とか言い換えてみる）

### 2. 本題と関係が薄いことを資料に書かない

例えば、提案内容を説明するときに、なぜその方法を選択したのかやメリデメを比較して根拠を示すことがあると思います。
その際に、あまりに本題と遠い話、超絶イレギュラーケースであったり、すごく細かい部分の説明が多いと、「そもそも何の話をしていたっけ？」「で、結局何が言いたいの？」となりがちです。本当に必要な情報を書かないのはダメですが、資料に記載するのは重要な情報のみに絞りましょう。

どうしても書く場合は、別の資料したり資料の最後の方に付録として付けるなどして本題と切り離しておくとよいです。

### 3. 資料に書いていること読み上げない

資料に書いていることは資料を読めばわかります。情報の共有目的であればミーティングする必要がなく、「この資料を見ておいてください」でよくなってしまいます。

資料を読むだけではわからない、伝わらない内容を説明するのがミーティングの目的の1つなので、記載内容を読み上げる際は大事な部分だけ抜粋し、口頭補足が必要な部分を重要視しましょう。

### 4. 資料とは別に台本を作る

前2つで「書きすぎるな」「読み上げるな」と書きましたがこの2つには関連があります。
資料を読もうとしてしまうから資料に細かく書いてしまいますし、書かないとミーティング中に話すべき内容をド忘れしてしまい目的が果たせなくなってしまいます。

なので、資料とは別に台本を作っておくべきです。皆さん卒論などで何かしらプレゼンをしたことがあると思いますが、その時は必ず資料とは別に台本を用意して話す順序を考えているはずです。
この台本は文章レベルの必要はなく、単語の箇条書きレベルでも十分です。

### 5. 自分の主張を明確にする

相談時に複数の案を出すことがあると思いますが、自分がいいと思っている方は明確にしてください。あなたの意見がわからないと聞く側は聞く負荷が高く、適切にアドバイスすることも難しくなります。

### 6. 副案・捨て案を用意する

提案内容が1つの場合、正直そのまま通ることはあまりないです。どういった提案内容にも何かしら気になる部分は出てくるので大体その点を指摘されます。

自分では気づけない問題点を指摘したもらうのこともミーティングの目的の1つなのでそのこと自体は問題ないのですが、自分の意見を通したい場合は「（自分が）この案なら許容できるな」と思える副案や「（みんなが）この案はないな」と思う捨て案を用意しておきましょう。

### 7. 自信なさそうにしない

どれだけ素晴らしい内容であっても、自信なさそうに話をされると「本当にちゃんと考えて話しているのかな？」と不安になります。事前にしっかりと準備しているのであれば自信満々に話しましょう。

また、相談の場で「こっちの方がいいんじゃない？」と別案を提案されることがあります。考慮済みなら比較して今の案にしている理由を自信満々に主張すればよいですし、考慮外だったのであれば素直に受け止めて持ち得るなどしましょう。

## まとめ

偉そうにつらつらと書きましたが、自分でもできていないなぁと思うことは多いです。
自己流でやっている部分もあり、必ずしも私のやり方が正しいとは限りませんが、誰かの参考になれば幸いです。
day2 『ピーターの法則』創造的無能のすすめ

## はじめに
　1969年出版、1970年に日本語訳出版の本書は、官僚的組織論の本質をついている。
　これを避ける手段として、若いうちに上長が必要とする研修を受けさせて視野を広げ、昇進の基準として既に上長レベルの活躍ができているか、という仕組みを導入していた組織も見てきた。
　しかし現実には、多数の組織でピーターの高原に辿り着いた人々が溢れている。

 ![ピーターの法則 目次2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533414/61c70982-2c8f-7482-fb87-e135a01709a8.png)


## ポイント
### ピーターの法則
**『階層社会にあっては、その構成員は（各自の器量に応じて）それぞれ無能のレベルに達する傾向がある』**
- 昇進すべき階級が十分にある階層社会の構成員（たとえば企業の従業員、公務員、軍人、共産主義体制）は、責任を果たしていく能力のある地位から、それができなくなる地位へと昇進させられる。
- 一回か二回昇進して、新しい地位でも引き続き有能レベルを維持する人は多い。しかし、新しい地位にあって有能であるということは、昇進させられる可能性が残っていることだ。その結果、最後の昇進はどうしても有能レベルから無能レベルへの昇進とならざるを得ない。
- 時がたつに従って、階層社会のすべてのポストは、その責任を全うしえない従業員によって占められる傾向がある
- 仕事は、まだ無能のレベルに達していない従業員によって遂行される。

### 昇進
- すでに無能に達している上長者が、有能の基準を決め、そして彼らのその基準で選ばれたものが昇進していく。

### 問い
- その人物は現在も役立つことをしているか？
「・・・、わからない」なら、すでに無能レベルに達している。

### ピーターの高原、終着駅症候群
- **無能だ・・・だが、怠けものではない**。活動的に見えるし、自分でも働いていると思い込んでいる。しかし、有益なことはほとんと達成されない。

### 無能の数理
- 無能プラス無能は、依然として無能である。 

### 創造的無能
- 最終的昇進を避け、職業人として、また個人として健康と幸福を守る道は、創造的無能になることである。
- 自分はすでに無能レベルに達したという印象を操作すること。

## 書誌情報
- 書籍名：ピーターの法則　創造的無能のすすめ
- 著者：L.J.ピーター，R.ハル
- 出版社：ダイヤモンド社
- ISBN：4-478-76000-4

## 参考
- Youtubeで「ピーターの法則」で調べると、たくさん出てきます。１０分程度で解説してくれるので、まずはそれを２～３、見てみることをおすすめします。

## その後のメモ
- ピーターの法則は間違いなく存在し、駄目な組織を構築する。しかし、一方で別の代表的なパターンも存在する。明らかな無能がトップに君臨するケースだ。

  - ステップ１：絶対的な権力者（日枝氏、プーチン氏、ゴーン氏）が誕生する。
  - ステップ２：権力を強固にするために、周囲に従順な無能者（自力で正しく前進する能力に欠けるもの）を取り立て代理リーダにする。
  - ステップ３：非権力層は闘争（改善改革）を放棄する。
  - ステップ４：絶対的な権力者が関与できないところ（子会社、関心が及ばない所、追放後の組織）で、無能な代理リーダが無能な組織を維持する。

  このケースは何の法則と呼ばれているのだろう？？？
現代のJavaScriptチュートリアル少しやってみた

# サマリ
タイトルの通り、現代のJavaScriptチュートリアル少しだけやってみました。

:::note warn
警告
月一回投稿するという個人的な縛りからかなり薄い記事になっていることにご注意ください…
:::

# 背景
趣味でHTML,CSS,Javascriptを勉強しているのですが、
なかなか継続しない＋体系的な知識が身についていないので
新しいことにチャレンジしてみました。

# 前提
必須：インターネット環境
推奨：特になし

# 環境
- ブラウザ使用のみ、条件特になし

# 手順
### そもそも

以下が公式ページです。

https://ja.javascript.info/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/7b287a68-a00c-2c4f-619b-6cc8124b4639.png)


このような感じで、JavaScriptに関して、基本的なことから学べるサイトになっています。

画面の通り大きく3章に分かれていて、
基礎的なルール、機能などの1章、ブラウザ環境（マウスイベント等）の2章、その他の3章という感じです（ざっくりしすぎ）

### 少しやってみた
本当に少しだけやってみました。
丁寧に情報が記載されており、
また、ほとんどのページの最後にサマリとして情報がまとまっていますし、
以下のように問題もあるため、単に見てできた気にならずに
理解度を試すことが出来るため、非常にいいサイトだと思いました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/eb6024d3-cb15-c7d4-6081-230f9837b2f5.png)


# 結果
タイトルの通り、本当に少しだけ現代のJavaScriptチュートリアルのサイトに触れてみることが出来ました。

# まとめ
この年（アラサー）になると学生時代に比べて学習が継続してできない、等
悩ましいことが多いのですが（それはお前のやる気がないものあるだろ）
やはり付け焼刃的な学習も否定はしないものの、
体系的に知識を身につけることが大切だと思いますので、
計画的にやっていこうと思います。。
（薄い記事すみません）
VueのdefineModelをオブジェクトで使う場合の注意点

# 概要
Vue3.4からめでたく安定版となった[defineModel()](https://ja.vuejs.org/api/sfc-script-setup#definemodel)、こんな形で簡単に双方向バインディングができるようになりました
```ts
// 親から v-model 経由で使用される、"modelValue" props を宣言する
const model = defineModel<String>()

// 変更された時に "update:modelValue" イベントを発行
model.value = 'hello'
```

これまで双方向バインディングをするための`v-model`Propを定義するためには`Props`と`Emits`両方を定義して更新タイミングで`emit`を呼ぶというめんどくさい構造だったのでとても嬉しい変更です

そんな便利`defineModel`ですが実はオブジェクトで使用してしまうとプロパティ変更で検知してくれないのでちょっと工夫が必要だったりします（めんどい）
```ts
const model = defineModel<Model>()

model.name = "nanika"  // 親にupdateが走らない
```

## 解決法
こうすればおｋです
```ts
const model = defineModel<Model>()

watch(
    model,
    (newVal) => {
        model.value = { ...newVal }
    },
    { deep: true }
)

model.name = "nanika"  // 親に伝わる！
```

仕組みとしてはdeep watchでプロパティ変更検知したら再度`model`の方に代入することで変更を伝えています


## 参考文献
- https://github.com/orgs/vuejs/discussions/10538
  - これに関した議論があったようです
windowsでのプログラミング環境の作成

### 背景
sphero eduを使った動作確認はできましたが、pythonでもプログラミングできるようにしたくなりました。
ここではwindows上で動かせるspheroV2を使う環境を作りました。

https://github.com/artificial-intelligence-class/spherov2.py

### spheroV2のレポジトリをクローン
miniforgeでpython環境を作成した後で、上記のレポジトリをcloneしました。

``` 
git clone https://github.com/artificial-intelligence-class/spherov2.py.git
``` 

### システムの環境変数を設定
spheroV2は部分的に動かない機能があるので、git cloneしたファイルをデバッグすることを考え、windowsのユーザー環境変数のPYTHONPATHにspheroV2のパスを設定しました。

![241202a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103446/a0e2e7e4-1435-9f8e-fc44-1436dce6cd4c.png)

一方でpipでもインストールできるようなので、できなり（AsIs）で使うだけだったらpip installしてもよいでしょう。

https://pypi.org/project/spherov2/

``` 
pip install spherov2
``` 

### テストスクリプトを実行
testフォルダの下にあるBoltTest.pyを実行します。

https://github.com/artificial-intelligence-class/spherov2.py/blob/main/spherov2/test/BoltTest.py

```
(base) git\spherov2.py\spherov2\test>python BoltTest.py
Testing Starting...
Connecting to Bolt...
Connected.
Testing Start...
Luminosity: {'ambient_light': 26.96186637878418}
Accel: {'x': -0.01532770786434412, 'y': 0.0026461798697710037, 'z': 1.006235957145691}
Testing End...
```

Boltの接続を示す前後のLEDの紫色点灯してから消えた後、
LEDアレイが緑、青、赤色に光ってから、
切断を示す前後のLEDの青色点灯してから消えました。

### 今日のまとめ
windowsでpythonスクリプトでBoltを動かす環境を構築しました。
Scratchにはない機能も使えることになりますし、遊ぶ幅が広がりそうです。
Azure Synapse Analyticsの初期設定とクエリの実行方法

# はじめに
Azure Synapse Analyticsとは？私も使用したことが無いサービスなので調べてみました。
> Azure Synapse Analytics は、データ ウェアハウスやビッグ データ システム全体にわたって分析情報を取得する時間を早めるエンタープライズ分析サービスです。これは、エンタープライズ データ ウェアハウジングで使用される SQL テクノロジー、ビッグ データ用の Apache Spark テクノロジー、そしてログと時系列分析用の Azure Data Explorer の長所を組み合わせたものです。

引用：[Azure Synapse Analytics](https://azure.microsoft.com/ja-jp/products/synapse-analytics)

なるほど、沢山の情報を効率的に扱うために最適なサービスのようですね。

# 初期設定
###### 1.Azureポータルにサインイン
まず、Azureポータルにアクセスし、Microsoftアカウントでサインインします。

###### 2.Synapseワークスペースの作成
「リソースの作成」ボタンをクリックし、「Analytics」カテゴリから「Azure Synapse Analytics」を選択します。

「Synapseワークスペースの作成」ページで、必要な情報（リソースグループ、ワークスペース名、リージョンなど）を入力します。リソース名等は適宜設定してください。

![2024-11-30_21h06_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3934307/be5dfb82-5cd1-f9d9-edbd-0f44914f604b.png)

「確認および作成」ボタンをクリックし、設定内容を確認後、「作成」ボタンをクリックします。

###### 3.Synapse Studioのセットアップ
ワークスペースが作成されたら、AzureポータルからSynapseワークスペースに移動し、「Synapse Studio」を開きます。初回アクセス時には、Synapse Studioのセットアップが自動的に行われます。

###### 4.データソースの接続
Synapse Studioの左側のナビゲーションメニューから「管理」を選択します。

「リンクされたサービス」をクリックし、「新しいリンクされたサービス」を追加します。

接続したいデータソース（Azure Data Lake Storage、Azure SQL Database、Azure Cosmos DBなど）を選択し、必要な接続情報（接続文字列、認証情報など）を入力して接続を設定します。

# クエリの実行
###### 1.Synapse Studioにアクセス
AzureポータルからSynapseワークスペースに移動し、「Synapse Studio」を開きます。

###### 2.SQLスクリプトの作成
ナビゲーションメニューから「データ」を選択し、データベースやテーブルを確認します。

「開発」タブに移動し、「+」ボタンをクリックして「SQLスクリプト」を選択します。

###### 3.基本的なクエリの書き方
新しいSQLスクリプトウィンドウが開いたら、以下のような基本的なクエリを記述します。

■データの選択
```
コード
SELECT * FROM your_table_name;
```

■条件付きデータの選択
```
コード
SELECT * FROM your_table_name WHERE column_name = 'value';
```

■データの集計
```
コード
SELECT column_name, COUNT(*) FROM your_table_name GROUP BY column_name;
```

■データの挿入
```
コード
INSERT INTO your_table_name (column1, column2) VALUES ('value1', 'value2');
```

■データの更新
```
コード
UPDATE your_table_name SET column_name = 'new_value' WHERE condition;
```

■データの削除
```
コード
DELETE FROM your_table_name WHERE condition;
```

###### 4.クエリの実行
クエリを記述したら、上部の「実行」ボタンをクリックしてクエリを実行します。

:::note warn
注意
リソースの管理: Azure Synapse Analyticsはリソースを消費するため、使用後は不要なSQLプールを停止または削除することをお勧めします。
:::

# まとめ
Azure Synapse Analyticsの初期設定とクエリの実行方法について説明しました。これらの手順に従うことで、データの分析や管理が効率的に行えるようになります。

参考資料
[Azure Synapse Analyticsとは？主な機能と価格形態を解説！](https://cloud.sojitz-ti.com/blog/what_is_azuresynapseanalytics/)

[Azure Synapse Analytics(概要編)](https://qiita.com/himorishuhei/items/6d11f47095c049444a91)
GitHub利用の基本的な流れ -- ローカルマシン・サーバーでの基本操作 ③

::: note
※ この記事は細部にこだわらず、とにかく `git clone` や `git init` から `git pull` や `git pull` と `git push` まで短時間に到達できるよう社内およびカスタマー向けに書かれたものを一部編集して公開しています。
:::

https://qiita.com/__deracio__/items/0ee0a573ce40e75e12c4

https://qiita.com/__deracio__/items/c60c8020f9bada47d5d3

https://qiita.com/__deracio__/items/9877743da1fa42671ce0

https://qiita.com/__deracio__/items/10fce44fc842614a0864

# 初めてのPUSHとその後のルーティーン

```mermaid
    flowchart LR;
    Edit[編集]-->Add
    Add([git add])-->Commit([git commit])-->Push[git push];
    Push-->Edit;
    Pull([git pull])-->Edit
```

Github でのレポジトリの操作は、**編集**した**変更を追加**（add）して**確定**（commit）したものを**アップロード**（push）することになります。また、リポジトリがほかのメンバーによって**編集されている可能性**がある場合は、そのファイルを**同期**（pull）させてから**アップロード**します。それぞれのアクションについての詳細は以下の通りです。

これら一連の流れの中で、**確定**・**アップロード**・**同期**のことを Github の用語で、コマンドと対応して、それぞれ**コミット** (commit)・**プッシュ** (push)・**プル** (pull)と呼んでいます。また、Github におけるすべての **CRUD 操作**は *Commitment*（コミットメント）という操作で行われます。このため、コミットメントを行うと毎回コメントの記入を求められます。頻度が多いので、あまり深く考えず、一言コメントを入力してください。

## git add

ファイルを編集したり、フォルダを追加したりした後にリポジトリにプッシュするための最初の手続きとして、対象となるファイル・フォルダを指定し、コミット対象ファイルとして追加します。

::: note warn
これ以降の操作は、`.git` フォルダが置いてあるディレクトリに移動して行う必要があります。`.git` は `git init` を実行したディレクトリ（`git clone` で導入した場合はそのファイル群の最上位階層）になります。
:::

```
git add <追加するファイル・フォルダ>
```

すべて追加する場合は以下のように `.` を指定します。

```
git add .
```

また、`example` フォルダ内の Python ファイル（拡張子が `.py`）のみを追加したい場合、ワイルドカード `*` を使って以下のようなコマンドを使うことができます。

```
git add example/*.py
```

## git commit

`git add` で追加されたファイル・フォルダをプッシュする前にコミットを行います。このとき、それぞれのコミットに対するコメントを追加してください。

```
git commit -m "コメント"
```

## git push

コミットしたファイル・フォルダをリポジトリにプッシュします。ここで `master` 以外のブランチを指定する場合は事前に `git branch -M` で指定しておく必要があります。

```
git push origin <ブランチ名>
```

例えば、ブランチの指定を行っていない場合、以下のような `master` に対するプッシュ以外だとエラーになります。

```
git push origin master
```

もし、`main` というブランチ（リポジトリに作成されている必要がある）にプッシュしたい場合、以下のような流れになります。

```
git branch -M main << 一度設定すればそれ以降必要なし
git pusg origin main
```

::: note
`git branch -M` はブランチが複数ある場合に一度設定したブランチを変更する際にも使えます。
:::

## git pull

リポジトリでチーム作業を行っている場合、編集中にほかのメンバーが先にプッシュしている可能性があります。この可能性がある場合は、事前にプルで同期をしてからプッシュしてください。

```
git pull
```

::: note
同じファイルでコンフリクトが起きた場合はプッシュした後に差分を表示させることができます。
:::
GitHub利用の基本的な流れ -- ローカルマシン・サーバーでの基本操作 ②

::: note
※ この記事は細部にこだわらず、とにかく `git clone` や `git init` から `git pull` や `git pull` と `git push` まで短時間に到達できるよう社内およびカスタマー向けに書かれたものを一部編集して公開しています。
:::

https://qiita.com/__deracio__/items/0ee0a573ce40e75e12c4

https://qiita.com/__deracio__/items/c60c8020f9bada47d5d3

https://qiita.com/__deracio__/items/9877743da1fa42671ce0

https://qiita.com/__deracio__/items/10fce44fc842614a0864

# レポジトリの登録

```mermaid
    flowchart LR;
    Init[git init]-->Origin([git remote add origin]);
    Origin-->Branch([git branch -M])-->
    User([git config user.email<br>git config user.name])-->Cycle[レポジトリ操作];
    Clone[git clone]-->User;
```

## レポジトリの新規作成

レポジトリを新規にローカルフォルダで作成したものをアップロードする場合、アップロードしたいフォルダに入り、以下のコマンドで初期化します。

```
git init
```

次にリポジトリのURLを以下のコマンドで登録します。

```
git remote add <リポジトリのURL>
```

もしアップロールするブランチを `master` 以外のものにしたい場合、以下のコマンドで該当するブランチ名を登録します。 

```
git branch -M <ブランチ名>
```

## 既存のレポジトリをクローン（ダウンロード）

既存のレポジトリをローカル環境にダウンロードしたい場合は、配置したいフォルダに移動して、以下のコマンドを使ってクローンを行います。

```
git clone <レポジトリのURL>
```

クローンを行うと、リポジトリ操作に必要な各種設定は文字通りクローンされてきますので、`git init` とその他初期設定の必要はありません。

::: note
もしデフォルトで指定されているブランチ以外にアップロードしたい場合などは、上記でブランチを指定したのと同じコマンドを通じて変更します。もちろんそれ以外の設定項目も自由に変更することができますが、独自の設定は各プロジェクトのレギュレーションに則って行ってください。
:::

## ユーザー情報の登録

最後に、必要なユーザー情報を以下のコマンドで登録します。

```
git config --global user.name "Your Name"
git config user.email "xxxxxxxx@example.com"
```

これでひとまずレポジトリ操作を行う準備が完了したので、[次のステップ](https://github.com/DERaC-Global/tag_japan/tree/main/docs/github/INITIAL_COMMIT.md)に進みます。
GitHub利用の基本的な流れ -- ローカルマシン・サーバーでの基本操作 ①

::: note
※ この記事は細部にこだわらず、とにかく `git clone` や `git init` から `git pull` や `git pull` と `git push` まで短時間に到達できるよう社内およびカスタマー向けに書かれたものを一部編集して公開しています。
:::

https://qiita.com/__deracio__/items/0ee0a573ce40e75e12c4

https://qiita.com/__deracio__/items/c60c8020f9bada47d5d3

https://qiita.com/__deracio__/items/9877743da1fa42671ce0

https://qiita.com/__deracio__/items/10fce44fc842614a0864

# Git操作までの下準備

```mermaid
    flowchart LR;
    Register((アカウントの作成))-->Repo[新規レポジトリの作成];
    Register-->Invitation[レポからの招待を承諾];
    Repo-->SSL[暗号鍵の生成と登録];
    Register-->SSL;
    Invitation-->SSL;
    SSL-->Git[(レポジトリの登録)];
```

Git コマンドを操作する前に、いくつかの操作を行うことが必要です。これは、レポジトリの作成などの基本的な部分に加えて、秘密鍵の作成と登録という手順を踏まなければ、その後の push によるレポジトリの更新などが行えません。

## レポジトリの作成

### 既存プロジェクトからの招待を承諾

既に Github アカウントを持っていた場合は Github の ユーザー名で、もし持っていなかった場合はメールアドレス宛に既存プロジェクトからの招待が届いている場合、これを承諾することで招待されたプロジェクトのリポジトリへの与えられた権限でのアクセスが可能になります。

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

アカウント作成後、招待がない場合でも自分でリポジトリを新規作成することができます。このリポジトリの所有者は自分となり、他の開発者を招待することで共同作業を始めることができます。作成の流れは以下の通りです。

1. ログイン &rarr; 上部タブまたは右上アバターメニュー &rarr; Repository (Your repository)
2. 右上メニュー &rarr; New repository
   1. 一般に公開する場合は *Public*、公開しない場合は *Private*
   2. 作成時点では *Private* を選択して、公開することを決めた時点で変更できます
   3. レポジトリ名を含めたその他項目も後から変更できます
   4. `README.md` が各フォルダにアクセスしたときに表示されます
3. 必要事項の入力が完了 &rarr; Create repository
4. レポジトリの作成は完了です

::: note
特殊なリポジトリとして、[Github Pages](https://pages.github.com/) 用のものがあります。これはプロジェクトや開発者個人のウェブページを作成できる機能ですが、ユーザー名や組織名（Organization）を `xxxxx` として、リポジトリ名を `xxxxx.github.io` として作成し、トップディレクトリに `index.html` を配置することで開設することができます。
:::

## 秘密鍵の生成と公開鍵の登録

OpenSSL のツールを使ってRSA暗号鍵を簡単に作成することができます。ホームディレクトリ内に `.ssh` というフォルダがない場合は作成してから以下の手順に進んでください。

Linux や FreeBSD などの PC-UNIX や macox の場合は以下のコマンドで暗号鍵を作成することができます。

```
cd ~/.ssh
ssh-keygen -t rsa
```

このコマンドを実行すると、パスワード等を聞かれることが有りますが、すべて空欄で [Enter] を押して進んでください。（メールアドレスは入力してもらって大丈夫です）Windows の場合は、既知の問題として上記のコマンドだとエラーになるか、または、パスワードが勝手に設定されてしまうため、以下のオプションをつけて鍵を生成してください。

```
cd ~\.ssh
ssh-keygen.exe -q -t ed25519 -C '""' -N '""' -f id_rsa
```

上記のコマンドが実行されると、秘密鍵 `id_rsa` と公開鍵 `id_rsa.pub` が作成されます。

::: note
秘密鍵を置くフォルダ名は `.ssh` でなくても構いませんが、Windowsではこれ以外のフォルダにSSHの秘密鍵が置かれているとアクセス権限のエラーで接続できないケースがあります。また、これ以外の場合でも同様のエラーが出る場合、秘密鍵 `id_rsa` は自分以外読み書きできないよう `0600` にパーミッション設定してください。
また、もし `id_rsa` 以外のファイル名を指定して鍵を生成した場合は、そのファイル名に応じた２つのファイルが生成されるので、それに応じて対処してください。
:::

つぎに生成された公開鍵 `id_rsa.pub` を Github に登録しますが、この操作は Github の管理画面で行う必要があります。

1. Github にログイン &rarr; 右上のアバターアイコン
2. 管理メニュー &rarr; **Settings**
3. 右側（スマホでは上部）メニュー &rarr; **SSH & GPG keys**
4. SSH keys &rarr; **New SSH key**
5. 公開鍵 `id_rsa.pub` の中身をコピーして *Key* に貼り付け &rarr; **Add SSH key**
   1. *Title* は自分の管理用なので分かる名前を付けてください
   2. *Key type* は Authentication key（規定値）です
6. 以上で公開鍵の登録は完了です

::: note warn
>公開鍵の中身はテキストエディタで開いて確認するか、ターミナル上で `cat id_rsa.pub` などのコマンドを実行して中身を表示させたものをコピーしてください。このとき Word や Pages などで開いてコピーしても良いですが、開いたファイルを保存してしまうとその後問題が出る可能性が高いので、保存はしないでください。
:::
GitHub利用の基本的な流れ -- ウェブページでの操作

::: note
※ この記事は細部にこだわらず、とにかく `git clone` や `git init` から `git pull` や `git pull` と `git push` まで短時間に到達できるよう社内およびカスタマー向けに書かれたものを一部編集して公開しています。
:::

https://qiita.com/__deracio__/items/0ee0a573ce40e75e12c4

https://qiita.com/__deracio__/items/c60c8020f9bada47d5d3

https://qiita.com/__deracio__/items/9877743da1fa42671ce0

https://qiita.com/__deracio__/items/10fce44fc842614a0864

# ウェブページでの操作

![github_dashboard_new_file.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113613/5195d8e1-a533-0aa7-175c-11df0dd5bc8d.png)


ログイン後、ダッシュボードからリポジトリに移動し、右上にある *Add file* からファイル作成操作を選択します。

- Create new file &rarr; このフォルダにファイルを新規作成
- Upload files &rarr; このフォルダにファイルをアップロード

## ファイルの作成

![github_create_new_file.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113613/daa4b940-30f9-63c3-597e-cf6f81d21024.png)

ファイルを作成する場合 *Create new file* から作成画面へ行き、ファイル名とファイルの内容を入力して保存します。もし下階層にファイルを作成したい場合は、ファイル名を入力する際に下階層のフォルダ名を含めてファイル名を指定します。

例えば、上の画像の例では `tag_japan/docs/github` から新規作成画面に行った状態ですが、この直下に `EXAMPLE.md` を作成する場合はそのままそのファイル名を入力して保存します。もし `tag_japan/docs/github/example` というフォルダを作成してその中に `README.md` として保存したい場合は、ファイル名に `example/README.md` と入力して保存することで意図した場所にファイルを保存することができます。

## ファイルのアップロード

ファイルをアップロードする場合は *Upload files* からアップロードしますが、**アップロード先はそのフォルダ**になります。もし下階層を作成してからそこにファイルをアップロードしたい場合は、以下のような手順に従います。

1. 下階層のフォルダに `README.md` 等のファイルをファイルの新規作成の要領で作成します
2. 作成されたフォルダに移動して *Upload files* からファイルをアップロードします

## ファイルの消去

該当するファイルまたはフォルダをクリックして移動した後、右上の「・・・」ボタンからファイルの場合は *Delete file* を、 フォルダの場合は *Delete directory* を押して指示に従って消去を実行します。

::: note
Github におけるすべての **CRUD 操作**は *Commitment*（コミットメント）という操作で行われます。このため、コミットメントを行うと毎回コメントの記入を求められます。頻度が多いので、あまり深く考えず、一言コメントを入力してください。
:::
VScodeで突然clang: error: linker command failed with exit code 1 (use -v to see invocation)が出てきて困った話

一番下に結論を追加しておきました。手っ取り早く解決策を見たい方は先に見るのをお勧めします。

# エラーに遭遇
いつものようにVScodeでc++を使って音諳を作っていた時のこと。

デバッグしようと思ってファイルのデバッグを行おうとするとこんなエラーが出てきました。
```
略...
clang: error: linker command failed with exit code 1 (use -v to see invocation)

ビルドが完了しましたが、エラーが発生しました。

 *  ターミナル プロセスが終了コード -1 で終了しました。 
 *  ターミナルはタスクで再利用されます、閉じるには任意のキーを押してください。
```

見たことないエラーだったので、いつもの如くGoogleにエラーコードを突っ込むと、何やらcode runnerのエラーだったり、task.jsonの設定ミスだったりの記事が出てきました。

しかし私、code runnerは使ってないし、ちょっと前まで動いていたし、task.jsonも問題なさそうでよくわかりませんでした。

エラーコードに`linker`って書いてあるし、エラーコードの前の方にオブジェクトファイルがたくさん出てきていたので、リンカーのエラーかなというのはわかったのですが、そこまでしかわかりませんでした。

# 原因
エラーが出て数十分が経過した頃。

もうほんとにわからなかったので、ちょっとずつ翻訳しようとエラーの最初の文をgoogle翻訳に突っ込みました。
すると、こんな感じでした。

```
duplicate symbol '__ZN15nesora_literalsli5_NSLCEPKc' in:
重複したシンボル '__ZN15nesora_literalsli5_NSLCEPKc' が次の場所に存在します:
```

ここで私は全てを察しました。
私はこのエラーが出る前、自前のユーザー定義リテラルを作っていたのでした。
そのリテラルの実装をヘッダーファイルに直書きしていたので、コンパイルするときにそのヘッダーファイルを include している.cpp毎に定義されて、リンカーがガッチャンコするときにその関数が重複してエラーを吐いていたのでした。

# 解決

ヘッダーファイルに直書きしている関数を`inline`化するとエラーは無くなりました。

エラー文は最後だけ見てちゃダメですね。
というか英語が脊髄でわかるようになりたい。そうすれば脊髄反射で気づけたのに。
...視覚情報は脊髄通らないか。はは...

以上です。

# 追記(12/25)
再びこのエラーに見舞われたので、その原因と解決策を書きます。

## 原因
最近vscodeでプログラミングをする時にcmakeを使うようになったのですが、新しいファイルを作成した後にデバッグしようとすると、このエラーに見舞われました。
原因としては、cmakeで正規表現を使って`"src/*.cpp"`としていたばかりに、新しく作成したファイルが認識されていないことでした。(表現これであってる？)

## 解決
`CMakeLists.txt`を開いた状態で`⌘S`をすることで解決しました。(cmakeコマンドを実行させた?)

すまん、cmake始めたてでいまいち理解してなくて表現が合ってるかわからん。すまん(-人-)

# 結論
何となく調べてて気づいたことを。

`clang: error: linker command failed with exit code 1 (use -v to see invocation)`はリンカーのエラーで、関数の定義が無かったり重複していたり、引数が間違っていたり、template<>でミスっていたり、`.cpp`ファイルがうまく認識できていなかったり、開くファイルを間違えていたり、その他関数の宣言と定義がうまくつながっていない時に出るエラーってことですね。で、その原因があまりに多いが故にインターネットの情報も錯乱している。概ねそういうことですかね。

その直接的な原因はエラーの前の部分で教えてくれていると。

つまり、エラーコードはすみずみまで読みましょうということでした！
ググる時もエラーの前半部分で調べるといいかもよ！
以上！
LINE WORKS API トークン取得 (Service Account 認証)

# LINE WORKS API トークンを取得する方法

この記事では、LINE WORKS API を実行するためのアクセストークン取得手順を解説します。LINE WORKS API の利用にはアクセストークンが必要ですが、JWT 認証を使った少し特別な方法が必要です。このサンプルでは、API リファレンスを基に、アクセストークンを取得するスクリプトを作成し Google Colab で試してみます。

## 必要な準備

まず、LINE WORKS Developer Console のアプリで以下の情報を取得してください：

- **CLIENT_ID**：API クライアント ID
- **CLIENT_SECRET**：API クライアントシークレット
- **SERVICE_ACCOUNT**：サービスアカウントのメールアドレス
- **DOMAIN_ID**：ドメイン ID
- **SCOPE**：スコープ（API の種類に応じて "bot" などを指定）

また、JWT 認証のための秘密鍵ファイル（`*.key` ファイルなど）も必要です。

## スクリプト

アクセストークンを取得するためのサンプルスクリプトを以下に示します。

以下の URL で Google Colab で試せます。
https://colab.research.google.com/drive/1oTEJoAG7l9lE0CU48lM0lsZ4XRXRsUHi?usp=sharing

```python
# 必要な情報の設定
CLIENT_ID = "あなたのCLIENT_ID" # @param {type:"string"}
CLIENT_SECRET = "あなたのCLIENT_SECRET" # @param {type:"string"}
SERVICE_ACCOUNT = "あなたのSERVICE_ACCOUNT" # @param {type:"string"}
DOMAIN_ID = "あなたのDOMAIN_ID" # @param {type:"string"}
SCOPE = "bot" # @param {type:"string"}

# Google Colab 上で秘密鍵ファイルをアップロード
from google.colab import files
uploaded = files.upload()
PRIVATE_KEY_PATH = list(uploaded.keys())[0]
with open(PRIVATE_KEY_PATH, 'r') as file:
    PRIVATE_KEY = file.read()

# 必要なライブラリのインポート
import jwt
import time
import json
import requests
from datetime import datetime, timedelta

# JWTのHeaderとPayloadを設定
header = {
    "alg": "RS256",
    "typ": "JWT"
}

# 現在のUTC時刻を取得して、iatとexpを設定
current_time = datetime.utcnow()
iat = int(time.mktime(current_time.timetuple()))
exp = int(time.mktime((current_time + timedelta(hours=1)).timetuple()))

payload = {
    "iss": CLIENT_ID,
    "sub": SERVICE_ACCOUNT,
    "iat": iat,
    "exp": exp
}

# JWTの生成
assertion = jwt.encode(payload, PRIVATE_KEY, algorithm="RS256", headers=header)

# POSTリクエストのためのデータを準備
data = {
    'assertion': assertion,
    'grant_type': "urn:ietf:params:oauth:grant-type:jwt-bearer",
    'client_id': CLIENT_ID,
    'client_secret': CLIENT_SECRET,
    'scope': SCOPE
}

headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
}

# API エンドポイントに POST リクエストを送信してトークンを取得
response = requests.post('https://auth.worksmobile.com/oauth2/v2.0/token', data=data, headers=headers)

# 応答の確認
if response.status_code == 200:
    token_info = response.json()
    access_token = token_info.get('access_token')
    print(f"アクセストークン: {access_token}")
else:
    print(f"Failed to retrieve token. Status code: {response.status_code}, Response: {response.text}")
day1 『７つの習慣』

## はじめに
　他人に１冊だけ紹介するとしたら、間違いなくこの書籍になります。世界的な大ベストセラーです。私は若き日に書店で出会いました。そして私の人生哲学に多大な影響を与えました。その後、子ども達にも、職場の同僚にも、仕事のお客様にまで勧めまくっています。

![７つの習慣 目次2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533414/a6990810-acbe-d515-c15b-bcb81ba107f1.png)

## ポイント
### ７つの習慣とは
- 人が真の成功を達成し、永続的な幸福を手に入れるには**人格主義**が大切。
- 人格主義の実践には**３つの私的成功**（個人側面の習慣）と、**３つの公的成功**（他者関係の習慣）、および、それらの**習慣化のための領域バランスと繰り返し**の合計７つの習慣が必要になる。
- うわべだけのテクニックによる成功では、永続的な幸福には至れない。

### 第１の習慣『主体性を発揮する』
- 主体性を発揮しよう。
- 自分がコントロールできるところから影響を与えていく。例えば、**相手の変化を求めるより前に、自らが相手に合わせて変わる**。

### 第２の習慣『目的を持って始める』
- 忙しすぎて目的を見失ってはダメ。
- ミッション・ステートメントとして表現してみよう。

### 第３の習慣『重要事項を優先する』
- **緊急度**と**重要度**を各軸とするマトリックスを作って、４つの領域を考えよう
- 緊急で重要な仕事は最優先せざるを得ない。そこにほとんどの時間を費やすことが多いかもしれないが、残った時間の使い方がポイントとなる。
- **残りの３つの領域で、もっとも優先すべきは、重要で緊急でない**ものである。しかし、多くの人は、**緊急で重要でない**ものを優先してしまうという罠に陥る。例えば、長期で身につけるべき大切なスキルではあることは分かっていても、日常の多忙を言い訳に時間を費やしてしまうなど。

### 第４の習慣『Win-Winを考える』
- 長期的な関係で成功するには、Win-Win（相手も自分も成功する）しかない。そうでない場合にはNo Deal（取引をしない）を選択する。

### 第５の習慣『理解してから理解される』
- 他者との関係を作る場合、自らを理解してもらう前に、まず相手を理解する。傾聴する。
- 他者との関係では**信用残高**が効く。まずは預け入れが必要（相手を理解、小さなことも大切に、約束を守る、期待を明確にする、誠実さを示す、謝るべきは誠意を持って謝る）

### 第６の習慣『相乗効果を発揮する』
- 相乗効果こそ、リーダシップの本質である。
- 相手を尊敬するコミュニケーションでは妥協が入るが、信頼と協力のレベルを上げて創造的に相乗効果の出るコミュニケーションを目指そう。

### 第７の習慣『刃を研ぐ』
- 肉体的、精神的、知的、社会・情緒的の各側面でのバランスをとりながら日常での実践で習慣化

## 書誌情報
- 書籍名：７つの習慣
- 著者：ステューブン・R・コヴィー
- 出版社：キング・ベアー出版
- ISBN：4-906638-01-5

## 参考
- Youtubeで「７つの習慣」で調べると、たくさん出てきます。１０分程度で解説してくれるので、まずはそれを２～３、見てみることをおすすめします。
起業するならElixirシリーズSTEP2. 自分を探せ 

## 起業の狼煙を上げるまでの8ヶ月間

会社を設立して9年目、この8ヶ月間は私にとってリスキリングと自己探求の期間でした。

この9年間で取り組めていなかった課題に向き合うため、経営、マーケティング、営業、組織構築、投資について学び直しました。その過程で行き詰まるたびに、以下のような自己理解を深める活動を繰り返しました：

- 内省による自己分析
- 他者との対話
- 自己理解のための調査
- 占いや性格診断の活用

「自分にはどんな能力があり、誰の役に立てるのか？」この問いに向き合い続け、意見をもとに考えを変え、また元に戻る。アドバイスを受け、アイデアを出すものの、結局振り出しに戻る。このサイクルを何度も繰り返してきました。

おそらく、自分の認知を書き換える必要があったのでしょう。確かな答えは見つかりませんでしたが、これは誰にとっても正解のない世界なのかもしれません。

## 自分を探せ

この8ヶ月間、私が最も時間を費やしたのは会社のMissionを定めることでした。

- 会社を通じて何を実現するのか
- 世界レベルで必要とされる企業とは何か
- なぜ私たちがそれを実現できるのか
- 私たちに何ができるのか

このMissionを策定する上で最大の障壁は、私自身でした。

ただし、起業にも様々な形があります。人生のMissionは、必ずしも1つの会社だけで実現する必要はありません。

私は課題解決が好きで好奇心旺盛なタイプでした。人の課題を解決することが私の「大好物」だったのです。そのため、明確なMissionがないまま9年間会社を継続できたのは、ひたすら課題解決を続けてきたからです。

これまでの実績として：

1. あるクライアントの事業はスケールフェーズに入り、現在はスケーリングに伴う新たな課題解決に取り組んでいます。

2. 建築系企業では教育アプリの開発を手がけました。この企業は以前、ゲーム形式の学習アプリで失敗を経験していました。2度目のチャレンジでは、当初のゲーム活用の構想からピボットし、学習者の課題解決に焦点を当てたアプリを開発。結果として：
   - ローンチ後2週間で業界最高のユーザーレビュー（評価4.8）を獲得
   - 5ヶ月間で6,000ダウンロードを突破し、現在も成長中
   - プロダクトオーナーの育成も並行して実施

「なぜそこまで尽力したのか？」と問われることもありましたが、それは企業の経営者が、退職後の従業員のための新規事業創出に本気で取り組んでいたからです。その真摯な姿勢に共感し、私も全力で支援させていただきました。

このような経験を経て、8ヶ月の熟考の末、新会社のMissionを以下のように定めました：

**「すべての人がテクノロジーを使いこなし、イノベーションを創出する力を教え育てる」**

これは自分探しを得て見つけた１つの答えでした。
JP1で難しい設定方法について【備忘録^^】

## **はじめに**
今回は、JP1業務の中で作業が難しいと感じたJP1/AJS3の仕様と設定方法をまとめていきます。

## **カレンダー作成・設定**
１つ目はJP1業務でよく使用しているカレンダーの設定についてです。
暦に日曜日や祝祭日などの休日があるように，JP1/AJS3の運用日・休業日を定義して運用上のカレンダーを作成することができます。また，業務形態や処理の実行時間などに応じて月初めの日付（月の開始日）を設定したり，1日のスケジュールを計算する基準となる時刻を設定したりできます。

1．カレンダーを作成する際は、viewウィンドウから機能メニューでカレンダー定義を選択します。
![ZUZ06292.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629112/e4079df3-a856-fe4d-4e8d-349d7456d0ee.gif)

※この時、viewウィンドウに機能メニューが表示されていない場合は以下の手順で表示をさせることが可能です。
①【オプション】タブから環境設定を選択
②【起動】タブを選択
③【機能メニューの設定】を選択
④自分の表示させたい項目を選んで、OKボタンを押して設定
⑤設定が完了したら１度JP1/AJS3を閉じて再度起動させる(再起動させないと変更した設定は有効になりません)


2．階層表示：から自分の作成したジョブグループを選択し、編集or右クリックから【カレンダー】選択します。
その際表示されているカレンダーは月間カレンダーで、作業月のものが表示されている状態となります。
年間カレンダーを表示したい場合は表示タブから【年間カレンダー編集】を選択します。
年間カレンダーで編集を行うと、まとめて編集をすることができるため作業効率が上がります。

あとは依頼に合わせてカレンダーの設定を行い保存をして完了です。（Ctrl+Sで保存可能）


## **短い間隔で起動するジョブネットの設定（10分以下の間隔）**
2つ目は短時間間隔起動についてです。
1日のうちにジョブネットを5分間隔・10分間隔などの短い間隔で複数回起動させたい場合は下記の通り設定をすることで起動させることができます。

①ルートジョブネットを作成
②ルートジョブネットを選択し右クリックでスケジュールルールを選択
③下の画像のように、起動条件部分を【設定されていれば使用する】に設定し、回数を無制限、時間を希望の時間に設定する。
![1_schedule_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629112/a2ad9cc3-60ea-e720-b553-e0c30879b203.png)
※翌日以降も動かしたければ処理サイクル部分の設定を行う
④ルートジョブネットのプロパティが表示されている状態で、編集タブから【起動条件の設定】を選択
⑤ルートジョブネットのツリーの中に"CONDITION(AND)"が作成されるため、その中に実行制御イベントを作成する
（この時に間隔時間の設定ができます）

この設定が終わったらルートジョブネット内に実行したいジョブを追加すれば完了です。


## **終わりに**
いかがでしたでしょうか。
今回はカレンダー設定と短時間間隔実行についてまとめました。
間隔実行については今回紹介した設定方法のほかにも、スケジュールルールを何個も設定したり、(少し手間ではありますが)開始時刻に合わせてジョブネットを作成したりする方法もあります。
それぞれ設定をするにあたってメリット・デメリットがあり、依頼にあわせて設定方法を変えながら対応を行うことが大切ですので、JP1作業を行う際はこの記事を参考にしていただければと思います。

最後までご覧いただきありがとうございました。

### **参考**
JP1 Version 9 JP1/Automatic Job Management System 3導入ガイド / https://itpfdoc.hitachi.co.jp/manuals/3020/30203s0233/AJSF0001.HTM
C_TS452_2021 - SAP Certified Application Associate - SAP S/4HANA Sourcing and Procurement対策（21/100）

【21日目】
トピック3：調達プロセス（2/13）

≪問題21≫
仕入先受託品を使用する場合は、何を実行する必要がありますか。
（２つ選択）
▢受託品購買情報を登録する。
▢受託品在庫払出の結果として生じた負債を決済する。
▢受託品入庫の結果として生じた負債を決済する。
▢受託品保管場所を登録する。

≪解答≫
█受託品購買情報を登録する。
█受託品在庫払出の結果として生じた負債を決済する。
▢受託品入庫の結果として生じた負債を決済する。
▢受託品保管場所を登録する。

≪解説≫
◆受託品とは、仕入先から提供された品目が自社の倉庫に保管されているものの、所有権は依然として仕入先側にあることを意味します。仕入先に対する債務が発生するのは、受託品を保管から払い出したタイミングです。
◆受託品を保管在庫として管理するには、以下のマスタデータが必要です。
（1）品目マスタレコード：受託品や預託品を自社品目として管理する場合、新たに品目マスタレコードを作成する必要はありません。同じ品目コードを使って、その受託在庫を利用可能在庫として扱うことが可能です。
（2）仕入先マスタレコード：受託品や預託品に関する仕入先情報は、通常の仕入先マスタレコードを使用できます。
（3）購買情報：受託品の仕入先および品目情報に対しては、「受託品購買情報区分」の購買情報を設定することができます。
電池を付け替える

### 背景
昨年の2023年はaiboを使えるようにしましたが、今年はsphero boltのジャンクを知人から譲ってもらえましたので、sphero boltで遊んでみようと思います。
透明のカプセルとバッテリー、バッテリー用の端子と配線がない状態でした。

メイン基板を外した状態の写真

![241201a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103446/560f2117-66e9-6872-f1d7-b36453e5bc00.png)


そのままでは壊れているのかも分からないので、まずは電気を通すための工作から始めました。

:::note alert
警告
この記事について作者はいかなる責任も負いません。
バッテリー関連の改造は非常に危険な行為です。
:::

### バッテリーを探す
端子の表記とyoutubeの分解動画を見ると、大きさが922945で1250mAh、サーミスタを含む三端子のリポ電池のようです。

（この動画のタイトルは"replace"とありますが、交換まではしていなかったです。）

https://www.youtube.com/watch?v=qh-kZlkyQgw

バッテリーはネットを検索しても見つからなかったのと、充電する必要もあるので銀色のパッケージのバッテリーだけなのは困ります。
あれこれ探した結果、insta360 OneXのバッテリーに決めました。
大きさもほとんど同じで、充電器だけも流通しています。下記は互換品のリンクの例です。

https://www.amazon.co.jp/dp/B07RT8MDXC


### 端子を探してつなぐ
繰り返しバッテリーを入れなおせるように適合する端子を使いたいです。
aliexpressで三極のブレード型の端子を入手しました。

https://ja.aliexpress.com/item/1005007011328049.html

メイン基板との接続用にピンソケットを入手し、2x3の極数に切って配線を接続しました。

https://akizukidenshi.com/catalog/g/g100085/

![241201b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103446/af95a136-bd8c-7bcf-8d59-c813f668c89c.png)


### 充電器で起動する
電池をつなげた直後は電源が入らないようなので、充電器で起動しました。
前後のLEDが青白色でゆっくり点滅しました。
そのあと、LEDアレイの表示が始まりました。

### shero eduで操作する
簡単な操作はsphero eduのアプリを使用しました。
https://apps.microsoft.com/detail/9n2796r62xlz?hl=ja-jp&gl=JP

### 今日のまとめ
バッテリーなし、バッテリーの配線なしのsphero boltのバッテリーを代替えして動かすことができました。
大きさが合っていて充電器を入手しやすいバッテリーを探すのに1か月くらいかかりましたが、動かすことができてよかったです。

繰り返しになりますが、

:::note alert
警告
この記事について作者はいかなる責任も負いません。
バッテリー関連の改造は非常に危険な行為です。
:::