miya’s blog

プログラミングの学習を通じて得た知識や感じたことをシェアするブログです。

Rubyでオブジェクト指向を学習したときに調べたこと

目次

はじめに

プログラミングスクールでボウリングのスコア計算プログラムをオブジェクト指向で書いたときのメモ書きです。休会明けで色々と忘れており、Rubyインスタンスやメソッドについて色々と調べたのでまとめました🎳

課題のポイントは👇になるかと思います。

  • ストライクは 'X' で表示される。それ以外は数字。
  • 各フレームは1投 or 2投。最終フレームは3投目があるかも。
  • ボーナス得点の算出はフレームをまたぐ。
# 入力: 投球結果  出力: 合計点。
$ ruby bowling.rb '0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,X,X,1,0'
68

オブジェクト指向プログラミングについて

考え方について

komagataのブログでは以下のように説明されています。

全てをクラス変数とクラスメソッドで処理するというのは手続き型プログラミングの世界です。

オブジェクト指向プログラミングでは、極力「インスタンス変数を使ってそのインスタンス自身に処理させる」というのが基本です

どれが良い悪いというのはないですが、オブジェクト指向プログラミングは極力、実体(インスタンス)が個別に持つ情報を利用してインスタンスメソッドを呼び出して処理する。そういう書き方が基本です。

また、メンターの方からは以下のようなコメントをいただきました。

オブジェクト指向プログラミングは擬人法プログラミングだと思ってください。

オブジェクトは人間です。自分のことは自分が一番よくわかっていて、一人で全部できる大人です。

クラスメソッドとインスタンスメソッドについて

【プログラミング初心者向け】クラスメソッドとインスタンスメソッドはどう使い分けるべき?で色々と説明されていますが、まずはインスタンスメソッドで実装することを目指せばよさそうです。

オブジェクト指向的に適切なクラス設計がされていれば、クラスメソッドが登場する回数はインスタンスメソッドに比べてずっと少ないはずです。

文法は、以下の公式リファレンスやブログが参考になりました。

インスタンス変数について

改訂版・(あなたの周りでも見かけるかもしれない)インスタンス変数の間違った使い方によると以下のようになりそうです。

  • インスタンスごとに保持する必然性がある(別々の値になる)データをセットする

    • 大きいスコープがほしいという理由でインスタンス変数を使わない
  • 変数のスコープ(変数の寿命)が不必要に大きくなると、クラスが大きくなるにつれて保守性がどんどん低下

    • 大きいスコープの変数がほしいならグローバル変数を使うべき(原則NGだけど)
    • 処理の過程で使う一時的なデータは、引数、戻り値、ローカル変数で受け渡す

「じゃあインスタンス変数はいつ使えばいいの?」

インスタンス変数はオブジェクト指向プログラミングの文脈で、クラスを定義するときに使います。

たとえば、Person(人間)クラスに名前と血液型を保持させたいときは、名前と血液型をインスタンス変数に保存します。

基本的な考え方として、インスタンス変数はインスタンスが作成されてから(newされてから)最後までほとんど変わらない値だと思ってください。

🤔🤔🤔

メソッドについて

参考にさせていただいた資料

オブジェクト指向設計実践ガイド

  • 説明に添えてあるサンプルコードがとてもわかりやすい書籍です。

プロを目指す人のためのRuby入門改訂2版

  • 第7章がとても参考になりました。スコープ、書き方、実装例 etc

Rubyセミナー『開発を支える自動テスト』

  • 複数のクラスを定義してレシートの集計を実装していきます。ライブコーディング動画。

感想

最後までお読んでいただきありがとうございました。

CI/CDわからないけどJenkinsでパイプラインをつくってみた

目次

はじめに

Jenkins(ver2.0系)のパイプラインで手作業をジョブ化した初心者のメモ書きです。

公式ユーザガイドは情報量が多くて、どこから読むべきかなのか少々わかりにくかったので、Declarative Pipelineでジョブを実装するまでに調べたことを整理しました。

想定する読者レベル

  • Jenkins、CI/CDがよくわからない。
  • Jenkinsでパイプラインを作って動かしてみたい。

Jenkinsについて

できることは大まかに👇な感じ

  • リポジトリGitHubなど)の資材をコントローラやエージェントに展開できる
  • コントローラからエージェントに対して任意のコマンドを実行できる

ver2.0のリリースが2016年なので、2017年前後に書かれた情報が多い印象です。

使い方について

