うまい寿司が食いたい。

うまい寿司が遠慮なく食べれるようになるまで,進捗とか垂れ流すブログ

Autler-Townes効果について

この記事は数理物理アドベントカレンダー

adventar.org

20日の記事です。

動機

日本語でのAutler-Townes効果についての記事が殆ど見当たらなかったため,記載することにしました。
数理物理というより物理の話なので,大変申し訳無いのですが数学はありません。

概要

Autler-Townes効果は,振動電場によって原子のエネルギー準位が変わる現象です。
二準位モデルのエネルギー準位が変わる現象についてはあまり日本語の文献が見られなかったので,そこについて詳しく記載します。
三準位モデルに関しては,電磁誘導透過で調べると様々な文献があったので,ここでは割愛します。*1

そもそもAutler-Townes効果ってなに?

f:id:Leo0523:20181218202845p:plain
Autler-Townes効果の分類

原子や分子に電場をかけて準位構造を変えることをシュタルク効果と呼びます。
静電場をかけて水素原子の励起状態の縮退を解く問題は,摂動論で取り扱うことができます。
例えば,J. J. サクライの現代の量子力学下の第5章p. 416に一次のシュタルク効果として書かれています。*2

現代の量子力学〈下〉 (物理学叢書)

現代の量子力学〈下〉 (物理学叢書)

ここで,静電場ではなく,振動する電場,つまり光を原子や分子に照射したときにはどうなるのでしょうか?
上記の摂動論で取り扱ったときと同様にエネルギー準位の変化が起きます。
シュタルク効果の中でも振動電場によってエネルギー準位に変化が起きる現象をAutler-Townes効果と呼びます。
そのため,通常の静電場によるシュタルク効果をDC(直流の)シュタルク効果と書くことがあり,振動電場によるシュタルク効果をAC(交流の)シュタルク効果として書く場合もあります。
そのため,ACシュタルク効果をAutler-Townes効果は同じものを指しています。本稿ではこのAutler-Townes効果について説明します。

Autler-Townes効果の例

二準位モデル

f:id:Leo0523:20181218210814p:plain
光と二準位モデル

簡単のために二準位モデルに振動電場を与えた場合について考えてみます。
この二準位モデルには縮退はなく,基底状態と電子励起状態のみが存在していると仮定し,そこに共鳴な光を入射する状況を考えます。(図2)

このときのハミルトニアンは次のように書くことができます。
\mathcal{H}=\frac{1}{2}\hbar\Delta\sigma_z+\frac{1}{2} \hbar d\cdot E (\sigma_+ +\sigma_- )
一項目が二準位モデルのエネルギーを表すハミルトニアンで,二項目が二準位モデルと振動電場の相互作用を表すハミルトニアンです。
二準位モデルのエネルギーと電場のエネルギーの差が\hbar\Deltaで, \sigma_z=|e\rangle\langle e|-|g\rangle\langle g|,  \sigma_+=\sigma_-^\dagger=|e\rangle\langle g|をあらわしています。
電場との相互作用項は,電場強度Eが弱いのであれば摂動論を使って近似的に解きますが,今回はEが十分大きく,摂動論を使って解くことができない領域の話をします。*3
近似的に解けないので,ハミルトニアンを対角化して,
\mathcal{H}=\frac{1}{2}\hbar\Omega \sigma_{dressed z}
と書くことにします。ここで,[tex: \Omega = \Dleta \pm \sqrt{\Delta2+(d\cdot E)2}]です。*4
この対角化した状態は,光が原子系に纏った状態として認知されていまして,着衣状態(dressed state)と呼ばれています。*5

f:id:Leo0523:20181218225048p:plain
図3 ドレスト状態の模式図

ここでは,エネルギー固有状態2つだけのように見えますが,実際には光の|n\rangle|n-1\rangleでエネルギーの交換が起きているので,光子の個数分だけこのエネルギーの分裂が起きます。(図3)

