Pythonのバージョン管理をPipenvにした話。Windows10ではPipenvがベストプラクティスな気がする。

どうも、りーずです。

・Windows10でのPythonのバージョン管理はPipenvが良い
・Pipenvを使えるようにする手順
・Pipenvの使い方
・requirements.txtを作成する
・requirements.txtから仮想環境をpipenvで作る
・仮想環境を有効にしようとすると「このシステムではスクリプトの実行が無効になっているため、ファイル ~.venv\Scripts\activate.ps1 を読み込むことができません。」と出る場合
・まとめ

このような構成でお届けします。Pipenvは良いよ!というメモです。

pip install pipenv
pip list
pipenv --python 3.6
.venv/Scripts/activate
deactivate
pipenv install django==2.2
django-admin startproject プロジェクト名
django-admin startapp アプリ名
python manage.py runserver
pipenv lock -r > requirements.txt

今回実際に使うのは上記のコマンドです。


・Windows10でのPythonのバージョン管理はPipenvが良い

Windows10環境のPythonのバージョン管理でAnacondaを使ったり、Virtualenvを使ったり、素のPythonでpipを使っていたりしたのですが、最近はPipenvがDjangoなどの開発には向いているのではないかと思うようになりました。その理由を述べていきます。

最初はWindows10でAnacondaを使おうとしたのですが、使いたいライブラリがなかなか動かせなかったり、インストールの設定でどれがベストなのかが分かりにくかったり、pipコマンドと混ぜると良くない(?)などの情報があり、使わなくなりました。
一言でいうと初心者には難しいです。

その後、Udemyや海外のYouTubeのPythonの英語の動画を見ているとよく使われているvirtualenvを使っていました。

しかしvirtualenvはPythonのバージョンを切り替えられないという欠点がありました。
(Python3.6、3.7、3.8などを切り替えられない。)

そこで色々と調べた結果、Pipenvを使うと
・Pythonのバージョンそのものも管理(切り替え)が出来る
・個々のフォルダ内で環境を作り、アクティベートするとそのまま設定したものが使える

というように、やりたいことが出来る唯一のバージョン管理ツールでした。
これには非常に利便性を感じたので、Djangoなどのアプリケーションを作ったり、ちょっとしたプログラミングをするにはPipenvでいいかな、という結論になりました。

僕はAnacondaとの共存は諦め、とりあえずPipenvのみでやっていこうと思いました。

これらのツイートで貼っているリンクが参考にしたものです。


・Pipenvを使えるようにする手順

まず、使いたいPythonは、公式からダウンロードしてインストールしておきます。(重要)

Python3.8を使いたければそれをダウンロードしてインストール、Python3.7を使いたければそれをダウンロードしてインストール、という感じです。

Pythonのインストール先ですが、

C:\Python
というフォルダを作り、そこに

Python3.6.7の64ビット版は
C:\Python\Python367

Python3.8.5の32ビット版は
C:\Python\Python385-32

という感じに数字を割り振り、分かりやすいように名前をつけてインストールしていくと良いです。
Program Filesフォルダにインストールすると、空白でエラーになるような事があったので、気をつけましょう。

僕は、インストーラーでパスは通してインストールしました。

「パスが通っている/パスを通す」という日本語は、「Windows10のシステム環境変数のPathという変数に、プログラムの設定がされているという意味です。これをすることにより、ターミナル上で、プログラム名を入れるだけでプログラムを実行することが出来るようになります。「python」というコマンドが動くのも、「パソコン上のどこにあるpython.exeを動かすかが指定されているから」です。)

参考:『「PATH を通す」の意味をできるだけわかりやすく説明する試み』
https://qiita.com/sta/items/63e1048025d1830d12fd

パスを通すと、『環境変数で一番上に来ているPythonのバージョン』がターミナル(コマンドプロンプト)のデフォルトになります。以下のようなイメージ。

3つのPythonをパスを通してインストールしている図。 この場合、実際にターミナル(コマンドプロンプト)で動くのは一番上のPython 3.85の32bit版になる。

