ハトだって空を飛ぶ

ログです。よろしくおねがいします。

低温調理の安全性について~と畜場から食卓まで~

サボりすぎていた!! 申し訳ない気もしないし謝らないが、お久しぶりですね。創作以外の長文を書く気が出なかった*1から更新しなかった。特に何も変わっていない。

だけれど再び更新する気になったのは自分のツイートが発端になる。

 

 

このブログでしょっちゅうやっている低温調理についてだ。うん、そう、確かに食の安全は気になる。豚肉や鶏肉には良く火を通せだとか、中心温度75℃で1分間だとか、2気圧かけて120℃20分間だとか、他にも色々と食の安全を守る指示がある。

ところが低温調理はどうだろう。62℃だとか、低くして56℃とか、厚生労働省とか保健所が求めている食中毒予防に合致しない調理方法だ。時間はかけているけれど、それで食あたりとかしたら嫌だ。特に人に振る舞って他人に体調不良を起こさせたら一生の遺恨となりかねない。

味覚嫌悪条件づけ*2はたった1発で形成されうる*3し、忘れがたい*4上に、初めての低温調理ではなじみがないためにより強く*5学習されてしまう。これは生物が培った防衛機制の1つなのだろうが、少々厄介に思える。

さてここで人々が生煮えの肉を好むか嫌うかはどうでもいい。ここでは安全か危険かを吟味する。

まず安全な食肉の喫食には3つのファクターがあると私は考えている。

 

  • 温度
  • 時間
  • 発症菌数

 

以上3つのファクターだ。そして長くなるからまず低温調理について要点を言おう。

 

  • 規格基準に則って管理された食肉の内部はほぼ無菌であること。
  • 主要な食中毒原因菌は55℃以上では増殖できないこと。

 

以上の2点から55℃以上で行うブロック肉の低温調理は安全だと言える。ここから先は詳細や根拠が続く。

*1:創作を書いたとは言っていない

*2:Garcia 1955

*3:Etscorn,Stephens 1973

*4:Bouton 1982

*5:Kalat 1977

続きを読む

キューバサンドイッチはローストポークから

何となくで観た映画「シェフ 三ツ星フードトラック始めました」にキューバサンドイッチが出てて、とても美味しそうだった。だけど近辺でどこか食べられる所をと探すと、なかなかお高くまとまっていて難しそうだ。なら作ってしまえばいい話である。レシピをググって、手軽だけど本格派なものを探した。

www.foodnetwork.comという訳でこのレシピを参考にした。変更点は無数にあるが、主な変更点はローストポークを作る際に低温調理器を使った点だ。

先ずは材料の紹介である。

 

  • 豚肩ロースブロック 1kg
  • タマネギ 1玉
  • ニンニク 4片
  • 塩コショウ 10グラムくらい
  • クミン ティースプーン2杯くらい
  • オレガノ ティースプーン2杯くらい
  • オリーブオイル 適量
  • 唐辛子フレーク ティースプーン半分くらい
  • オレンジジュース 150ml
  • ライム 半分
  • エルプドプロヴァンス 適量
  • 鶏ガラの素(参考。入れ忘れた) 150ml分

 

まずはタマネギをスライスにし、ニンニクを潰してみじん切りにしてしまう。そうしたらソースパンか何かにオリーブオイルを敷き、まずにんにくを入れて火に掛ける。にんにくの香りが出てきたら今度はタマネギを炒める。

全体的にタマネギが茶色がかってきたら、そこにオレンジジュースとライムを搾った汁を入れて沸騰しない程度まで加温する。そして塩コショウ、クミン、オレガノ、唐辛子フレーク、エルプドプロヴァンス、本来なら鶏ガラの素も加えて良い具合に味を整える。これで調味液は完成だ。

豚肩ロースブロックは今回厚さ3センチメートルくらいにスライスした。そのままの塊でやると時間が掛かりそうなのと、味をさっさと染み込ませるためだ。勇気があればたこ糸か何かで塊肉を緊縛するといいだろう。

ジップロックに肉と調味液を入れ、よく行き渡らせる。そうしたら72℃に設定した低温調理器で3時間程度加温する。