f:id:Leo0523:20181219213911p:plain
図4 Mollo tripletからの発光
この状態からの発光は,図4のように3つのピークを持つようになります。これを発見者の名前に因んでMollow tripletと呼びます。*6
ここでは,入射光と同じエネルギーで発光するパスが二本あり,エネルギーが変わるパスが一本ずつあります。そのため,中心の発光ピークが周りの二倍になっているのです (図4 b)
B. R. Mollowが1969年に理論を提案したのが初出で,*7,1975年にナトリウム原子にて実験的に初めて検証が行われました。*8
最近でも,超伝導回路や,プラズモニクスのような共振器系でその実証が行われていた記憶があります。*9
発見自体は半世紀ほどの前の理論なのですが,最近でもMollow tripletを活用した理論の論文はありました。例えば,このMollow tripletから発光した2つの光子のエネルギーを適当に決めてあげることで,光子同士相関がインコヒーレントからコヒーレントまで選ぶことができます。 *10他にも,新たにできた準位に共鳴な二準位系を配置してやることで,通常は反転分布しない二準位系に定常的な反転分布を引き起こすことができます。これは,適当な条件にしてやると,入射光よりも高いエネルギーに反転分布を作り,そのエネルギーから取り出すこともできます。*11

このように,原理は基本的ですが,二準位モデルであっても変更した準位を使ってなにかを引き起こすことができうる現象です。*12

三準位モデル

二準位モデルは単純に発光スペクトルが変わるだけでしたが,三準位モデルではポンプ光によってプローブ光のオンオフのスイッチができます。
この現象を電磁誘導透過と呼びます。詳細は以下のURLに載っていたため*13,あまり触れませんが,これ自体も非常に面白い現象です。

optipedia.info

ポンプ光がない場合には,プローブ光で励起できる物質があるとします。
これをポンプ光を当てることで,固有状態を変えてしまって,プローブ光のエネルギーに対しては暗状態(光で励起できない状態,ダークステートといいます*14)を作ってしまい,プローブ光が透過するように物質の状態を操作します。

その他の現象

二準位モデルや三準位モデルの計算の詳細や,このあたりの興味深い量子光学の話しは概ね

Quantum Optics

Quantum Optics

こちらの本に幅広く記載されています。

まとめ

数理物理ではなく完全に物理の話でした。申し訳ありません。
Autler-Townes効果が振動電場によって原子のエネルギー準位が変化する現象を指します。
特に二準位モデルについて詳細にここでは記載しました。

*1:力尽きたとも言います。

*2:私の手元にあるのは第一版なので二版では異なる場所にあるかもしれません

*3:そもそも縮退していないので,分裂する準位もありません。

*4:対角化の計算は頑張ればできます。

*5:東大の大津元一先生が有名ですね。

*6:Mollow三重項?日本語の説明を見たこと無いので申し訳ないですがMollow tripletと書きます。

*7:B.R. Mollow, Phys. Rev. 188, 1969

*8:F. Y. Wu, R. E. Grove, and S. Ezekiel, Phys. Rev. Lett. 35, 1426-1975 (1975)

*9:探す時間がありませんでした。申し訳ありません。

*10:J. C. López Carreño and F. P. Laussy Phy. Rev. A 94, 063825 (2016).

*11:稚拙ですが私の論文です

*12:私も研究から離れて二年ほど経つので最近のキャッチアップはできていません。知っている方がおられたら教えていただきたいです。

*13:電磁誘導透過で調べると説明がたくさんありました

*14:中二病っぽいですよね笑

Dask メモリにのらない大規模なcsvデータの取扱について

Dask?

大規模なデータセットの並列処理用のライブラリ

なんで必要?

この記事を書いている時点(2018/11/11)で,kaggleのkernelのメモリが17.2Gしかないので,10Gぐらいあるcsvを読み込もうとすると,メモリエラーが起きます。
これを回避する方法として,pandasのread_csvchunksizeを指定してあげることがあります。
kernelとか見てると計算できていますし,それでもいいんですがchunksizeの間でデータセットが別れてしまうのが怖かったので,どうにかできる方法がないか調べているとDaskというライブラリがありました。

