エンジニアが今すぐすべき成長するための3つのこと

はじめに

この記事は ICT Advent Calendar 2021 7日目の記事です。

6日目の caff くんの投稿は本記事の執筆時点でありませんでしたが、昨日は最も日の入りが早かった日なので仕方がないです。

自己紹介

こんにちは。

はじめましての人ははじめまして。

繧?j縺ェです。

f:id:NaY4:20211207005831p:plain

「ゆうさく」の発音は英語の「You suck」に似ていて気に入ったのでこの名前になっています。「ゆうさく」さんはごめんなさい。

似た言葉で「竹下通り」が好きです。気になる方は調べてください。

エンジニアが今すぐすべき成長するための 3 つのこと

↑を教えていきます。

1. ベンチプレス

1つ目はベンチプレスです。

ベンチプレスとは

ベンチに横たわってバーベル(ダンベル)を両手で持ち上げるウェイトトレーニングの種目です。

f:id:NaY4:20211207014201p:plain

なぜベンチプレスをするのか

ベンチプレスを行うことで、大胸筋・上腕三頭筋三角筋などの筋肉を鍛えることができます。

これにより、力強いタイピングを可能とし、ソースをいつもより濃く書くことができます。薄い色のカラースキームを使っている人も安心です。

また、万が一間違えて 筋肉ゴリゴリゴリラマッチョ以外お断り荷重 65535kg 軸 のキーボードを買ってしまっても、ベンチプレスをしていればどうにかなります。

2. スクワット

2つ目はスクワットです。

スクワットとは

直立した状態でバーベル(ダンベル)を持ち、膝を曲げたり伸ばしたりを繰り返すウェイトトレーニングの種目です。

f:id:NaY4:20211207014234p:plain

なぜスクワットをするのか

スクワットを行うことで、大殿筋・大腿四頭筋ハムストリングス・背筋・腹筋などの筋肉を鍛えることができます。

これにより、強靭な太ももを作ることができ、ラップトップ PC と間違えてサーバ PC を膝の上に乗っけてしまっても安心してサーバを稼働し続けることができます。

また、6% キーボードを腹に置いてんのかい!ってくらい綺麗なシックスパックの腹筋を手に入れることができるでしょう。

3. デッドリフト

3つ目はデッドリフトです。

デッドリフトとは

床に置いたバーベル(ダンベル)を腰の高さまで持ち上げ、下ろすことを繰り返すウェイトトレーニングの種目です。

f:id:NaY4:20211207014212p:plain

なぜデッドリフトをするのか

デッドリフトを行うことで、広背筋・脊柱起立筋・僧帽筋ハムストリングス大腿四頭筋・前腕筋などの筋肉を鍛えることができます。

これにより、ゲームがしたくて買ったゲーミングデスクトップ PC も容易に持ち運ぶことができ、携帯機として運用することができるようになります。

また、猫背が治ります。嬉しいですね。私はまだ猫背です。

あとがき

上で挙げたメリットの他に、「寝起きが良くなる」「痩せる(痩せやすくなる)」「筋肉痛が気持ちいい」「バグのストレス解消」などがあります。

今回紹介したウェイトトレーニングはまとめて BIG3 と呼ばれ、これだけやっていれば全身をバランス良く鍛えることができると言われています。

これらはバーベル(ダンベル)が必要ですが、そんなもの持ってないって人は腕立て伏せ・プランクブルガリアンスクワットがオススメです。

物足りなくなったらバーベル(ダンベル)を買いましょう。

筋トレをして、己の筋肉を成長させ、筋肉エンジニアになりましょう。

楽天カードマンってほんとに8秒に1人増えてるんですか?

楽天カードマアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアン!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

この記事はICT委員会 コロナに負けないぞブログリレー 5日目の記事となっています。

 

今!楽天カードがすごいことになってるんです!!!!!!!!!!

 

(`💳ω💳´)ムムッ!

 

なんと!

 

(`💳ω💳´)ムムッ!(`💳ω💳´)ムムッ!

 

増えた!!!!!!!!!!!

8秒に1人申し込んでるんです!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

ほんまか?

 

ほんまにそんな楽天カードマン増えてるん?

嘘ついたら絶対許さんで?私の楽天アカウント消したるからな?

 

ってことで、今回は楽天カードマンがほんとに増えているのか世界中に確かめに行きました。

 

はい!ここはNHKです!!!NHKにやってきました!!!!!!!!!

ここには安倍総理大臣がいますね。安倍総理大臣はお金持ちだから楽天カードなんて庶民的なカードは持たないだろう…

f:id:NaY4:20200526001358p:plain

おっと??????????????????

f:id:NaY4:20200526001622p:plain

(`💳ω💳´)ムムッ!

安倍総理大臣が楽天カードマンになってしまいました!!!!!!!!!!

まさか安倍総理大臣も楽天カードマンだったとは…恐るべし楽天カード

 

次はイギリスにやってきました!!!!!!!!

