OmniAICreator/Qiita-1.07M huggingface dataset:
【Vue.js】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [ReactとVue、結局どっちが&#34;賢い&#34;の？仮想DOMの中身から考えてみた](https://qiita.com/omochi_0604/items/4ac0eb0475ddde93f0df)

[`JavaScript`](https://qiita.com/tags/JavaScript) [`初心者`](https://qiita.com/tags/初心者) [`Vue.js`](https://qiita.com/tags/Vue.js) [`フロントエンド`](https://qiita.com/tags/フロントエンド) [`React`](https://qiita.com/tags/React) 
**2** いいね　**0** ストック
[@omochi_0604](https://qiita.com/omochi_0604) さん ( 2025-06-22 16:07 に投稿 )
【Vim】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

ランキングに入る記事が見つかりませんでした。
【TypeScript】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [TSの鬼 第3回：配列・オブジェクト・ユニオン型を制す](https://qiita.com/mukai3/items/83f1ced69f021acf8449)

[`JavaScript`](https://qiita.com/tags/JavaScript) [`初心者`](https://qiita.com/tags/初心者) [`TypeScript`](https://qiita.com/tags/TypeScript) 
**1** いいね　**0** ストック
[@mukai3](https://qiita.com/mukai3) さん ( 2025-06-23 08:30 に投稿 )

## 2 位: [【React】深い階層へのデータ共有を効率化するContext APIの基本](https://qiita.com/Yasushi-Mo/items/c105de157bee4d35cae5)

[`TypeScript`](https://qiita.com/tags/TypeScript) [`React`](https://qiita.com/tags/React) 
**1** いいね　**0** ストック
[@Yasushi-Mo](https://qiita.com/Yasushi-Mo) さん ( 2025-06-23 07:38 に投稿 )

## 3 位: [「人生ゲーム for Nintendo Switch専用ルーレットコントローラー」で出た数字をブラウザに表示（サンプルを使った動作確認）](https://qiita.com/youtoy/items/acaa47d838bd9584758c)

[`Node.js`](https://qiita.com/tags/Node.js) [`TypeScript`](https://qiita.com/tags/TypeScript) [`NintendoSwitch`](https://qiita.com/tags/NintendoSwitch) [`ルーレットコントローラー`](https://qiita.com/tags/ルーレットコントローラー) [`人生ゲーム`](https://qiita.com/tags/人生ゲーム) 
**1** いいね　**0** ストック
[@youtoy](https://qiita.com/youtoy) さん ( 2025-06-23 00:02 に投稿 )

## 4 位: [闘魂CDK道場：TypeScriptでAWSインフラを組み、Python Lambdaを叩き込むまで](https://qiita.com/torifukukaiou/items/2065f710cfc33083d333)

[`AWS`](https://qiita.com/tags/AWS) [`TypeScript`](https://qiita.com/tags/TypeScript) [`CDK`](https://qiita.com/tags/CDK) [`猪木`](https://qiita.com/tags/猪木) [`闘魂`](https://qiita.com/tags/闘魂) 
**1** いいね　**0** ストック
[@torifukukaiou](https://qiita.com/torifukukaiou) さん ( 2025-06-22 21:57 に投稿 )
【Swift】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [Swift OpenAPI Generator で様々な生成パターンを確認してみた](https://qiita.com/entaku0818/items/61a1aec19e245e6d0027)

[`Swift`](https://qiita.com/tags/Swift) [`OpenAPI`](https://qiita.com/tags/OpenAPI) 
**2** いいね　**1** ストック
[@entaku0818](https://qiita.com/entaku0818) さん ( 2025-06-22 12:19 に投稿 )
【Ruby】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [#35.エラーメッセージの出力順について（Ruby on Rails)](https://qiita.com/nayaaaa/items/3a70039fb435b494db41)

[`Ruby`](https://qiita.com/tags/Ruby) [`Rails`](https://qiita.com/tags/Rails) 
**1** いいね　**0** ストック
[@nayaaaa](https://qiita.com/nayaaaa) さん ( 2025-06-22 13:22 に投稿 )
【React】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [【個人開発】対義語・派生語まで&#34;ついで覚え&#34;ができるAI単語帳アプリを作成しました](https://qiita.com/kikotkk/items/c2a0a9050d60413da850)

[`AI`](https://qiita.com/tags/AI) [`React`](https://qiita.com/tags/React) [`個人開発`](https://qiita.com/tags/個人開発) 
**20** いいね　**4** ストック
[@kikotkk](https://qiita.com/kikotkk) さん ( 2025-06-22 17:21 に投稿 )

## 2 位: [【supabase】RLS設定とエラー解決例（406/403エラー対応）](https://qiita.com/like-mountain/items/66898d7e74fddc56eae9)

[`React`](https://qiita.com/tags/React) [`RLS`](https://qiita.com/tags/RLS) [`Supabase`](https://qiita.com/tags/Supabase) 
**2** いいね　**1** ストック
[@like-mountain](https://qiita.com/like-mountain) さん ( 2025-06-22 15:23 に投稿 )

## 3 位: [ReactとVue、結局どっちが&#34;賢い&#34;の？仮想DOMの中身から考えてみた](https://qiita.com/omochi_0604/items/4ac0eb0475ddde93f0df)

[`JavaScript`](https://qiita.com/tags/JavaScript) [`初心者`](https://qiita.com/tags/初心者) [`Vue.js`](https://qiita.com/tags/Vue.js) [`フロントエンド`](https://qiita.com/tags/フロントエンド) [`React`](https://qiita.com/tags/React) 
**2** いいね　**0** ストック
[@omochi_0604](https://qiita.com/omochi_0604) さん ( 2025-06-22 16:07 に投稿 )

## 4 位: [【React】深い階層へのデータ共有を効率化するContext APIの基本](https://qiita.com/Yasushi-Mo/items/c105de157bee4d35cae5)

[`TypeScript`](https://qiita.com/tags/TypeScript) [`React`](https://qiita.com/tags/React) 
**1** いいね　**0** ストック
[@Yasushi-Mo](https://qiita.com/Yasushi-Mo) さん ( 2025-06-23 07:38 に投稿 )

## 5 位: [【個人開発反省】useEffectで「親切すぎる」機能を作ろうとして失敗した話 - シンプルが一番](https://qiita.com/rhain428812/items/ff8253fd4112a117d9e0)

[`JavaScript`](https://qiita.com/tags/JavaScript) [`初心者`](https://qiita.com/tags/初心者) [`React`](https://qiita.com/tags/React) 
**1** いいね　**0** ストック
[@rhain428812](https://qiita.com/rhain428812) さん ( 2025-06-22 14:24 に投稿 )
【Rails】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [#35.エラーメッセージの出力順について（Ruby on Rails)](https://qiita.com/nayaaaa/items/3a70039fb435b494db41)

[`Ruby`](https://qiita.com/tags/Ruby) [`Rails`](https://qiita.com/tags/Rails) 
**1** いいね　**0** ストック
[@nayaaaa](https://qiita.com/nayaaaa) さん ( 2025-06-22 13:22 に投稿 )
【PHP】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

ランキングに入る記事が見つかりませんでした。
【Node.js】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [node-hid を使って Joy-Con のボタン押下を Node.js で検出（とりあえず A・Bボタン）](https://qiita.com/youtoy/items/06637ac47f10919a28f6)

[`JavaScript`](https://qiita.com/tags/JavaScript) [`Node.js`](https://qiita.com/tags/Node.js) [`HID`](https://qiita.com/tags/HID) [`Joy-Con`](https://qiita.com/tags/Joy-Con) [`node-hid`](https://qiita.com/tags/node-hid) 
**1** いいね　**1** ストック
[@youtoy](https://qiita.com/youtoy) さん ( 2025-06-22 10:47 に投稿 )

## 2 位: [「人生ゲーム for Nintendo Switch専用ルーレットコントローラー」で出た数字をブラウザに表示（サンプルを使った動作確認）](https://qiita.com/youtoy/items/acaa47d838bd9584758c)

[`Node.js`](https://qiita.com/tags/Node.js) [`TypeScript`](https://qiita.com/tags/TypeScript) [`NintendoSwitch`](https://qiita.com/tags/NintendoSwitch) [`ルーレットコントローラー`](https://qiita.com/tags/ルーレットコントローラー) [`人生ゲーム`](https://qiita.com/tags/人生ゲーム) 
**1** いいね　**0** ストック
[@youtoy](https://qiita.com/youtoy) さん ( 2025-06-23 00:02 に投稿 )
【Linux】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [【資格試験】未経験からLinuC303/304まで3か月で駆け抜けた勉強術](https://qiita.com/Elie1729/items/9fdc40393b74828410da)

[`Linux`](https://qiita.com/tags/Linux) [`Security`](https://qiita.com/tags/Security) [`lpic`](https://qiita.com/tags/lpic) [`資格`](https://qiita.com/tags/資格) [`linuc`](https://qiita.com/tags/linuc) 
**6** いいね　**4** ストック
[@Elie1729](https://qiita.com/Elie1729) さん ( 2025-06-22 01:39 に投稿 )

## 2 位: [Ctrl &#43; Cでなぜプログラムが終了するのか？](https://qiita.com/flowernotfound/items/2cfe3ccc4ddf47ac9860)

[`C`](https://qiita.com/tags/C) [`Linux`](https://qiita.com/tags/Linux) 
**5** いいね　**1** ストック
[@flowernotfound](https://qiita.com/flowernotfound) さん ( 2025-06-22 20:35 に投稿 )

## 3 位: [【技術検証】AWS環境下でRHEL10を起動&#43;一連の設定をチェックしてみた](https://qiita.com/mob_engineer/items/253809b905ff215ffa90)

[`Linux`](https://qiita.com/tags/Linux) [`AWS`](https://qiita.com/tags/AWS) [`技術検証`](https://qiita.com/tags/技術検証) [`RHEL10`](https://qiita.com/tags/RHEL10) 
**2** いいね　**1** ストック
[@mob_engineer](https://qiita.com/mob_engineer) さん ( 2025-06-23 08:59 に投稿 )

## 4 位: [HackTheBox Writeup： Titanic](https://qiita.com/Brutus/items/3cb7cba3bfd006e0b898)

[`Linux`](https://qiita.com/tags/Linux) [`ImageMagick`](https://qiita.com/tags/ImageMagick) [`Security`](https://qiita.com/tags/Security) [`KaliLinux`](https://qiita.com/tags/KaliLinux) [`HackTheBox`](https://qiita.com/tags/HackTheBox) 
**1** いいね　**0** ストック
[@Brutus](https://qiita.com/Brutus) さん ( 2025-06-23 11:23 に投稿 )

## 5 位: [Render×Typstで日本語フォント（IPA明朝）を使う](https://qiita.com/monadikos/items/35e38b552b72e3bba279)

[`Linux`](https://qiita.com/tags/Linux) [`render`](https://qiita.com/tags/render) [`Typst`](https://qiita.com/tags/Typst) 
**1** いいね　**0** ストック
[@monadikos](https://qiita.com/monadikos) さん ( 2025-06-23 09:35 に投稿 )
【Java】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [[入門] Javaを10倍高速化する実践テクニック集](https://qiita.com/ShigemoriMasato/items/21a5e791cde3bfcbb8d2)

[`Java`](https://qiita.com/tags/Java) [`初心者`](https://qiita.com/tags/初心者) [`高速化`](https://qiita.com/tags/高速化) [`パフォーマンス`](https://qiita.com/tags/パフォーマンス) 
**8** いいね　**9** ストック
[@ShigemoriMasato](https://qiita.com/ShigemoriMasato) さん ( 2025-06-23 07:55 に投稿 )

## 2 位: [【継承、オーバーライド、ポリモーフィズム】スーパーマリオとファイアマリオって何が違うの？](https://qiita.com/shiitake_443/items/6174cc711c9481a2abc5)

[`Java`](https://qiita.com/tags/Java) [`継承`](https://qiita.com/tags/継承) [`オーバーライド`](https://qiita.com/tags/オーバーライド) [`ポリモーフィズム`](https://qiita.com/tags/ポリモーフィズム) [`プログラミング初心者`](https://qiita.com/tags/プログラミング初心者) 
**5** いいね　**0** ストック
[@shiitake_443](https://qiita.com/shiitake_443) さん ( 2025-06-23 08:02 に投稿 )

## 3 位: [新しいものはいい～Java新バージョンから旧バージョンに戻って恋しくなった機能～](https://qiita.com/NSS_FS_ENG/items/808d5b6dfbc9256e07d9)

[`Java`](https://qiita.com/tags/Java) [`Java11`](https://qiita.com/tags/Java11) [`java17`](https://qiita.com/tags/java17) 
**4** いいね　**1** ストック
[@NSS_FS_ENG](https://qiita.com/NSS_FS_ENG) さん ( 2025-06-23 07:59 に投稿 )

## 4 位: [【Jackson】Converterを使い、シリアライザーを別の型へ適用する](https://qiita.com/wrongwrong/items/d6746b671b8c450aee96)

[`Java`](https://qiita.com/tags/Java) [`Kotlin`](https://qiita.com/tags/Kotlin) [`JSON`](https://qiita.com/tags/JSON) [`Jackson`](https://qiita.com/tags/Jackson) 
**1** いいね　**0** ストック
[@wrongwrong](https://qiita.com/wrongwrong) さん ( 2025-06-23 00:37 に投稿 )
【iOS】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [iOS APPの作り方。（With App Store ＆ AdMob &amp; SwiftUI)](https://qiita.com/NWLab/items/3bcb67337275c6dd39f9)

[`iOS`](https://qiita.com/tags/iOS) [`adMob`](https://qiita.com/tags/adMob) [`AppStoreConnect`](https://qiita.com/tags/AppStoreConnect) [`SwiftUI`](https://qiita.com/tags/SwiftUI) 
**1** いいね　**0** ストック
[@NWLab](https://qiita.com/NWLab) さん ( 2025-06-22 22:06 に投稿 )
【Go】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

ランキングに入る記事が見つかりませんでした。
【Git】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [Gitのerror: failed to push some refs to &#39;https://github.com/ファイル名&#39;　を解決した](https://qiita.com/sWdHsfI_DY/items/4ec318ec7becc4c57553)

[`Git`](https://qiita.com/tags/Git) [`GitHub`](https://qiita.com/tags/GitHub) [`新卒エンジニア`](https://qiita.com/tags/新卒エンジニア) [`未経験エンジニア`](https://qiita.com/tags/未経験エンジニア) 
**2** いいね　**0** ストック
[@sWdHsfI_DY](https://qiita.com/sWdHsfI_DY) さん ( 2025-06-23 09:56 に投稿 )
【Docker】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

## 1 位: [AWS EC2上にホスティングしているDifyをアプデートする手順](https://qiita.com/mittsun1/items/be12ce78094f282893ed)

[`AWS`](https://qiita.com/tags/AWS) [`EC2`](https://qiita.com/tags/EC2) [`Docker`](https://qiita.com/tags/Docker) [`docker-compose`](https://qiita.com/tags/docker-compose) [`Dify`](https://qiita.com/tags/Dify) 
**1** いいね　**1** ストック
[@mittsun1](https://qiita.com/mittsun1) さん ( 2025-06-22 08:21 に投稿 )
【Android】Qiita デイリーいいね数ランキング【自動更新】

# タグ別

[`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`初心者`](https://qiita.com/items/4107350b0914837836af) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268bff253eef) [`Node.js`](https://qiita.com/items/17556a2356938fdf489c) [`PHP`](https://qiita.com/items/42476b629e2d655d9803) [`Python`](https://qiita.com/items/45e8c5b0017008c62fac) [`Rails`](https://qiita.com/items/6835d21664b6e36a1efa) [`React`](https://qiita.com/items/d17e403386f316d0d96e) [`Ruby`](https://qiita.com/items/effb08232a286c91b814) [`Swift`](https://qiita.com/items/4b45f7a2308597b362e6) [`TypeScript`](https://qiita.com/items/3442ef41f83064dafb64) [`Vim`](https://qiita.com/items/cb67a3dd7a37eee8f8d9) [`Vue.js`](https://qiita.com/items/a0d7b0334c58e658c7a0) 

# 集計について

- 集計期間: 2025-06-22 ~ 2025-06-23


# GitHub

https://github.com/koki-develop/qiita-ranking

スターをもらえるととっても励みになります :bow:

# いいね数ランキング

ランキングに入る記事が見つかりませんでした。
[React] React+TypeScript 実践

React初心者がReact+TypeScriptについて勉強した時のメモです。

# 型がないせいでバグっている例
ボタンを押したらJSONPlaceholderのTodoのデータをaxiosを使ってデータ取得するプログラム。
https://jsonplaceholder.typicode.com/todos

```typescript:App.tsx
import axios from "axios";
import { useState } from "react";
import { Todo } from "./Todo";

export default function App() {
  const [todos, setTodos] = useState<any>([]);
  const onClickFetchData = () => {
    axios.get("https://jsonplaceholder.typicode.com/todos").then((res) => {
      setTodos(res.data);
      console.log(res);
    });
  };
  return (
    <div className="App">
      <button onClick={onClickFetchData}>データ取得</button>
      {todos.map((todo) => (
        <Todo title={todo.title} userid={todo.userid} />
      ))}
    </div>
  );
}
```
```typescript:Todo.tsx
export const Todo = (props) => {
  const { title, userid } = props;
  return <p>{`${title}(ユーザー:${userid})`}</p>;
};
```
データ取得したらユーザー名がundefinedになるというバグが発生している。

# 取得データに型を定義する
```typescript:App.tsx
import axios from "axios";
import { useState } from "react";
import { Todo } from "./Todo";

type TodoType = {
  userId: number;
  id: number;
  title: string;
  completed: boolean;
};

export default function App() {
  const [todos, setTodos] = useState<Array<TodoType>>([]);
  const onClickFetchData = () => {
    axios
      .get<Array<TodoType>>("https://jsonplaceholder.typicode.com/todos")
      .then((res) => {
        setTodos(res.data);
      });
  };
  return (
    <div className="App">
      <button onClick={onClickFetchData}>データ取得</button>
      {todos.map((todo) => (
        <Todo key={todo.id} title={todo.title} userid={todo.userId} />
      ))}
    </div>
  );
}
```
取得するデータに`type`として型を定義する。
axiosのget部分とuseStateの部分に取得データの型を当てることエディターの補完も効くようになりどこが間違っているかが分かる。
今回の場合は、以下の部分の`userid`のiが小文字になっていたからというのが分かった。

```typescript
 <Todo title={todo.title} userid={todo.userid} />
```

# propsに型定義
```typescript
type TodoType = {
  userId: number;
  title: string;
};

export const Todo = (props: TodoType) => {
  const { title, userId } = props;
  return <p>{`${title}(ユーザー:${userId})`}</p>;
};
```
propsも同様に型を定義しておくことで`i`の小文字に気づけバグを防げる。

# PickとOmit
型定義の部分（今回でいう`TodoType`）を切り出した場合に型を呼び出す際に`Pick`かOmitを使うことで効率的に管理できる。

- 切り出したTodoType

```typescript:types/todo.ts
export type TodoType = {
  userId: number;
  id: number;
  title: string;
  completed: boolean;
};
```

- Pick(抽出)

```typescript
import { TodoType } from "./types/todo"

export const Todo = (props: Pick<TodoType, "userId" | "title">) => {
  const { title, userId } = props;
  return <p>{`${title}(ユーザー:${userId})`}</p>;
};
```
`Pick`を使うことでこのコンポーネントで必要な型の情報のみ抜き出せる。

- Omit(省略)

```typescript
import { TodoType } from "./types/todo"

export const Todo = (props: Omit<TodoType, "id" | "completed">) => {
  const { title, userId } = props;
  return <p>{`${title}(ユーザー:${userId})`}</p>;
};
```
`Omit`は`Pick`の逆で`TodoType`の中から必要ないものを除いた形。

# コンポーネント自体の型
```typescript
export const Todo: FC<Pick<TodoType, "userId" | "title">> = (props) => {
  const { title, userId } = props;
  return <p>{`${title}(ユーザー:${userId})`}</p>;
};
```
関数コンポーネント自体の型定義。
[Swift] Realmで後からプライマリキーを追加しマイグレーション

プライマリキーを後からRealm Objectに追加してマイグレーションする際に、少し手こずったので備忘録します。

## Realm Objectクラスにプライマリキーを追加
Before

```swift
class Diary: Object {
    @objc dynamic var text: String = ""
    @objc dynamic var createdAt: Date = Date()
}
```
After

```swift
class Diary: Object {
    @objc dynamic var id: String = NSUUID().uuidString // primary key
    @objc dynamic var text: String = ""
    @objc dynamic var createdAt: Date = Date()
    
    //Primary Keyの設定
    override static func primaryKey() -> String? {
        return "id"
    }
}
```

### 追加した箇所

```swift
    @objc dynamic var id: String = NSUUID().uuidString // primary key
```

Realmにはオートインクリメントの機能がないため、プライマリキーを連番の数字にしたい場合は自分で加算するロジックを実装する必要があります。今回は後からプライマリキーを追加するため、既存のデータに対してもidを振る必要があり処理を書くのが色々面倒だと感じました。
その手間を省くため、一意の文字列を生成してくれるUUIDをプライマリキーの初期値に指定しました。
もし作成順でデータが欲しくなった場合はcreatedAtカラムをソートすればいいため、Realmの場合はこの方法がいいかなと思いました。

```swift
    //Primary Keyの設定
    override static func primaryKey() -> String? {
        return "id"
    }
```
こちらの関数でプライマリキーのカラム名を返すことでRealm側がプライマリキーを認識します。

## マイグレーション
ユーザーがアップデートした際に、DBの変更を正しく反映するためにマイグレーションが必要です。
起動時に通るAppDelegate.siwftのapplication~~関数で以下のように記述します。


```swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        migration()
        
        return true
    }
    
    // Realmマイグレーション処理
    func migration() {
        Realm.Configuration.defaultConfiguration = Realm.Configuration(
            schemaVersion: 1,
            migrationBlock: { migration, oldSchemaVersion in
                if(oldSchemaVersion < 1) {
                    migration.enumerateObjects(ofType: Diary.className()) { oldObject, newObject in
                        newObject!["id"] = NSUUID().uuidString
                    }
                }
            }
        )
    }
```

RealmのSchema Versionを1へアップデートし既存のデータに対しプライマリキーのUUIDを追加しています。（初期のRealmのSchema Versionは0）

```swift
                if(oldSchemaVersion < 1) {
                    migration.enumerateObjects(ofType: Diary.className()) { oldObject, newObject in
                        newObject!["id"] = NSUUID().uuidString
                    }
                }
```

このif文について
他のサイトでは、カラムの追加と削除をする場合はこちらのifの中身は何も書く必要がなく自動でRealm側が認識してくれると記載がありましたが、僕の環境ではエラーが出ました。
既存データに対しidの初期値を与えることでエラーが消えたため、おそらくプライマリキーを設定したい場合はこのように記述する必要がありそうです。
Qiitaの記事投稿するときのテンプレート

必要に応じて、コピペ、削除、変更などして使っていただければと思います。
またこの記事を自分の記事に丸っとコピーして、もっといい「Qiitaの記事投稿するときのテンプレート」の投稿記事を投稿していただければと思います。その際、許可などは必要ありません。:sunny:
わたしがこの記事を作るにあたっていくつか文章やデザインを参考にしている文献がありますのでそちらを引用する際は、それぞれマナーに従っていただければと思います。
#以下テンプレ


```markdown:Qiita投稿テンプレ
冒頭のあいさつまたは、最初の文章。----------------------------
-----------------------------------------------------------
-----------------------------------------------------------

#見出し1(例えばコードの説明をするときの例)
ここで見出しの説明----------
--------------------------

##小見出し
ここで小見出しの説明--------
--------------------------

ここは改行
「```言語の種類(例Java):ファイル名(例test.java)
ここにコードを記述。。。。。。。。。
。。。。。。。。。。。。。。。。。。
！！！実際に書くときは鍵括弧を削除して使う。
```」
さらにコードの解説など-------------------
--------------------------------------

#見出し2(例えば画像と一緒に説明を書くとき)
##画像１のタイトルなど
その説明--------
--------------------------
![代替テキスト](画像URL)

#見出し3(次に伝える内容のタイトル)

#おわりに（締めのことばまたはあいさつまたは次回予告）
-----------------------------------------------------------
-----------------------------------------------------------
-----------------------------------------------------------
## 参考文献
参考: [参考文献1のタイトル](http://example.com/1)
```




## 参考文献
参考1: [Markdown記法/書き方（見出し・表・リンク・画像・文字色など）](https://notepm.jp/help/how-to-markdown)
参考2: [Qiitaで記事を公開するときに気を付けるべきマナーについて 〜無断でネットや書籍の内容を丸写しするのはやめよう〜](https://qiita.com/jnchito/items/215c2d51599eb29adabc)
参考3: [【2021 最新版】ノンデザイナーだからこそ知っておきたかった10のイラストサイト](https://qiita.com/bo_zu_/items/88f45b132c8293dcd9b1)
参考4: [Markdown記法 チートシート](https://qiita.com/Qiita/items/c686397e4a0f4f11683d)
参考5: [Qiitaのマークダウンで色をつける方法[140色]](https://qiita.com/twipg/items/d8043cd4681a2780c160)
メルカリの検索結果からタイトルと値段をスクレイピングしたかった

### 前回までのあらすじ
[前回の記事](https://qiita.com/zeeksan/items/bf2f19ab097b022febab)では、とりあえずアクセスしてページ内容を表示するものだった。
せっかくなので、取れそうな情報を抜き出してみた。

### 取りたい情報
 - 検索結果として表示されたページの商品名
 - 上記商品名に対応する値段

### 取得手順
 1. スタートページにヘッドレスモードでアクセス
 1. ちょっと待ってからページ内にある商品名と値段を取得、画面出力
 1. 「次へ」ボタンを探してクリック、同様に取得/出力しながらループ。
 1. クリックできなければループを抜けて終了

### ソースコード
```python:mercari.py
# メルカリ上で動的レンダリングされた商品情報を取得し、すべてのページから商品名、価格、タイトルを取得する。
from selenium import webdriver
from time import sleep
from selenium.common.exceptions import *

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument("--window-size=1920,1080")
options.add_argument("--disable-gpu")    
options.add_argument(
    "user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
browser = webdriver.Chrome('chromedriver.exe',options=options)

# mercari：指定条件を検索したURLにアクセス
url = 'https://jp.mercari.com/search?status=on_sale&page=1&t1_category_id=5&category_id=5'

browser.get(url)
sleep(3)

# カウンタ(表示用)
no = 0
# 外ループ：メルカリの次へボタンが無くなるまで。
while True :

    sellItems = browser.find_elements_by_tag_name("mer-item-thumbnail")
    # 内ループ：ページ内のアイテム情報を取得しきるまで。
    for item in sellItems :
        no += 1
        name = item.get_attribute("item-name")
        price = item.get_attribute("price")
        print(str(no) + ' : ' + name + ' : \\' + price)
    
    # 「次へ」ボタンを探して、見つかればクリック
    try:
        # 自動でページ遷移すると画面読み込み時の初期処理に割り込まれてボタン押下が出来ないので、execute_scriptで対策する。
        buttonClick = browser.find_element_by_xpath("//mer-button[@data-testid='pagination-next-button']")
        browser.execute_script("arguments[0].click();",buttonClick)
        sleep(3)

    # 「次へ」ボタンが無ければループを抜ける
    except NoSuchElementException:
        break
# 終了処理(ヘッドレスブラウザを閉じる)
browser.quit()
```

### 実行結果
```:実行結果
No(数字) : 商品名 : \価格
```

もうちょっと発展させてCSVに出力したり、スタートページを別ファイル読み込みにしたりと、
やれることはまだありそう。
楽しくなってきたので気が向いたらまた更新します。よろしくね。

### 参考
[【Python】Selenium：ElementClickInterceptedExceptionエラーの原因と解決方法](https://office54.net/python/scraping/selenium-click-exception)
button.click()が単純にできなかったので、エラーメッセージに出てきたExceptionググったら
execute_script()を使う方法があったので使わせてもらいました。
pythonで空のリストをデフォルト引数にしようと def func(l=list()) と書いてはいけない


関数書くときに

- 引数を受け取らなかった → 結果をlistにして返す
- 引数にlistを受け取った → 続きに書き足して返す

みたいな動作を書きたいことがあると思います


# 失敗した書き方


そこで、以下のように書いてみました


```python:上手くいっているように見える例１
def func1(n, l=list()):
    for k in range(n):
        l.append(k)
    return l

func1(3)  # [0, 1, 2] が返ってきます
```

```python:上手くいっているように見える例２
def func1(n, l=list()):
    for k in range(n):
        l.append(k)
    return l

l1 = func1(3)
l2 = func1(3, l1)
l2  # [0, 1, 2, 0, 1, 2] が返ってきます
```


どうやら期待通り動いてんね、という事で以下を実行するとおかしなことになります


```python:失敗が分かる例
def func1(n, l=list()):
    for k in range(n):
        l.append(k)
    return l

l1 = func1(3)
l2 = func1(3, l1)  # l2は [0, 1, 2, 0, 1, 2] になっている

l3 = func1(2)
l4 = func1(2, l3)  # l4は [0, 1, 0, 1] になっている筈が…

l4  # [0, 1, 2, 0, 1, 2, 0, 1, 0, 1] が返ってきます
```

…どうやら何か失敗しているようです


# 動作を確認する


上記のl1～l4のオブジェクトIDを確認してみます


```python:IDを確認
>>> print(id(l1), id(l2), id(l3), id(l4))
2093705104064 2093705104064 2093705104064 2093705104064
```


引数を受け取らなかった場合は新しく空のlistを作ってそこに書き足していくという動作を期待していたので

- l1～l2が同じオブジェクト
- l3～l4が同じオブジェクト
- l1～l2とl3～l4は別のオブジェクト

というのを期待していたんですが全部同じIDになってます。これが意図しない動作の原因のようです。


# 考察


IDを見て考えた推測ですが、１行目の「def func1(n, l=list()):」が原因ではないかと思います。list()により作成されたlistオブジェクトが関数情報を保管するスコープに置かれていて、引数を省略したらその作成済みlistオブジェクト(上の例だとIDが2093705104064になっているlistオブジェクト)を引数として受け取るという事ではないでしょうか。インタプリタが関数をパースするときにlist()を普通に実行して格納しちゃってる感じかな？と思ってます。


# 対策


というわけでNoneのように判別がやりやすいやつをデフォルトに入れておいて、Noneだったら新しいlistを作るという書き方に変えればやりたかった動作が実現できます。


```python:対策例
def func2(n, l=None):
    if l is None:
        l = list()
        
    for k in range(n):
        l.append(k)
    return l

l1 = func2(3)
l2 = func2(3, l1)

l3 = func2(2)
l4 = func2(2, l3)

print(l4)
print(id(l1), id(l2), id(l3), id(l4))
```


関数が上から下に順番に実行されるものと考えているとハマりやすい罠ではないかと思います。ご注意ください。


# 試行環境


Windows10 + miniconda
python 3.8.8
DartでKotlinのsealed classを表現する

# はじめに
Kotlinのsealed classはこんな感じで書けますね。

```kotlin
sealed class SampleResultModel {
    data class Success(val value: String) : SampleResultModel()
    object Error : SampleResultModel()
}
```

これをDartで表現したいとき、Dartの言語機能にこのようなことを表現できる機能がまだ備わっていないためfreezedというパッケージを使って表現します。
https://pub.dev/packages/freezed

# 本編
freezedを使って先程のKoltinのsealed classを表現すると以下のよう書き方をします。

```dart
@freezed
class SampleResultModel with _$SampleResultModel {
  const factory SampleResultModel.success({
    required String value,
  }) = SampleSuccess;

  const factory SampleResultModel.failure() =
      SampleFailure;
}
```

使うときはこんな感じで、usecaseなどでdatasourceにアクセスして結果に応じてそれぞれのfactoryを呼んでResultModelを返すことができます。

```dart
  Future<SampleResultModel> call() async {
    try {
      final response = await _sampleDataSource.fetchSomeThing();

      return SampleResultModel.success(
        value: response.value,
      );
    } on DioError catch (e) {
      if (e.type == DioErrorType.response && e.response != null) {
        return const SampleResultModel.failure();
      }
    }
  }
```

更に、DioErrorをcatchすればstatusCodeに応じて各factoryを呼んでResultModelを返すこともでき何のエラーだったのかを判別してUIなどに伝えることができるようになります。

```dart
  Future<SampleResultModel> call() async {
    try {
      final response = await _sampleDataSource.fetchSomeThing();

      return SampleResultModel.success(
        value: response.value,
      );
    } on DioError catch (e) {
      if (e.type == DioErrorType.response && e.response != null) {
        switch (e.response!.statusCode) {
          case HttpStatus.preconditionFailed: // 412
            // このケースのreturn
          case HttpStatus.forbidden: // 403
            // このケースのreturn
          case HttpStatus.badRequest: // 400
            // このケースのreturn
        }
      }
    }
  }
```

UIなどでは受け取ったmodelに対してwhenメソッドがfreezed側で自動生成されてるのでそれを使って成功時はコンテンツを表示して失敗時はSnackbarを出したりなどできるようになります。

```dart

        model.when(
          success: (value) {
            // 成功時にvalueを使ってなにかUI表示する
          },
          failure: () {
            // 失敗時はSnackbar表示する
          },
        );
```
pip3を使う場合のコマンドメモ

##前提
pip3を使う場合、よくネット上にあるコマンドとして、
「pip3 install ~~~」
みたいなコマンドを指定すればいい！みたいなことが書かれていますよね？

でもこれらのほとんどが利用できません。

そこで色々調べてみたら、下記のコマンドで動きました。

##pip3が動いたコマンド

```shell:ターミナル
sudo -H pip3 install 〜〜〜〜
```

これです。
sudo
と
ーH
が関係していると思います。

何やら、-Hは別ユーザーとして、そしてsudoでは管理者権限で、pipを利用するみたいです。

詳しいことがわかっていなくてすみません。
webサイトにLINEやTwitterの共有ボタンを作る

今自分が作っているサイトにlineとかの共有つけたいなーって思って調べてみたらめっちゃ簡単だったのでカキコ

<h1>今回追加するボタン</h1>
![スクリーンショット 2021-10-16 13.47.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1541345/2afd5a05-2614-a481-a6ff-3a32eb873da4.png)

これはFont Awesomeで持ってきたやつですがLINEの方は下のリンクからいろいろ選べます。

https://media.line.me/ja/how_to_install#lineitbutton

<h1>では実装！(Twitter)</h1>

```
<%= link_to "Twitterに共有", "https://twitter.com/intent/tweet?url=#{request.url} %>
```

これを追加するだけです。

はい。終了！


と行きたいのですが、いろいろ共有する時に追加できるのでそれを書きます。
<details><summary>長いので折り畳んでます</summary><div>
さっきのコードは、urlを送るようにしています

![スクリーンショット 2021-10-16 14.03.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1541345/83b95fd2-d106-54ba-98a0-2f7cb7dd4c8c.png)


こんな感じで追加されます。
urlは"#{request.url}"としてリクエストがされたurlを送信できます。
共有ボタンを追加しているページは、http://localhost:3000/posts/2　, なので"#{request.url}"に入る値はhttp://localhost:3000/posts/2　となります。


では次はテキストを追加したい時は

```
<%= link_to "https://twitter.com/intent/tweet?text=サンプルです。 %>
```

こう書きます。テキストの合計が140文字だったかな？それ超えたらuserに処理してもらう必要があったと思います

![スクリーンショット 2021-10-16 14.02.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1541345/819c0210-fdb3-1a54-566d-faef60bada13.png)

次はハッシュタグを追加します。
タグには#をつける必要がなく、カンマ区切りで複数追加することができます

```
<%= link_to "https://twitter.com/intent/hashtags=ruby,rails" %>
```

![スクリーンショット 2021-10-16 14.10.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1541345/ea665051-fefc-43be-363e-00172e0e2784.png)

これを全て追加すると、、、、、、

```
<%= link_to "https://twitter.com/intent/tweet?text=#{@post.title}&url=#{request.url}&hashtags=ruby,rails" %>
```

![スクリーンショット 2021-10-16 14.13.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1541345/bdf1bccb-4c0b-23b6-3e87-db85ae4ad96f.png)

こうなります！

一つ気になることがあるとしては、改行が行われていないことですかね！
投稿する時に改行してもらえれば問題ないのですがデフォルトで改行してあげることにしましょう！
改行を入れるには"\n"ではなく"%0a"を入れることで任意の場所で改行できます

```
<%= link_to "https://twitter.com/intent/tweet?text=#{@post.title}%0a&url=#{request.url}%0a&hashtags=ruby%0a,rails" %>
```

![スクリーンショット 2021-10-16 14.27.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1541345/e132fecd-a096-e3d6-28aa-ee4448b7c0d0.png)

</div></details>

<h1>LINE編</h1>

LINEは冒頭で貼ったリンクから簡単にできるのでそれ以外の方法で
さっきのTwitterとほとんど同じ書き方になります

```
<%= link_to "http://line.me/R/msg/text/?=#{@user.name}さんの投稿がシェアされました%0a#{request.url}%0ali" %>
```

ここでつかっている#{@user.name}などの展開はあらかじめcontrollerで設定してある変数やインスタンスを用いることができます

@userの部分で共有したい投稿のup主を識別してup主に応じて共有文のusernameが変化するというものです。
textの中にいれていればなんでも追加できるので試してみてください！

LINEの共有ボタンをクリックした時は

![スクリーンショット 2021-10-16 14.45.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1541345/ed2e3056-b6d0-02ef-cd3f-8afba09f8846.png)

こんな感じの画面に遷移するのでここで誰に共有するか選ぶことができます。

以上！

めちゃくちゃ簡単だった~~