Dask: Scalable analytics in Python

Daskを使うことで,メモリにのらないデータであってもよしなに計算してくれます。

これ以外にもblazeというライブラリもあったのですが,githubの更新が二年ほど止まっているので使うのをやめました。

Ecosystem — Blaze 0.11.3+36.g2cba174 documentation

どう使う?

今回勉強したのはdataframeのところだけなのですが,そこだけを見るとpandasのように使えました。

import dask.dataframe as dd
ddf = dd.read_csv(`foo.csv`)

これで読み込みができます。ただ,中身のコードを呼んでないので,実際読み込まれているわけではなさそうです。
使用メモリサイズとpythonコンソールで出力されるddfを見てみる限り,csvファイルのcolumnsに少しだけアクセスしているように見えます。詳しい人がいれば訂正してください。

で,これのddfに対してpandasの基本的な関数はそのまま計算できるようです。例えば,

df = ddf["foo1"].max()

df = ddf.query("foo1 > 100")

などでpandasのdataframeを返す「準備」ができます。最後に,

df = df.compute()

compute()を実行することで,計算を返してくれます。
このタイミングでメモリ内にデータを配置して計算を進めてくれるようです。kaggleのkernelのメモリ使用量から判断しました。

まとめ

Dask

  • メモリにのらないデータでも,よしなにやってくれるライブラリです。
  • Dataframeのmethodはpandasの関数をそのまま使ってくれます。
  • 大きなcsvファイルでもそのまま計算を行ってくれるので非常に便利です。

pandasの前処理で使っているもの自分用まとめ

どんな記事?

pandasの前処理で使ったことのあるmethodの書いているウェブページなどをまとめていく記事。
用途は自分用。

どんどん追加していく(予定)

基本的に

に載ってそう。
ただ,外で突然調べたいときに,もう一度調べるのがめんどくさいので,時間があるときに少しずつ調べたmethodを書いておく。

列名をindexに変更する

set_index()

df.set_index("hoge")hogeがindex名に変わる。

note.nkmk.me

index名でmergeする。

pppurple.hatenablog.com

が詳しい。

mergeだったり,joinだったりする。

pandasの公式

pandas.DataFrame.join — pandas 0.23.4 documentation

を見たけど,nanを自動的にドロップする引数はないので,必要があればdropna()を使う。

dropna()

dropna()は列であれば,axisを指定しなくてもよいが,あとで読む人がわかりやすいように,axis=0と明示的に書いておいたほうが良さそう。
また,inplace=Trueを入れておくことで

df = df.dropna(axis=0, how=`any`)

と自分に代入していたのを,

df.dropna(axis=0, how=`any`, inplace=True)

と代入しなくてもよくなるので,このほうがわかりやすいだろう(ほんとか?)

reset_index()

unstackしたりしたときに,multicolumnsになったりするので,インデックスをリセットしてくれる。
multi columnsになったら,columnsがdataframeのnameになったりするので,それはどうにかできないか不明。

www.geeksforgeeks.org

intoli.com

画像の読み込みライブラリ

動機

先日までkaggleのTGS Salt Identification Challengeに参加していました。
あまりよろしくない結果だったので,内容については割愛します。
人のコードのコピペばかりだったので,そもそも画像をどのように読み込むのかよくわかっていませんでした。
さしあたっていろんなライブラリがある中で,どれか一つを使ってみようと思ったのが今回の記事を書くにあたる動機です。

pythonの画像読み込みのライブラリ

見つけたものは以下のものがあります。

  • pillow
  • imageIO
  • OpenCV
  • scikit-image

とりあえずすべてインストールしました,がOpenCVだけひどくインストールに時間がかかりました。
すべてインストールしたのですが,pathを通すことができずにしばらく放置していましたが記事を見て,解決しました。

参考にした記事

