ExpoでReactNativeアプリを起動するまで(Android向け)

ExpoでReactNative appを起動してみる。

  • 前回は、環境構築まで行ったがアプリをロード(起動)できなかった。

mizushou.hatenablog.com

  • 今回は、アプリのロードまでに行ったことをチェックリスト形式にして、Expoで作成したアプリの起動手順を書いていく。
  • Android実機とエミュレータでアプリを起動する手順になる。(ただ、チェックリストはプラットフォーム関係なく使えると思う。)
  • Expoを使う理由はReact Nativeの公式ドキュメントのQuick StartがExpo前提で書かれていたから。

facebook.github.io

Requirments

  • Node+Expo環境の構築(前回の記事)

What you will learn

  1. Expoでのサンプルアプリの作成手順
  2. Android実機とエミュレータ上でExpoで作成したReact Nativeアプリのロード

Let's start

1. まずExpoプロジェクトを作成

前回は適当に作成したので、Expoのドキュメントに従って作成してみる

docs.expo.io

1-1. Creating the project

  • プロジェクト名を指定してプロジェクトを作成する(指定したプロジェクト名のディレクトリがカレントに作成される)
expo init {project name}
  • 次に色々と聞かれる。ここではドキュメントに従ってtemplateはtabsを選択
  • 選択後、Expo CLIがプロジェクトを作成し始める。その際にreact, react-native, expoもインストールしてくれる。
  • 今回作成したプロジェクト
    • template : tabs
    • workflow : managed
    • name": first-app
    • slug : first-app

まず、template選択

shouhei-ubuntu% expo init
? Choose a template: 
  blank
  minimum dependencies to run and an empty root component 
❯ tabs
  several example screens and tabs using react-navigation

次に、workflowを選択

? Choose a template: expo-template-tabs
? Choose which workflow to use: 
❯ managed (default)
  Build your app with JavaScript with Expo APIs. 
  advanced (experimental 🚧)
  Build your app with JavaScript with Expo APIs and custom native modules. 

最後に、アプリのnameとslugを入力

shouhei-ubuntu% expo init
? Choose a template: expo-template-tabs
? Choose which workflow to use: managed
? Please enter a few initial configuration values.
  Read more: https://docs.expo.io/versions/latest/workflow/configuration ‣ 100% completed
 {
   "expo": {
     "name": "first-app",
     "slug": "first-app"
   }
 }

1-2. Confirm npm modules in current directory

  • インストール後、一応確認
  • webpackはインストールしたらERR消えたが、古いreact, react-nativeへの依存は放置した。
shouhei-ubuntu% npm list --depth=0
/home/shouhei/Documents/ReactNative/first-app
├── @expo/samples@2.1.1
├── babel-preset-expo@5.0.0
├── expo@32.0.3
├── jest-expo@32.0.0
├── mkdirp@0.5.1
├── react@16.5.0
├── react-native@0.57.1
└── react-navigation@3.1.2

npm ERR! peer dep missing: react-native@^0.55.4, required by expo-google-sign-in@2.0.0
npm ERR! peer dep missing: react-native@^0.44.1, required by react-native-reanimated@1.0.0-alpha.11
npm ERR! peer dep missing: react@16.0.0-alpha.6, required by react-native-reanimated@1.0.0-alpha.11
npm ERR! peer dep missing: webpack@^3.0.0 || ^4.0.0, required by url-loader@1.1.2

2. Start the development server

  • プロジェクトディレクトリをカレントにして、Metro Bundler?を起動
  • 起動すると、サーバーのURLexp://192.168.1.30:19000みたいなのとQRコードが表示される
cd {プロジェクトディレクトリ}
npm start
  • Metro BundlerというJSをBabelコンパイルしてくれるwebサーバーが起動するらしい(各キーワードの意味わかってない)

Expo CLI starts Metro Bundler, which is an HTTP server that compiles the JavaScript code of our app using Babel and serves it to the Expo app. It also pops up Expo Dev Tools, a control panel for developing your app, in your default web browser.

3. Open the app on your phone or simulator (For Android)

  • ここが前回詰まったところ。
  • 以下、起動成功までに確認とやってみたことリスト

3-1. 起動する前のチェックリスト