出来上がったら肉を取り出して切ってみよう。ほんのりとピンク色なら大成功だ。

f:id:hydroxy:20170425191948j:plain

いつもならメイラード反応が欲しくて肉を焼いたりするが、今回は先にタマネギに火を通しておいたからパスした。そもそもローストポークにはあまり焦げ目が付くイメージが私にない。

味は大成功だった。私はキューバになんか行ったことがないが、なんとなくキューバを感じられた。正直言ってこのローストポークだけでいいくらいだ。美味しい。

調理後のジップロックに残る残り汁やタマネギはキューバサンドイッチには使わないが、あく取りをしてソースなんかに使ってもいい。ちょっと酸味が利いたグレービーソースになる。白米にも付き添えるだろう。

しかし本題はキューバサンドイッチである。材料を取り揃えよう。

 

  • パン(食パンかロールパン)
  • からし(ほんとはディジョンマスタードが良かった)
  • マヨネーズ
  • とろけるチーズ
  • ハム
  • バター
  • ピクルス(参考。今回はなし)

 

パンそれぞれにマヨネーズとからしを塗って、チーズ、作ったローストポーク、本来はここでピクルス、ハム、またチーズと挟む。チーズは熱で溶けて具材を接着する役目を負う。挟んだら鍋底や金属トレイで、手でも良いがプレスする。加熱しながらプレスするのは難しかったから最初から潰してしまおう。

フライパンにバターを使う分の半分だけまず溶かして、サンドしたものを焼く。ボケッとしてると

f:id:hydroxy:20170425191927j:plain

このザマだ。片面が焼けたら再びバターを溶かして残りの片面も焼く。良い具合になったら念願のキューバサンドイッチの完成だ。

ローストポークだけでも美味しいのにもっと美味しくなった。ピクルスがあったら最高以外の何物でもないだろう。そして合う飲み物は間違いなくモヒートだろう。今回は成功の部類だと思う。

映画は面白かったし、食べ物は美味しい。なかなか良かったと思う。

0から始める自分用mastodonインスタンス構築

はじめに

最近(2017年4月18日現在)話題のmastodon(マストドン)だけど、ある特定のインスタンス――例えばmstdn.jpやpawoo.net――にアカウントが集中するよりも個人がそれぞれインスタンスを持つべきという話を聞いた人も多いと思う。だけどインスタンスを立てるにはDockerがどうとかクラウドがどうとか、いかにも面倒でずぶの素人には難しそうな感触だ。
だけど、最近は便利な世の中になったもので、文字列を入力したりボタンをクリックするだけで簡単に交流可能なmastodonインスタンスを立ち上げることができた。たぶん問題があるし、セキュリティも良く分からないし、胸を張れるような方法ではないと私は思うけど、牛の角を矯めて牛を殺す必要はない。
長いわりに情報量も少なくて粗雑だけど、もしも興味があったら是非自分のインスタンスを持って欲しい。この記事はCUILinuxを扱ったことのない人間でも3時間のやる気と25USドルは支払えるクレジットカードがあればインスタンスを構築できるように書いたつもりだ。
そしてこれの執筆に際して、色々な記事を参考にさせて頂いた。この記事はそのキメラでしかない。だからこの記事以前の全ての構築方法の執筆者に僭越ながら謝辞を述べたい。

ドメイン購入

先に言っておくと【】で囲った部分は自分で入力する部分や書き加えたり消したりする部分だ。もちろん括弧それ自体は残さない。
さっさと本題に入ろう。まずはアマゾン ウェブ サービスに登録をする。その際にクレジットカードが必要になると思う。認証されるまでちょっと時間がかかるかもしれない。
登録と認証が済んだらまずはドメインを買う。ここが一番お金がかかる瞬間だろう。コンソールに入って「ネットワーキング & コンテンツ配信」カテゴリ内からRoute 53を開く。
Register domainからドメインを購入する。取りたいドメイン名を入力して、ジェネリックトップレベルドメイン(.comとか.orgの部分)を選んで次に進む。ここでジェネリックトップレベルドメインは.netをおすすめしたい。
次に進むと入力欄が出てくる。個人情報を入力するが、.netでは最後あたりのオプションでhide何たらかんたらを選べば隠せるから大丈夫だ。最後にネットショッピングと同じように買えば、自分だけのドメイン名が取得できる。ドメインの情報がインターネットに行き渡るには時間がかかるから、先に買っておく。買ったドメイン名はメモっておこう。

