pavlog

ウェブエンジニアがあれやこれやを書きます

ブログを移転しました。

あけましておめでとうございます。2023年も何卒よろしくお願いします。

タイトルの通りですが、ブログを移転しました。 当ブログの更新を全然していなかったのですが、新規作成したブログサイトへ移転となります。 記事の引継ぎ等は行わないので、このブログは当面残る予定ですが(1年は残ります)

ドメインは1年後に解約予定のためお気に入り登録等で読者になってくださっていた方はリンクを切り替えていただくか削除いただくのが良いと考えています。

次のブログサイトは以下になります。このブログサイトは Jamstack構成で作成したウェブサイトになります。 現在SEOも含めコーディングレベルで試行錯誤していますが、こちらはできるだけ更新頻度を落とさずに更新できたらと思っています。

まだgoogle AdSense 等もなく、記事数も少ないクリーンなブログサイトではありますがpavもといフナイをよろしくお願いいたします。

www.funailog.com

移転理由

移転理由は以下の記事にザクッと書いてあります。大きな理由はありません はてなブログに有料課金し続けるのが辛いとかはありますが、より自分の趣向にフォーカスした記事を書く予定です。

引き続きお付き合いくださいますよう、よろしくお願いします。 www.funailog.com

MacBookユーザーがWindowsへ乗り換える【ハード編】

f:id:paveg:20210110053211p:plain
PCパーツ群の画像

お久しぶりです。pavです。

コロナ禍でまた騒がしくなっている今日この頃ですね。

会社の取組のおかげもあって、ほぼ出社せずに自宅で仕事をすることができています。

コロナ禍以後、両手で数えるほどしか出社していません。

さて2020年にはM1 プロセッサのMacBookが発表されました。

しかし新しいものに飛びついたと見せかけて、最近ゲームをよくやるようになったことも後押ししてMacBookではなくWindowsPCを組むことにしました。

ここではその備忘録やメモを行っていこうと思います。


PC自作編

Windows OSの準備

インストール用に事前にUSBメモリにWindowsのインストーラーを作成しておきます。 アクティベートを行うにあたって、Windows OSを購入してください。

1000円以下の適当なUSBメモリも合わせて購入しておきます。

ここで新しく書くことはあまりないです。

僕の現在の母艦がMacBook Pro '15 なのでMacからインストーラを作成しておきます。

正しくインストーラを作成できなかったので、作成記事を以下に書いておきました。

MacでWindowsのブートメディアを作成する

パーツ群

今回、PCを組むに当たってはFHDで144FPSがでるような構成(且つ4Kもそれなりに)を検討していました。

実際には本命のグラフィックボードを手に入れるまで待てなかったので妥協しています。

TUF-RTX3080-10G-GAMING | ビデオカード | ASUS 日本

結果的に ZOTAC製のRTX3070を購入しています。

今回採用したパーツ群について、選定理由も含めて以下に書いていきます。

予算は大凡20~25万円を見込んでいます。

ディスプレイ、OS、キーボードなどは別となっていますので注意してください。

OSはWindows 10 Home editionのダウンロード版を購入しています。

マザーボード

ASUS ROG STRIX B550-F GAMING (WI-FI)

f:id:paveg:20210110043845j:plain

CPU

AMD Ryzen 7 3700X

f:id:paveg:20210110043906j:plain

グラフィックボード

ZOTAC GAMING GeForce RTX 3070 Twin Edge

f:id:paveg:20210110043854j:plain

SSD

SanDisk 内蔵 M.2-2280 SSD/Extreme Pro 500GB

f:id:paveg:20210110043836j:plain

HDD

Western Digital HDD 2TB WD Red NAS RAID 3.5インチ

f:id:paveg:20210110043840j:plain

Memory

Crucial (Micron製) デスクトップPC用メモリ PC4-25600(DDR4-3200) 16GBx2枚

f:id:paveg:20210110043859j:plain

電源

Corsair RM850x -2018-850W PC電源ユニット [80PLUS GOLD]

f:id:paveg:20210110043849j:plain

パーツについて

RTX3080が大本命でしたが、欲しいタイミングで入手することができず諦めてRTX3070にしています。

またマザーボードはBlueToothを利用したかったのでオンボードのものを購入しています。

今のところHHKB Hybirdと Bose Sound evolve+ を接続していますが、特に不具合ないです。

電源はCorsairのゴールド電源且つそれなりに容量を持ったものを採用しています(そもそもRTX3080を積む想定だったので、そのまま購入しています)。

自作PC組み立て

特に詳細には書きませんが、以下の順番で組み立てていきます。

  1. マザーボードにCPUを設置する
  2. CPUクーラーを取り付ける / リテールクーラーのグリスの評判が良くなかったので別売のものを買って利用しました)
  3. メモリを設置する
  4. SSDを取り付ける
  5. グラフィックボードを取り付ける
  6. 上記に電源を取り付けて、最小構成で起動を行う(BIOSが起動すればOK)*1
  7. ケースに設置して配線をする
  8. 再度BIOSの起動を行い、記憶装置の起動順を確認・変更する
  9. ブートメディアからインストールを実行する

おわりに

以上のようにPCを組んで、HDDの初期化とパーティションを行って利用できるようにしました。

今のところとても快適に利用できていますが、Trackpadの挙動が若干辛いのでマウスは別途購入予定です。

キーボードはコーディングをする分には問題ないですが、ゲームでの利用は行っていないので試してみようと思います。

*1:マザーボードに電源ボタンがなかったので、僕はケースにつけてから起動確認しました

【リケーブル】RMCE-BT2を購入したのでレビューをする【Shure】

bt-2 image
rmce-bt2

久しぶりにブログを書いています。

年明け初めてじゃないでしょうか。

年明け一発目からアレですが、最近ハイエンドイヤホンを購入しました。 買ったイヤホンは JH AudioのRoxanne 2 FMJです(中古)。

RoxanneII|Astell&Kern

元々Ultimate EarsのTF10を使っていたんですが、ケーブルが断線気味で接続が不調でした。 そのためか1年ぐらいTWS(トゥルーワイヤレスステレオ)ばっかり使っていたんですが、久しぶりに良いイヤホンで聞いたら全然違うじゃんとなってしまい…。

視聴環境は大学生当時のままで、当時はiPod Classic -> Sony PHA-1 -> TF10だったんですが、iPodClassicもバッテリーがお釈迦だったので、いい感じにしようと思って散財しました。

ざっくりこの記事ではRMCE-BT2のレビューをしようと思います。

RMCE-BT2

まず、BT-2がどんなものか紹介します。

www.shure.com

Shure社が販売するBluetoothリケーブルのことで、MMCXという規格を持ったイヤホンならBluetoothへの変更を可能にするものです。