No. 項目 実機 エミュレータ
1 接続ネットワーク確認 必要 不要
2 Expoアカウント作成し、Expo CLIとExpo moile appにログイン 不要 不要
3 Expo moile appインストール 必要(PlayStoreから手動でインストール) 必要(ロード時に自動でインストールされる)
4 adbコマンドなどパスを通す 不要 必要
5 root権限で起動してみる 環境による 環境による

チェックリストNo.1

  • 実機の場合は、まずサーバーとなる自分のパソコンと実機が同じネットワーク内にあるのかを確認しておく必要がある。
ifconfig -a

チェックリストNo.2

  • ドキュメントには手順として書いてあったのでやっておいたが、必須ではなさそう。(ログインしておくほうが色々と便利な気はする、たぶん)
  • ExpoサイトまたはExpo CLIからでもアカウントは作成可能
  • Expo CLIと実機にインストールしたExpo moile appでログインしておく。
  • エミュレータの方はログインしたことないので不要?

チェックリストNo.3

  • 実機の場合はインストールしておく必要がある。
  • 上記の通り、作成したExpoアカウントでログインしておく

チェックリストNo.4

  • エミュレータの場合は以下のようにパスを通しておく必要がある
  • 最終的にはadbコマンドのパスが通っていることが最低限必要そうなので、2個目のコメントはmacOSだけと書いてあるが、Ubuntu機の私も行った。

If you are on macOS or Linux, add the Android SDK location to your PATH using ~/.bash_profile or ~/.bash_rc. You can do this by adding a line like export ANDROID_SDK=/Users/myuser/Library/Android/sdk.

--

On macOS, you will also need to add platform-tools to your ~/.bash_profile or ~/.bash_rc., by adding a line like export PATH=/Users/myuser/Library/Android/sdk/platform-tools:$PATH

--

Make sure that you can run adb from your terminal.

チェックリストNo.5

  • これは私の環境だけかもしれないが、これが私の環境では必須
  • /tmp/metro-cache/配下のオーナーがrootと一般ユーザがごっちゃになっていてpermission deniedで動かなかったので、結局root権限で起動している
  • ローカルの開発環境の権限設定とかもしっかりしたい。。。
sudo npm start

3-2. ひとまずこのチェックリストにあることをこなす

  • チェックリストを確認したら、
    • 実機の場合は、表示されたQRコードをExpo client appでスキャンすると勝手にアプリがロードされ起動する
    • エミュレータの場合は、起動したブラウザツールでのRun on Android device/emulatorをクリックすると勝手にロードされ起動する。(ここで気づいたけど、この手順はエミュレータだけでなくUSBで接続した実機でも同じ)
  • アプリ編集後、編集内容がアプリに同期されることも確認できた。
  • 本来ここまで大変ではないと思う笑
  • 以下の画像は実際に起動したサンプルアプリと起動後のMetro Bundlerの画面。

f:id:mizushou:20190204143533j:plain

f:id:mizushou:20190204143818p:plain

ReactNative+Expo環境構築 on Ubuntu

what you install

  1. Node(とnpm)
    • n packageでインストール
  2. Expo
    • This will start a development server for you.

how to set up

1. install Node

[参考]

qiita.com

1-1 nodejs,npmを用意

UbuntuにインストールされていたNodeとaptでインストールしたnpmがめっちゃ古い

  • 元々インストールされていたnodejs(パッケージ名はnodejs、、)
nodejs -v
v4.2.6
  • aptでインストールしたnpm
npm -v
3.5.2

1-2 n packageをインストール

shouhei-ubuntu% sudo npm install n -g 
/usr/local/bin/n -> /usr/local/lib/node_modules/n/bin/n
/usr/local/lib
└── n@2.1.12 

1-3 n packageを使って、最新のnodeをインストール

  • 以下のコマンドで最新版のnodeをインストール。以下は、インストール後の情報。
    • インストールディレクトリ : /usr/local/bin/node
    • Node : v4.2.6 -> v11.8.0
    • npm : v3.5.2 -> v6.5.0
shouhei-ubuntu% sudo n stable

     install : node-v11.8.0
       mkdir : /usr/local/n/versions/node/11.8.0
       fetch : https://nodejs.org/dist/v11.8.0/node-v11.8.0-linux-x64.tar.gz
######################################################################## 100.0%
   installed : v11.8.0

shouhei-ubuntu% /usr/local/bin/node -v
v11.8.0

