Believe you can

If you can dream it, you can do it.

ダイエット成功!7ヶ月で27kg痩せた

2週に1回は投稿したいと年始の目標を立てたものの、早速守れていない僕です。。
(技術的なネタも減りつつあり。。。)
言い訳させてもらえると年明けそうそうヘビーな状況に陥ってしまい、現在進行形で落ち着いていないからです。来週前半には落ち着いてご報告できることもあるかと思うのでその時が来たらブログかTwitterで報告させてください。

タイトルの通り、2021年6月からダイエットを初めて本日時点(3/3)で27kgのダイエットに成功しました。
どんなことをして痩せたのか、これからダイエットを始める方の参考になれば幸いです(人によって合う・合わないがあると思うので自己責任でお願いします)

食事制限

ダイエットを始める時の体重が3桁あったのと、全く動いていない体でいきなり運動したりして、膝や腰を痛め危険があったので、食事制限から始めました。
まずは炭水化物を減らす目的で、朝食のごはんをオートミールに変更、夜ごはんはおかずのみでごはんは食べないという食生活に変更しました。

主食の摂取を減らせば腹持ちも悪く、すぐにお腹が空いてしまうのですが、その時はゆで卵やプロテインでお腹を満たしつつタンパク質を取るようにしています。あとは、栄養バランスが崩れて体調を崩さないように、マルチビタミンを摂取するなどしました。オートミールはマジでうまくて自分にとってはむしろご褒美感覚でした。

レコーディング

食事制限ができているのかは正直わからんので、同僚から進められた「あすけん」でカロリー計算も行いました。
厳密な計算は難しいのでざっくりと食べたものを記録する感じです。これのおかげで「まだ食べれる」「夜ごはんはセーブしなきゃ」など調整がしやすかったので、記録を取るのマジ大事。

有酸素運動

食事制限だと停滞期でなかなか体重が落ちない状態がやってきて、心が折れそうになります。
そこで新たに増やしたのが、フィットネスバイクによる有酸素運動です。某転職サイトのキャンペーンで5万円をいただいたタイミングでもあったので、フィットネスバイクを購入しアニメやYouTubeを見ながら30〜60分ほど漕いでいました。
ここ数年、運動で汗をかくことがなかったので気持ちよく続けることができ、現時点の総距離が4300kmを超えています。めっちゃ漕ぎましたね。。。

まとめ

もともとの体重が多かったので始めれば痩せやすいってのもあったかと思いますが、自分でも頑張ったなーと思います。
ただ、筋トレを行わなかったためか、めちゃくちゃ冷え性になってしまいました。。きっと筋肉が落ちたものと。。。
これからのダイエットは筋トレも計画しつつ行っていこうと思います。

結婚前の体重まで戻せればと思いつつ、あと数キロ痩せたらリバウンドしないことを目指そうと思います。

XubuntuでCtrlとCapsLockを入れ替えるメモ

デスクトップPCをWindowsからXubuntuに切り替えて1週間。
日本語切り替えをCtrl+Spaceで切り替えていますが、キー自体はmacと同じ切り替えなので問題ないんですが、普段macではHHKBを使っています。
Ctrlの位置がCapsLockと逆なので日本語切り替えが違っていて不便でした。デスクトップPCでもHHKBを使えばいいんですが、BluetoothのHHKBなためレシーバーがないデスクトップでは利用できないのです。。
ということで、忘れないように切り替え方法をメモしておこうと思います。

調べたところ gnome-tweaks を使うとかんたんに切り替えることができるようです。
次のコマンドでインストールと起動を行います。

$ sudo apt install gnome-tweaks
$ gnome-tweaks

起動したら キーボードとマウス を選び 追加のレイアウトオプション をクリック。
Caps Locl behabiorCaps Lock is also a Ctrl を選択し、 Ctrl positionCtrl と Caps Lock を入れ替える を選択したら再起動。
これで設定は終わり。これでいつもの切り替え方法と同じになったぜ!

積読本消化のためにはじめたこと