(`💳ω💳´)ムムッ!

なんてことでしょう!!!!!!!!!!!!!!!!!!

イギリスにも大量の楽天カードマンがいました!!!!!!!!!!!!!!!!!

f:id:NaY4:20200526002134p:plain

楽天カードは世界中どこでも使えるので、イギリスでも広まっているようですね。恐るべし楽天カード

それにしてもカードがデカイ。イギリス人は欲張りなんですね。

 

最後はアメリカに行ってトランプ大統領に会ってきました!!!!!!!!!!!!!!!!!!!!!!!!

世界中の人が楽天カードマンなんだし、きっとトランプ大統領楽天カードなのでしょう。

って???????????????????????????????あれ???????????????????????????????????????????

f:id:NaY4:20200526002632p:plain

楽天カードマンじゃない??????????????????????????????????????????????????

悲しいことに、トランプ大統領楽天カードマンではありませんでした。彼は自国のことが好きだからアメックスとか持ってそうですね。

ちなみに、近くにいた記者の方は楽天カードマンでした。

f:id:NaY4:20200526002800p:plain

 

ってことで、結果!!!!!!!!!!!!!!!!!!!!!!!

楽天カードマンは本当に増えていた!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

はい。すごいですね。楽天カード

ちなみに私は三井住友カードマンです。

 

あとがき

上のスクショは、ブラウザの拡張機能で人の顔を検出して楽天カードマン化しています。下のリンクからダウンロードできます。

https://file.io/PL3Nr1mJ

 

処理部分は以下のコードで、face-api.jsという顔検出のライブラリを使っています。何かの参考にどうぞ。

github.com

import * as faceapi from 'face-api.js';
import { browser } from 'webextension-polyfill-ts';

const RAKUTEN_CARD = "assets/rakuten_card.png";

const FACE_LANDMARK_68_MODEL = "https://raw.githubusercontent.com/justadudewhohacks/face-api.js/master/weights/face_landmark_68_model-weights_manifest.json";
const FACE_RECOGNITION_MODEL = "https://raw.githubusercontent.com/justadudewhohacks/face-api.js/master/weights/face_recognition_model-weights_manifest.json";
const SSD_MOBILENETV1_MODEL = "https://raw.githubusercontent.com/justadudewhohacks/face-api.js/master/weights/ssd_mobilenetv1_model-weights_manifest.json";

faceapi.env.monkeyPatch({
    Canvas: HTMLCanvasElement,
    Image: HTMLImageElement,
    ImageData: ImageData,
    Video: HTMLVideoElement,
    createCanvasElement: () => document.createElement('canvas'),
    createImageElement: () => document.createElement('img')
});

const RAKUTEN_CARD_MAN_IDENTIFIER = "rakuten-card-man";

window.addEventListener("load", main, false);

async function main() {
    // 楽天カードの画像を読み込み
    const rakutenCardImage = new Image();
    rakutenCardImage.src = browser.extension.getURL(RAKUTEN_CARD);

    // モデルを読み込み
    await faceapi.loadFaceLandmarkModel(FACE_LANDMARK_68_MODEL);
    await faceapi.loadFaceRecognitionModel(FACE_RECOGNITION_MODEL);
    await faceapi.loadSsdMobilenetv1Model(SSD_MOBILENETV1_MODEL);

    while (true) {
        // 1秒待つ
        await new Promise(r => setTimeout(r, 1000));

        // 全画像を取得
        let imgs = document.images;
        for (let i = 0; i < imgs.length; i++) {
            let img = imgs[i];

            // 楽天カードマンじゃない画像
            if (!img.classList.contains(RAKUTEN_CARD_MAN_IDENTIFIER)) {
                // 画像のアクセス権を取得
                img.crossOrigin = "anonymous";

                // 有効な画像かチェック
                if (faceapi.isMediaLoaded(img) && img.width != 0 && img.height != 0) {
                    // 画像からcanvasを生成
                    const canvas = faceapi.createCanvasFromMedia(img);
                    const ctx = canvas.getContext('2d');

                    if (canvas.width == 0 || canvas.height == 0) {
                        continue;
                    }

                    // 画像の顔を検出
                    const detectionsWithLandmarks = await faceapi.detectAllFaces(img).withFaceLandmarks();

                    // 楽天カードの貼り付け
                    detectionsWithLandmarks.forEach(d => {
                        // 目の取得
                        const leftEye = d.landmarks.getLeftEye()[0];
                        const rightEye = d.landmarks.getRightEye()[0];

                        // 適切なカードのサイズを計算
                        const cardWidth = (d.detection.imageWidth / 4);
                        const cardHeight = cardWidth * 0.6;

                        // 適切なカードの位置を計算
                        const leftCardXStart = leftEye.x - (cardWidth / 2);
                        const leftCardYStart = leftEye.y - (cardHeight / 2);
                        const rightCardXStart = rightEye.x - (cardWidth / 2);
                        const rightCardYStart = rightEye.y - (cardHeight / 2);

                        // 楽天カードの貼り付け
                        ctx?.drawImage(rakutenCardImage, leftCardXStart, leftCardYStart, cardWidth, cardHeight);
                        ctx?.drawImage(rakutenCardImage, rightCardXStart, rightCardYStart, cardWidth, cardHeight);
                    });

                    // 楽天カードマン化した画像に置換
                    const canvasURL = canvas.toDataURL();
                    console.log(canvasURL);
                    img.src = canvasURL;

                    // 楽天カードマンクラスを追加
                    img.classList.add(RAKUTEN_CARD_MAN_IDENTIFIER);
                }
            }
        }
    }
}

export { };

 

この記事はフィクションです。登場する人物・団体・名称等は架空であり、実在のものとは関係ありません。