1-4 シンボリックリンクを貼って、パスを通しておく

shouhei-ubuntu% sudo ln -sf /usr/local/bin/node /usr/bin/node
shouhei-ubuntu% node -v
v11.8.0
shouhei-ubuntu% npm -v
6.5.0

1-5 事前にインストールされていた古いバージョンのnodeとnpmをアンインストール

sudo apt-get purge -y nodejs npm

2. install Expo

  • React Nativeの公式ドキュメントよりExpoを使ってReactNativeのサンプルアプリを動かしてみる。
  • 実際はすんなり起動とはいかず、四苦八苦した。
  • 起動までの試行錯誤はまた別エントリで書くことにする

[参照]

facebook.github.io

2-1 install expo-cli

shouhei-ubuntu% sudo npm install -g expo-cli

3. create a React Native app via Expo

  • expoコマンドでサンプルプロジェクトをビルドしてみる
  • テンプレートやapp nameなどを入力するとビルドが開始する
expo init AwesomeProject
  • しかし、permissonエラーで失敗。(なぜここで、sudoで実行したのかは覚えていない。ドキュメントはsudoなしでコマンドを実行している)
shouhei-ubuntu% sudo expo init AwesomeProject
? Choose a template: expo-template-blank
? Choose which workflow to use: managed
✔ Please enter a few initial configuration values.
  Read more: https://docs.expo.io/versions/latest/workflow/configuration · 100% completed
[11:23:37] Extracting project files...
[11:23:37] Customizing project...
[11:23:37] Initialized a git repository.
[11:23:37] Installing dependencies...
npm ERR! code 1
npm ERR! Command failed: /usr/bin/git clone --depth=1 -q -b expo-font-fix git://github.com/expo/vector-icons.git /home/shouhei/.npm/_cacache/tmp/git-clone-58fb5883
npm ERR! /home/shouhei/.npm/_cacache/tmp/git-clone-58fb5883/.git: 許可がありません
npm ERR! 

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/shouhei/.npm/_logs/2019-02-02T02_23_56_300Z-debug.log
[11:23:56] Process exited with non-zero code: 1
[11:23:56] Set EXPO_DEBUG=true in your env to view the stack trace.
  • permission関連ぽい。~/.npm配下は一般ユーザがオーナーなのでrootでアクセスできなかったってことか?
npm ERR! /home/shouhei/.npm/_cacache/tmp/git-clone-58fb5883/.git: 許可がありません
  • 原因切り分けのため、一般ユーザで実行(というかドキュメントは元々sudoなしで実行している)
shouhei-ubuntu% expo init AwesomeProject               
? Choose a template: (Use arrow keys)
❯ blank
  minimum dependencies to run and an empty root component 
  tabs
  several example screens and tabs using react-navigation Uncaught Error { [Error: EACCES: permission denied, open '/home/shouhei/.expo/state.json.911742535']
  errno: -13,
  code: 'EACCES',
  syscall: 'open',
  path: '/home/shouhei/.expo/state.json.911742535' }
  • 今度は/home/shouhei/.expoらへんがおかしそう
EACCES: permission denied, open '/home/shouhei/.expo/state.json.911742535']
  • /home/shouhei/.expo配下がroot権限になっていたので、オーナーを変更
sudo chown shouhei:shouhei /home/shouhei/.expo
  • オーナー変更後、再度実行するとひとまずビルド成功。
  • WARNが出ているが、この後このままでもアプリは動作したので放置している。
shouhei-ubuntu% expo init AwesomeProject
? Choose a template: expo-template-blank
? Choose which workflow to use: managed
✔ Please enter a few initial configuration values.
  Read more: https://docs.expo.io/versions/latest/workflow/configuration · 100% completed
[11:40:10] Extracting project files...
[11:40:10] Customizing project...
[11:40:10] Initialized a git repository.
[11:40:10] Installing dependencies...
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN expo-google-sign-in@2.0.0 requires a peer of react-native@^0.55.4 but none is installed. You must install peer dependencies yourself.
npm WARN react-native-reanimated@1.0.0-alpha.11 requires a peer of react@16.0.0-alpha.6 but none is installed. You must install peer dependencies yourself.
npm WARN react-native-reanimated@1.0.0-alpha.11 requires a peer of react-native@^0.44.1 but none is installed. You must install peer dependencies yourself.
npm WARN url-loader@1.1.2 requires a peer of webpack@^3.0.0 || ^4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.7 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 858 packages from 426 contributors and audited 19840 packages in 59.389s
found 0 vulnerabilities