Bluetooth® 5.0とShure独自設計のプレミアムヘッドホンアンプを搭載しており、音は非常に綺麗です。iPhoneで接続して音楽を聞いているのでコーデックはAAC / SBCなのですが、普段使いにはもってこいの商品です。

BT-2のよかったところ

非常に軽量でバッテリーも8時間程度持ちます。 最近はShure社の SE215 / SE425 / SE535 / SE846などとパッケージングされて売られていますし、とても快適に音楽を聞かせてくれます。 また接続も途切れることはほぼなく快適です。

BT-2の悪かったところ

BT-2本体にはクリップがついているのですが、硬すぎて薄い服にしか装着ができないことが個人的には大きいデメリットの一つでした。 本体を試聴して購入したもののこの部分は結構盲点でした。ケーブルの収納に難儀しました。

個人的な使用方法

現状DAPなどが手元にないので、iPhone -> BT-2という形で接続して聴いていました。 イヤホンはRoxanne 2ですが、イヤホン本体が4pin接続のためMMCX変換コネクタをかましています。 これが結構曲者で、イヤホンのケーブル長が伸びるためフィッティングが非常に悪くなります。

そのため、よく耳から外れて悲しい気持ちになったりイライラすることがありました。

どうするの

2週間ほど使いましたが、市場調査も足りなかったため Bluetoothレシーバというものを知ってしまいました。 こちらの商品は友人に譲ることにして、Bluetoothレシーバを購入し、使うと思います。

購入予定のレシーバ(アンプ)はこちらです。

FiiO BTR5 (FIO-BTR5-B)Bluetoothアンプ

おわりに

Shure 製品と組み合わせて使うのであればフィッティングもそれを考慮した作りになっているはずだし、快適に音楽や動画を楽しむことが可能だと思います。 今回僕はShure以外のイヤホンのリケーブルとして購入したので、売却に舵を切りましたが音を求める人にはおすすめしたい商品です。

ぜひ購入されてはいかがでしょうか。

【備忘録】brewで降ってきたhelmを2系に戻す【kubernetes】

こんちは。今年も残すところ僅かになりましたね。

Kubernetes向けのパッケージ管理ツール「Helm」が2019/11/13に公開されてから約1ヶ月が経過して、

有識者の皆さまにおかれましては、手元で試したりされていることと思います。

ツイートの通りではありますが…

本稿ではウッカリ brew upgrade を叩いてしまったウッカリさんのために、 更新されてしまった helmをv2へ戻すための手順を記載します。

前提

  • Homebrewでhelmをインストールしていること
  • helmが既に3系までアップデートされてしまっていること

(改めてにはなりますが、)Helmのバージョンについては以下のコマンドで確認することができます。

$ helm version

手順

実際にv2へ戻す手順は以下になります。

$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9a698c885051f99b629513cf38684675df2109f9/Formula/kubernetes-helm.rb
$ brew switch kubernetes-helm 2.16.1

commit hashはインストールしたいversionの修正を確認の上、指定してください。

Pull Requests · Homebrew/homebrew-core · GitHub