もし、Windows10のターミナルコマンドで使いたいデフォルトのPythonのバージョンを変えたい場合は、システム環境変数の設定でそのバージョンを一番上に持ってくればOKです。
2行でセットなので、2行とも上に持っていきましょう。

ちなみに上の図で「使われない」と書かれているPythonも、以下のPipenvによって、仮想環境で使えるようになります。

(僕はすべてのPythonのパスを上記の画像のように残していますが、実際に残すのはpipenvをインストールするPythonのパスだけで大丈夫です。)

・Pipenv(バージョン管理ツール)のインストール

さて、次はPipenvを入れなければいけません。

そして、これに限ってはPythonのどれかのバージョンに直接pipコマンドで入れる必要があります。
pipコマンドは
pip install ライブラリ名
で、PythonのライブラリをインストールできるPython公式のコマンドです。
ライブラリの管理に使います。

Pipenv(これもライブラリです)を入れるPythonのバージョンは、インストールしているPythonの最新のバージョンで良いと思います。

Pythonを入れているフォルダには「Scripts」という名前のフォルダがあり、どんなライブラリが入っているかを確認することが出来ます。

僕の場合は
Python3.8.5の32ビット版にPipenvを入れました。

まぁどれに入れても大丈夫だと思います。
現在pythonコマンドのパスが通っているものに入ります。

では、実際にPipenvを入れてみましょう。まずはどのバージョンのPythonがターミナルで動いているか確認しましょう。

python --version

ここのPythonにPipenvを入れるので、バージョンは一応覚えておきましょう。
そうしたら、ターミナルで

pip install pipenv

と打ち、Pipenvをインストールします。現在パスを通しているPythonのバージョンのScriptsフォルダにインストールされます。

pip list

というコマンドで、インストールされたモジュール(ライブラリ)の一覧が表示されます。確認してみましょう。

もしうまくインストールされない場合は、Windows Power Shellのアイコンを右クリックして「管理者として実行する」で起動して、そこでコマンドを打ってみて下さい。

管理者権限でWindows Power Shellを起動する画面 。(タスクバーを縦に設定してるのは気にしないでください)

管理者権限でWindows Power Shellを起動する画面 。(タスクバーを縦に設定してるのは気にしないでください)

Cドライブ等にコマンドで変更を加える場合は管理人権限での実行が必要になる場合があるからです。

・プロジェクトごとに仮想環境フォルダが作られるようにシステム環境変数を設定する
次に、環境変数の設定です。ここがポイントです。

『プロジェクトのフォルダ直下にPipenvの仮想環境が作られてほしい』ので、
新たに環境変数を1つ設定することで可能にします。以下で説明しますね。

例えばプロジェクトのフォルダごと消去すれば、仮想環境ごと消せますし、プロジェクトフォルダに入ってターミナルでアクティベートコマンド(.venv/Scripts/activate)を実行するだけで、そのプロジェクトに設定した環境がすぐ立ち上がるようになります。

1.まずは、Windows10の左下の検索窓に『環境変数』と打ち込み、『システム環境変数の編集』画面を出しましょう。以下のようにして下さい。

Windows10の左下の検索窓に『環境変数』と打ち込む。

2.そうしたら、出てきた、『システム環境変数の編集』をクリックします。

※「環境変数を編集」をクリックすると「システム環境変数の編集」がグレーアウトするので注意。選ぶのは「システム環境変数の編集」です。

3.すると「システムのプロパティ」画面が出てきて
「環境変数」とクリックできる画面が出ます。そこで「環境変数」をクリック。

以下のように環境変数を編集する画面が出るはずです。

4.Windows10の環境変数(『システム環境変数』のほう)に「PIPENV_VENV_IN_PROJECT」という項目を作り、「true」という値を入れます。

以下の画像のようにします。

「システム環境変数」のなかに変数「PIPENV_VENV_IN_PROJECT」を作り、値を「true」にする

「システム環境変数」の「新規」で追加しましょう。