Your project is ready at /home/shouhei/Documents/ReactNative/AwesomeProject
To get started, you can type:

  cd AwesomeProject
  npm start

4. Start the development server

  • コンソールに表示された通り、プロジェクトのディレクトリをカレントにして起動する
cd AwesomeProject
npm start

5. Open the app on your phone or simulator

  • サーバーを起動させたら、
    • 実機の場合は、コンソールまたはブラウザツールに表示されるQRコードをインストールしておいたExpoアプリでスキャンすればアプリがロードされ起動する
    • エミュレータの場合は、AndroidStudioでエミュレータを起動させた後にブラウザツールのRun on Android device/emulatorをクリックすると自動でロードが開始する。(エミュレータの場合はExpoアプリは自動でインストールしてくれる)または、コンソールでaを入力するだけでもいい。
  • しかし、私の場合は初回は実機もエミュレータ共にエラーが起きて起動しなかった。
    • 以下が実際に起動した時のエラー
    • Something went wrongと表示された。ログを見ても同様のメッセージが表示されていただけだった。
    • 表示されたURLがexp:でアクセスしてるURLは普通にhttp:なのがいけないのか?などとにかく最初全く原因がわからなかった。
    • 起動するまでに何をしたかは別エントリで書くが、上手く行く時はまったく上記のこととか気にするこなく起動する

実機の場合(QRコードをスキャン)

f:id:mizushou:20190203232245j:plain

エミュレータの場合

f:id:mizushou:20190204005243p:plain

  • 以下エントリで動作までの手順(試行錯誤)を書いている

mizushou.hatenablog.com

Pythonのif文まとめ

Pythonのelifが最初よく理解できず、併せてfor文のネストも混乱したのでまとめておく。今回、if文を勉強するために参照した以下のサイトの図やコードを引用している。

www.programiz.com

What you will learn

Pythonのif文.

  1. if statements
  2. if...else statements
  3. if...elif...else statements
  4. nasted if statements
  5. nasted if statements with elfi (same sa switch statement)

Notice

  • インデントが重要
    • Pythonのif文のbodyはインデントで表現する。なのでPythonにおいてインデントはより重要
    • Javaのように{}などでブロックは作成しない
  • elfiが特殊
    • Pythonにはdefaultではswitch-case文がないので、switch-case文などを書きたい場合にも活躍する
  • True : non-zero or non-null
  • False : zero or null

1. if statements

Synax

if test expression:
    statement(s)

Flow Diagram

f:id:mizushou:20190113233942p:plain

Example

var1 = 100
if var1:
    print("1-Got a true expression value")
    print(var1)
var2 = 0
if var2:
    print("2-Got a ture expression value")
    print(var2)
print("Good bye!")

Output

1-Got a true expression value
100
Good bye!

2. if...else statements

Synax

if test expression:
    Body of if
else:
    Body of else

Flow Diagram

f:id:mizushou:20190113234141p:plain

Example

var1 = 100
if var1:
    print("1-Got a true expression value")
    print(var1)
else:
    print("1-Got a false expression value")
    print(var1)

var2 = 0
if var2:
    print("2-Got a true expression value")
    print(var2)
else:
    print("2-Got a false expression value")
    print(var2)
print("Good bye!")

Output

1-Got a true expression value
100
2-Got a false expression value
0
Good bye!

3. if...elif...else statements

Synax

if test expression:
    Body of if
elif test expression:
    Body of elif
else:
    Body of else

Flow Diagram

f:id:mizushou:20190113234209p:plain

Example

var = 100
if var == 200:
    print("1-Got a true expression value")
    print(var)
elif var == 150:
    print("2-Got a true expression value")
    print(var)
elif var == 100:
    print("3-Got a true expression value")
    print(var)
else:
    print("4-Got a true expression value")
    print(var)
print("Good bye!")    

Output

3-Got a true expression value
100
Good bye!

4. nasted if statements

Synax

if test expression1:
    if test expression2:
        Body of if2
    else:
        Body of els2
else:
    Body of else1

Flow Diagram

f:id:mizushou:20190114223236p:plain

Example

var1 = 100