$ helm version
Client: &version.Version{SemVer:"v2.16.1", GitCommit:"bbdfe5e7803a12bbdf97e94cd847859890cf4050", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.16.1", GitCommit:"bbdfe5e7803a12bbdf97e94cd847859890cf4050", GitTreeState:"clean"}

おわりに

helm v3では、tillerが消えるなどの大きな更新が含まれています。

気になる方は以下の記事を参照されると良いと思います。

helm.sh

あくまでこの記事は備忘録的な記事ですが、記載内容等に間違いがありましたら是非コメントいただけますと幸いです。

関連リンク

Downgrade helm to previous version · Issue #45682 · Homebrew/homebrew-core · GitHub

【2019年度版】買ってよかったものベスト5

こんちは!この記事は 今年買ってよかったもの Advent Calendar 2019 の9日目です。

アドベントカレンダーは毎年書こうとは思っています(思っているだけ)。

僕自身、ネタの引き出しが恐ろしい少なさなため、深いことが言えないのが原因です。

なので今回は、この記事のように万人が見て楽しめそうなものにしました。

ブログで長々20個とか買ってよかったものを紹介している記事をみると辟易する昨今ですが、 短く書こうと思うので、最後までお付き合いいただけますと幸いです。

はじめに

Amazonだけで集計を行っても大分買い物しているな?と思っていましたが集計してみると大したことはなかったです。

2008年 :        2,940 円    1件 最高額 :        2,940 円 
2009年 :       14,202 円    4件 最高額 :        4,740 円 
2010年 :       45,025 円   12件 最高額 :        8,048 円 
2011年 :       28,782 円   15件 最高額 :        7,400 円 
2012年 :       60,787 円   13件 最高額 :       18,899 円 
2013年 :      159,629 円   43件 最高額 :       14,982 円 
2014年 :       32,401 円   18件 最高額 :        5,333 円 
2015年 :       96,195 円   22件 最高額 :       31,480 円 
2016年 :      168,573 円   56件 最高額 :       18,388 円 
2017年 :      189,088 円   71件 最高額 :       17,240 円 
2018年 :      196,388 円   69件 最高額 :       26,730 円 
2019年 :      230,270 円  106件 最高額 :       20,377 円 
総合計 : 1,224,280 円

総計みると若干頭が痛いですが…

2019年通して23万弱なのでまあ普通でしょう(2019年12月1日集計)。

スクリプトは以下にリンクするものを使わせていただきました。ありがとうございます。

Amazonの注文履歴を年毎に集計して出力します 利用額 / 注文件数 / 最高額(1注文での) 使い方はコメントを参照 · GitHub

Amazonについては上記の通りです。また、年内Amazonで購入したものの多くは消耗品です。

その他クレジットカードで購入できないものも含め、その全てから僕の2019ベスト5を書こうと思います。

買ってよかったものベスト5

5位

Nature スマートリモコン Nature Remo Remo-1W2(2nd Generation)

なにがよかったか

遠隔で空調などの操作が可能になります。

冬場は帰る直前に暖房を入れておいて、家に着いたと同時に暖かい状態を作り出せます。

ルールなども作っておけるので、この時間には必ず冷暖房を切るなどもできます。

僕の家のエアコンは古いため、夜寝る時に付けっ放しにすると乾燥がひどいのですが、そうしたことをなくすことができます。

風邪になりやすい原因を取り除いて生産時間を最大化できます。

4位

縦型電源タップです。

なにがよかったか

スマートホーム化には電源の口の数が結構必要です。

どうしても電源の数が足りなくなります。

足りなくなるたびに5口ぐらいのタップを買い足していたんですが、場所は取るし使わなくなっても邪魔なので、一個沢山口が付いているものが欲しくなりました。

現在USBと通常のコンセント合わせて15口ほど使っていますが、不調なく使えています。

3位

セサミ スマートロック本体 パールホワイト 取付工具不要 スマートフォンでドアを施錠解錠 Google Assistant/Siriショートカット/Apple Watch/IFTTT対応

なにがよかったか

物理鍵は身につけておくだけでよくなり、基本的にスマホで施錠解錠が可能です。

めちゃめちゃ便利。

www.pavlog.tokyo

今はセサミ miniというものが出ているのでそちらの方がコンパクトで取り付けも容易なので良いです。

また軽量だと落ちてしまいにくいので完全に上位互換です。

2位

パナソニックのドラム式洗濯機 キューブルです。

なにがよかったか

「まだ洗濯で消耗してるんすか?」というワードが飛び出してしまいそうになるぐらい快適です。

春先にやってくる花粉(やつら)を最小限部屋に入れたくないので、春は窓を開けない運用を考えています。

予約しておけば、ふかふかのバスタオルと服が家にある状態です。

それを見ながらお酒も飲めます。

配置はギリギリだったのでマンションに住んでいる方は搬入経路と置き場をよく確認する必要があります。

お湯で洗濯も可能なため、めちゃくちゃ汚れが落ちます。

メンテナンスが少し面倒臭いとのことでしたが、干すよりは楽です。

1位

僕の買ってよかったものの1位は、大型バイクです。

(車種はトライアンフの2019年式ストリートトリプルRSです。)

試乗車として置いてあったタマを購入しました。

2019/10/21に970kmぐらいの走行距離で納車されました。

記事を書いている2019/12/1時点で2936kmとなっていて、 2ヶ月経たずして2000km近く走っています。

なにがよかったか

特定の何かについて良いというのは難しいぐらい良いです。

生活の中心がバイクまたは仕事に寄っています。

直接空気に触れて、景色を見て走ることができる経験は他では味わうことができないと思っています。

まさに人馬一体で、駆け抜ける喜びといったところでしょうか。

納車の記事は以下です。興味があれば、ご覧ください。

bike.pavlog.tokyo

とにかく、限りある人生のうちに乗りたいと思っていたバイクに乗ることができたのでよかったです。

まだまだ乗りたいバイク(車も)はあるので、私生活が許す限り乗りたいなと改めて思った次第です。

おわりに

全体的に趣味と私生活に振った1年だった気がします。

生活はめちゃめちゃ豊かになっていて、使える時間が増えたのでその分趣味に時間を割いています。

兎にも角にも、ドラム式洗濯機は買っておいた方がいいので、めちゃめちゃ推しておきますね。

#27 golang.tokyo - Go Conference 2019 Autumn afterparty

golang tokyo #27 アイキャッチ

27回目のテーマは「Go Conference 2019 Autumn 2次会」です。

GoConの熱気が冷めないうちにgolang.tokyoとして非公式2次会を開催しました。

Go Conference 2019 Autumn | Home

今回のgolang.tokyoは以下のいずれかに該当するプロポーザルの発表がありました。

  • GoConに応募したが惜しくも採択されなかった方
  • 応募締切に間に合わなかった方
  • GoConに登壇したが採択されなかった別のプロポーザル

僕は運営兼ブログ枠としてgolang.tokyoに参加しました。

尚、受付をしていたこともあって発表内容を一部聞き漏らした部分もあるので、間違いがありましたらご指摘頂けると幸いです。

ていうかあんまり中身もないから、発表資料を是非読んでください。

DevQuiz

DevQuizに挑戦しても、しなくても問題ありませんが、参加することで抽選に有利になります。

遊び心を感じますね。ややこしい問題でした。

package main

import "fmt"

func main() {
    switch ok := false; {
    case true:
        fmt.Println("true", ok)
    case false:
        fmt.Println("false", ok)
    default:
        fmt.Println("default")
    }
}

#1 Create shell manager with golang

Twitter: Y.Komatsu (@yusuke_k0matsu) | Twitter

発表資料: https://speakerdeck.com/usk81/create-shell-manager-with-golang

Motivation

  • How to manage dotfiles?
  • 開発環境を共有すれば環境構築に1日使わなくてよいのでは?

そこで「自分とチームで共有したいものの管理が可能なツール」を作成した話

元々ShellScriptで書き始めた。ただ、お決まりのように条件分岐で肥大化し管理が難しくなりそうなことが判明 => Goで書くことに

感想

正直に受付であまり聞けなかった、すみません…

参照

#2 Multi Cloud Serverless Application Architecture

Twitter: 渋川よしき (@shibu_jp) | Twitter

発表資料: Multi Cloud Serverless Application Architecture最新版

「普通のEC2は人類にはまだ早い」

  • サーバーレス+マルチクラウドでいろいろやっていきたい
    • マルチクラウドはGo Cloud(Go CDK)で実現できそう

=> サーバーレスマルチクラウドアプリケーションできるやん

GCP Cloud FunctionsとAWS Lambda APIの違い

  • GCPはソースコードでアップロード
  • AWSはバイナリでアップロード

細かい各種制限やmainパッケージを使う使わないなどの違いがある

=> Cloud Functions / AWS Lambda向けにワンソースで動くように対応

まとめ

  • マルチクラウドサーバーレスアプリケーションは実現可能そう
  • Go Cloudはとても良い

感想

mainパッケージの違いを吸収するのが難しくシングルバイナリは厳しい

ただシングルソースではいけそうなのはよかったし、実際にやってみてできた話を聞けたのでちょっとワクワクした(やるとは言っていない)。

Go Cloudは触ったことなかったので、興味が湧いたから触ってみようと思いました。

また、Go Cloudについて連載をFuture Tech Blog で行われるそうなので、興味がある方は見てみると良いかもしれません。

future-architect.github.io

(受付でしっかり聞けなかった)。

参照

#3 uber-go/guide の解説

Twitter: かまたけんし (@knsh14) | Twitter

uber-go/guide*1を和訳してみた

Motivation

  • 英語の言い回しの勉強もできる
  • 翻訳しながらのほうが深く考えながら読める

github.com

uber-goのlintを実装した ulinterを作り始めたらしい(まだまだ完成は時間がかかりそう)。

できそうなところから実装中とのこと。

感想

翻訳関連は、権利関係の扱いが面倒臭そうだなと思ってやったことなかったので、とりあえずやってみるスタイルは(そう見えただけ?)良いかもしれない。

参照

#4 SaaS間連携における静的解析の活用

Twitter: yoheimiyamoto (@yoheimiyamoto_) | Twitter

発表資料: SaaS間連携における静的解析の活用

概要: SaaS間連携における静的解析の活用事例

連携元と連携先の間に例えばwebhookなどを噛まして、ASTを使って静的解析を行い条件を連携先に正しく出力することについての発表でした。

感想

多分一度読んだことある、tenntennさんの資料が出てきた 👀

たまに静的解析ツールを書こうと思ったりもするのだが、既に存在するもので満足してしまって未だに何か使えるものを作ったことはないので改めて勉強になりました。

参照

おわりに

何度かブログ枠でブログ書いてる気がするけれど、記事にするのめっちゃ難しいな!

golang.tokyo自体は盛況で、非常に濃いLTが多かったですが、このブログの内容は一層薄いものとなっております。

また久しぶりにお酒を飲んだところ、家に帰ってから疲れが噴出してしまったのであまり無理しないようにしようと思います。

*1:Uber 社内で使われてるスタイルガイド

【Oura】CLI & クライアントツールを作りました【API】

github.com

暇だったので、Goの勉強がてらOura CloudのAPI clientを作ってみました。

Ouraとはなんぞやという人は以下の記事をご覧ください。

【Oura Ring】最新のウェルネスリングの実力と購入方法 - pavlog

インストール

https://github.com/paveg/goura を cloneして以下のようにインストールします。

$ cd path/to/goura
# go がなければ入れる、goenvを使っていれば以下
$ goenv install -s
$ make install

これでインストールは完了です。 Homebrewでも公開しようと思いましたが面倒臭くて放置してます。

$ goura version
goura version: v1.0.0, revision: 13fac6f

できること

基本OuraCloudに生えてるAPIをGoから扱えるようにしただけなので、特に特徴的なことはありません。

helpコマンドを参照すると全て書いてあるのでそちらを見れば良いですが、簡単に書きます。

$ goura --help
goura is an Unofficial API client of Oura Cloud written in Go.
Complete documentation is available at https://github.com/paveg/goura

Usage:
  goura [command]

Available Commands:
  activity    Fetch activities
  configure   Fetch your access_token
  help        Help about any command
  readiness   Fetch readinesses
  sleep       Fetch sleep
  userinfo    Fetch user information
  version     Print the version number of goura

Flags:
  -h, --help   help for goura

Use "goura [command] --help" for more information about a command.

OuraCloudのClientID及びClientSecretを事前に設置しておいてください。

AccessTokenの取得

$ goura configure

とするとaccess tokenを取得します。 Webブラウザでページが開くので自分のアカウントでログインを行い認証します。

正しく実行すれば、 .goura.yaml がルートディレクトリ直下に作成されて情報が記述されます。

accesstoken: xxx
clientid: yyy
clientsecret: zzz
redirecturl: http://localhost:8888

これは、他のAPIを叩く時に利用されます。

APIを叩く

叩けるAPIは以下の4つです。

  • userinfo
  • activity
  • sleep
  • readness

実際に叩くには以下のように行います。

$ goura userinfo | jq .
2019/09/21 13:54:59 HTTP Request: 200 OK
{
  "age": 27,
  "weight": 54.2,
  "height": 170,
  "gender": "male",
  "email": "example@gmail.com",
  "user_id": "xxx"
}

また日付の指定が可能なAPIでは以下のように指定を行います。

範囲指定も可能ですが、1日に絞って指定しています。

$ goura readiness -t 2019-02-02 | jq .
2019/09/21 13:57:07 HTTP Request: 200 OK
{
  "readiness": [
    {
      "summary_date": "2019-02-02",
      "period_id": 0,
      "score": 77,
      "score_previous_night": 67,
      "score_sleep_balance": 64,
      "score_previous_day": 96,
      "score_activity_balance": 92,
      "score_resting_hr": 77,
      "score_recovery_index": 100,
      "score_temperature": 98
    }
  ]
}

おわりに

とくにこれといった大きな学びはないですが、実際にGoでAPIクライアントを作るのはとても楽しかったです。

また cobra などのパッケージを利用して開発ができて、次回以降CLIツールを作るのがすごい敷居が下がりました。

すでに rubyでもAPIクライアントは作成していますが、 その機能の少なさゆえにやることがあまり思い浮かばず、Slackへ睡眠の質が悪い時だけ通知するなどしています。

もしよかったら使ってみてください(雑)。

【GitHub】ステータスバッジの表示機能が追加されました【Actions CI/CD】

github eyecatch

めでたい🎉🎉🎉

このツイートにあるように、公式からステータスバッジの機能がドキュメントへ追加されました!

what's GitHub Actions and CI/CD

Actionsには触れていませんが、GitHub Actions CI/CDには以下で触れています。

www.pavlog.tokyo

Status badge

ステータスバッジは、ワークフローの失敗や成功を示すものです。

これを追加するのは一般的にはREADME.mdファイルなどですが、任意のWebページにも追加が可能です。

バッジにはデフォルトブランチ(通常はmasterブランチ)のステータスが表示されます。

Badgeの取得・添付方法

具体的には以下のページで触れていますが、わかりやすく説明を書いていこうと思います。

Configuring a workflow - GitHub Help

  • ワークフローにnameキーワードを使用している場合

以下のURLの通りにすることで貼ることが可能です。

https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg

具体例は以下です。


github-cicd-status-badge-example

WORKFLOW_NAMEの部分は以下の部分の情報を挿入します。 空白文字については、 %20 で表記する必要があります。

compilerbook/test.yaml at master · paveg/compilerbook · GitHub

  • ワークフローにnameキーワードを使用していない場合

(※試しましたが、うまく動かなかったのでわかり次第追記します。)

おわりに

ステータスバッジをwebページやGitHubのREADME.mdへ貼ることでワークフローのステータスも一瞥できるようにすると僕はテンションが上がります。

これを機会にぜひバッジを貼ってみてはいかがでしょうか!!!

【Migration】Nuxt 2.9がリリースされました🎉【TypeScript】

nuxtjs

2019/08/20に nuxt v2.9.0がリリースされました🎉

マイナーアップデートになりますが、様々な修正が含まれています。 実際にTypeScriptで使われている人は、修正が必須となります。

そこで実施した対応や自分で切ったIssueに触れつつ説明してみようと思います。

↓Tweetは以下↓



nuxt.jsとは

Nuxt.jsとはVue.jsアプリケーションを作成するフレームワークになります。 以下のアプリケーションを簡単に作成することを補助します。

  • ユニバーサルアプリケーション
  • 静的に生成されるアプリケーション
  • シングルページアプリケーション

また、Nuxt.jsのオフィシャルドキュメントでは

Nuxt.js はサーバーサイドレンダリングをもっと楽しめるように Vue.js アプリケーションの開発に必要な設定をあらかじめプリセットしています。

はじめに - Nuxt.js

変更点

  • 必須Nodeバージョンが8.9.0へ変更
  • TypeScriptのサポートが外部化
  • vue-metaパッケージが2.0.0へ更新
  • scrollBehavior optionが非推奨に変更
  • devModulesオプションが非推奨になり、buildModulesを使うように変更

重要な変更点のみ記載しています。詳細は、リリースを参照すると良いです。

Release v2.9.0 · nuxt/nuxt.js · GitHub

マイグレーション方法

2.8から2.9系へのマイグレーション方法についてオフィシャルには上記となります。

TypeScriptのサポートが外部化 されたため、移行にあたり変更が必須です。

feat: externalize typescript support by kevinmarrec · Pull Request #5858 · nuxt/nuxt.js · GitHub

GitHub - nuxt/typescript: TypeScript Support for Nuxt.js

変更手順

  1. nuxt.config.ts のdevModulesオプションをbuildModulesオプションへリネーム
  2. buildModulesオプションへ '@nuxt/typescript-build' を追加する
  3. @nuxt/vue-app@nuxt/config@nuxt/types へ置き換える
  4. TypeScriptのbuildオプションに '@nuxt/typescript-build' を追加する
  5. @nuxt/typescript-runtime をインストールする
  6. package.json のscriptを nuxtから nuxt-ts コマンドへ置き換える

Runtime (optional) | Nuxt TypeScript

実際に行った変更

Upgrade nuxt from v2.8.1 to v2.9.1 by paveg · Pull Request #24 · paveg/pwa-portfolio · GitHub

上記PRの中で実際に行った記述を記載しています。 詳しくは見てみると良いかもしれないです。

その際に、よくわからなかったのでIssueも切ってみました。

github.com

(半日も経たずコメントが返ってきて、nuxt.jsのコミュニティはクールだなあと思いました)

参照

おわりに

今回の変更はあまり大きいものではないですが、TypeScript + Nuxtで開発をしていてビルドがこけるようになるのでびっくりしました。

ですが、より柔軟なTypeScriptの設定追加などを見越した外部サポート化などの変更だと思うので、サクッとアップデートを行い開発すると良いでしょう。

この記事が、みなさまの参考になれば幸いです!

https://qiita.com/dojineko/items/b1eecc41f9016d2daa1d

kubectl execに環境変数DEBUGを与えると死ぬ

本稿は踏んでしまった地雷をメモしておくためのものです。

有益な情報は何もないと思うので、知っている方はぜひ戻るボタンを押してください…。

事象

手元で環境変数 DEBUG を設定してしまったが故に以下のような状態になります。

$ kubectl exec -it <podname> bash

kubectl-exec-debug

ネットワークログじゃないと気がしてる、全部吐いてますね

実際にDEBUG文字列がありそうなところを探してみる

~/src/github.com/kubernetes/kubernetes master
pav@ikezawa-ryota-5.local ❯❯❯ rg DEBUG | wc -l
     238

多分これや…

kubectl exec -i

なんかそれっぽいのでてる…

pav@ikezawa-ryota-5.local ❯❯❯ k exec --help
...
  -i, --stdin=false: Pass stdin to the container
...

pav@ikezawa-ryota-5.local ❯❯❯ k exec -i hello-minikube-56cdb79778-9dggl bash
I0820 21:59:20.053129   64687 log.go:172] (0xc000906160) (0xc00050a140) Create stream
I0820 21:59:20.053158   64687 log.go:172] (0xc000906160) (0xc00050a140) Stream added, broadcasting: 1
I0820 21:59:20.056704   64687 log.go:172] (0xc000906160) Reply frame received for 1
I0820 21:59:20.056743   64687 log.go:172] (0xc000906160) (0xc00055c000) Create stream
I0820 21:59:20.056755   64687 log.go:172] (0xc000906160) (0xc00055c000) Stream added, broadcasting: 3
I0820 21:59:20.058343   64687 log.go:172] (0xc000906160) Reply frame received for 3
I0820 21:59:20.058378   64687 log.go:172] (0xc000906160) (0xc00056c000) Create stream
I0820 21:59:20.058389   64687 log.go:172] (0xc000906160) (0xc00056c000) Stream added, broadcasting: 5
I0820 21:59:20.060473   64687 log.go:172] (0xc000906160) Reply frame received for 5
I0820 21:59:20.060496   64687 log.go:172] (0xc000906160) (0xc00050a1e0) Create stream
I0820 21:59:20.060505   64687 log.go:172] (0xc000906160) (0xc00050a1e0) Stream added, broadcasting: 7
I0820 21:59:20.081030   64687 log.go:172] (0xc000906160) Reply frame received for 7