読まずに溜まっていく技術書たちがあるのについまた購入してしまうことってありますよね...?
エンジニアの方なら経験があると思いますが、僕もその一人です。。
積読本を消化すること」を今年の目標の一つに上げていますが、年末から行っている工夫を紹介したいと思います。

まず次を用意します。

  • 読みたい本
  • 小さめの付箋紙

そして本を読んでいきます。読み始めるのに苦労しているって人はなんとか読み始めてください。そこには工夫はありませんので頑張ってください(根性論)。。
10分から20分ぐらいを目標に読み進めていきます。普段本を読み慣れていない人は短い時間を繰り返すことを目指したほうがいいです。自分がそうでした。

通常であればしおりを入れておしまいとなるのですが、しおりの代わりに付箋に今日の日付を書いてしおり代わりに貼っておきます。
これを毎日続けてください。そうすると1日で読める量が分かり、ちょっとしたバーダウンチャートのように進捗が分かります。

そうです!進捗の見える化ですね。
進捗がわかるとゴールが分かり、モチベーションにも繋がります。

自分はこの方法で、年末から5冊の技術書を読むことができました。
単純な僕はこの工夫で読み進めることができていますので効果があるかもです。同じ悩みを持っている方は試してみてください。
ではでは~ f:id:chichi1091:20220115232301j:plain

謹賀新年

明けましておめでとうございます!今年もよろしくお願いします!!
厄年を開けたのに新年早々、水漏れやウォーターサーバの故障が起きてしまい、お祓いに行こうが悩んでいます。。

積読本の消化

歳とか老いを言い訳にしたくないけど本を読むことが出来ていないのでチョットずつでも読んでいきたい。年末からちょっとした工夫を初めて何冊か読み進めることができているのでそのうち紹介したい。

フロントエンド

年末は仕事でNuxt.jsを触れる機会が多かったが、スキル・知識不足を痛感することがあったので、メンバーに迷惑をかけない程度までスキルアップを目指すのと、Nuxt.js以外のフロント技術もキャッチアップしたい。

バックエンド

仕事ではREST fulばかりでGraphQLやgRPCなどのキャッチアップが疎かになってしまっているので何か作ってみたい。あとは関数型言語に挑戦したいかな。

その他

  • アウトプット、インプットを増やす ブログもできれば2週に1つは投稿できるようにして、勉強会も積極的に参加していきたい。よいインプットができればきっとよいアウトプットもできるはず。
    夏に行われる技術書典にも頒布できるように頑張りたい。

  • 犬を飼う 娘が欲しいと言い出したことがきっかけで調べていたらものすごく飼いたくなってる...
    生き物を飼うのはかんたんではないので家族と相談した上でですかね。

何やらやりたいことをたくさん書いてしまいましたが、やり遂げられるように気負わないでゆるーく進めていければですかね。

2021年の振り返り

今年も残すところあと1日となりました。今まで振り返りブログは書いてこなかったのですが、来年のためにも振り返ってみたいと思います。

1月

技術書典10に参加してKtorとNuxt.jsの薄い本を頒布しました。
年末の慌ただしい時期に執筆したので当初思い描いていた内容を少し削っての頒布となってしまいました。。
それでも無事に出せたことはホッとしましたね

techbookfest.org

2月

これと言った活動はしていない模様。。
TDD Boot Campを長野でやるやる詐欺をしているツイートが見受けられた。。
やりたいんだけど、オンラインかオフラインかで葛藤している自分がいるんです。。。

3月

メルカリで中古のMacbook Airを購入。久しぶりにElmに触れた。フロントの学習でいい題材ないですかね~
三男の高校合格もあり、一安心

4月

今年初ブログをアップしたのが4月。しかも近況報告でほとんど自己学習ができていない証拠で情けない。。
仕事面では大型リニューアルを行い、バタバタした月でした。
たしか副業しないかと声をかけていただいたのがこの時期だったかな。
Ktorのお仕事だったのでめちゃくちゃ心揺れたが、所属会社が副業を許可していないので泣く泣く断念。。
お金を貯めたいという話で会社に相談したので、その代わりにR&D部門のお仕事を休日に行う動きが始まった。

5月