変数:PIPENV_VENV_IN_PROJECT
値:true

これにより、pipenvコマンドを使うとその各フォルダのルート直下に仮想環境が構築出来るようになります。

そうしたらパソコンを再起動しましょう。環境変数を反映させるためです。

・Pipenvの使い方

Pipenvの実際の使い方を説明します。
まず、仮想環境を作りたいフォルダ(プロジェクトフォルダ)を作ります。

そうしたらターミナルでその場所に移動し、そこで

pipenv --python 3.6

のように打ちます。(これは例なのでpython 3.8でも何でも良いです。)

こうするとその場所に仮想環境がPython3.6で構築されます。
(指定する「Python3.6」は手動であらかじめインストールされている必要があります。)

次に、

.venv/Scripts/activate

と打つと、アクティベート(仮想環境に入ること)ができます。
(ScriptsのSは小文字でも動きました)

deactivate

で、ディアクティベート(仮想環境から抜けること)ができます。

あとは自由に、djangoなどのライブラリを追加でインストールしていきましょう。
インストールする場合はアクティベート(仮想環境に入る)した状態で行います。
そして、仮想環境に何かをインストールする場合は必ず

pipenv install django==2.2

このように「pipenv install」というコマンドを使います。
通常の「pip install」だと、おそらく仮想環境ではなく「今パスの通っているPythonの本体」にインストールされてしまいます。

何がインストールされているか確認したい場合は

pipenv graph (パッケージの依存関係をツリー表示)
pipenv graph --reverse (パッケージの依存関係の逆をツリー表示)
というコマンドで確認できます。

ライブラリをアンインストールしたい場合は
「pipenv uninstall ライブラリ名」で削除できます。

pipenv uninstallをした後、不要なパッケージが残る可能性があるので
pipenv clean
というコマンドを使うと不要なパッケージが整理されるので良いです。

参考:https://qiita.com/eduidl/items/c0e8256bb3a5a735d19c

また、仮想環境をまるごと消したい場合は「pipenv install」で作成されたファイルとフォルダを手動で削除するだけでOKです。

.venv
Pipfile
Pipfile.lock

この1つのフォルダ(.venv)と2つのファイル(Pipfile、Pipfile.lock)です。

以上でPipenvの簡単な説明でした。

仮想環境を、Pythonのバージョンを指定して作成出来て、
それぞれのフォルダで仮想環境を作成&立ち上げられることが便利ですね。

使うときにはアクティベートのコマンド(.venv/Scripts/activate)を打つだけなので、どのPythonのバージョンで作ったかを覚えておく必要もありません。

アクティベート後にPythonのバージョンを確認したい場合は

python --version

で確認出来ます。
アクティベート後は普通のpythonコマンドで、その仮想環境のPythonが実行されるようになります。

ちなみに、djangoをインストールしたあとは
django-admin startproject プロジェクト名

のようにしてプロジェクトを作り
その中に入って
django-admin startapp アプリ名
でアプリを作り、
そのあとに
python manage.py runserver

としてから
http://localhost:8000/
(ローカルのサーバー。実行時にポート番号は8000と表示されるはず)
にアクセスしましょう。

参考:
「PipenvでDjango開発環境をつくる」
https://qiita.com/nochifuchi/items/4fe0164f0d8949cf11b7

・requirements.txtを作成する

requirements.txtを作成するには、
コマンドライン(ターミナル)で、

pipenv lock -r > requirements.txt

を実行します。

参考:「Pipenvことはじめ」
https://qiita.com/shinshin86/items/e11c1124e3e2e74556b8#requirementstxt%E3%81%AB%E6%9B%B8%E3%81%8D%E5%87%BA%E3%81%99

・requirements.txtから仮想環境をpipenvで作る

パターン1:Pythonのバージョンを指定したい場合

仮想環境のPythonのバージョンを指定したい場合は