参照

stackoverflow.com

この質問が僕を助けてくれました。

今日はもうむり、寝ます。

Rustの環境構築をする( vim, zsh )

f:id:paveg:20190811091250p:plain

dotfilesを整備している最中、ついうっかりrustを触ってみようと魔がさしました。 環境を整えつつイントロダクションを読み進め、最低限触れる状態を構築します。

本記事は、あくまでプログラミング経験者がrustの環境構築を行うものです。 詳細度が高くより知識を深めるような特性は持っていないと考えているので、これから業務等で扱うという方は別の記事を参照された方が良いかもしれません。

github.com

Install Rust / インストール

RustのInstallationページを見ると、詳細に書かれています。

The first step is to install Rust. We’ll download Rust through rustup, a command line tool for managing Rust versions and associated tools.

Rust は、Rust 自体のバージョンと関連するツールを管理するコマンドラインツールである rustup からインストールします。

Install rustup

If you prefer not to use rustup for some reason, please see the Rust installation page for other options.

なんらかの理由で rustup を入れたくない限りは入れましょう。 MacOS or Linuxであれば、以下のコマンドで入れることができます。

$ curl https://sh.rustup.rs -sSf | sh

途中でオプションについて質問がありますが、特にこだわりがなければデフォルトで良いです。

Current installation options:

   default host triple: x86_64-apple-darwin
     default toolchain: stable
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation

