Autler-Townes効果について
この記事は数理物理アドベントカレンダー
の20日の記事です。
動機
日本語でのAutler-Townes効果についての記事が殆ど見当たらなかったため,記載することにしました。
数理物理というより物理の話なので,大変申し訳無いのですが数学はありません。
概要
Autler-Townes効果は,振動電場によって原子のエネルギー準位が変わる現象です。
二準位モデルのエネルギー準位が変わる現象についてはあまり日本語の文献が見られなかったので,そこについて詳しく記載します。
三準位モデルに関しては,電磁誘導透過で調べると様々な文献があったので,ここでは割愛します。*1
そもそもAutler-Townes効果ってなに?
原子や分子に電場をかけて準位構造を変えることをシュタルク効果と呼びます。
静電場をかけて水素原子の励起状態の縮退を解く問題は,摂動論で取り扱うことができます。
例えば,J. J. サクライの現代の量子力学下の第5章p. 416に一次のシュタルク効果として書かれています。*2
- 作者: 桜井純,段三孚,桜井明夫
- 出版社/メーカー: 吉岡書店
- 発売日: 1989/05
- メディア: 単行本
- クリック: 6回
- この商品を含むブログ (22件) を見る
ここで,静電場ではなく,振動する電場,つまり光を原子や分子に照射したときにはどうなるのでしょうか?
上記の摂動論で取り扱ったときと同様にエネルギー準位の変化が起きます。
シュタルク効果の中でも振動電場によってエネルギー準位に変化が起きる現象をAutler-Townes効果と呼びます。
そのため,通常の静電場によるシュタルク効果をDC(直流の)シュタルク効果と書くことがあり,振動電場によるシュタルク効果をAC(交流の)シュタルク効果として書く場合もあります。
そのため,ACシュタルク効果をAutler-Townes効果は同じものを指しています。本稿ではこのAutler-Townes効果について説明します。
Autler-Townes効果の例
二準位モデル
簡単のために二準位モデルに振動電場を与えた場合について考えてみます。
この二準位モデルには縮退はなく,基底状態と電子励起状態のみが存在していると仮定し,そこに共鳴な光を入射する状況を考えます。(図2)
このときのハミルトニアンは次のように書くことができます。
一項目が二準位モデルのエネルギーを表すハミルトニアンで,二項目が二準位モデルと振動電場の相互作用を表すハミルトニアンです。
二準位モデルのエネルギーと電場のエネルギーの差がで,,
をあらわしています。
電場との相互作用項は,電場強度Eが弱いのであれば摂動論を使って近似的に解きますが,今回はEが十分大きく,摂動論を使って解くことができない領域の話をします。*3
近似的に解けないので,ハミルトニアンを対角化して,
と書くことにします。ここで,[tex: \Omega = \Dleta \pm \sqrt{\Delta2+(d\cdot E)2}]です。*4
この対角化した状態は,光が原子系に纏った状態として認知されていまして,着衣状態(dressed state)と呼ばれています。*5
ここでは,エネルギー固有状態2つだけのように見えますが,実際には光のとでエネルギーの交換が起きているので,光子の個数分だけこのエネルギーの分裂が起きます。(図3)
この状態からの発光は,図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,あまり触れませんが,これ自体も非常に面白い現象です。
ポンプ光がない場合には,プローブ光で励起できる物質があるとします。
これをポンプ光を当てることで,固有状態を変えてしまって,プローブ光のエネルギーに対しては暗状態(光で励起できない状態,ダークステートといいます*14)を作ってしまい,プローブ光が透過するように物質の状態を操作します。
その他の現象
二準位モデルや三準位モデルの計算の詳細や,このあたりの興味深い量子光学の話しは概ね
- 作者: Marlan O. Scully
- 出版社/メーカー: Cambridge University Press
- 発売日: 1997/06/01
- メディア: ペーパーバック
- この商品を含むブログを見る
こちらの本に幅広く記載されています。
まとめ
数理物理ではなく完全に物理の話でした。申し訳ありません。
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).
*12:私も研究から離れて二年ほど経つので最近のキャッチアップはできていません。知っている方がおられたら教えていただきたいです。
*13:電磁誘導透過で調べると説明がたくさんありました
Dask メモリにのらない大規模なcsvデータの取扱について
Dask?
大規模なデータセットの並列処理用のライブラリ
なんで必要?
この記事を書いている時点(2018/11/11)で,kaggleのkernelのメモリが17.2Gしかないので,10Gぐらいあるcsvを読み込もうとすると,メモリエラーが起きます。
これを回避する方法として,pandasのread_csv
のchunksize
を指定してあげることがあります。
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の書いているウェブページなどをまとめていく記事。
用途は自分用。
どんどん追加していく(予定)
基本的に
前処理大全[データ分析のためのSQL/R/Python実践テクニック]
- 作者: 本橋智光
- 出版社/メーカー: 技術評論社
- 発売日: 2018/04/13
- メディア: 大型本
- この商品を含むブログ (1件) を見る
に載ってそう。
ただ,外で突然調べたいときに,もう一度調べるのがめんどくさいので,時間があるときに少しずつ調べたmethodを書いておく。
列名をindexに変更する
set_index()
df.set_index("hoge")
でhoge
がindex名に変わる。
index名でmergeする。
が詳しい。
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になったりするので,それはどうにかできないか不明。
画像の読み込みライブラリ
動機
先日までkaggleのTGS Salt Identification Challengeに参加していました。
あまりよろしくない結果だったので,内容については割愛します。
人のコードのコピペばかりだったので,そもそも画像をどのように読み込むのかよくわかっていませんでした。
さしあたっていろんなライブラリがある中で,どれか一つを使ってみようと思ったのが今回の記事を書くにあたる動機です。
pythonの画像読み込みのライブラリ
見つけたものは以下のものがあります。
- pillow
- imageIO
- OpenCV
- scikit-image
とりあえずすべてインストールしました,がOpenCVだけひどくインストールに時間がかかりました。
すべてインストールしたのですが,pathを通すことができずにしばらく放置していましたが記事を見て,解決しました。
参考にした記事
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の中でカラースケールの変換はについてはこちらの記事
にわかりやすく記載していました。
グレイスケールで,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自体が立ち上がらなくなるため,ダウングレードする必要があるようです。
ここにあるように
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()))
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="")
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問題 たどり着かなかったので,今回はありません。
ニンジンのポタージュ
概要
スープが好きなので,よくポタージュを作っています。
今回は初めて人参のポタージュを作ってみたので,それの作り方を置いておきます。
リンク先のブレンダーが便利すぎたので,その紹介です。
ティファール ハンドミキサー スティックミキサー クリック&ミックス プラス ルビーレッド HB865GJP
- 出版社/メーカー: T-fal(ティファール)
- メディア: ホーム&キッチン
- この商品を含むブログを見る
ブレンダーは実際に使ってみるまで便利さを感じていなかったのですが,使ってみると完成度がぐっと上がり感動しました。
目的
さきほどリンクを貼り付けたブレンダーを買うと,ポタージュの作り方が載っています。
そこには,ジャガイモとカボチャしかありませんので,今回はニンジンで作ってみました。
説明がくどいですが,料理歴一年未満のクソザコナメクジなので,私の考えていることをそのままトレースしたら面白いかなと思ったので,考えていることをそのまま書きました。
曖昧な調理方法は読んでいてよくわからないので,極力曖昧な表現を避けているつもりです。
あと,私の友人も,
今まで何度やっても今ひとつ納得いかなかった「トマトとコンソメと鶏肉を使った料理」、遂に市販のパスタソースを超えられる味にできた!ニンニクのすりおろし、バター、焦げるまで炒めた玉ねぎが答えやった!マジで嬉しい!
— とまと (@tomato12341) August 15, 2018
嬉しいので紹介すると、玉ねぎ1/2みじん切りを焦げるまで炒める、塩胡椒した鶏肉とトマト缶を加えて炒める 具が浸るまで水を入れ沸騰させてコンソメ追加。ある程度煮たらバターとおろしニンニク(多目)とお好みで鷹の爪を加えて煮詰める。塩で味を整えて、パスタの煮汁で乳化させたら黒胡椒で完成
— とまと (@tomato12341) August 15, 2018
とつぶやいているのですが,言葉だけでなく画像付きで作り方を共有してほしい,と思ったのも記事を書く目的の一つです。
用意するもの
- バター(レシピには30gと書いているが,私はスプーン一杯分くらい使っています。)
- 玉ねぎ(半玉)
- ニンジン (今回は三本)
- コンソメ(二個)
- 水(600cc)
- 牛乳(100cc, コップ一杯分)
- 醤油(小さじ一匙分,味が薄ければ入れる)
ほとんどバターとコンソメで味がきまるので,バターの量はもっと多くてもいいかもしれません。美味しくなると思います。
ニンジンと玉ねぎは,適当に刻んでおきます。
図1: ニンジンの刻んだところ
作ってから思ったのですが,ニンジンのほうが火が通りにくいので,もうちょっと小さめに刻んだほうが良かったです。
図2:玉ねぎを適当に切ったところ
作り方
まず,図2の玉ねぎをバターで炒めます。私はバターで炒めるところは強火で炒めています。
図3:バターで炒め始め
ある程度しんなりしてくるまで炒めておきます。ここでいうしんなりは,
- 玉ねぎがバターにしっかり絡んでいること
- 玉ねぎが切ったときの色から少し変わっていること(透明感がなく白っぽくなりますよね?)
- 押して柔らかくなっていること
の3つを満たしていると私は次の工程に移ります。
図4:しんなりしてきた玉ねぎ
ここに,ニンジンを投入して少し火にかけます。このあと水を入れるのであまり真剣に炒めなくてもオッケーです。
図5:ニンジンを加えたところ
玉ねぎとニンジンがしっかり撹拌されて混ざっている程度まで混ぜたら水を入れます。
図6:水を入れたところ
ここにコンソメを二個とも投入します。
あとは中火で一旦沸騰するまで温め,沸騰すれば弱火にします。
料理をしなかった頃は中火と弱火の定義がわからなかったのですが,
を見て私は理解しました。
煮込む時間ですが,ニンジンに箸が刺さる程度まで弱火で煮込みます。
水が減ってきたら足してもいいです。
ここでニンジンを煮込む理由ですが,ブレンダーを使う際に野菜が柔らかくないとなかなか混ざってくれないためです。
図7:煮込んでいる状態
ニンジンが柔らかくなることが確認できたら,
ティファール ハンドミキサー スティックミキサー クリック&ミックス プラス ルビーレッド HB865GJP
- 出版社/メーカー: T-fal(ティファール)
- メディア: ホーム&キッチン
- この商品を含むブログを見る
の登場です。こいつには用途によってアタッチメントが変えられるのですが,今回は緑色のブレンダー機能を使います。
図8:ブレンダー前。ニンジンが柔らかくなっている。
ここで火を止め,鍋にブレンダーを突っ込みます。
図9:ブレンダーを突っ込んだところ。
このままぐるぐる回していきます。
図10:ぐるぐる回していることろ
固形物がなくなるまでぐるぐる回して,ブレンダーは終わりです。
図11:ブレンダー終わり
図9と図11を比較してもらえるとわかりやすいのですが,ブレンダーを使うだけでお店で売ってそうな美味しそうなスープに変身しました。
こだわるならばここでスープを濾すのですが,家で食べるだけなのでそこまでしません。
ここで味見をしてみると,ニンジンの味が強く甘かったので,自分の好みに合わせるべく醤油を小さじ一杯いれました。
最後の牛乳を入れて,弱火にかけます。
図12:牛乳と醤油を入れたもの
混ぜながら弱火にかけて全体が温まれば,完成です。
図13:完成品。ニンジンのポタージュ
完成品について
学生の頃に,大学の近くのくえろ・くえら,
堺市のイタリア料理屋パスタ中心くえろくえら | 中百舌鳥 白鷺 | 堺市イタリアンくえろ・くえら | 堺市イタリアンくえろ・くえら
という料理店によく行っていたのですが,そこのスープに近い味になると思います。
なかなか遠くて食べられないという方も多いと思うので,ぜひ作ってみてください。
また,夏場は暑いから〜と思われるかもしれませんが,冷やしても美味しいです。
今まで,ジャガイモ・カボチャ・ナスと試しましたがこれらの野菜では野菜の味もしっかり出て美味しかったので,他に試してみることがあれば僕にも教えてください。
好きなので作ります。
まとめ
- ニンジンのポタージュを作りました。
- ブレンダーは非常に便利。
- 冷ましても美味しい。いろんな野菜で試しています。