最初に
pipenv --python 3.6(指定したいバージョン)
として、一番最初にPythonのバージョンを指定して仮想環境を作っておきます。
そして
.venv/Scripts/activate
で仮想環境に入り、
そのあとに requirements.txtのあるフォルダで
pipenv install
をします。そうするとそのPythonのバージョンとrequirements.txtの指定で環境が作られます。

パターン2:仮想環境のPythonのバージョンはpipenvのpythonで良い場合

Pythonのバージョンが、pipenvを入れてあるPythonのバージョンで良いのであれば、
requirements.txtから仮想環境をpipenvで作るには、そのディレクトリでそのまま

pipenv install

を実行すれば完了です。

一応「パターン1」のほうで明示的にPythonのバージョンを指定して作ったほうが良いとは思います。

参考:「requirements.txtからのインポート」
https://pipenv-ja.readthedocs.io/ja/translate-ja/basics.html#importing-from-requirements-txt


・仮想環境を有効にしようとすると「このシステムではスクリプトの実行が無効になっているため、ファイル ~.venv\Scripts\activate.ps1 を読み込むことができません。」と出る場合

Windows10のPowerShell(コマンドラインツール)では、スクリプトを実行するときに実行ポリシーを変更してあげないと、PowerShellを管理人権限で起動していても仮想環境を有効にできないことがありました。

.venv\Scripts\activate
コマンドを打つとエラーが出る場合です。

その場合はPowerShellを管理人として実行して、

> Set-ExecutionPolicy RemoteSigned

というコマンドを打つと、仮想環境を有効に出来るようになります。
一度設定すれば大丈夫です。

詳細は

「PowerShellでvirtualenvを使うには – Qiita」

https://qiita.com/ryu22e/items/520b35db6a444d8289da

こちらを参考にしてみて下さい。


・まとめ

まとめです。
pipenvの導入方法は
pip install pipenv
として導入。
プロジェクトのフォルダ直下にPipenvの仮想環境が作られてほしいので、システム環境変数の設定を必ず行う。

使い方は、
pipenv --python 3.6
このコマンドで仮想環境を作成。
指定するPythonのバージョンはインストールされている必要がある。

仮想環境を作成したら
.venv/Scripts/activate
でアクティベート。
抜けるときは
deactivate
でディアクティベート。

あとは仮想環境に
pipenv install django==2.2
のようにして入れたいライブラリを入れていく。

(Djangoの場合はライブラリを入れたあとに
django-admin startproject プロジェクト名
このようにライブラリが用意したコマンドを打って、実際のコードを自動生成させていく。)

もしプロジェクトが要らなくなったらそのフォルダごと削除すればOK。


Pipenvについて、より詳しくは、

「Windows + Python + pipenv でらくらく開発環境構築」
https://qrunch.net/@toyocy/entries/Y2wBhjSWunnK0CPI

「Pipenvを使ったPython開発まとめ」
https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a

これらの2つの記事が詳しいので参考にしてみて下さい。


おまけ

pipenvコマンドを使うと、

pipenv : Courtesy Notice: Pipenv found itself running within a virtual environment,
so it will automatically use that environment, instead of creating its own for any p
roject. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that envir
onment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this
warning.

という文が出ることがありました。そこで通知文のいうように環境変数に
PIPENV_IGNORE_VIRTUALENVS=1
を追加すると
python manage.py runserver
コマンドでdjangoを動かしたときにサーバーが停止出来なくなる挙動が出ました。
なので、現在はこの環境変数は設定していません。
まぁざっくり言うと、通知文は無視してOKということです。

参考:「pipenv で任意の場所の仮想環境を使う」
https://qiita.com/tonluqclml/items/cd0d2a2cb0197cbaee42


勉強中なので、なにか間違いがございましたらTwitterでリプを頂けると助かります。

プログラミングの問題をブラウザで解くウェブサイト「LeetCode」が実践的で面白い。

どうも、りーずです。

プログラミングの問題をブラウザ上で解くウェブサイト「LeetCode」というものがあります。

これはコーディングのテストなどでも実際に使われることがあるようです。
趣味的に普段から解いていると実践力が付きそう。