SSHの下準備

ドメインの次はクラウドである。コンソールトップに戻り、「コンピューティング」からEC2を開く。開いたらネットワーク & セキュリティ→キーペアを開き、キーペアの作成をクリックする。名前は適当でいい。キーペアを作ったら.pemをダウンロードする。
そしてPuTTYを導入する。ここからPackage filesの自分のパソコンのビット数に合わせて、分からなければ取り敢えず32ビットをダウンロードしてインストールする。
PuTTYのパッケージにPuTTY Genがあると思うから、それを開く。なかったら同じくここからダウンロードできる。開いたらloadからキーペアの作成でダウンロードした.pemを読み込み、Save private keyをして.ppk形式で保存する。これでSSHの下準備は完了だ。

インスタンス

いよいよクラウドを扱っていく。まだEC2のコンソールを開いてるはずだから、そのままEC2ダッシュボードから「インスタンスの作成」をクリックする。
まずはAMIの選択でUbuntu Server 16.04 LTS (HVM), SSD Volume Type - ami-afb09dc8を選ぶ。
次にインスタンスタイプだが、ここではt2.medium以上を選びたい。ここが第2の出費ポイントだ。
選んだら確認と作成をする。「インスタンスのセキュリティを強化します~」が出てるから「セキュリティグループの編集」からインバウンドのルールの追加でタイプHTTPで送信元は任意の場所として追加しておく。
更に「ストレージの編集」からサイズを16GiB以上にしておく。設定したら「作成」をする。キーペアはさっき作成したものを選ぼう。
ここからは時間を無駄にできない。クラウドは時間課金だから、速く構築できればできるほど余計な出費を抑えられる。もしやむを得ず離席したり寝る場合は、「インスタンス」→「アクション」→「インスタンスの状態」→「停止」をした後に「アクション」→「インスタンスの設定」→「インスタンスタイプの変更」からt2.microを選んでインスタンスを開始させよう。t2.microは無料枠だ。
インスタンスが作成・起動できたらまずネットワーク & セキュリティのElastic IPを開き「新しいアドレスの割り当て」をする。割り当てられたらそのまま「アクション」→「アドレスの関連づけ」からさっき作ったインスタンスを選んでプライベート IPを割り当てよう。

mastodon構築

次にPuTTY本体を起動させ、HostNameにubuntu@【インスタンスのPublic DNS (IPv4)】と入力する。インスタンスのPublic DNS (IPv4)はインスタンスの説明の所にあるはずだ。そしてConnection→SSH→AuthのBrowseからさっきの.ppkを選ぶ。これでとりあえず接続できるが、次回以降こんな面倒をしたくないならセッションを保存できる。
インスタンスに接続すると黒い背景に灰色で文字が出てくる。
そうしたら

 

sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get install -y python3-pip unzip docker.io && sudo pip3 install docker-compose && sudo apt-get install -y nginx && git clone https://github.com/tootsuite/mastodon.git && cd mastodon && cp .env.production.sample .env.production && nano .env.production


と貼り付けてEnterを押し、実行する。PuTTYをアクティブにして右クリックだけで貼り付けられるはずだ。
もし途中で(y/n)などと聞かれたらyを入力してEnterだ。
成功すると以の設定ファイルが表示される。マウスでの操作はできないので、矢印キーでカーソルを移動させる。

 

# Service dependencies
REDIS_HOST=redis
REDIS_PORT=6379
DB_HOST=db
DB_USER=postgres
DB_NAME=postgres
DB_PASS=
DB_PORT=5432

# Federation
LOCAL_DOMAIN=【取得したドメイン名】
LOCAL_HTTPS=true

# Application secrets
# Generate each with the `rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose)
PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=

# Optionally change default language
# DEFAULT_LOCALE=de
DEFAULT_LOCALE=ja【追記する】