qiita.com

pillow

これだけ使ってみました。
importするのはPILで,これは,Python Image Libraryの略だそうです。

filepathさえ渡せば画像を読み込んでくれます。

例えば,TGS Salt Identification ChallengeのOpen solution journalでは,

from PIL import image

image = Image.open(img_filepath, 'r')

これで画像を読み込んでくれます。numpyへの変換も簡単で

import numpy as np

np.array(image)

でnumpyへと変換してくれます。PILの中でカラースケールの変換はについてはこちらの記事

qiita.com

にわかりやすく記載していました。

グレイスケールで,numpyに読み込ませるのであれば,

np.array(image.convert("L"))

で解決です。
マスクデータを作るために,バイナリ画像にしたいのであれば,

np.array(image.convert("L")).point(lambda x: 0 if x < 128 else 255, '1')

で変換ができます。この128の部分を適当な数値に変えることで,バイナリのしきい値をいじることができることがわかりました。

まとめと展望

pythonの画像読み込みライブラリをいくつかに並べました。
そして,pillowを使った画像の読み出し方について簡単に記載しました。
今後はscikit-imageやopenCV,pytorchやkerasの組み込みの画像読み込みも試してみたいと思っています。

CUDAのインストール〜Jupyter Notebookへのリモートアクセスまで

本稿は記憶の定着のための覚え書きです。

GPUが入っているUbuntuマシンが与えられたため,リモートでアクセスして機械学習を行う環境を構築しようとしています。
dockerで構築することも考えたのですが,とりあえずはLinuxの環境に慣れるために一度はマシン上に環境を作ってみようとしたので,その際に役立ったサイトなどをまとめておきます。
何番煎じになるのかわかりませんが,ググりながらしたことをまとめておくので,どこかの誰かの役に立てばいいなと思います。
仕事で作業をしたため,画面の図はありません。参考にしたサイトを見てください。

スペック

リモートマシン
OS : Ubuntu 18.04.01 LTS
GPU : Geforce GTX 1080

ローカルマシン
OS : windows 10
ローカルからリモートへのssh接続:putty

CUDAのインストールまで

CUDAがインストールできない!といろんなところで聞きますが,思ったよりあっさりインストールができました。

nvidia-smiまで

参考にしたサイト: https://www.server-world.info/query?os=Ubuntu_18.04&p=nvidiawww.server-world.info

この記事に従ってデフォルトで入っているnvidiaのドライバnouveauを消去し,Nvidiaサイトから必要なドライバのバージョンを見つけて,インストールします。

現段階で入力したのは

apt -y install nvidia-driver-390

でした。この-yは,すべてYesで返すというoptionだそうです(知らんかった)

インストールが終われば,nvidia-smiコマンドが使えるようになりました。

CUDAのインストール

参考にしたサイト: https://www.server-world.info/query?os=Ubuntu_18.04&p=cudawww.server-world.info

上の記事の続きです。(このサイトubuntuでやりたいことが一通りまとまっていて大変便利です)

apt -y install nvidia-cuda-toolkit

を入力するだけでインストールが終わりました。かなりあっさりしたインストールでした。

Pythonの環境構築

pyenv + anacondaで環境を構築しました。
pyenv経由でanacondaを入れる理由は,こちらに書かれています。
linuxだとanacondaはシステムのPATHを上書きしてOSのコンポーネントをシャドーイングしちゃうという凶悪仕様であるそうなので,ほぼ必須のようにここでは書かれています。(記事は2017/10月のもの)
私は「動けばよい」ぐらいにしか考えていませんので,現在も同じようになっているのかまでは確認できていません。

pyenv + anacondaの設定で参考にしたサイト

http://blog.algolab.jp/post/2016/08/21/pyenv-anaconda-ubuntu/blog.algolab.jp

少し古い記事(2016/8月)ですが,上のサイトを参考に環境を構築しました。
最新のanacondaを

pyenv install anaconda3-5.X.X