また、何かのプログラミング言語を学びたい場合などにLeetCodeの「Easy」の問題だけを解いていくというのも1つの手段として良さそうです。

「LeetCode – Easy問題」
https://leetcode.com/problemset/all/?difficulty=Easy

このサイトです。

自然とfor文やif文などを使うことになるので、プログラミング言語習得の1つの手段やキッカケに使えますね。

イメージとしては詰め将棋のような感じです。

ということで、簡単ながら記事として記しておきます。

Windows10で「管理者として実行」ができない場合の解決策。システムファイルチェッカーとDISMコマンドを実行しよう。

どうも、りーずです。

Windows10で、プログラムによって「管理人として実行」ができなかったり、「ファイルの権限がない」と言われてプログラムを動かせないことがありました。
そこで見つけたのが次のリンク。

「管理者として実行」ができない/表示されない時の対処法 – Windows10

上のリンクの記事の「システムファイルチェッカーとDISMコマンドを実行する」というものです。

Windows PowerShellを管理人権限で開き、

DISM.exe /Online /Cleanup-image /Restorehealth

というコマンドを実行。その次に

sfc /scannow

こちらのコマンドを実行。

これを行ったことで「管理人として実行」など、管理人権限での権限が復活しました。

僕の場合は以前Cドライブが破損したことがあったので、そちらが原因でうまく動いていなかったのかもしれません。

忘れないように、こちらに記事として残しておきます。

Windows10環境のRuby on RailsでMySQLを使うときはRubyのbinフォルダにlibmysql. dllファイルを入れよう。

どうも、りーずです。

Windows10環境でのRuby on RailsでMySQLを使うときに、うまく動かない事がありました。

これはメモしておかないと忘れてしまうので、記事にしてメモしておきます。

上のツイートが今回の記事の伝えたいことのすべてです。「libmysql.dll」というファイルを使っているRubyの「bin」フォルダに入れましょう。


ちなみに今回のキッカケはHerokuのStackをアップグレードする時に起きたことです。

Herokuは、Linuxのバージョンを上げるためにStackを上げることがあります。
これにより、Rubyのバージョンが古いとデプロイが出来なくなることがあり、僕もRuby2.5を使っていたので、上げる必要がありました。

しかし、MySQL(mysql2というgem)を使うときに「何かのファイルをRuby本体に入れないと動かない」ということがあったのです。
この「何かのファイル」というのが今回紹介する「libmysql.dll」というファイルです。

Rubyがある「bin」フォルダに「libmysql.dll」を貼り付ける、というところが今回のポイントです。
ファイルは
http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-6.1.11-win32.zip

上記のリンクから直接ダウンロードします。
かなり原始的な方法ですが、これがすべてです。

「gem mysql2をインストール時にエラー「You’ve installed the binary version of mysql2.」が発生した場合」
https://mebee.info/2020/07/22/post-14994/

以上、何かの参考になれば幸いです。

Windows10 + Docker環境でRuby on Railsの環境を作る方法

どうも、りーずです。

Windows10 + Docker環境でRuby on Railsの環境を作る方法です。

DockerというのはWindowsやMacでLinuxの仮想環境をカンタンに作れるもので、いまではアプリをインストールするだけで使えるようになります。

詳しくは

Windows10 ProでDockerを使ってみる。Docker Desktop for Windows。【メモ】

こちらの記事をどうぞ。

さて、このDesktop for Windowsをインストールし、Dockerが起動できるようになってから実際にRuby on RailsをDocker経由で動かす方法です。

実際に動作した時にツイートしたものがこちら。

ツイートに書いてあるものがすべてです。

【Windows】DockerでRuby on Rails開発環境構築方法
https://omathin.com/2020/12/29/docker-ruby-on-rails/

基本的に、こちらの記事の通りに行い、
docker-compose.ymlファイルで
image: mysql:5.

となっている部分を

image: mysql:5.7

というふうに、5.7を指定してあげます。(MySQLの5の最新バージョンは5.7だからです)