Ctrl + O からのEnterで上書き保存し、Ctrl + Xで終了して元の画面に戻れる。
次に

 

sudo nano docker-compose.yml


で以下のようにして書き込んで戻ろう。

 

db:
    restart: always
    image: postgres:alpine
### Uncomment to enable DB persistance
    【#を消す】volumes:
    【#を消す】  - ./postgres:/var/lib/postgresql/data

  redis:
    restart: always
    image: redis:alpine
### Uncomment to enable REDIS persistance
    【#を消す】volumes:
    【#を消す】  - ./redis:/data


これをするとDockerがドッカーンと逝ったりどっかに行ってもどうにかなるらしい。言いたかっただけだ。
各種設定をしたら粛々と

 

sudo docker-compose build


を実行する。ここで時間がかかるからその間にロードバランサーを設定しよう。

ロードバランサー

EC2コンソールからロードバランシングのロードバランサー
Application Load Balancerを選ぶ
リスナー:HTTPS
アベイラビリティーゾーン:全て選択
ここで脱線してACM から新しい証明書をリクエストする。ドメイン名を入力して作成し、メール認証をする。ドメイン購入時に入力したメールアドレスに来るはずだ。作成できたらその証明書を選ぶ。
セキュリティグループは新しく作ってHTTPSでマイIP
ターゲットゾーンは名前を適当に決めてHTTPでヘルスチェックもHTTPだが/ではなく/about
インスタンスをポート80で登録して選択して作成する。
次にRoute53のホストゾーンを変更する。もうDomain registration successfulのはずだ。

Route53のコンソールに入り、Hosted Zoneから買ったドメイン名を開き、Create Record Setする。Alias:YesでAlias Target:はクリックすればさっき作ったALBが出るはずだからSave Record Setをする。
そしてEC2コンソールに戻ってネットワーク & セキュリティのセキュリティグループからインスタンスに関連づけられているセキュリティグループのインバウンド設定を変更する。80ポートを一つにし、送信元をカスタムにしてテキストボックスをクリックしてロードバランサーのグループIDを選ぼう。

構築の続き

ここまででPuTTYのビルドも終わっていることだろうから

 

sudo docker-compose run --rm web rake secret && sudo docker-compose run --rm web rake secret && sudo docker-compose run --rm web rake secret


を実行する。この前に時間がかかりすぎて接続が切れてたら再接続して

 

cd mastodon


をしてから実行する。
実行すると文字列が3行うじゃうじゃ出てくるからメモ帳か何かにコピーをしておく。

 

nano .env.production


で設定ファイルを開いて

 

PAPERCLIP_SECRET=【文字列】
SECRET_KEY_BASE=【文字列】
OTP_SECRET=【文字列】


にそれぞれを順当に書き込む。
そしたら

 

sudo docker-compose run --rm web rails db:migrate && sudo docker-compose run --rm web rails assets:precompile && sudo docker-compose up -d

 

を実行する。これでmastodonの構築は完了したけど、アクセスはできない。まだまだ設定が必要だ
そしてここでインスタンスタイプを無料枠やグレードの低いものにしても大丈夫だ。もし億万長者だったら強いインスタンスタイプで実行し続けるといい。

nginxの設定

 

sudo nano /etc/nginx/conf.d/mstdn.conf

 

を実行してまっさらなところに

 

map $http_upgrade $connection_upgrade {

default upgrade;

'' close;

}

 

server {

listen 80;

listen [::]:80;

server_name 【取得したドメイン名】;

 

keepalive_timeout 70;

sendfile on;

client_max_body_size 0;

 

root /home/mastodon/live/public;

 

gzip on;

gzip_disable "msie6";

gzip_vary on;

gzip_proxied any;

gzip_comp_level 6;

gzip_buffers 16 8k;

gzip_http_version 1.1;

gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

 

add_header Strict-Transport-Security "max-age=31536000";

add_header Content-Security-Policy "default-src 'none'; font-src 'self'; media-src *; style-src 'self' 'unsafe-inline'; script-src 'self'; img-src * data:; connect-src 'self' wss://【取得したドメイン名】;";

 

location / {

try_files $uri @proxy;

}

 

location @proxy {

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto https;

proxy_set_header Proxy "";

proxy_pass_header Server;

 

proxy_pass http://127.0.0.1:3000;

proxy_buffering off;

proxy_redirect off;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection $connection_upgrade;

 

tcp_nodelay on;

}

 

location /api/v1/streaming {

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto https;

proxy_set_header Proxy "";

 

proxy_pass http://localhost:4000;

proxy_buffering off;

proxy_redirect off;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection $connection_upgrade;

 

tcp_nodelay on;

}

 

error_page 500 501 502 503 504 /500.html;

}

 

