JavaScript(ベイビーステップ)
学習記録(10/27)
(0)
以下のサイトが初学者向けっぽかったのでここで勉強する。
https://qiita.com/azk0305/items/a13d494178d83fc8f2bc
(1) 学習環境の構築と基本的な書き方
・JavaScriptは、ブラウザの表示内容を動的に制御するための言語。
・Firefoxのスクラッチパッドの開発環境を利用可能。.jsで保存可能。
・ブラウザコンソールに情報表示→console.log("hello world");
(2) 変数とデータ型
・データ型に依らず全ての変数はvarというキーワードをつけて宣言する。
・練習1
var s = "あいうえお";
console.log(s);
・練習2
var a, b, c;
a = 3;
b = 2;
c = a + b;
console.log(c);
・練習3
var a = 123;
a = "あいう";
console.log(a);
//データ型に依らないため、エラーしない。
・varをつけないで宣言することも可能だが、上級者向け。
・JavaScriptのデータ型
・数値型(Number)
・文字列型(String)
・真偽値型(Boolean)
・配列型(Array)
・オブジェクト型(Object)→プロパティとメソッドを持つ。連想配列として利用可能。
・Null型(Null) →意図的に何も入っていないことを指定するための型。
・未定義型(Undefine) →初期化・定義されていない状態を表す型。
・typeofというキーワードで、変数に入っているデータの型を知ることが可能。
・練習4
var a = 123;
var b = "abc";
var c; // 初期化しない。
console.log(typeof a); // numberと表示される。
console.log(typeof b); // stringと表示される。
console.log(typeof c); // undefinedと表示される。
・予約語は以下で確認できる。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Reserved_Words
(3) 演算子および配列
・算術演算子
・ + → 数値の足し算
→ 文字列の連結
・ - → 数値の引き算
・ * → 数値の掛け算
・ / → 数値の割り算
・ % → 数値の割り算の余り
・練習1
console.log(123 + 456); //579
console.log("123" + "456"); //123456
・代入演算子
・ = → a = 1; 代入
・ += → a += 1; 加算して代入
・ -= → a -= 1; 減算して代入
・ *= → a *= 1; 乗算して代入
・ /= → a /= 1; 割り算して代入
・ %= → a %= 1; 割り算の余りを代入
・ ++ → a++; 1加算(インクリメント)
・ -- → a--; 1減算(デクリメント)
・配列
通常の配列とは、a[0]、a[1]、a[2]のようにインデックスが0から並んでいるものを指す。
・練習2 (配列の基本的な使い方)
var num = [ 10, 20, 30 ];
console.log(num[0]); //10
console.log(num[1]); //20
console.log(num[2]); //30
console.log(num[3]); //データがないため、undefined
・配列要素の追加と上書き
JavaScriptの配列は自由に拡張できる。既存要素の上書きも可能。
・練習3
var num = [ 10, 20, 30 ];
num[2] = 40;
num[3] = 50;
console.log(num[2]); // 40 (上書き)
console.log(num[3]); // 50 (拡張)
・多次元配列
var num = [[ 10, 20, 30 ], [ 40, 50, 60 ]];
console.log(num[0][0]); //10
console.log(num[0][1]); //20
console.log(num[0][2]); //30
console.log(num[1][0]); //40
console.log(num[1][1]); //50
console.log(num[1][2]); //60
・配列要素数の取得
JavaScriptでは、通常の配列はArray型のオブジェクト。
配列に要素が何個入っているかを調べるには、
Arrayオブジェクトが持つ、lengthプロパティを参照する。
・練習4
var num = [ 10, 20, 30 ];
num[3] = 40; //拡張
console.log(num.length); // 4 と表示される。
・連想配列
キーの文字列と値をペアで格納する配列のこと。
JavaScriptの連想配列には、専用の型(オブジェクト)が存在していない。
代わりにObject型のオブジェクトとして扱う。
・オブジェクトとはなにか。
・属性(プロパティ)を持つ。
・振る舞い(メソッド)を持つ。
・1つのオブジェクトと全く同じオブジェクトは存在しない。
・1つのオブジェクトは他のオブジェクトと関連性を持たせられる。
・練習5 (連想配列の基本的な使い方(プロパティに着目))
//連想型配列
var myself = {
"name" : "たかよう",
"age" : "26",
"seibetsu" : "男性"
};
//プロパティを参照する2種の記述方法
console.log(myself.name); //たかよう
console.log(myself["seibetsu"]); //男性
//参照したいキー名が入った変数をキーとして指定したい場合は[]の方を使う。
var pt = "age";
console.log(myself[pt]); //26と表示される。
・練習6 (連想配列要素の追加と上書き)
var myself = {
"name" : "たかよう",
"age" : "26",
"seibetsu" : "男性"
}
myself.age = 30; //要素の上書き
myself.pref = "東京都"; //要素の追加
console.log(myself.age) //30
console.log(myself.pref) //東京都
To Be continued → (4) 制御構文と関数
(4) 制御構文と関数
・if文
var season = "秋";
if(season == "春") {
console.log("春はあけぼの");
}
else if(season == "夏") {
console.log("夏は夜");
}
else if(season == "秋") {
console.log("秋は夕暮れ");
}
else if(season == "冬") {
console.log("冬はつとめて");
}
else {
console.log("エラー:存在しない季節です。");
}
・比較演算子
・ == 等しければtrue
・ != 等しくなければtrue
・ > 左辺が大きければtrue
・ < 右辺が大きければtrue
・ >= 左辺が右辺以上であればtrue
・ <= 右辺が左辺以上であればtrue
・ === 左辺と右辺が等しく、なおかつデータ型も等しければ、true
・ !== 左辺と右辺が等しくない、あるいは、データ型が等しくなければ、true
・論理演算子
・ && 論理積。and。条件式がどちらもtrueであればtrue。
・ || 論理和。or。 条件式がどちらかがtrueであればtrue。
・ ! 否定。true・falseをひっくり返す。
・練習1 (論理演算子)
//18歳以上65歳未満であれば、OKデスと表示する。
var age = 25;
if(age >= 18 && age < 65) {
console.log("OKデス");
} else {
console.log("禁じられています");
}
・練習2 (switch文)
var a = 3;
var b = 2;
var operator = "+";
switch(operator) {
case "+":
console.log(a + b);
break;
case "-":
console.log(a - b);
break;
default:
console.log("エラー:受付できない演算子デス");
}
・練習3 (while文)
// 1 から 10 までの和を求めるプログラム
var i = 1;
var sum = 0;
while(i <= 10){
sum += 1;
i++;
}
console.log(sum); //55
・練習4 (do-while文)
// 1 から 10 までの和を求めるプログラム
var i = 1;
var sum = 0;
do {
sum += i;
i++;
} while(i <= 10);
console.log(sum); //55
・練習5 (for文)
// 1から10までの和を求めるプログラム
var i;
var sum = 0;
for(i = 1; i <= 10; i++) {
sum += i;
}
console.log(sum); //55
・練習6 (for-in文)
var colors = {
"red" : "赤",
"blue" : "青",
"green" : "緑",
"yellow" : "黄"
}
console.log("英語名 => 日本語名");
for(var key in colors) {
console.log(key + "=>" + colors[keys]);
}
・breakとcontinue
途中でループを抜ける場合には、break。
1回分の処理をスキップしてループの先頭に戻す場合には、continue。
・練習7 (breakとcontinue)
// 1から20までのうち偶数のみの合計を求める
var i = 0;
var sum = 0;
while(true) { //無限ループにしておく。
i++;
if(i % 2 > 0) {
continue;
}
if(i > 20) {
break;
}
sum += i;
}
console.log(sum) // 110
・ブロック内の変数のスコープ
基本的にifやforのブロックの中で宣言された変数でも、
そのブロックの外から参照できてしまうので、注意。
・練習8 (スコープ)
for(var i = 1; i <= 5; i++) {
var a = 3;
console.log("ループ" + i + "回目:" + a);
}
console.log("ループの外:" + a);
・JavaScriptの関数の基本的な書き方
CやJavaなどの言語とは以下の点が異なる。
・functionのキーワードで関数を定義する。
・引数にデータ型の指定は不要。
・戻り値にデータ型の指定は不要。
・関数の定義よりも上で関数を呼び出しても、問題なく実行される。
・練習8
funcA(); // abc と表示される
var num = funcB(2, 3);
console.log(num); // 5 と表示される
// 引数なし、戻り値なし
function funcA() {
console.log("abc");
}
// 引数2つ、戻り値あり
function funcB(x, y) {
return x + y;
}
・javaScriptで用意されている組み込み関数(オブジェクトのメソッドではなく、関数。)
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Functions#定義済み関数
上記の中でも、以下の5つは良く使う。
関数名 説明
parseInt 文字列型→数値型(整数)に変換
parseFloat 文字列型→数値型(実数)に変換
isNaN 指定された演算結果の値が数値ではない型(NaN)かどうかを調べる
encodeURIComponent 指定された文字列をURLエンコードする。
decodeURIComponent 指定された文字列をURLデコードする。
・関数内の変数スコープ
・関数内で定義された変数は、その関数の中でしか参照されない。
・グローバル変数と同じ名前の変数を、関数内で再度宣言することが可能。
varをつければ再定義、varをつけなければグローバル変数の上書きになる。
・練習9
var x = 10; // グローバル変数x
function func() {
x = 20; // グローバル変数xを上書き
var y = 30; // ローカル変数y
console.log(x); // 20 と表示される
console.log(y); // 30 と表示される
}
func();
console.log(x); // 20と表示される
console.log(y); // この部分で 'yが見つからない' というエラーが発生する
・練習10
var x = 10; // グローバル変数x
var y = 20; // グローバル変数y
function func() {
var x = 30; // グローバル変数xとは別のローカル変数xを宣言
y = 40; // グローバル変数yを上書き
console.log(x); // ローカル変数の x が参照され、30 と表示される
console.log(y); // 40 と表示される
}
func();
console.log(x); // グローバル変数の x が参照され、10 と表示される
console.log(y); // 40 と表示される
・varをつけずに宣言した変数のスコープ
varをつけずに変数を宣言した場合、どこで宣言されても(関数内でも)、
グローバル変数となる。ただし、非推奨。
(5) 制御構文と関数
・JavaScriptの関数は、実は Function 型のオブジェクトである。
関数がオブジェクトであることの利点の一つに、
関数の定義を変数に格納できるというものがある。
・練習11
function getOne(){
return 1;
}
var f = getOne; //関数の定義を変数に格納できる。
console.log(f()); // f() と書くことで getOne関数が実行され、1 と表示される
・関数式と匿名関数(無名関数)
練習11では、つまり、getOne関数に f という別名をつけたことになる。
こうするなら、わざわざ getOne という関数名をつける必要は無いわけで、
次(練習12)のようにも記述できる。
このように、関数の定義を変数に代入する記述方法を関数式と呼び、
関数名をつけないで定義している関数のことを匿名関数(無名関数)
と呼ぶ。まとまった複数の処理を定義したいが、再利用を考える
必要がない(記述する場所でしか利用しない)場合は、匿名関数
を利用すると、余計なことを考える必要がないので便利。
・練習12
var f = function() {
return 1;
};
console.log(f()); // 1 と表示される
・練習13
var add = function(x, y) {
return x + y;
};
console.log(add(3, 2)); // 5 と表示される
・注意:関数式で関数を定義する場合は、その関数の呼び出しをする際、
定義した箇所よりも下に記述する。定義より前で呼び出すと
「その関数は見つからない」という内容のエラーになる。
・即時関数
通常の関数の定義でも関数式による定義でも、必ず関数を呼び出さない
と定義した内容が実行されない。ひとまとまりの処理を定義して、
さらに定義と同時に実行するための記述方法を即時関数と呼ぶ。
即時関数は、無名関数の利用例のひとつである。
・関数の使いかたまとめ。
・ひとまとまりの処理を定義(関数の役割)。
・利用する場面で定義し、その場でのみ利用(無名関数の役割)。
・定義と同時に実行する(即時関数の役割)
・即時関数の書き方は、関数の定義を括弧で囲み、
更にその直後に括弧をつけ、その中に引数に与えたい値を指定する
(引数がなければ空の括弧で良い)。
また、即時関数の実行結果を変数に格納するような記述方法も可能。
・練習13
// この記述だけで こんにちは、田中さん! と表示される
(function(name) {
console.log("こんにちは、" + name + "さん!");
})("たかよう");
・練習14
var sum = (function(a, b) {
return a + b;
})(3, 2);
console.log(sum); // 5と表示される。
・関数の引数に関数を指定する。
関数の引数に関数を指定して、関数の中で「引数として渡した関数」
を実行してもらうことがJavaScriptでは可能である。
・練習15
// 引数funcに渡された関数を実行する
var sumFunc = function(a, b, func) {
return func(a) + func(b);
};
// 13 が表示される(3 * 3 + 2 * 2の計算結果)
console.log(sumFunc(3, 2, function(x) {
return x * x;
}));
フリーランスエンジニアになるべきか
大手企業に勤め6年がたった。後輩から愚痴を聞く中で、後輩が転職を強く希望していることがわかり、職場環境について改めて考える機会を得た。(1年前に退職を止められ、現在の企業に残った私だったが、やめたくなった時の気持ちを忘れていた。後輩のおかげでだいぶ楽をしていたようだ。) この気持ちを忘れないために、本記事を書くべきだと考えた。
大企業勤めについて
メリット
・社会的信用。ブランド。
・福利厚生の充実?と、平均年収よりも高い年収。
(福利厚生をキャッシュ換算し、残業しまくりで550万くらいか)
デメリット
・努力・成長する意味が見いだせない。危機感がない。
・やりたくない仕事が多すぎる。9割方雑用じゃん。
・ワクワク感はミリもない。
・簡単にはやめられない見えない力がある。(長期で休むとかはまず無理)
フリーランスについて
メリット
・人間関係のリセットの容易さ。
・自分がやりたい好きな仕事を選べる。
・年収がさらにUPする。(成果次第でさらにUPする。)
・ニートしようと思えばできる。
デメリット
・社会的信用を失うかも。
・福利厚生はない。
まとめ
・年収については、エージェントに聞いてみないと正確なところはわからない(働いてみないとわからないかもだ)が、派遣さんを雇った時には、募集要項をちょっとも満たしていない人材だったにも関わらず、月80万で発注していた。この経験からエージェントに15%として、未経験で月65万は最低ラインで可能と思っている。
別の関連会社さんには、月100万で発注していた。そもそも100万は日本的には普通であるように思う(高いから減らせないかみたいな話もあったかもだが)。ここからエージェントの15%を引くと、85万。技術力が十分で役に立つレベルであれば月85万が妥当と思われる。
企業からすれば、100万だろうが80万だろうがこき使える人材が欲しいことに変わりはない。使えなければ値段によらずキレたくなる。であれば、100万出してくれる会社に行くのが理に適っている。
月65万では、12か月で、780万
月85万では、12か月で、1020万
であり、上記は週5勤務で、むしろ残業がない分楽になってしまう可能性すらある。とはいえ、井の中の蛙である可能性や、実はコミュ力なさすぎるとか、そもそも受からないとか、市場価値なさすぎるとか、想像以上に不安定とか、個人事業主ならではの作業とか(税金、年金、保険)、色々懸念はあるわけだ。
お金と仕事とやりがいと
月65万ですら魅力的すぎるが、じゃあ月65万でいいやと即決すべきではない。技術の対価としてお金をもらうのだ。安く買いたたかれるべきではない。技術は就業前にでも身に着けるというスタンスで、十分に高価になるように交渉をすべきだ。
プログラム言語は、pythonがいいと思っている。誰が書いても同じようになるというのはとても理に適っている。自分は人のプログラムを読むのが苦手だが、規則性が見えれば理解が速い。そのため、規則性の強い言語であるpythonは仲良くなれそうだ。また、pythonエンジニアの年収は高い傾向にあるようだ。
つまり、エージェントには以下の希望を伝える。
・プログラム言語pythonで私に提案可能な最も高価な案件は何か。(その中からやりたいもの。ブラックでないものを選ぶ。)
・ゲームは少しは楽しそう。あまりにブラックでなければ、そこそこの速度でごりごりプログラムできそうな気がする。
・pythonは、就業前に実用レベルに仕上げることを約束する。(c言語5年、shellscript6年の実用経験を、pythonに横展開)。品質確保のための開発プロセスは十分に理解している。
・1年程度の長期案件がいいとおもうたぶん。(面接そんなに好きじゃないはず)
・そういえば、応用情報持ってた。少しは足しにならないだろうか。
・今後も市場価値を上げ続けるために、この案件でいいか。プログラム言語はこのままでいいか。
・税金を含んだ報酬か、別途税金分は支払われるか。エージェントさんのマージンは。
・1年目の月収はなぜ低めで、2年目以降あがるのか。そもそも企業から提示される金額は一定で、ここからエージェントさんが引く量が多かったりする?それとも、1年目に企業から提示される金額が低く、自分で値段を交渉するということ?
人生で大切にしたいこと
・サバイバル、危機感、仕方なく自己成長!
・人生は、自由度、多様性、キャッシュ!
仕事で大切にしたいこと
・愛想よく。(悪い:サラリーマン時代は不愛想)
・アウトプット主義(良い:サラリーマン時代は意識合わせのために聞きまくり)
・あるべき論をとなえる。(良い:サラリーマン時代はあるべき論唱えて生きてた)
・日本語や仕様書の力を思い出す。(良い:日本語や仕様書、そして開発プロセス順守が品質確保の基本。)
・日報を出す。(良い:誰かに報告しないと、やる気でない。)
・圧倒的なスピード感。(良い:頭の中で考えるな。文字に起こせ。)
株とシュレディンガーの猫
ツイッターに書くだけだと、忘れてしまうと気づいたので、メモ。
オリンピックバブルが終わったら試したい投資法がある。
過去最安値に近い底値にある超大手1銘柄を全力で拾い、半年~1年ごとに銘柄を変えていく。
これだけで年利20%くらい出せるんじゃないかと思っている。とはいえ最初からキャピタルゲイン狙いだと、「物欲センサー」が働くので、あくまで高配当狙いの建前を持つことが大切だ。(※後で物欲センサーの実在を考察しよう。)
過去の最安値を拾えば、「サイクルの力」が1年で20%のキャピタルゲインをもたらすと思っている。(※サイクルの存在は信じている。サイクルの力を測りたいと思っている。)
これが事実かを検証するには、過去のチャートを分析することが有効そうだが、過去のチャートをすべて見てしまうと、その中での底を見つけてしまい。底値が必ず存在する(サイクルが存在する)と思い込んでしまう。これでは、サイクルの存在を証明できない。そこで、チャートの全貌は見せずに、実在企業の過去40年分を1年ずつ見せてくれるツールがあれば、40年の追体験ができて未来予知の練習(サイクルの力の検証)ができるのにと思う。
2018年は、年初に買った中国電力が20%を超えた。20%を超えたところで、横ばいとなり、十分に上がる余地はあるが、下がる可能性もあるなと思う状況となった。過去5年間の投資経験では、ここで我慢して持ち続けた。たぶんこの局面は売ってしまうのが正解で、我慢して上がったとしても時間を無駄にしているし、下がったら目も当てられない。BNFが言うところの上がりそうもなければ売ればいいとはこういうことかなとも思った。
日本株は米国株と比べてサイクルが短い優位性があるように思う。米国株は、右肩上がりでサイクルを感じにくい。サイクル信者は日本株を買うべきだろう。
私が投資で思うことは、
・サイクルは存在しサイクルは力を持つ。
・物欲センサーは存在し欲しいものは得られない。
つまり投資で持つべきメンタリティは、
・サイクルの底で全力で仕込む。(このとき、超大手かつ高配当銘柄かつ国の後ろ盾がありそうで個人的に好感を持っている企業の銘柄を買うこと)
・本当に底かもっとよく見る。
・野生の勘にあっているか聞く。
・物欲センサー対策で、何も考えない。
[投資記録]
2018年年初~10月 中国電力 20%プラス
2019年は、 オリンピックバブル崩壊待ちでノーポジ予定
[ブログ始めて良かった]
赤丸で仕込んで、赤丸で売る。これに再現性を持たせたい。
この気持ちを1年もたつと忘れてしまう。ブログなら残るだろう。
(赤丸の位置に欲が出ているのがわかる。この例でも最大で20%のキャピタルゲインに2年くらい待たされる可能性はあった。それを待つための高配当である。)
リーグ・オブ・レジェンドでゴールド5になる方法
筆者は2012年season3の頃からLoLをしているが、全然うまくならない。ずっとゴールド5である。ゴールド5になる方法なら知っているので、以下にまとめておく。( 私はmidメインなので、midの話しかしない。 )
対面に勝たずにゲームに勝つ(マクロ)
・対面をkillする必要はないが、killを取られすぎたりpushに負けてはいけない。push勝ちしてジャングラーが動きやすくすることや、ロームして他レーンを壊し、firstタワーを取ることが大切である。
バカな味方のせいで負けたとか言わない(味方ゲー?)
・自分以外の味方はAIみたいなものだ。バカみたいな動きをしていても合わせてあげる、寄ってあげることで、小競り合いに勝つことができる。アイテムを買いたくてもリコールしてはならない場面は多い。味方とリコールタイミングを合わせることが理想だ。
最後にゲームの勝敗を決めるのは
・味方が交戦したタイミングで敵よりも早くに寄って火力を出すこと。そもそも敵の一瞬の隙を突くゲームである。5v5のにらみ合いは時間の無駄としか思っていない人は考えを改めた方がいい。あなたがファームに行った瞬間に4v5ファイトが始まることだろう。
・人数差を作ること。あるいは集団戦で活躍できるチャンプを使うこと。
・mapに敵ジャングラーが見えたら危険pingを鳴らしまくるのは、味方のdeath減って有効。
株式投資におけるセンスの磨き方
投資歴6年目になり、株式投資をする上で大切にしたいことが増えてきた。
それらを、本記事で体系的にまとめ、長期に渡りぶれない投資を行う算段だ。
大切にしたいこと一覧
・世間の情報を取り込まず、自身の投資手法を貫くこと。
・お金について考えること。何を失い、何を得るのか。
投資手法
以下の条件を満たすときに購入する。
・大手企業 (潰れない)
・高配当 (インカムゲイン、長期投資)
・チャートを見るに過去20年で底にいる (負けない投資)
・チャートを見るに2倍くらい狙えそう (キャピタルゲイン)
以下の条件を満たすときに売却する。
・購入時の条件を満たさなくなった場合。
・キャピタルゲイン目的(+20%~+100%で売却)
売却タイミングは難しいので、直感と思い切りが大切
・市場全体が長期に渡り大きく下げ続けると予想されるとき。
日経平均が高すぎる。
オリンピック不況が到来しそう。
野生の感を働かせて早い段階でノーポジションを貫く。
(ポジションの取りたがりは病気。リスクを取らないリスクとか意味わかんないこと言わないで。暴落後は絶好の買い場。)
顔の皮脂や毛穴を直す方法を見つけた[継続確認中]
筆者26歳。今から13年前、中学生のころに顔中の大量のニキビに悩まされた。時間の経過によってニキビは治ったが、赤ら顔、皮脂、毛穴は治らなかった。
直すためにいろいろやった。レーザー治療、皮膚科での処方、エステに通ったこともあるが、いずれも解決には至らなかった。レーザー治療、皮膚科での西洋医学的な治療は、肌の赤みを増すばかりであった。エステも特に効果はなかった。
今年の9月になり、前々から気になっていた漢方を試してみることにした。漢方は、西洋医学のうな表面的な解決アプローチではなく、体の中から、根本的な問題の解決に至れるという考えからであった。
まず、私の顔の赤みは血行不良からくるものとなんとなく思っていたので、血行不良に効く桂枝茯苓丸(けいしぶくりょうがん)を飲んでみたが、あまり効果を感じられなかった。(ちょっと健康になった気がした)
次に、顔の赤みに効くらしい、黄連解毒湯(おうれんげどくとう)を試してみたが、こちらも、あまり効果を感じられなかった。(粉タイプを買ってしまい、飲むのが苦痛であった。錠剤タイプを買うべきと教訓を得た。)
さらに、顔の皮脂には、半夏瀉心湯(はんげしゃしんとう)が効くらしく、さらに情報を集めていたところ、以下のサイトを見つけた。(人生の転換点たる運命的な出会いである)
上記サイトには以下のことが書いてあった。
・皮脂を抑えるためには、漢方(半夏瀉心湯と清上防風湯)を服用すること。
・黒烏龍茶(サントリー)を食事のタイミングで取ると皮脂が出ない。
・顔を洗う時には、ガーゼ(※1)を用いることで、不要な角栓を取り除く。
(※1)ガーゼの具体的な商品名は本ページの最後に記載。
実際にやってみた。
漢方について
半夏瀉心湯と清上防風湯を同時に服用するのではなく、半夏瀉心湯のみを服用した時に、赤ら顔が収まる事象となったため、半夏瀉心湯のみを服用することとした。(少し効果を感じており、継続確認中)
皮脂が出なくてびっくりする。皮脂が出ているのが当たり前になっていたので出ないということにびっくりした。毎食欠かさず飲むようになった。
毛穴が小さくなっている。すぐに効果が見える。1週間も試せば効果がわかる。
資生堂の論文によると、皮脂(不飽和脂肪酸)が肌荒れを起こし毛穴を開かせている。不飽和脂肪酸が肌荒れを起こすのを止めるのがグリシルグリシンであり、結果として毛穴が開かなくなる。
ガーゼによる洗顔
鼻の角栓をきれいに取ることができていない。現状効果を感じることはできない。
ここまでで、体の内側と体の外側の両面から、皮脂や、毛穴の問題を根本から直すことができつつあると感じており、今年中には良い報告ができそうだ。(2018/10/13現在)