プロダクトのJavaバージョンをまずは11に上げたい!と思い、孤軍奮闘したのがこの時期だったかと思います。
バージョンを上げること自体は大したことないんですが、UnitTestで利用しているGroovy(Spock)のバージョンを上げるのがめちゃくちゃ大変だった。。
一人でほぼやりきったけど、残念ながら取り込まれることはなかったのは辛かった。
合わせてSpringBootAdminも導入したいと動きBugfixの影響で導入が加速されて全て用意したのになんの説明もなくスルーされるという仕打ちも受けたのもこの時期。

6月

この頃から尿管結石再発、逆流性食道炎による体調不良が起き始め「すべての元凶は肥満だ!」と考えてダイエットを開始した。
朝食をプロテインに変えたり、食事制限をしたり、フィットネスバイクを始めたりと積極的に動いていた。
結果的にどのぐらい痩せたかは12月に書きたいと思います。

7月

また技術書典11に個人と会社で応募を行い、個人は頒布できずという不甲斐ない結果に。。
書きたいと思っていたネタの知識がほぼほぼ失われてしまっていて、調査にすこぶる時間がかかってしまったのが原因。
会社名義の薄い本はなんとか頒布することができ、無料にしたことでたくさんの方にダウンロードしてもらうことができました。

techbookfest.org

8月

なんでかは覚えていないんですが自作PCを作りたい熱がめちゃくちゃ高く、ギリギリの予算で組み上げました。
このブログもその自作PCで書いています。ただ、目的なく作ったのでマイニングを行うだけのPCとかしてしまっています。。
開発PCに変えねば。。。

9月

これと言った活動はしていない模様。。
まぶたの痙攣に悩まされてたみたい。ストレスですな。。

10月

今年もPHPカンファレンスの当日スタッフに応募して参加させていただきました。
オンライン開催2日間でバタバタしたがやっぱ楽しいですね!
来年もオンラインであればぜひ当日スタッフとして参加したいと思います。

11月

ペチコンに参加したことで熱が上がりPHPやってみたりフロント開発始めてみたりを少し自己啓発をしていた時期。
とはいえ大したことできてないのでもっと頑張らないといけないですね

12月

お仕事は体制が変わったことでフロントメインのお仕事になっています。
苦手な分野ではあるものの、フロント技術を身に着けたいと思っていたのでなんとかやれている感じでしょうか。。
気になる半年間のダイエット成果は「22kg」の減量に成功しました!
頑張ればやれるものですね!!目標体重にはまだ届いていないのでもうちょい続けていきたいと思います。

総評

かんたんに1年を振り返ってみましたが、自己啓発が少ないが反省点ですね。
インプットを増やしてアウトプットを増やしていかないとです。
全体的にモチベーションが下がっていて良くない1年だったかな。でも逆に新たな悩みや課題に気づけた1年でもあったかと思います。
それらも踏まえていい1年だったのではないかと思います。

今年も大変お世話になりました。来年もよろしくお願いします!
(来年の目標は年明けに書くと宣言して自分を追い込む)

デスクを新調しました

新型コロナウィルスがまん延以降リモートワークを行っていますが、その前から子供のお古であるニトリの学習机をPCデスクとして活用していました。
これからもフルリートでお仕事をするので、妻にお願いして新しいPCデスクをようやく購入することができました。

今までのデスクはコチラ
f:id:chichi1091:20211123131522j:plain f:id:chichi1091:20211123131524j:plain

2つの学習机をL字にして使っていました。
自作PCと個人mac、仕事用macを利用しているためかなりゴチャゴチャしてますね。。

新しいデスクを設置する前に2つの学習机を処分する必要があります。長野市のゴミ処理場に自分で持っていけば、重さに応じてお支払いをすればいいんですが、さすがに学習机2つを自力で運ぶ車がありません。
写真には写っていませんが、机の横には2人掛けソファもあり一緒に廃棄もしたいので業者を探すところからはじめました。
(妻からはリビングにおいてある3人掛けソファも捨てたいと要望あり)

いくつかお問い合わせさせて頂いた結果、ご近所に不用品回収のマンモスさんにお願いさせていただきました。
予算にあう金額で、2階からの運び出しもしていただき大変助かりました!