をまるごと貼り付けて保存して

 

sudo nginx -s reload


を実行する。これでドメイン名からブラウザでアクセスできるようになる。はずだ。
もし成功したら喜ぼう。なんかダメだったら落ち込んで全てを壊してやり直そう。

アカウント作成

アカウント作成でメアドは@を挟んだ小文字英数字なら何でも良い。メール認証ではないから。パスワードは頑張って強めにしておこう。
作成したら再びPuTTYに戻ってきて

 

sudo docker-compose run --rm web rails mastodon:confirm_email USER_EMAIL=【アカウント作成で使った文字列】 && sudo docker-compose run --rm web rails mastodon:make_admin USERNAME=【ユーザー名】


を実行する。これでログインできるようになって管理者に昇格だ。
ログインしていつもの画面が表示されたら喜ぼう。なんか様子がおかしかったらちょっと残念に思おう。全く何も表示されなかったら落ち込もう。
設定画面の管理からのサイト設定でアカウントの新規登録を無効にしたりサイト名を変えたりすることができる。
サイトが動くことを確認できたら、ロードバランサーに割り当てたセキュリティグループの送信元を任意の場所にする。そうしないと外部とか他の人からアクセスできない。
最終確認にここが使える。A+の評価をもらえるはずだ。

仕上げ

 

sudo nano /etc/rc.local

 

で開いて

 

exit(0)の上に
cd mastodon && sudo docker-compose start
nginx

 

を書き込もう。こうするとインスタンスが再起動をしても自動的にmastodonが再開して手間が省ける。
ここまででとりあえず自分用mastodonの構築は完了だ。なお連合が寂しいのは仕様である。ガンガンフォローして賑やかにしよう。
他にもPuTTYでもう一回

 

nano .env.production

 

で設定ファイルを開いてお一人様モードなんてのにもできる。

 

# SINGLE_USER_MODE=true

 

の#を消せばいい。そうすると/aboutにアクセスした際に/@【最初のユーザー名】にリダイレクトする。
設定ファイルを弄くったら

 

sudo docker-compose stop && sudo docker-compose up -d

 

で再起動させるか、インスタンスごと再起動させてもいい。
この構築では他者のアカウント作成を想定していない。だから公式のインスタンス一覧に登録するのはどうかと思う。もしも他者のアカウント作成を想定したインスタンスを立てたいならメールの設定をする必要があるが、それはまたの機会か自力で頑張って欲しい。ここまでこれれば何となく分かってくるに違いない。

おわりに

わりと急ぎで書いた文章だから乱れてたり意味不明な部分もある。だから最終的には自分で調べたりどうしようもなかったら誰かもっと詳しい人に恥を忍んで聞くといいだろう。

そしてこんな方法で構築した私のmastodonインスタンスである。もしよかったらフォローして欲しい。

hydroxyquinol.net

2017年4月25日追記

 

仕上げの部分にcronの設定を加えた。既に立てた人も忘れないようにしよう。

 

また、この方法で立ててブーストボタンが表示されない症状に悩まされている人も多いかもしれない。それは私のミスで、セキュリティ項目を厳しく設定しすぎた。別にお一人様用なら必要のない項目かもしれないが、add_header Content-Security-Policyの部分だ。

直し方は、面倒なので最初からやり直してしまおう。

 

sudo rm /etc/nginx/conf.d/mstdn.conf

 

と実行して設定ファイルを消した後で

 

sudo nano /etc/nginx/conf.d/mstdn.conf

 

で開いて工程のnginx設定に書き換えたらもれなく

 

sudo nginx -s reload

 

で設定ファイルを再度読み込ませよう。