環境構築には

・Dockerfile
・Gemfile
・Gemfile.lock
・docker-compose.yml

の4つのファイルを自分で作ります。


具体的なコード

・Dockerfile

FROM ruby:2.6.7
RUN apt-get update -qq && apt-get install -y build-essential nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app

・Gemfile

source 'https://rubygems.org'
gem 'rails', '5.2.5'

最初はこれだけでOK。
DockerfileにあるRUN bundle installが実行されるとGemfileが書き換えられます。
(この記事の時点で最新のRails 5.2.6でプロジェクトが作られました)

・Gemfile.lock

Gemfile.lockは空のものを用意します。
コマンドを実行することで、中身が作られます。

・docker-compose.yml

version: '3'
services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
    ports:
      - 3000:3000
    depends_on:
      - db
    tty: true
    stdin_open: true
  db:
    image: mysql:5.7
    volumes:
      - db-volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
volumes:
  db-volume:

このようにファイルを用意したら

docker-compose run web rails new . --force --database=mysql

このコマンドを実行。
さらに

docker-compose build

を実行します。

database.ymlの中身で

password:
host: localhost

となっている部分を

password: password
host: db

このように変更します。
パスワードとホスト名を、docker-compose.ymlに記載したものと合わせるためです。

あとは
docker-compose up -d

というコマンドでRailsサーバーのコンテナとMySQLサーバのコンテナを起動させます。

そうしたら、

docker-compose run web bundle exec rake db:create

というコマンドで、データベースを作成します。

ひとまずこれでうまく動いてくれたので、メモ的に残しておきます。

mysql2というmysql接続用のGemの開発が2021年5月時点ではストップしています。

なので、Rubyのバージョンは2.6系の最新の2.6.7を選びました。

以上、簡単なメモでした。

また、こちらのYouTube動画ではMySQL8.0での環境構築方法を解説されているので貼っておきます。


その他、参考にさせていただいた記事:

・WindowsでDocker+Rails(MySQL)環境を作る+便利なツール紹介https://qiita.com/makicamel/items/af2cdbdffe65eaf5d24d

・Docker for Windows で Rails 6 + MySQL 8 の開発環境を構築する
https://qiita.com/y-kawaguchi/items/64c69967dc86efd31a57

iPhone 6sをiPhone XRにした話。

どうも、りーずです。

本日、iPhone 6sをiPhone XRにしました。

どうも最近、iPhone 6sが重くて、アプリの挙動が悪かったんですよね。
そして今年秋に発表されると言われているiOS15。ここでiPhone 6sのiOSサポートは切れると言われています(iOS14までのサポート)。

イオシスで中古のiPhone XR 128GB SIMフリー版をランクAで購入。
非常に綺麗です。傷といえる傷はなし。ほぼ新品ですね。
バッテリーの最大容量は91パーセントでした。これはAppleストアにいけばバッテリー交換できるので、問題なし。

税込みで48,800円、送料が640円。
合計金額が49,440円です。

また、データ移行の前にiPhone 6sのSIMロックを解除しておきました。
ドコモストアに行くと手数料(税込3,300円)がかかるらしく、ドコモストアで聞いたところネットやったほうが早いし無料、ということでやってみました。

「SIMロック解除は自分でできる! キャリア別の条件と解除方法を徹底網羅!」
https://www.soldi.jp/articles/method_of_sim_unlock/

上の記事を参考にしました。dアカウントが必要ですが、dマガジンやdアニメを利用していた事があったのでそのアカウントで行えました。
dアカウントにログイン。IMEI番号を入力して「解除する」とするだけです。
https://www.nttdocomo.co.jp/mydocomo/

検索窓で「SIMロック解除」と検索すると設定画面が出てきます。

次にバックアップ手順をサクっと解説。

・バックアップ(データ移行)してiPhoneを動かす手順

まずは、Windows10のiTunesとiPhone6s/iPhoneXRのiOSをすべて最新にしている必要があります。