manmosu.net

新しいデスクですが、荷物が多くあるので妻が許す予算の中でできる限り大きいデスクを探した結果、こちらになりました。

desk-ichiba.com

160cm幅のなかなかデカ目のデスクです。購入時はもうちょい安く購入することができました。
ということで新デスクがコチラ
f:id:chichi1091:20211123133137j:plain

とりあえず設置してみましたが、ごちゃり度はあまり変わらないですね。。(もっと真ん中で使えよって感じです)
使い始めて設置を改善していくしかないですね。

モニターをデスクトップとノートで共用している関係で設置が難しいのですが、皆さんどのようにされているんですかね?
ぜひアドバイスをいただけると幸いです!

LaravelでRESTfulAPIを作る〜その2〜

LaravelでAPIを作るの最終回です。MySQLとの接続を行っていきます。

Modelの作成

LaravelのORM、Eloquent(エロクアント)を使っていきます。
PHPが動いているDockerコンテナに入って artisan コマンドでModelを作ります。

$ docker-compose exec php bash
$ php artisan make:model Todos -f

App/Models 配下に Todos.php が作られます。

class Todos extends Model
{
    use HasFactory;
}
class TodosFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Todos::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            //
        ];
    }
}

調べていて気がついたのですが -c-r-api をつけることで Controllerも作ってくれるようです。
今回は -f オプションでモデルとファクトリを作成します。

Todosに追記

カラム情報とtimestampeがないことを定義します。

    protected $fillable = [
        'task',
    ];
    public $timestamps = false;

準備はこれで終わり。ControllerからModelを使ってDBアクセスをしてみます。

検索

Todos::all で全件を取得し、 Todos::find でプライマーキーで検索を行います。検索した結果をそのままレスポンスに返しています。
JSON_UNESCAPED_UNICODE はマルチバイト文字が文字化けを起こさないように設定しています。

    public function getTodos(Request $request): JsonResponse
    {
        $todos = Todos::all();
        return response()->json($todos, 200,
            ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'],
            JSON_UNESCAPED_UNICODE);
    }

    public function getTodo(Request $request, int $id): JsonResponse
    {
        $todo = Todos::find($id);
        return response()->json($todo, 200,
            ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'],
            JSON_UNESCAPED_UNICODE);
    }

登録、更新、削除

DB::beginTransactionトランザクションを開始し、成功時にはコミット、失敗時にはロールバックしています。
単一テーブルへの操作なので特に必要ないですが、お試しに入れてみました。Controllerにトランザクション処理があるのは正直気持ち悪さはありますがw

    public function createTodo(Request $request): JsonResponse
    {
        $task = $request->input('task');

        DB::beginTransaction();
        try {
            $new = Todos::create([
                'task' => $task,
            ]);
            DB::commit();
        } catch ($exception) {
            DB::rollBack();
        }

        return response()->json($new, 201,
            ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'],
            JSON_UNESCAPED_UNICODE);
    }

    public function updateTodo(Request $request, int $id): JsonResponse
    {
        $task = $request->input('task');

        DB::beginTransaction();
        try {
            $todo = Todos::find($id);
            $todo->update(['task' => $task]);
            DB::commit();
        } catch ($exception) {
            DB::rollBack();
        }

        return response()->json($todo, 201,
            ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'],
            JSON_UNESCAPED_UNICODE);
    }

    public function deleteTodo(Request $request, int $id): JsonResponse
    {
        DB::beginTransaction();
        try {
            $todo = Todos::find($id);
            $todo->delete();
            DB::commit();
        } catch ($exception) {
            DB::rollBack();
        }

        return response()->json(null, 200);
    }

まとめ

とりあえず目的のAPIを作ることはできました。検索はもっと複雑な絞り込みや結合を試さないとですし、ロジックをControllerに書いてしまっているのでソフトウェアアーキテクチャを導入して責務を明確にしてあげる必要がありますしユニットテストも書きたいし。まだまだやることはありますね。
それらについてはまだ後日余力があれば試したいと思います。
今回作ったソースはGitHubに上げてあります。

github.com