環境構築

「親機/子機」を「コントローラ/エージェント」といいます。かつての「マスター/スレーブ」 > 用語集

インストール

コントローラに「Jenkins本体 & Java」、エージェントに「Java」をいれます。

  • 手っ取り早くコントローラを構築したいならこちら
    • Dockerのインストールが前提。
    • APIキーの取得方法の説明もあります。
  • 公式な手順はこちら
    • OSに直接インストールする方式
    • Javaインストールの説明もあります。

コントローラとエージェントを紐付け

お試しで動かすだけならスキップして、エージェントなしでもOKです。

開発ツールを用意

お試しで動かすだけならスキップしてOKです。

パイプラインの書き方

Pipelineについて

Declarative Pipelineについて

Groovyについて

  • バージョン確認方法はこちら
  • 基本構文はこちら
  • デバッグ手法はこちら
    • JenkinsDSLとはそこそこ違う(例: ×echo ⚪︎println)ので、Script{}の実装を関数に切り出すと使いやすいかも。

パイプラインをパラメータ付きビルドで動かす

コントローラからファイルを取得します。実行環境は Ubuntu 22.04.3 LTS🐧

  • 動かし方は以下の通り

    1. 新規ジョブの作成 > パイプラインを選択 > パイプラインの定義にサンプルコードをコピペして保存。
    2. ビルド実行する(エラー終了)。画面を再ロードすると"パラメータ付きビルド"を選べるようになる。
    3. パラメータ付きビルドを実行して成功すれば、ビルドの成果物(ip.txt, hosts) をダウンロードしたり、Console Outputから実行ログをみれたりできます。
  • 公式資料は → Getting started with Pipeline

// Jenkinsfile

pipeline {
    agent any

    parameters {
        string(name: 'user_id', defaultValue: '999', description: '998 か 999 なら動くよ)')
        booleanParam(name: 'require_confirmation', defaultValue: true, description: '実行確認したければオン')
    }

    stages {
        stage('precheck') {
            steps {
                sh "uname -n; id; pwd; ls -l"

                script {
                    checkPermission(params.user_id)
                }
            }
        }

        stage('confirmation') {
            when {
                expression { params.require_confirmation.toBoolean() }
            }
            steps {
                input message: "やっていいかい # ${env.BUILD_NUMBER}",
                    ok: 'いいとも'
            }
        }

        stage('execute') {
            steps {
                sh "ip a > ip.txt"
                sh "cat /etc/hosts > hosts"
            }
        }
    }

    post {
        always {
            echo currentBuild.result
        }
        success {
            archiveArtifacts artifacts: '*', onlyIfSuccessful: true
        }
        cleanup {
            cleanWs()
        }
    }
}

def checkPermission(String userId) {
    def allowedIds = ['998', '999']
    if (!(allowedIds.contains(userId))) {
        error "Permission denied: ID ${userId} is not allowed."
    }
}

そのほか

  • グローバル変数について

    • env: Jenkinsfile内ならenvironment{}、Jenkins全体ならダッシュボード >【Jenkinsの管理】でセット
    • params: パラメータ付きビルド時のWeb画面からの入力欄の値(parameters{})
  • 環境変数(env)の制約

    • 文字列 or 戻り値が文字列となる関数 しかセットできないっぽい。これか..?
    • the Global Variable Reference only contains documentation for variables

  • 使いやすそうな環境変数

    • WORKSPACE、BUILD_USER_ID、JOB_NAME、GIT_BRANCH、GIT_URL とか?
  • "${xxx}" という変数の書き方

    • Jenkins全体の環境変数を参照するときの書き方
    • 式展開の書き方
      • echo は文字列しかとれないので、配列やハッシュを出力したい時とかに使う
  • ヒアドキュメントの書き方

  • エージェントを動かしたい

    • agent {} で指定する。
  • ハマったときは

感想

ハンズオンしていけば段々と公式ユーザガイドを読むのが苦でなくなります(多分)📚

あとはやりたいことをキャッチアップしつつ頑張ってください(← 筆者がいまココ)☕

Jenkinsの主な用途はCI/CDだと思いますが、それ以外の自動化にも活用できますので自動化に取り組みたい人の第一歩の助けになれば幸いです。

最後までお読んでいただきありがとうございました。

わが家のNASを整理したときのメモ

目次

はじめに

年始にセールでポチったきり未開封になっていたNVMe SSDを活用して、わが家のファイル共有用NASを増設した時のメモです。