①iPhone6sの完全バックアップをWindows10のiTunesで作成する。
(Windows10のiTunesで作成。iPhoneのバックアップを暗号化、にチェック。自動同期はOFFに設定。)
注意点は暗号化されたデータを復元するときにパスワードが必要になるので「バックアップ暗号化用のパスワード」を忘れないようにしましょう。これは自分で設定します。

過去に同様のことをしている場合は、一番最初に設定した暗号化パスワードが必要になります。
どこかにメモしておきましょう。
このパスワードを忘れると、再設定が出来ないようなので、注意しましょう。
http://iphone.f-tools.net/Trouble/iPhone-Backup-Password.html

僕も忘れかけてしまっていたのですが記憶の奥底から引き出しました。

②LINEの引き継ぎ設定をONにする。
(36時間以内に引き継ぎする)

③iPhone 6sからSIMカードを取り出し、iPhone XRに取り付ける。
(SIMロック解除をしていない場合は、この作業をする前にiPhone6sのSIMロック解除をしましょう)

④iPhone XRを起動。パスコードの設定などをします。

「新しいiPhoneとして設定」ではなく、既存のバックアップデータから設定、のような項目を選び、「Appとデータ」の画面で「Appとデータを転送しない」を選びます。
すると、空のデータでiPhoneのホーム画面まで行けるようになるので、そこからiOSを最新にします。Wifiに繋ぐ必要があるのでWifiのパスワードを用意しましょう。

⑤Windows10とiPhone XRを繋ぎ、iTunesでバックアップを復元する。
「iPhoneを探す」はOFFにしておく必要があります。

⑥iPhone XRのほうでLINEの引き継ぎ設定をする。

⑦構成プロファイルをインストールし直す(格安SIMの場合)
格安SIMの場合は、新しいiPhoneのほうでネットワーク設定をし直す必要があります。
「〇〇(会社名) iPhone プロファイル 」で検索すると出てくると思います。

mineoの場合は
https://support.mineo.jp/setup/guide/ios_network.html

コチラを参考にどうぞ。

「設定」>「一般」>プロファイル
の構成プロファイルというものがあるのでまずは「プロファイルを削除」
をします。
そのあとに上のURLから新しいプロファイルをインストールします。

インストールの方法は、ファイルをダウンロードしてから
「設定」>「一般」>プロファイル
に行けば「インストール」という表示が出てくるので、それを押すだけです。

⑧最後にiPhone XRの「iPhoneを探す」をONにすれば完了
です。

アップデート等に地味に結構時間がかかるので、暇な日の午後などにやると良いかもしれません。

(なんだかんだ色々インストールし直したり調べたりするので、3時間くらいかかりました)

あとは、iPhoneに触ると勝手にホーム画面がつくという挙動があったので

こちらで解決しました。

ログインし直す必要があったアプリ
・YouTube
Google系は、1つにログインすると他のすべてにログインしている状態になるようです(?)

・PUBG
PUBGはログインしたらグラフィックの設定なども前の端末のものと同じでした。

・Kindle
Kindleもログインする必要がありました。Amazonのパスワードです。
ただ、こちらは自動パスワード候補が出てきたので、実質何も入力していないです。

ログインし直す必要のなかったアプリ
他のアプリはほとんどログインした状態でデータ移行出来ています。凄い。
TikTok、Twitter、Facebook、Pixiv、discord、Mixchannel、ジモティー
など、メジャーなアプリからマイナーなアプリまで、ほぼすべて最初からログイン状態になっていました。

・iPhone XRの第一印象
横画面にしたときにステレオスピーカーになるのがとても良いですね。
iPadの必要性が少し薄れました。
あとはキーボード英語入力がとてもしやすいです!この画面サイズはアリですね。
この画面サイズでAppleペンシルが使えたら最強だな、と思いました。

iPhone自体は「もっと早く買い替えておけば良かった」というのが正直な第一印象です。当たり前かもしれませんが新しい製品は良いですね。
ただ、軽い処理でもちょっと熱を持ちすぎるのが気になっています。