で入れました。細かい事項は上のリンクを参考にしてください

インストールまではできたのですが,

pyenv global hogehoge

をしてもanacondaの設定が反映されず,ターミナルのshellを実行しても機械学習用のライブラリがimportできませんでした。
これに関しては,例えば,このQiitaの記事にあるように,

pyenv shell anaconda3-5.X.X

とすることで,解決できました。

Jupyter Notebookにローカルマシンのブラウザでアクセス

参考にしたサイト starpentagon.net

jupyter notebook --generate-config

を実行すれば,jupyter_notebook_config.pyができるので,設定を変えればリモートからアクセスできました。
サイトに書いてある通りなのですが,

c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False

コメントアウトを外して書き換えればオッケーです。

ただ,現在(2018/10月)のNotebookのバージョンでは,この設定を行うとNotebook自体が立ち上がらなくなるため,ダウングレードする必要があるようです。

qiita.com

ここにあるように

conda install notebook==5.6.0

でダウングレードできるので,これでNotebookが立ち上がり,ローカルマシンのブラウザからアクセスできるようになります。

Notebookが立ち上がるけど,権限の問題で.ipynbが作れなかったので,画面上に出たエラーをそのままググると解答がありました。

sudo chown user:user ~/.local/share/jupyter 

でローカルマシンのブラウザからNotebookを作成することができるようになりました。
参考:https://stackoverflow.com/questions/46272880/cannot-open-new-jupyter-notebook-permission-denied

 まとめ

昨年までGPUはCPUの言い間違いかなって言っていた自分がここまでできるようになるとは思いもよらなかったです。
誤りなどあればおっしゃってください。すぐに訂正いたしますので。

ABC111で学んだこと。

昨日(2018/9/29)行われた,ABC111に参加した。
ただ,集中力が散漫でレートが落ちてしまったので,きっちり復習したいと思います。

AtCoder Beginner Contest 111 - AtCoder

以下,学んだことをまとめます。

A問題

猫のすぬけは文字を書く練習をしています。 すぬけは今日、数字の 1 と 9 を書く練習をしていたのですが、 間違えて 1 と 9 をあべこべに書いてしまいました。
すぬけが書いた 3桁の整数nが与えられます。
nに含まれる 1 という桁をそれぞれ 9 に、 9 という桁をそれぞれ 1 に置き換えて得られる整数を出力してください。

https://beta.atcoder.jp/contests/abc111/tasks/abc111_a

要するに,三桁の整数の9と1を入れ替えてくださいという問題

僕の回答はかなり間に合わせ的な回答で,

N = str(input())
print(N.replace('1','4').replace('9','1').replace('4','9'))

pythonの組み込み関数であるreplaceでとりあず,1を適当な数字(ここでは4)に入れ替えて,9を1に入れ替えました。
そして,最後に適当な数字を9に入れ替えるという方法を取りました。

ACになったコードを提出順にしてみて見てみます。

d={'1':'9', '9':'1'}
print(''.join(d[c] for c in input()))

kyunaさんの回答

1を9,9を1にする辞書を作っておいて,inputをkeyとして読み取る方法でした。
join関数の使い方をよく把握してなかったので,これは勉強になりました。

l=list(input())
for i in range(len(l)):
    if(l[i]=='9'):
        print(1,end="")
    else:
        print(9,end="")

ankush_sharma_GL さんの回答

for文とif文を組み合わせれば良いというのと,最後の改行をなくすために,end=""を入れればよいということがわかりました。

for文とif文を組み合わせるのと,join関数を使う方法として,

a = list(input())
for i in range(3):
    if a[i] == "1":
        a[i] = "9"
    else:
        a[i] = "1"
print("".join(a))

RyoTeiさんの回答
というものもありました。そのままだと,listオブジェクトになるので,joinが必要なんですね。よくわかりました。

賢いな,と思った回答としては,

n=int(input())
print(1110-n)

aytkdkさんの回答
がありました。これは本当に賢いと思います。