結論から言えば

  • 手元のバックアップ用ストレージ(2TB HDD)を現用NASUSB3.0ポートにアタッチ(増設)する
  • 増設分のバックアップに、余剰品のSSD(EXCERIA G2)を使う。そのために外付けSSD用のケースを新規購入する。

  • ラズパイは寝かせとく

が最終形となりました。 余っていたラズパイを有効活用したかったのですが、伝送速度がイマイチなので見送りました。

当時に思い立った順番に調べたことをつらつらと書きます。

いまの構成

現況として、Sambaサーバで十分という状況。 バックアップ頻度は月1で事足りる & インターネットに足出しする機能は使わない

ブロードバンドルータ AC✖️2 NAS(1TB RAID1構成) 外付けHDD 2本(バックアップ用)

A案: 新NASサーバを余ってたラズパイ(RaspberryPi3B+)でつくる

はじめに:

  • ラズパイの活用も合わせて模索する

結論:

まとめ:

  • 読み出しで計測

    • HDD  約15-20MB/s(無線:15-18MB/s 有線:18-20MB/s)
    • SDカード 約8−10MB/s  ※安物しかもってない。SDカード側がボトルネック
  • 後継のRaspberry Pi 4BUSB3.0だけど、それなりの出費(当時 9130円〜、RAM2GB)を伴う..

  • 実測値の感じだと、LAN全体のボトルネックWifiアクセスポイントっぽい(約90MB/s)

    • 余ってたL2SW(1Gbitポートx5)を使えば、1Gbitイーサがボトルネックかも
    • コスト(手間、増える配線、消費電力)に見合ないので試さず
  • Wifi6を導入すると、1Gbitイーサがボトルネックになるかも

    • 1Gbitイーサx2構成にしても、HDD(100〜150MB/s)がボトルネックで恩恵が小さそう

参考資料: 公式チュートリアル: How to build a Raspberry Pi NAS - Raspberry Pi

B案: 新NASサーバを新規購入する(NASサーバ更改)

はじめに:

  • いまどきな製品、ソリューションを調べる。

  • 購入する気はあまりない。

まとめ:

C案: 現NASサーバの余剰ポートにHDDを増設する

はじめに: - スペック表をみて、現NASにはUSB3.0の余剰ポートがあったことを思い出す

結論: - これでいいじゃん。労力いらず、伝送能力そこそこ

さいごに

HDD/1Gbitイーサ/Wifi5の共有NASは。自用途ならまだ大丈夫

  • ただし既存資産の活用が前提(HDDを新規購入することはない)
  • 今の価格なら2.5Gbitイーサに魅力を感じない

USB3.0の実測値がよくわからない。理論値は 1Gbitの5倍..?

  • 端子の接触不良で速度が出ていなくても気づきにくくて辛い
  • 手頃な価格帯の外付けSSDの実行速度は1GB/sあたりっぽい

今回の収穫

  • 低速(100Mbit)なケーブルがまじっていたことに気づいた
    • 1Gbitに替えると、伝送速度が約4倍速くなった。
    • Wifi6のACを買った時点で気づきたかった..

最後までご覧いただきありがとうございました

以上

30代でプログラミングスクールに入会してWeb開発を学ぶ_6カ月目ふりかえり

目次

はじめに

2023年6月1日に入会したオンライン制のプログラミングスクール(フィヨルドブートキャンプ(FBC))で学んだことや思ったことを書き留めます

これから書くこと

  • FBC入会から6カ月経過した時点でのふりかえり ※12月2日から休会中...🍵
  • 直近2ヶ月(10-11月)の取り組みや雑感など

フィヨルドブートキャンプでの活動状況

学習時間について

  • 10月に職場環境が変わって、活動時間は概ね半減しました...Orz
  • 6ヶ月間の合計:710.0H = 6月: 124.0H, 7月: 164.0H, 8月: 155.5H, 9月: 150.0H, 10月: 64.0H, 11月: 52.5H

学習時間

ラクティスについて

直近2ヶ月(10-11月)に対応したのは

プラクティス全体の進捗状況は、チーム開発 & Webサービス自作を除くと約70%を修了。

学習を終えるのにどれくらいの時間がかかりますか?
かかる時間は人それぞれですが、プログラム経験が全くない人の場合、1,200時間くらいかかる方が多いです。|フィヨルドブートキャンプ FAQ