if var1 % 2 == 0:
    print("even number")
    if var1 % 5 == 0:
        print("multiple of five")
    else:
        print("not multiple of five")
else:    
    print("odd number")

Output

even number
multiple of five

5. nasted if statements with elfi (same as switch statement)

Synax

if test expression:
    Body of if
elif test expression1:
    Body of elif1
elif test expression2:
    Body of elif2
elif test expression3:
    Body of elif3
             .
             .
             .
else:
    Body of else

Flow Diagram

f:id:mizushou:20190114230308p:plain

Example

var = 2
if var == 1:
    print("case1")
elif var == 2:
    print("case2")
elif var == 3:
    print("case3")
elif var == 4:
    print("case4")
else:
    print("default")

Output

case2

Javaのswitch-case文で書くと...

public class SwitchCaseExample2 {

   public static void main(String args[]){
      int i=2;
      switch(i)
      {
     case 1:
       System.out.println("Case1 ");
       break;
     case 2:
       System.out.println("Case2 ");
       break;
     case 3:
       System.out.println("Case3 ");
       break;
     case 4:
       System.out.println("Case4 ");
       break;
  default:
       System.out.println("Default ");
      }
   }
}

Output

case2

Ubuntu16.04でjypyter-notebookのインストール

やったこと

  • jypyter-notebookを使うために、anacondaをUbuntu16.04にインストール
  • anacondaはpython,conda,jypyter-notebookまで含んでいるので、これをインストールするだけでほぼ完了

anaconda

export PATH=~/anaconda3/bin:$PATH
  • anacondaにはpython3.7.1condaがパッケージされている
  • パスを通すと、anacondaにバンドルされたpythonを使用することになる

python3

  • Ubuntu16.04にはpython3は入っているが最新版にapt-getでアップデートできない
  • pyenvというpythonのバージョン管理ツールを使って3.7.1をインストールした(anacondaに入っていたバージョン)
  • しかし、anacondaにパッケージされているpythonを使うので結局必要なかった
  • 以下を参照し、インストール実施したが3.7系のインストールに失敗する
  • 以下の通り、libffi-devをインストール後、再度実行したら成功
  • 繰り返すが、anacondaのpythonを使用するので必要なかった

juypyter-notebook

  • jypyter-notebookもanacondaに含まれていた
  • なので、起動するのみ
jupyter notebook
  • まさにMathematicaって感じで懐かしかった

インストール/アンインストール R3.5 on Ubuntu 16.04LTS

Precondition

  • This is in my case of install R3.5, So It's like a log.
  • I use Ubuntu 16.04LTS.
NAME="Ubuntu"
VERSION="16.04.5 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.5 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

Installation

1. Add an bellow entry in /etc/apt/sources.list file
  • Notice that https is not available in default in my enviroment.
  • In this case, you need install apt-transport-https to solve this problem.
deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/
2. If you had old one e.g. after uninstall old one, you should remove apt package lists.
$ sudo rm -rf /var/lib/apt/lists
3. Install the complete R system
$ sudo apt-get update
$ sudo apt-get install r-base
4. Confirm the version
$ R
R version 3.5.1 (2018-07-02) -- "Feather Spray"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

Uninstallation

1. Uninstall R-packages.
  • uninstall include removing configuration files.
$ sudo apt-get purge r-base
  • remove any packages that are no longer needed.
$ sudo apt-get autoremove

勉強の哲学 来るべきバカのために/千葉雅也/文藝春秋 [本の分類まとめ]

まとめた理由

本書、「第四章 勉強を有限化する技術」では専門分野へ入門するために本をカテゴライズしている. 今後、自分が何か勉強する際にこのカテゴライズを意識して本を用意しようと思ったため、本書における本の分類をまとめた.

勉強の哲学 来たるべきバカのために

勉強の哲学 来たるべきバカのために

本の分類

勉強の哲学での本の分類を以下にまとめた.

大カテゴリ 小カテゴリ 定義 役割 読む時期 用意する冊数 レベル
専門書(研究書) 入門書 分野への入門を目的として書かれた本. 教科書や研究所などではない. 勉強の範囲を「仮に有限化」する. 最初の半年~一年 複数
専門書(研究書) 教科書 *1 その分野の教科書. シンプルに専門分野の名前をタイトルにしているものが多い. 事典のように「引く」ものとして捉える. 入門書の後(または都度参考) 1
専門書(研究書) 基本書 (論文) 入門書、教科書に重要なものとして繰返し出て来る参考文献. 入門書、教科書を理解するために必要. 教科書の後(または都度参考) 必要に応じて