B問題

黒橋君は,AtCoder Beginner Contest (ABC) にまだ参加したことがありません.
次に行われる ABC は第 N 回です. 黒橋君は,初めて参加する ABC を第 x 回としたときに,x の十進法表記でのすべての桁の数字が同じであるようにしたいです.
黒橋君が初めて参加する ABC としてふさわしいもののうち,最も早いものは第何回でしょうか?

ゾロ目の大会に参加したい,という要請になります。 僕の回答は,if文の仕様がなぜかごっちゃになって冗長なコードになっていました。 いまから思えば,もっと簡単にかける気がしています。

n = input()

if int(n[0]) <= int(n[1]):
    if int(n[0]) == int(n[1]) and int(n[0]) >= int(n[2]):
        temp=int(n[0])
        print(temp*100+temp*10+temp)
    else:
        temp=int(n[0])+1
        print(temp*100+temp*10+temp)
else:
    temp=int(n[0])
    print(temp*100+temp*10+temp)

僕の回答 だいぶ反省をしています。

n = int(input())

a = -(-n//111)

print(a*111)

tokuさんの回答
多分これが正解なんじゃないでしょうか?
111で割って切り上げて,その値を111倍する。シンプルかつわかりやすいです。

切り捨てを使う方法として

n = int(input())
print(111 * (int((n-1)/111)+1))

minefyさんの回答
がありました。

この辺りを参考に,切り捨て・切り上げのことは頭に置いておきます。

C問題

数列 a1, a2,..,an が以下の条件を満たすとき、 /\/\/\/ と呼ぶことにします。
- 各 i=1,2, ...,n−2 について、ai=ai+2
- 数列に現れる数はちょうど 2 種類
偶数長の数列 v1,v2,...,vn が与えられます。 要素をいくつか書き換えることでこの数列を /\/\/\/ にしたいです。
書き換える要素の数は最小でいくつになるか求めてください。

回答できませんでした。

import collections

n = int(input())
v = list(map(int, input().split()))

if len(set(v)) == 1:
    print(int(n/2))

else:
    odd = v[0::2]
    even = v[1::2]
    if len(set(odd)) > 1:
        odd_c = collections.Counter(odd).most_common()[1:]
        values, odd_counts = zip(*odd_c)
        odd_num=sum(odd_counts)
    else:
        odd_num=0
        
    if len(set(even)) > 1:
        even_c = collections.Counter(even).most_common()[1:]
        values, even_counts = zip(*even_c)
        even_num=sum(even_counts)
    else:
        even_num=0
        
    print(odd_num+even_num)

僕の回答

これでWAでした。
理由は簡単で,最も多く出てくる数が同じ場合を考えてなかったためです。

1 2 1 2 1 1 2 1 3 1
このときに両者ともにすべての数字を1に変えるような操作の数を出力するようにしています。
コードも冗長であまりよろしくなさそうです。

さて,正解のコードを見る前に実装しながら学んだことを書いておきます。 まず

import collections

これを学びました。参考:ABCを解きながらググったサイト, 便利と書いていたQiitaの記事
具体的な中身は参考のサイトを見ればよいのですが,このcollections.Counter()関数を使うことで,リスト内に出てくる数のカウントをしてくれます。
ただ,このままですと出てきた順にしか出力されないので,.most_common()をつけてあげることで,頻度順に並びます。大変便利ですね。

次に,

 odd = v[0::2]
 even = v[1::2]

このリストの書き方です。
1つ目の引数から,2つ目の引数だけスキップして読み取ることができます。
これのお陰で,偶数リスト,奇数リストの作成が簡単にできました。

ここまでで,

  • 偶数,奇数番目だけのリストを作成することができる。
  • リスト内の要素を頻度順に出すことができる。

ようになりました。

これらを使ってどのように正解を導いているのか正答を見ていきます。

from collections import Counter


def solve(V):
    n = len(V)
    ac = Counter(V[::2]).most_common(2)
    bc = Counter(V[1::2]).most_common(2)

    if ac[0][0] != bc[0][0]:
        return n - ac[0][1] - bc[0][1]
    else:
        if len(bc) == 1 or len(ac) == 1:
            return n // 2
        else:
            return n - max(ac[0][1] + bc[1][1], ac[1][1] + bc[0][1])


if __name__ == "__main__":
    n = int(input())
    l = input()
    print(solve(l.split(" ")))

mitsuo0114さんの回答
ソートして,現時点で一番速いものを選びました。

most_common(n)でn番目までの要素を出してくれます。
今回の問題では「奇数番目の最頻値=偶数番目の最頻値」のときに二番目に出てくる要素の数を知る必要があるので,most_common(2)まで書けばよかったんですね。

次に,if文は三通りに分かれています

    if ac[0][0] != bc[0][0]:
        return n - ac[0][1] - bc[0][1]
  • hoge.most_common()[0][0]は,「最頻値が何か」
  • hoge.most_common()[0][1]は,「最頻値が何回出てきたか」

を出してくれます。

つまり上のコードでは,最頻値が同じでない場合に,全体から偶数のリストと奇数のリストの最頻値の数を引いています。
これで,入れ替えるべき数がわかるんですね。

    else:
        if len(bc) == 1 or len(ac) == 1:
            return n // 2

最頻値の数が同じとき,偶数リストと奇数リストの数字が完全に同じときに,こちらの数を返すようにしています。

        else:
            return n - max(ac[0][1] + bc[1][1], ac[1][1] + bc[0][1])
 ```
最後のelse文です。ここの解読に一番時間がかかりました。<br>
 - 偶数リストの最頻値と奇数リストの二番目の頻度で出てくる値の和
 - 偶数リストの二番目の頻度で出てくる値と奇数リストの最頻値の和
を取っています。<br>

この和の大きいほうが,入れ替えなくても良い数を最大化するものですので,`max()`関数を使うことで回答になります。<br>

読むと納得できますね。

# D問題

たどり着かなかったので,今回はありません。

ニンジンのポタージュ

概要

スープが好きなので,よくポタージュを作っています。
今回は初めて人参のポタージュを作ってみたので,それの作り方を置いておきます。
リンク先のブレンダーが便利すぎたので,その紹介です。

ブレンダーは実際に使ってみるまで便利さを感じていなかったのですが,使ってみると完成度がぐっと上がり感動しました。

目的

さきほどリンクを貼り付けたブレンダーを買うと,ポタージュの作り方が載っています。
そこには,ジャガイモとカボチャしかありませんので,今回はニンジンで作ってみました。
説明がくどいですが,料理歴一年未満のクソザコナメクジなので,私の考えていることをそのままトレースしたら面白いかなと思ったので,考えていることをそのまま書きました。
曖昧な調理方法は読んでいてよくわからないので,極力曖昧な表現を避けているつもりです。

あと,私の友人も,

とつぶやいているのですが,言葉だけでなく画像付きで作り方を共有してほしい,と思ったのも記事を書く目的の一つです。

用意するもの

  • バター(レシピには30gと書いているが,私はスプーン一杯分くらい使っています。)
  • 玉ねぎ(半玉)
  • ニンジン (今回は三本)
  • コンソメ(二個)
  • 水(600cc)
  • 牛乳(100cc, コップ一杯分)
  • 醤油(小さじ一匙分,味が薄ければ入れる)

ほとんどバターとコンソメで味がきまるので,バターの量はもっと多くてもいいかもしれません。美味しくなると思います。

ニンジンと玉ねぎは,適当に刻んでおきます。

f:id:Leo0523:20180826115655j:plain
図1: ニンジンの刻んだところ

作ってから思ったのですが,ニンジンのほうが火が通りにくいので,もうちょっと小さめに刻んだほうが良かったです。

f:id:Leo0523:20180826115640j:plain
図2:玉ねぎを適当に切ったところ

作り方

まず,図2の玉ねぎをバターで炒めます。私はバターで炒めるところは強火で炒めています。

f:id:Leo0523:20180826115703j:plain
図3:バターで炒め始め


ある程度しんなりしてくるまで炒めておきます。ここでいうしんなりは,

  • 玉ねぎがバターにしっかり絡んでいること
  • 玉ねぎが切ったときの色から少し変わっていること(透明感がなく白っぽくなりますよね?)
  • 押して柔らかくなっていること

の3つを満たしていると私は次の工程に移ります。

f:id:Leo0523:20180826115711j:plain
図4:しんなりしてきた玉ねぎ


ここに,ニンジンを投入して少し火にかけます。このあと水を入れるのであまり真剣に炒めなくてもオッケーです。

f:id:Leo0523:20180826115719j:plain
図5:ニンジンを加えたところ


玉ねぎとニンジンがしっかり撹拌されて混ざっている程度まで混ぜたら水を入れます。

f:id:Leo0523:20180826115726j:plain
図6:水を入れたところ


ここにコンソメを二個とも投入します。
あとは中火で一旦沸騰するまで温め,沸騰すれば弱火にします。

料理をしなかった頃は中火と弱火の定義がわからなかったのですが,

cookpad.com

を見て私は理解しました。

煮込む時間ですが,ニンジンに箸が刺さる程度まで弱火で煮込みます。
水が減ってきたら足してもいいです。
ここでニンジンを煮込む理由ですが,ブレンダーを使う際に野菜が柔らかくないとなかなか混ざってくれないためです。

f:id:Leo0523:20180826115734j:plain
図7:煮込んでいる状態


ニンジンが柔らかくなることが確認できたら,

の登場です。こいつには用途によってアタッチメントが変えられるのですが,今回は緑色のブレンダー機能を使います。

f:id:Leo0523:20180826115757j:plain
図8:ブレンダー前。ニンジンが柔らかくなっている。


ここで火を止め,鍋にブレンダーを突っ込みます。

f:id:Leo0523:20180826115804j:plain
図9:ブレンダーを突っ込んだところ。


このままぐるぐる回していきます。

f:id:Leo0523:20180826115820j:plain
図10:ぐるぐる回していることろ


固形物がなくなるまでぐるぐる回して,ブレンダーは終わりです。

f:id:Leo0523:20180826115842j:plain
図11:ブレンダー終わり


図9と図11を比較してもらえるとわかりやすいのですが,ブレンダーを使うだけでお店で売ってそうな美味しそうなスープに変身しました。
こだわるならばここでスープを濾すのですが,家で食べるだけなのでそこまでしません。

ここで味見をしてみると,ニンジンの味が強く甘かったので,自分の好みに合わせるべく醤油を小さじ一杯いれました。
最後の牛乳を入れて,弱火にかけます。

f:id:Leo0523:20180826115850j:plain
図12:牛乳と醤油を入れたもの


混ぜながら弱火にかけて全体が温まれば,完成です。

f:id:Leo0523:20180826115857j:plain
図13:完成品。ニンジンのポタージュ


完成品について

学生の頃に,大学の近くのくえろ・くえら,

堺市のイタリア料理屋パスタ中心くえろくえら | 中百舌鳥 白鷺 | 堺市イタリアンくえろ・くえら | 堺市イタリアンくえろ・くえら

という料理店によく行っていたのですが,そこのスープに近い味になると思います。
なかなか遠くて食べられないという方も多いと思うので,ぜひ作ってみてください。

また,夏場は暑いから〜と思われるかもしれませんが,冷やしても美味しいです。
今まで,ジャガイモ・カボチャ・ナスと試しましたがこれらの野菜では野菜の味もしっかり出て美味しかったので,他に試してみることがあれば僕にも教えてください。
好きなので作ります。

まとめ

  • ニンジンのポタージュを作りました。
  • ブレンダーは非常に便利。
  • 冷ましても美味しい。いろんな野菜で試しています。