プログラム経験が全くない訳ではないけど、Webサービス自作以外で1,200時間を使い切りそう(あと8か月(≒(1200-710)/60)かかりそう)な感じ🙄

直近2ヶ月の取り組みや雑感

  • 前回からの反省🤔

    • 腰痛で椅子に座り集中力を保つのが難しい
      • 週4出社の副作用(?)で体重は約1.5kg減って腰痛は一段落
    • 参加できそうなイベント(ハンズオンありの輪読会、モブプロ会など)を探す
    • OSS活動で次の一歩
      • (=_=;)ウーン…
  • 新しい職場環境について😑

  • ラクティスを進めるモチベーションに欠ける😑

    • いまの職場で触れる可能性ゼロなRails、JSを学習する気力が目下湧かない。
      • いま目の前にあるもの(PowerShell、Python3、Jenkins、Ansibleほか)をネタに足元を固めたい気分。
      • 並行して取り組むのはシンドイ
    • MacBookで作業する時間を確保しにくい
      • 読み物系や紙面コーディングで頑張れるプラクティスから進める。
      • 既存アプリを改修するプラクティス(Rails課題)は ↑ のように対応しづらい。
  • 提出物への指摘事項はたくさん(学びは多い)🤔

  • 世界一流エンジニアの思考法に感化される。2周読んだ🤩

    • 時間内に終わらない → スコープを縮める、最優先事項以外はやらない
    • 取り組む時間を固定する(持ち帰らない。キリが悪くても終了する)
    • ググらずスラスラとコーディングできるまで、基礎の積み重ねは何度でも。
    • 習得して脳に負荷がかからないものが増える → 仕事の早さ
    • 成果を出すには、終業後に別のことをやる。など
  • スクール内の輪読会に参加する🤔 > オブジェクト指向設計実践ガイド

    • 10月初旬から毎週土曜 朝9時。参加者は5-6人で卒業生が多め。3章途中~6章途中
    • (競プロ勢でもある)主催者によるライブコーディング解説がわかりやすかった
    • ダックタイピング → 〇型付け ×キー入力。 ダーウィンフィンチ → 鳥の一種。
    • OOPを少しわかった気になるも、提出物には指摘が沢山 → 宿題
  • アウトプットについて😑

    • はてなブログを月1本以上書く。
      • 労力かかるし中身薄いけど、当時の自分を客観視するため。戒め?
    • X/ツイッター日課っぽく投稿してた(今日の積み上げ)のをやめる
      • 学習時間が少ない中、投稿するモチベが低下して途絶える
        • 学びの少なさをふりかえるようでイヤな日もあったり
        • 学びが多くて要約する気力がわかない日もあったり
        • 休会を意識して気後れしたり
      • スクール在籍時の専用アカウントという訳ではない、ことを思い出して再開へ

今後に向けた雑感

さいごに

休会直後に出す予定のブログでしたが、いつの間にか1カ月経ってもう大晦日⛩️👻

タイトルは7カ月目ふりかえりとした方がよかったかもしれません。来年は歯切れのよい一年になりますように🙏

最後までご覧いただきありがとうございました

以上

PowerShellでの学びメモ

目次

はじめに

先月につづき、PowerShell(ver5系と7系)で学んだことのメモを書き留めます。 PowerShell とは - PowerShell | Microsoft Learn

スクリプトのコマンド引数について

  • RubyのOptionParser みたいな仕組みはなさげ
    • 起動するスクリプト(.ps1)に、オプションやキーワード引数の指定はできなさそう
    • args[0] で配列を順序正しく指定する(引数は少なくいのがよさげ)
    • PS > . get_server_params.ps1 XXX △△△
  • スクリプト内の function をCLIから直接呼べない。
# スクリプト(.ps1) のなか
function Main($password, $ouptputKind) {
  ...
}

Main -password $args[0] -outputKind $args[1]

認証情報オブジェクトを取得する

  • スクリプトWindowsクライアントから、Windowsサーバをリモート操作するに使う(かも)。
    • $PWord = ConvertTo-SecureString -String "P@sSwOrd" -AsPlainText -Force
    • Get-Credential
    • Invoke-Commandで認証エラー(身に覚えのないkerberos)でたときは認証情報オブジェクトを-Credentialに渡すと通る
  • パスワードは、Read-Host とかからユーザに直接入力してもらうのが基本っぽい。

Windowsサーバをリモート操作する

以上

MacBookProでPowerShellをつかってみる

目次

はじめに