読む順序

基本的には以下の順序で読んでいく.

  1. 複数の入門書
  2. 教科書
  3. 基本書

専門書と一般書

本は大分類として、「専門書」と「一般書(専門書以外)」がある

  • 専門書:研究、学問、企業など建設的な議論が背景にある世界に身を置いている人が書いた本
  • 一般書:上記以外

(参照) 勉強の哲学 来るべきバカのために P.184

信頼できる人物や機関の情報を信頼する。

(参照) 勉強の哲学 来るべきバカのために P.185

勉強するにあたって信頼すべき他者は、勉強を続けている他者である。

(参照) 勉強の哲学 来るべきバカのために P.188

情報の比較を続けている、つまり、勉強を続きている人達は、何らかの「知的な相互信頼の空間」に属している。それは「研究」であり、最もシビアに言えば「学問」です。

(参照) 勉強の哲学 来るべきバカのために P.189

もう少し詳しく言えば、専門分野の業界や、学問の世界に直接・間接の関わりがあり、同種のテーマに関する他者との建設的な議論が背景にあるかどうか、です。

入門書の選び方

専門書から選ぶ. つまり信頼できる人が書いた入門書を選ぶ

*1:教科書は網羅的に書かれている. たいてい分厚くて、内容が非常に多いので、最初から最後まで読み通すのは困難だと思ってください。

数学・物理学び直し計画

学び直す理由

  • 高校〜大学(学部)までその場しのぎの勉強しかしなかったため、体系的に理解することなくチャンクも形成できなかった
  • そのため、数学を使えるレベルにまで達することができなかった
  • ずっとこのことが後悔としてあったので、いつか学び直したいと思っていた

目標

  • (大目標)量子力学のしっかりした教科書が読めるようなる
  • (小目標)数学・物理の公式に詰まっているTipsを理解。チャンキング形成

勉強方針

予定期間

  • 2018年1月 - 6月

予算

  • 教科書代:約3万
  • スタディサプリ:約6千円(六ヶ月)

勉強分野

分野 次の数学分野 関連する物理分野 教科書
線形代数 --- 全分野、量子力学 なるほど線形代数 (なるほどシリーズ),(サブ)マンガでわかる線形代数
微積分(解析学 ベクトル解析 全分野 なるほど微積分
微分方程式 ベクトル解析 全分野、力学 スバラシク実力がつくと評判の常微分方程式キャンパス・ゼミ―大学の数学がこんなに分かる!単位なんて楽に取れる!,(サブ)道具としての微分方程式―「みようみまね」で使ってみよう (ブルーバックス)
偏微分方程式 ベクトル解析 全分野、振動・波動論、量子力学 スバラシク実力がつくと評判の偏微分方程式キャンパス・ゼミ―大学の数学がこんなに分かる!単位なんて楽に取れる!
ベクトル解析 微分形式 電磁気学流体力学 なるほどベクトル解析
微分形式(微分幾何学 多様体、(本格的な)微分幾何学 解析力学電磁気学、相対論 曲線と曲面の微分幾何
複素解析 多変数複素函数
フーリエ解析 振動・波動論、量子力学 なるほどフーリエ解析,(サブ)高校数学でわかるフーリエ変換―フーリエ級数からラプラス変換まで (ブルーバックス)
  • 物理
分野 次の物理分野 関連する数学分野 教科書
力学 --- 微分方程式、ベクトル解析 なるほど力学
解析力学 統計力学量子力学 微分形式 なるほど解析力学
振動波動論 量子力学 フーリエ解析偏微分方程式
変分法 解析力学量子力学 --- 変分学入門 (基礎数学シリーズ)
電磁気学 光学、相対論、量子力学 ベクトル解析、偏微分方程式
統計力学 量子力学
量子力学 量子情報 線形代数 なるほど量子力学〈1〉,なるほど量子力学〈2〉,なるほど量子力学〈3〉
量子情報 情報と暗号

直近の計画

意気込み

  • ひとまず線形代数、波らへん潰せば量子力学はなんとかなるかな
  • 4万弱で学びなせれば安いものか