なお、 curlが使えない場所にいるあなたは、ただちに使える場所へ移動してください。

インストールが終わると、褒められます。

Rust is installed now. Great!

Pathを通す

以下のコマンドでホームディレクトリ直下の .cargo/env を読みに行きます。 するとPATHに $HOME/.cargo/bin がexportされます。

$ source $HOME/.cargo/env
...
# envの中身
export PATH="$HOME/.cargo/bin:$PATH"

継続して開発をするのであれば、 .bashrcや.zshrcなどにパスを通す処理を追加してください。

echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> <任意のファイル>

Windowsの人はドキュメント読んで頑張ってください。

Update rustup / 更新

最後にrustupの更新をします。

$ rustup update

HelloWorld

rust向けにディレクトリを作成し、そこに main.rs ファイルを作成します。

~/src/github.com/paveg
pav@ryota.local ❯❯❯ mkdir rust_sample
pav@ryota.local ❯❯❯ cd rust_sample

~/src/github.com/paveg/rust_sample
pav@ryota.local ❯❯❯ touch main.rs
pav@ryota.local ❯❯❯ vi main.rs
  • main.rs
fn main() {
    println!("Hello World!");
}

実行

rustcでcompileを行ってからバイナリを実行します。

pav@ryota.local ❯❯❯ rustc main.rs

~/src/github.com/paveg/rust_sample
pav@ryota.local ❯❯❯ ./main
Hello World!