最近職場が変わって、新しい担当システムのCLIコマンドライン)ツールがPowerShellベースで提供されていることからPowerShell(ver7系)を勉強しています。

PowerShell とは - PowerShell | Microsoft Learn

職場で貸与されたPCはMacBookPro(2016年版、macOS12)なのですがPowerShellは標準搭載されていません。 なので環境構築のメモと雑感を書き留めました📝

サポート 状況が少し怪しい..🙄

環境構築

MicrosoftPowerShell の公式製品ドキュメントをみればOKです。

macOS への PowerShell のインストール - PowerShell | Microsoft Learn

PowerShell 開発のための Visual Studio Code の使用 - PowerShell | Microsoft Learn

PowerShell - Visual Studio Marketplace

Visual Studio Code での基本的な編集

※英語のWebページについて Google翻訳やChome拡張機能(Deeplなど)を駆使すればサクサク読めるはずです。 理解度に自信がなければ、ChatGPTに質問したり要約してもらうのもアリだと思います🛟

あとPowerShell コミュニティはどこも公用語が英語なようです。

CLIツールとして使ってみる

よく使いそうなコマンドレット(PowerShellのコマンド)はMicrosoft.PowerShell.Utility Module - PowerShell | Microsoft Learnにまとまってます。

ピンとこない人はChatGPTにきいたり、Web検索("powershell grep" とか)した方が早いかもしれません。

ターミナル画面を起動して pwsh と入力するとプロンプトが起動します。

PS > 'Hello World'
PS > Write-Output 'Hello World'
PS > '{0} {1}' -f 'Hello','World'
  • ChromeでYahooのページを開く
PS > Start-Process -FilePath 'Applications/Google Chrome.app/Contents/MacOS/Google Chrome' -ArgumentList 'https://yahoo.co.jp/'

注意点として、ls コマンドのようにシェルのコマンドと被る場合はシェル(ネイティブ側)のコマンドとして判定されることです。 Windows標準搭載版(ver5系)で、エイリアスにたよってbashライクに入力していた人(= 自分)は要注意です。

エイリアスの使用 - PowerShell | Microsoft Learn

スクリプトを書いてみる

スクリプトの実行方法はスクリプトについて - PowerShell | Microsoft Learnにまとまっています。

構文については左上の検索窓(タイトルでフィルター)から探せるハズ。(例えば、比較演算子演算子について - PowerShell | Microsoft Learnに書かれています)

スクリプトファイルを作って、ターミナル画面から pwsh -f 'スクリプトファイル' で実行します。

function FizzBuzz {
    param (
        [int]$start = 1,
        [int]$end = 100
    )

    $start..$end | ForEach-Object {
        $number = $_
        $output = ""

        if ($number % 3 -eq 0) {
            $output += "Fizz"
        }

        if ($number % 5 -eq 0) {
            $output += "Buzz"
        }

        # FizzBuzz条件を満たさない場合、数字を表示
        if ($output -eq "") {
            $output = $number
        }

        Write-Host $output
    }
}

FizzBuzz

Debugging in Visual Studio Code

Visual Studio Code を使用したコンパイル済みコマンドレットのデバッグ - PowerShell | Microsoft Learn

今後に向けた雑感

実はキャッチアップや雑用に忙しく、このブログを書いてる時点でもまだVSCodeのマニュアルに目を通しきれていません💦 普段使い(ファイル探索、Excel参照とか)しているver5系のノリで対応中ですが、早くVSCodeの機能を使いこなして効率よくコーディングしたいなぁ..😗

最後までご覧いただきありがとうございました🙏

以上

30代でプログラミングスクールに入会してWeb開発を学ぶ_4カ月目ふりかえり

目次

はじめに

2023年6月1日に入会した、オンライン制のプログラミングスクール(フィヨルドブートキャンプ(FBC))で学んだことや思ったことを書き留めます

これから書くこと

  • FBC入会から4カ月経過した時点でのふりかえり
  • 直近3ヶ月の取り組みや雑感など

対象読者

  • 30代でWeb開発を学びたい人
  • Web開発を独学してる(た)けどスクールを頼りたい人
  • ITS派遣やSESでの就業歴がある人
  • 就業しながら勉強したい人
  • FBCで活動している人

フィヨルドブートキャンプでの活動状況

学習時間について

  • 業務が落ち着いていたので毎日活動できました🏃
  • 4ヶ月間の合計:593.5H = 6月: 124.0H, 7月: 164.0H, 8月: 155.5H, 9月: 150.0H

学習時間

ラクティスについて

プラクティスの進捗状況は全体の30%を超えた位?

学習を終えるのにどれくらいの時間がかかりますか?かかる時間は人それぞれですが、プログラム経験が全くない人の場合、1,200時間くらいかかる方が多いです。|フィヨルドブートキャンプ FAQ

プログラム経験が全くない訳ではないけど、1,200時間では終わらないかも...🙄

直近3ヶ月の取り組みや雑感

  • アウトプットすることを習慣づける

    • はてなブログを書いてみる。月1本以上
      • ブログ1本を書くだけでかなり時間を費やしている現実..🫠
        • 文章を公開することへの不安で何度も書き直してしまう..🫠
      • ブログのネタになりそうなことを計画するのはよさそう。
    • X(旧ツイッター)でつぶやいてみる。毎日
      • 公開の場に発信することに慣れる。度胸づけ🫣
      • 決まった時刻につぶやけば、生活リズムを整えられるかも。
  • 就活情報を意識しないようにする

    • 就活情報 & 現役生の就活状況がちらほら目につく。情報収集だけは早いほどいい?
    • 年齢を抜きにしても箸にも棒にも掛からなそうで自信を失くす😰
    • そもそもの目的(自作サービスをつくりきれる程度のスキル習得)を思い出して持ち直す。
  • ラクティスに割く時間が足りない?

    • 就活情報や、周囲の日報を読んで時間を溶かしてたので反省..🫠
    • ブログ1本を書くだけで..🫠
  • ラクティスの消化ペースがかなり遅い?

    • 自分よりも大分少ない学習時間で、プラクティスを多く消化するプログラミング未経験者がいる。
    • 競争ではないのが幸い?気にしないでおく。気にしたところで対抗策ないし...🙄
  • スクール内の輪読会に8月下旬から参加する(土日 朝5-6時。当時のレギュラー参加者は2-3人。スクール内の先人の方々)

    • 独習Ruby on Rails|翔泳社の本。残り30%位のところから参加。
    • Railsは覚えることが多いらしいので参加したかった。プラクティスの進捗的に頃合いになった
    • 1人ならば思うままにいじって進めるところを、参加者同士で"ああだこうだ"と言いながら取り組むワチャワチャ感🫣😃😲🐢
    • ハンズオンでは他の方々の作業の仕方から学ぶことも多い。主にデバッグGitHub..🤔
    • ラクティスとは関係なく環境構築する機会が増えた。ローカル環境がごちゃついてきた。
  • 朝型生活にすれば生産性はあがるのか?

    • 1日の総活動量は変わらない(早起きすれば夜は怠くなる)ので生産性に大差はなさそう..🙄
    • 体質次第で向き不向きはあるかもしれないけど、自分が朝型特性を持っている手応えはない。
    • 早朝開催のイベントに参加できる位しかメリット(?)はないと思う。
    • 夜勤があるならやらない方がいい。心身ともシンドさが激増..😰
  • OSS Gateのワークショップに参加する(9月開催分に2度参加)

    • ワークショップにビギナー枠で参加する。
      • サポートいただいてOSSプログジェクトにプルリクエスト(ドキュメント修正)を送る🏷️
      • OSS Gateの運営の方々には親切にサポートいただき大変お世話になりました🙇🏻
    • 初歩的なところから丁寧にサポートいただけたことや、OSS Gateのサポーターの方の言葉に感銘を受ける🤔
    • ワークショップにサポーター枠で参加する。
      • 困った時にはサポートメンターの方々からサポートいただけますし、ビギナーの方達には概ね自走していただけて、とても楽しかったです😄
      • ビギナー3名の方達のお手伝いをしたので、コントリビュート3回分の経験をできたような気分になれました😇
    • 自分の手が届く範囲で出来ることから取り組みたい、と思ってから行動できているか?
  • 最近は慢性的に体がツラい(腰が痛い)

    • 3ヶ月(5-7月)かけて減らした体重1.5kgがリバウンドしてた..😩
    • 体重増の原因はよくわからない..

今後に向けた雑感

  • 腰痛で椅子に座り集中力を保つのが難しいので、喫緊の課題はダイエットかも..🙅🏻🍚
  • 参加できそうなイベント(ハンズオンありの輪読会、モブプロ会など)を探し中..👀
  • OSS活動で次の一歩を踏むには..🤔

最後までご覧いただきありがとうございました🙏

以上