vim-quickrun

vim-pluginである vim-quickrunをインストールしていれば、そのまま実行が可能です。

f:id:paveg:20190810225724g:plain

GitHub - thinca/vim-quickrun: Run commands quickly.

vim/dotfilesの設定

追記したものだけ明記します。 具体的にはシンタックスハイライトの挿入と、環境変数の追加のみです。 _rustup は端末ごとに個別に実行してほしいのでここではignoreしています。

Rust by paveg · Pull Request #50 · paveg/dotfiles · GitHub

ついでに LSP向けに rustup component add rls rust-analysis rust-src を実行しておきます。

cargo

cargoはビルドシステム兼パッケージマネージャです。 新しくプロジェクトを開始する際は、cargoを使うと便利です。

~/src/github.com/paveg 31s
pav@ryota.local ❯❯❯ cargo new sample_cargo
     Created binary (application) `sample_cargo` package
pav@ryota.local ❯❯❯ cd sample_cargo/src

cargoによる設定ファイルの出力

~/src/github.com/paveg/sample_cargo/src
pav@ryota.local ❯❯❯ cat ../Cargo.toml
────────────────
File: ../Cargo.toml
────────────────
[package]
name = "sample_cargo"
version = "0.1.0"
authors = ["Ryota Ikezawa <pavegy@gmail.com>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
────────────────

~/src/github.com/paveg/sample_cargo/src
pav@ryota.local ❯❯❯ cat ../Cargo.lock
────────────────

File: ../Cargo.lock
────────────────

# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "sample_cargo"
version = "0.1.0"
────────────────

おわりに

LSP導入したvimは以下のような感じです。

f:id:paveg:20190811013420g:plain

【継続的】GitHub Actions CI/CDを試してみた【デリバリー】

ci cd running

先日GitHubが CI/CDサービスを標準サポートする ことが発表されました。

github.blog

現在、既にベータとして稼働中で触ることができます。 普段業務では主にCircle CIを触っています。またプライベートでは AzurePipelines、Jenkins CI、Travis CIのいずれも触った経験があります。

業務で使うのであれば、個人的には経験が深いCircleCIが好きですが、個人での利用においては無料利用の幅が広いAzure Pipelinesを推したいです。

【開発環境】dotfilesでも継続的にインテグレーションする - pavlog

そんな複数サービスが存在するCI/CDサービスへGitHubのActionsが登場したのは嬉しいことです。

CI/CDとは

CI/CDは「Continuous Integration/Continuous Delivery」の略称です。日本語へ言い換えると、継続的インテグレーションと継続的デリバリーです。

ソフトウェアの変更を常にテストし、プロダクション環境へリリース可能な状態にする手法のことを言います。 これによって、昔と比べバグに素早く気がつくことができたり、修正や更新のリリースを自動化できたりすることが可能になっています。

GitHub Actionsについて

今回、CI/CDが追加されたのはGitHub Actionsの一機能としてです。 このGitHub Actionsは、例えばメンバーのアサインやPR(プルリクエスト)へのコメントをしたり、Lintなども行うことが可能です。

新規にここに追加されたCI/CDサービスについて、今回は簡単な例を実装したものを載せつつレビューしてみたいと思います。

尚GitHub Actions CI/CDの後ろ側にはAzure Pipelinesがいそうです。

The GitHub Actions virtual environments are hosted on virtual machines in Microsoft Azure with the GitHub Actions runner installed. The GitHub Actions runner is a fork of the Azure Pipelines Agent.

Virtual environments for GitHub Actions - GitHub Help

GitHub Actions CI/CDを触ってみる

GitHubにアクセスして、CI/CDを設定したいレポジトリへアクセスしましょう。

The world’s leading software development platform · GitHub

画像に表示したActionsタブより、CI/CDを設定するためのページへ移動することができます。 初回表示の際は、このレポジトリで有効にするかどうかを表示していますので、有効にして進みます。

enable repository

before actions

実際の設定ページは以下となります。

1にはSimple Workflowとあるように、空っぽのワークフローが用意されています。

select workflow

Simple Workflow

実際に押すとGitHub Actionsの時と同じように編集画面が表示されます。 既存で存在するコードは以下の通りです。ここをベースに設定することになります。

実際にどのようなものを記述するのかは、コメントで注記しておきました。

name: CI                                    # CI/CD名
on: [push]                                  # 実行のトリガー
jobs:                                       # ジョブリスト
  build:                                    # ジョブ(名)定義
    runs-on: ubuntu-latest                  # 実行するマシン
    steps:                                  # 実行するステップリスト
    - uses: actions/checkout@master         # 利用するアクション
    - name: Run a one-line script           # 実行するステップの名前
      run: echo Hello, world!               # 実行処理
    - name: Run a multi-line script
      run: |
        echo Add other actions to build,
        echo test, and deploy your project.

popular workflowにいるnode.jsのコードは以下の通りです。

name: Node CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: Use Node.js 10.x
      uses: actions/setup-node@v1
      with:
        version: 10.x
    - name: npm install, build, and test
      run: |
        npm install
        npm run build --if-present
        npm test

こちらも同様で、steps内に存在する with が初出です。node.js のバージョンを指定することができます。

GitHub Actions CI/CDの特徴

実際にコードを書いてCI/CDが走るまでを作ってみました。 (プロジェクト本体が、 yarn を使っているので冗長になっています。)

コードを見るとよくわかりますが、 matrix.* という記述が散見されます。 これは、 strategy.matrix 以下に入っている値を全て突っ込んで実行してくれます。

一番大きな特徴はマシンの実行環境の幅が広いことと複数バージョンでの実行が簡単に行えることだと思いました。 Circle CIだと記述次第では複数OS + 複数バージョンでのテストも可能ですが、記述量が膨大になってしまいます。

以下で実行されるCIのジョブは6つです。

name: Linter
on: [push]
jobs:
  build:
    name: Lint on node ${{ matrix.node_version }} and ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        node_version: [11, 12]
        os: [ubuntu-16.04, ubuntu-18.04, ubuntu-latest]
    steps:
    - uses: actions/checkout@master
    - name: Use Node.js ${{ matrix.node_version }}
      uses: actions/setup-node@v1
      with:
        version: ${{ matrix.node_version }}
    - name: Setup yarn.
      run: |
        curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.17.3
    - name: yarn install
      run: |
        yarn install
    - name: run static lint
      run: |
        yarn lint

GitHub CI/CD by paveg · Pull Request #1 · paveg/pf · GitHub

コードには書いていませんがMacOSとWindowsOSも利用可能です。

Add a few lines to the Actions YAML file, and let GitHub take care of the rest.

MatrixBuidについて は該当の部分に英語で書かれています。 簡単に記述できるのは最高ですね。

また、環境変数なども設定可能でRepositoryの設定(secrets)ページから個別に設定することが可能です。

jobs:
  my_first_job:
    steps:
      - name: My first step
        uses: actions/hello-world@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          MY_VAR1: a_variable

終わりに

詳しい説明はこちらに書いてありますので、興味がある方はぜひ見てください。

Workflow syntax for GitHub Actions - GitHub Help

これによってより柔軟にCI/CDサービスが選べるようになります。 また今までセルフホストランナーとしての利用ができるCIサービスはエンタープライズプランにしかないはずで、それができるようになるのがとても魅力的だなと感じました。

今回は導入として記事を書いたので、詳細は省きます(気が向いたら書きます)。

GitHub Japanのツイートでも詳細について書かれていますので興味があれば覗いてみてください!

【開発環境】dotfilesでも継続的にインテグレーションする

ci-log

今自宅で使っているMacBook Pro 15インチが2016 Lateです。

最近キーボードがチャタリングしたりして辛くなってきています。

当時価格、確か35万円とかで高いなと思いつつ買いましたが、今でも高いなと思っています。

しかし次回MacBook Proの発表があれば間髪を入れずにクレジットカードを切るでしょう。

(13インチに32GB RAM積めるようになってくれ🙏)

本題ですが、PCを変える時に開発環境変えますよね?

僕はずっとPCを買い換える時に開発環境をガバッと作り変えるのが恒例となっていて…普段個人開発環境もトレンドを追うのが面倒だったのでそうしていました。

ぶっ壊れていても結構パッチ当てて使い続けることが多かったです。 そのためここ2年ぐらいはIDEを好むようになりました。

JetBrainsのAll Product Packを買っています。

今回は、その定期的に作り変える慣例をなくすべくdotfilesの作り変えと継続的なインテグレーションを行おう!と思い至ったのでした。

でもなんで急に?

会社でもPCが貸与されるのですが、定期的に交換になります。 また仕事で使うので個人用のPCよりも稼働時間が長く定期的な交換以外で壊れてしまうことも度々ありました。

その際にPCの状態によってビルドができなかったり、 使っているライブラリが更新されていて依存性がぶっ壊れていたりで無限に時間を吸われていました。



普段IDEで開発しているのにそこまでする必要なくない?と思う方いますよね。

僕もそう思います。でもやります。

こいつが今鋭意製作中のリポジトリです。

github.com

開発環境の継続的インテグレーション

実際に使うのは以下のCIサービスです。

  • circleci
  • azure pipelines

二つ使うのには理由があります。 僕が高いお金を払いたくないからなのと、pipelinesをあまり知らないからです。 今後azureに寄せるかもしれません。

簡単に説明しておくと、両者とも Continuous Integration を実現するためのサービスです。

他のサービスには JenkinsやTravis ciなどがあります。

単体テストやビルド、デプロイまでを自動でできるようにしてくれるすごいやつです。

普段は業務で circleciを使っているので、circleciが好きです。

Circle CI

使い勝手を知っているのでlinuxのdockerイメージでCIを回すように使っています。 仮に通知とかやりたくてもversion 2.1から使える orbで大抵のことができます。

AWS ECRなどを使っていてもいい感じにやってくれるので大好きです。 publicなレポジトリなら無料で使えます。お得(?)。

circleci.com

Azure Pipelines

macOSマシンのビルドがなんとタダで行えます。 普段はmacOSなので、こいつでビルドしないことにはどうしようもないですね。

ぜひ使いましょう、最高のサービスです。マイクロソフトさんありがとうございます!

azure.microsoft.com

どうやっているか

普段は Homebrew/brew ( LinuxならLinuxbrew)から各種パッケージを突っ込んでいるので、 そいつ起点でdotfilesを起こし始めました。

最低限のコマンドで、環境を再現できるようにしてビルド設定を書いています。 手元で docker.run できるように自前で設定も書いていますが、CI設定は基本簡素になるようにしています。

azure pipelines

jobs:
  - job: macOS
    pool:
      vmImage: 'macOS-10.14'
    steps:
      - script: make install
        displayName: run install script

dotfiles/azure-pipelines.yml at master · paveg/dotfiles · GitHub

circleci

version: 2.1
default: &default
  working_directory: ~/repo
executors:
  xenials:
    <<: *default
    docker:
      - image: linuxbrew/linuxbrew:latest
        environment:
          LANG: en_US.UTF-8
          LC_ALL: en_US.UTF-8
          LANGUAGE: en_US:en
jobs:
  build:
    executor: xenials
    steps:
      - checkout
      - run:
          name: prepare
          command: sudo apt-get update && sudo apt-get install -y curl git bison
      - run:
          name: install dotfiles
          command: make install
workflows:
  version: 2
  test:
    jobs:
      - build

dotfiles/config.yml at master · paveg/dotfiles · GitHub

CIサービスの状態

これでビルドが走るようになりました。ログも見ることができます。 ただビルドに時間がかかるのでマッタリ確認します。

pr-ci-build

大体10-15分ぐらいのビルドです。 brewやbrew caskから様々なパッケージをダウンロードする部分はぶっちゃけ要らないかもしれないです。 今後見直せないかは考えていこうと思っています。

目標

とりあえず、開発環境の再現を30分〜1時間で終えられるようにしたいと思ってます。 zsh周りの設定が終わりつつあるので、neovim、tmuxを正しく使えるようにしてキーバインド整えて終わろうと思います。

シェルスクリプトを読んだり書いたりしまくってるのでtipsなんかを今後記事にするかもしれません。

すげー面倒臭いと思った方はぜひ、IDEを使ってください!

JetBrains製品を割引価格で! - 株式会社サムライズム

【201907】ブログ運営と現状を考察する

2019年、冷夏で終わると自己暗示をかけていたんですが、いきなりセミが鳴き出しました。

気温差で体調が悪くなる一方です。汗っかきの僕は汗をかかずにプログラミングができる季節が好きです。

太陽のせいで電気代も上がってるし、少しぐらい肩代わりしてくれてもいいんじゃないか?


はい、以前(2019年2月ぐらいに)ブログ運営した結果の記事を書きました。

その時は運営期間がおよそ1ヶ月ととても短く、成果についても失笑ものの無残なものでした。

とくに考えて運営しているわけではないですが、2月から半年経過しそうなので振り返ってみようと思います。

結果公表

サーチコンソール

詳細の数字は公表NGということだったので雰囲気だけでお送りします。

普段は、Googleサーチコンソールを見て書いた記事からの検索流入などの確認しています。 2-3月以降はほぼ記事を書いておらず、当初目的としていた半年で50記事は終に夢に終わりました。

言うだけならタダなんですけど、吐いた言葉を達成しないと僕の信用がなくなり人間性が疑われるので気をつけたいところです。仕事はブログよりはるかに真面目に取り組んでます。

searchconsole

2019年6月中旬に書いた V言語の記事がホッテントリ入りを果たしてそれなりにPVや検索流入を増やすことができました。話題性のあるものをピックして記事を書くのはわかりやすく伸びますね。

だからといって飛びつきすぎるのもアレですし、PV稼ぎたいからといっても良識は求められます。 気をつけましょう。はい、気をつけます。

Google AdSense

たまにチラ見してます。 はてなブログのプロに対して積んでいる金額ぐらいはAdSenseで回収したいですが途方もない遠さです。 貧乏なので、ブログのPVで生きていきたいです。無理なのでプログラム書きます

Amazonアソシエイト

こちらも気が向いたら見てます。 僕のブログでの売れ筋商品は、便秘にクリティカルなダメージを与えることが可能なイヌリンです。 皆さんの便秘解消によって、飴とかが買えます。ありがとうございます。

通算収益は 1000円ぐらいです。

いきててよかった。

Google Analytics

平均PVは300弱ぐらいを推移していてようやくしっかり見始めました。 今までなぜか正しく取れてなかったので………

ブログの滞在率が著しく低いので、そこにフォーカスして良い記事を積んでいこうと思っています。

MyProtein

なぜここにマイプロテインがくるかというと、僕のブログを読んでくれてマイプロテインを登録してくださる方が多いからです。 10名ほど登録していただいて、そのおかげでプロテインが買えそうです。ありがとうございます。

僕はタンパク質のためにブログを書きます。今後ともよろしくお願いします。

おわりに

なんかいい感じに記事を書こうと思ったんですが、今日は普通にダメな感じでした。

はよ秋来い。では。

ケトジェニックダイエットを始めて2週間が経過した

diet-caption-keto

そろそろ夏本番ですね。この記事を読んでる方も夏には痩せて海に行きたいと思う方がいると思います。

一般的なダイエットと言うと低脂質のダイエットが多いですが、近年ではその傾向も覆されています。

ある研究によれば、高脂質且つ低糖質の食事がより効率的に体重を減らすとされています。

なので今回はケトジェニックダイエットを試してみることにしました。


なぜ今回ケトジェニックを行うかというと、以下のような理由がありました。

  • 昨年度からゆるゆると続けていた低脂質(ローファット)ダイエットの効果がイマイチだったこと
  • 脂っぽいものを控えていた期間が長かったため、脂質に制約のない食事を行いたかったこと
  • 短期間での減量が望めること(むしろ長期間で行うことは望ましくない)

ケトジェニックダイエットとは

一般的な人の食事のPFCバランスは、以下の通りと言われています。

PFC-balance-graph

出典: 厚生労働省「日本人の食事摂取基準(2015年版)」

  • 炭水化物55%
  • 脂質30%
  • タンパク質15%

上記割合から、極点に炭水化物をカットして脂質とタンパク質を増やします。

ゆるいケトジェニックであれば炭水化物をバランスの15~20%以下程度が目安かと思います。

実際には100g程度がゆるい糖質制限ですね。 本来、体は炭水化物(ブドウ糖)を脂質よりも先にエネルギーとして消費します。

ケトジェニックは炭水化物を極端に減らすことによって炭水化物を早く燃やし、脂肪の分解を早めることにより効果を得るダイエットです。

この時に身体はケトーシスという状態になっています。

ケトジェニックダイエットの経過(2週間)

6/15から始めていました。週2回以上の筋トレと食事管理が主に行なっていたことです。

筋分解を防ぐために、30分以上の有酸素運動は行なっていません。

PFCバランス

own-pfc

タンパク質

筋肉量を減らさないようにタンパク質は体重 * 2.0g以上摂取します。

開始時点の体重が67kgなので *2.3 ぐらいの設定になってます。 脂質が多すぎると胃もたれが酷そうなので30%に設定します。

炭水化物

基本的に20g以下に抑えます。最低設定値の5%にします。

これはケトジェニックのセオリーというか必須要素なので、決して侵してはならないポイントです。

脂質

残りの65%は脂質で構成します。

2000kcalのうち1300kcalは脂質です。

脂は9kcal/gなので145g程度摂ります(マヨネーズとか吸います)。

食事

chicken-cook

普段主に食べているものは下記になります。

  • ステーキ
  • 鶏モモ肉
  • さばの塩焼き
  • ブロッコリー
  • チーズ
  • クルミ
  • ベーコン
  • プロテイン
  • MCTオイル/パウダー

あまり適さないですが、カロリーを稼ぐためにチーズとくるみは普段から食べています(好きなのもある)。

最安のMCTオイルはマイプロテインから購入できます。


プラスワン

朝夜とバターコーヒーを摂取しています。 レシピは、 コーヒーにMCTオイル5gとグラスフェッドバター5~10gです。

ミルクフォーマーで攪拌してから寝起きと就寝の少し前に飲んでいます。 腹持ちがいいので、朝ごはんがプロテインだけでも良い感じです。

味も美味しいです。

体重変動

weigth-graph

約2週間で2.9kgの減量です。 開始直後にストンと体重が落ちているのは、おそらく炭水化物の体内貯蔵量が減ることによって水分が抜けたからだと思います。

目標体重は59kg以下なので、これで続けてみようと思います。

ちなみに、体重計測・目標設定などは以下の記事で設定するアプリケーションでできます。

www.pavlog.tokyo

ケトジェニックの制約

適した食事

脂質

  • オリーブオイル
  • ココナッツオイル
  • バター
  • アボカド
  • アボカドオイル
  • 中鎖脂肪酸

たんぱく質

  • 牛肉
  • 鳥肉

でんぷん質を含まない野菜

  • 葉物野菜
  • ブロッコリー
  • キャベツ
  • カリフラワー
  • 芽キャベツ
  • きゅうり

適さない食事

  • 加工食品(梱包されている食品)
  • 牛乳
  • チーズ
  • ヨーグルト
  • ニンジン
  • ビーツ(サトウダイコン)
  • パースニップ(サトウニンジン)
  • えんどう豆
  • アーティチョーク
  • じゃがいも
  • インゲン豆
  • ひよこ豆
  • レンズ豆
  • ピーナッツ
  • アーモンド
  • カシューナッツ
  • くるみ
  • かぼちゃの種・ひまわりの種
  • バナナ
  • メロン

まとめ

僕は糖質の反応が出やすいので、白米を食べるとすぐ体重が増えます。 そのため今回ケトジェニックに踏み切ったのですが、ダイエットの向き不向きは人によって異なります。

そのため僕はあっていそう(まだ結果は出てない)な感じでした。

みなさんのダイエットも続けられるかどうかと向き不向きがあるので適切に選択してみてください。 加えて、食事管理が極端なので長期的なダイエットとしては僕個人はあまりお勧めしないです。

自分の体をよく確認しつつしっかりと減量方法を選択してください。

Keto Diet for Beginners - A Guide to the Low-Carb Diet Plan and Food