にこるの備忘

30代半ばでプログラミング始めました。成功が努力より先なのは辞書だけだ。何者にも媚びず 己を磨く

OSS Gateに参加しました🎉

 

 

現在私が在籍しているプログラミングスクール、フィヨルドブートキャンプ(以下、FBCと記載)とOSS Gateとのコラボレーション企画に参加しました。

 

OSS-*1活動未経験者のため「ビギナー」という枠で参加しましたが、

およそ6時間のワークショップの中で以下の3つを体験することができました🎉

 

  • 対象のOSSを決定する
  • 対象のOSSの改善点を見つける
  • 改善案に対してのプルリクエストを出す

当日の流れ

以下のプログラムに沿って進んでいきました。

 

時間 やること
10:00 講演「今日から参加できる!OSS開発」
10:30 アイスブレイク
10:55 ワークショップ開始(OSS開発手順を説明)
11:15 対象OSSを動かす
12:15 お昼休憩(雑談タイム)
13:15 午前の作業のふりかえり
13:40 プロジェクトにフィードバックする
15:40 小休憩
15:50 午後の作業のふりかえり
16:15 まとめ
16:25 アンケート記入
16:35 ワークショップのふりかえり
17:10 終了

【Special】OSS Gateオンラインワークショップ - フィヨルドブートキャンプ特別版 2023-09-30 - OSS Gate | Doorkeeperより

 

講演「今日から参加できる!OSS開発」

未経験者にとってOSS活動というのはハードルが高く感じられてしまうものかと思うのですが、

講演のタイトルにあるとおり「今日から参加できるものだよ〜」というメッセージを投げかけてくださる内容でした👏

 

特に記憶残ったのは以下の内容でした👀

 

  • OSSといってもすごいものばかりではない
    • 50行未満の小規模なライブラリもある
    • 脆弱性があるのに発覚まで8年かかったものもある
    • ツギハギだらけのスパゲッティコードだってある 
  •  OSSに関わるメリット
    • オープンなものであるため、実績として見せやすい
    • モジュールとして使いまわすこともできる
    • 恩返し・恩送りができる
  • 初学者だからこそ持ち寄れる物がある
    • 普通のユーザーの視点
    • 初学者の視点
  • OSS開発:自分たちが持ち寄れるものを持ち寄れる範囲で
    • 協力は自分にできる所まででいい
    • 自分にできない部分は他の人の協力に任せる

特に「初学者だから持ち寄れるものがある」、

「自分たちが持ち寄れるものを、持ち寄れる範囲でやるのがOSS活動」という言葉に背中を押されました😊

なんてpeaceで素敵な考え方🙌

 

仕事で社内用のマニュアルを作成した際に「前提知識を持った自分が書いた文章で0から聞く人にとって説明不足ではないか」という点を確認するために、

社内で展開する前に部署内でレビューを挟んでいるのと同じであることに気づきました。

対象のOSSを動かす

一言自己紹介でのアイスブレイク〜開発手順の説明を受けて、いよいよ対象のOSS決めに入ります。

今回はサポーター1名、ビギナー2名の3名でグループになって進めました✏️

(サポーターがFBCの駒形さんだったのと、

自動で同じ席に割り振られたのが同じくFBC生の夫だったのでなんだかファミリー感のある席でした😂)

対象のOSS決め

対象のOSSはビギナー自身で選びます。

事前にこれというものを決めていなかったのですが、

最近JavaScriptのプラクティスで使用した

enquirer - npmというnpmパッケージでIssueを探してみることにしました💪

 

まずは対象のライブラリがOSSであるのか確認するために、

GitHubのリポジトリでライセンスを見ます。

 

今回はLICENAEというファイルに「MIT License」という記述がありました。

オープンソース対象であるライセンスの一覧が載っているOSI Approved Licenses を見てみると、「MIT License」の記載があったのでOSSであることが確認できました💡

 

改善点を見つける

次に対象のOSSの改善点を見つけるため、実際にサービスをインストールして動かしてみます。

「一度使用しているnpmだし、改善点見つかるだろうか...」と不安に思いつつ、

README に沿ってインストール。

ここは問題なく進めることができました⭕️

 

ちなみに当日は作業メモとしてGitHubに逐一やったことや気づいたことを記録していきます。

このパートはこんな感じ✏️

 

次に新規ファイルを作成し、Usage のサンプルコードどおり記述→実行

 

 

すると...文法に関するエラーが出ました👀

(技術的な記事ではないので詳細は省きます)

 

 

エラーに沿ってコードに追記をし、再度実行したところ無事期待する結果を得ることができました✨

 

ラクティスで使用した際には以下の理由により気づかなかった部分でした👀

  •  自作のコードの中で使用したため、サンプルコードをそのまま入力→実行するという手順を踏まなかった
  • 文法の前提知識を持っていたため、エラーが出る書き方をしなかった

ということで、新たな気づきはあったのですがここで一つの不安がよぎります。

 

今回のエラーが出た原因はenquirerの仕様というよりは言語のルールだからissueの対象とは違うかも...🥺

 

この不安も含めて作業メモに残したところ、サポーターの駒形さんがすぐにコメントをくださいました!

 

 

なるほど!!たしかに!

これこそが冒頭の講義でお話にあった「初学者だからこそ持てる視点」かもしれないとピンときた瞬間でした☀️

 

その後もこのコード周りを動かして調査を進め、最終的に「サンプルコードをそのまま実行すれば動くものに変更する提案」で進めることに決めました!

 

午前の振り返り

お昼休憩を挟んで、4つのテーブルに分かれて午前中の振り返りを行いました。

自身の作業メモに沿って

  • 対象のOSSを何にしたか?
  • 午前中に動かしてみて見つけた改善点

等を各自発表していきました。

他の方の発表を聞いて、さまざまな対象OSSやIssueがあることを改めて実感しました!

また発表に対してサポーターの方がポジティブなコメントやアドバイスをくださり、勉強になりました💡

私の場合は改善案として2つのアプローチがあったので、

2つのアプローチ案をIssueとしてあげるのと、一方に絞るのとどちらがよいか質問をしてみました。

OSSに対して知見のある方に直接質問をし、回答をいただけるのもまたOSS Gateの魅力の一つだと感じました✨

 

その時のメモ✏️

 

 

プロジェクトにフィードバックする

振り返りの後はフィードバックする際のポイントを説明いただき、

実際に午前中に見つけたIssueに対しての改善案を作成していきます。

 

フィードバックの準備

まずは以下の3点をまとめました✏️

  1. 「〜なので報告したい」とメモを残す
  2. リポジトリで報告の方法を探す
  3. 既存のissueで同じ報告があるか確認する(キーワードで検索する)

 

1.「〜なので報告したい」とメモを残す

READMEのUsageが、そのまま実行してエラーが出ないサンプルコードだと嬉しいので報告したい!

2.リポジトリで報告の方法を探す

GitHubでissueを立てればよいとのことでした💪

3.既存のissueで同じ報告があるか確認する(キーワードで検索する)

エラー文から単語をピックアップして3回パータンで検索してみましたが、

特にヒットするものはなかったので新規でIssueを立てることに決定しました💡

 

Issueのドラフト作成

まずは日本語でIssueのドラフトを作成します。

以下の内容をまとめました!

 

  • 状況
    •  何が起こっているのかを一言で
  • 実行環境
    •  コードを実行した環境(バージョン)
    •   インストールしたライブラリのバージョン
  • 実行した手順
    • インストールからエラーが出るまでの手順
  • 改善案
    • どうしたらIssueが解決するかの提案
  • 期待すること
    • どうなったら嬉しいのかを一言で

 

このドラフトに対してサポーターの駒形さんから頂戴したアドバイスをもとに修正版を作成しました✏️

 

英語でのIssueの作成

次に完成した日本語のドラフトを翻訳し、 DeepL 先生にお世話になりながら英語でのIssue文面を作成✍️

英訳した文面に対して、駒形さんから英語でよく使われる表現を教えていただきました!

翻訳ソフトを使えば英語で文章を作ることはできても、よく使われる表現までは知ることができないのでとても勉強になります☀️

修正を進めていたところで時間になったので、再び4つのテーブルに移動して午後の振り返りを行いました。

午後の振り返り〜アンケート記入

午前中の振り返りと同様、それぞれ午後に行なった成果を発表していきます。

既にIssueを立てた方や、Issueだけでなくプルリクエストまで出した方もいらっしゃいました!みなさんすごい✨

実際にみなさんの作業メモやIssueを見ることができ、学び多き時間でした😊

 

最後にアンケートを記入して、本日のプログラムは終了です⏰

ワークショップ修了後

サポーターの駒形さんより、今回の私の改善案はサンプルコードの修正点が複数あることからプルリクエストのほうが良いかもしれない。とご提案をいただきました。

 

現状と改善案の差分がわかりやすいということもあり、ご提案どおりプルリクエストを作成、送ってみました🚀

 

今回作成したPRは以下です📮

github.com

 

こうして無事初めてのOSS活動を終えることができました🙌

参加してみての感想

ワークショップ開始までは自分がIssueを立てるところまで辿り着けるイメージが全くわかず、わくわくと同じくらい不安がありました🥲

しかし冒頭の講義やサポーターの方々が背中を押してくださったり、

一緒に進めているビギナーのみなさんとの振り返りに良い刺激をいただき、

学びも多かったですし楽しみながら進めることができました!

ありがとうございました🙇‍♀️

勇気を出して参加してみてよかったです😊

 

【後日談】送ったプルリクエストについて

プルリクエストを送ってから半日とたたずに作者の方からメンションをいただきました😭

「This is great, thank you」という光栄なお言葉と共に、

(ここは深く反省している点なのですが...)不要な差分が生まれてしまっていたので「その点のみ元に戻してみてもらえますか?」という内容でした👀

こんなに早々に内容を確認してコメントをいただけなんて思ってもみなかったので、とても感激してしまいました🥲!

早速お礼とお詫びを添えて修正版のコードを提出しました🙏

 

ラクティスでお世話になったライブラリの作者とこうしてやりとりできるなんて、

OSS活動ってすごい...!

 

プログラミングを通して世界が広がったのを感じました🌎

今後学習を進める中でOSSに触れる機会はたくさんあると思うので、

気づいたことがあれば関わってみたいと思います!

 

改めてこうした機会をくださったOSS GateとFBCに感謝します🙇‍♀️

ありがとうございました🌸

*1:オープンソースソフトウェア、Open Source Software)の略称。ソースコードが公開されており、誰でも自由に変更や再配布ができる無償のソフトウェアのこと。

仕事をしながらパートナーと学習する日々について

 

これは フィヨルドブートキャンプ Part 2 Advent Calendar 2022 の10日目の記事です(Part 1 もあります🗓)。

昨日はchocoさんの「仕事をしながら、フィヨルドブートキャンプに参加して思ったこと」という記事でした🎉

 

 

はじめに

こんにちは。フィヨルドブートキャンプ(以下、FBCと記載)でプログラミング学習中のにこると申します。

FBCには今年2022年のGWに、パートナーであるhirano-vm4さんと一緒に入学をし、

現在は仕事をしながら学習を進めています✏️

学習開始から200日経ったので、振り返りの意味もこめて「仕事をしながらパートナーと学習する日々」について書いてみようと思います。

自己紹介

30代半ばにして未経験からFBCでプログラミング学習を始めました。

新卒から現職に至るまで主にIT系のベンチャー/スタートアップ企業でバックオフィス系の職種を経験してきました。

現在はパートナー(hirano-vm4さん)と猫2匹と暮らしています🐈🐈

入学のきっかけ

職場の社内研修として簡単なSQL学習をしたことがプログラミングの面白さに気づいたきっかけでした。

それまではプログラミングに対してただ「難しそう…」「とっつきにくそう」という印象を持っていたのですが、

短い言葉で必要な情報を呼び出すことのできるコードがまるで魔法のように感じたのでした🪄

「ちょっと学んでみようかな」という思いつきのもとプログラミングスクールについて調べている中、卒業生の方に教えていただきFBCに出会い、入学することを決定🙌

FBCと出会うきっかけを作ってくださり入学前にお話を聞かせてくださったお二方、本当にありがとうございます💐

働きながらの学習について

働き方

現在は以下のような働き方をしています💡

働く時間、場所については自由度が高いので、

学習を始めてから改めてありがたい環境だな〜と感じるようになりました🙇‍♀️

  • フルタイム正社員
  • フレックスタイム制コアタイム有り)
  • 基本的には1週間のうち、リモート4日+出社1日
  • 通勤時間はドアtoドアで片道1.5時間くらい
  • 残業時間は月10~20時間くらい

いつ、どのように学習をしているのか

出社の日
  • 通勤中
    • 進行中のプラクティスの参考URLを読む
    • 参考書籍を読む
    • Rubyのリファレンスを読む
    • (プラクティスで詰まっているところがあれば)日報を読むor検索をして解決のヒントを集める
    • hirano-vm4さんと学習に関する疑問点について話したり情報交換

会社のノートPCを持ち歩いているので、

学習用PCは自宅に置いておき、通勤時間はスマホや本による情報収集や、知識を定着させる時間に充てるようにしています!

ただし、行きの電車は座れることが多いので途中で寝落ちしてしまうことも少なくありません😇

帰りはhirano-vm4さんと合流して、学習について情報交換をしたり二人で疑問点について話しながら帰宅することが多いです🗣

 

  • 退勤後

出社日は基本的に残業はしないようにしているので帰りの時間がそこまで遅くなることはないのですが、

リモート日よりは学習開始時間が遅くなるのと通勤疲れで1時間未満になることも多いです。

コンディションがイマイチの時は「健康優先!」と割り切って学習をスキップすることもあります💨

 

リモートの日
  • 仕事開始前30分+休憩時間20分

朝は全ての準備を終えてから仕事開始まで30分、

休憩時間も昼食と片付けを全て終えてから20分学習をするようにしています。

学習時間を確保したい気持ちで朝も休憩時間もテキパキ用事を済ませることが習慣づきました💪

  • 退勤後

夕食の片付けを終えて、食後のコーヒーを楽しみつつ学習を開始します。

つい時間を忘れて取り組みたくなってしまいますが、遅くとも12時には就寝できるように切り上げています。

 

休日
  • 土日どちらかは学習メインの日にすることが多い
    • その場合、2日合わせて学習時間6~8時間
  • 旅行など土日どちらも予定が入っていることもあり

hirano-vm4さんも私も土日休みなので休日のどちらかは学習メインの日にして、

土日合わせて6~8時間くらいは学習していることが多いです。

ただし旅行など土日どちらも予定が入っている時など、学習時間の確保が難しいときには割り切って予定を楽しむようにしています!

(旅行にも一応PCを持って行くのですが、開かずに終わることが大半です🙃)

 

仕事をしながらの学習について思うこと

個人的に感じるメリット
  • 仕事の優先順位や効率化を更に意識するようになった

どちらも仕事をする上で常に意識ことなのですが、

「学習時間を確保するために仕事はなるべく定時内で終わらせる!」という具体的な目標ができたことで、より意識して取り組むようになりました✨

  • 頭の切り替えができる

学習を進める中で謎のエラーが出てしまったり、コードが思うような実行結果にならなかったりと、沼にはまってしまうような場面にしばしば遭遇します。

こうなると解決するまでとことん取り組みたくなってしまうのですが、

一旦時間を置いてから作業を再開するとあっさり解決するということがこれまで何度もありました。

恐らく時間を置くことで、狭くなっていた視野が開けたり固執していた特定の考え方から離れることができ、解決の糸口が見つかるからではないかと思っています👀

  • (特に始業前や休憩中など)時間の制約があることで半ば強制的に学習から離れなくてはいけないタイミングが訪れること
  • 仕事中はプログラミングのことが頭から自然と抜けること

上記により、一旦頭の切り替えができるのは個人的に感じるメリットの一つです。

今後の課題かもと思うこと
  • ラクティスを進めることが優先になってしまう

FBCのDiscordで定期的に開催されている輪読会や質問タイム、ミートアップなどのイベントに参加したり、Ruby関連のイベントにも興味があるものの、プラクティスを優先してしまい参加できていない実情があります。

実際にお仕事や学習と両立して参加されている方もたくさんいるので、「仕事をしているから」というよりは自分が何を優先していきたいのか改めて自問自答し、時間配分や取り組み方を考え直していく必要があると感じています🤔

 

  • 運動不足

平日はリモート勤務メインにしているため終日外に出ないことも多々あります。

以前は家でトレーニングをしたり近所を散歩していたのですが、学習優先にしているため頻度が減ってしまいました。

学習も健康あってのことなので、運動不足対策も考え中です👀

パートナーとの学習について

心がけていること

パートナーと学習をするにあたって以下のようなことを心がけています。

特に話し合って決めたのではなく、お互い共通認識として持っている部分です。

  • 楽しむ時は楽しむ!

先ほど「休日の学習」についてでも書きましたが、予定がある時は無理をせず、学習できない日があっても自分を責めないように心がけています。

  • 課題の答えを見せたり、丸写しはしない

情報交換する場合は基本的に日報に書く(書いた)内容の共有に留め、

コードを丸っと見せたり、模写することはしないようにしています。

パートナーとの学習について思うこと

個人的に感じるメリット
  • 共通の話題が増える

hirano-vm4さんとの間に「FBCでのプログラミング学習」という共通の話題が1つ増えました。

「プラクティスのここ難しいよね〜」とか

学習中のプラクティスの参考URL等を見て「ここってこういう解釈したんだけど、合ってるかな?」とか、学習中だけでなく、食事中や休日お出かけしている時などあらゆる場面で自然に話題としてあがってきます。

わからなければ二人で調べて答えを探したり、説明することで理解が深まったり、ちょっとした疑問点の解消がフランクに行えるのは大きなメリットだと感じています。

話している間に思考が整理されて、コードを書くプラクティスでは新しいアプローチが閃くこともありました💡

  • 協力し合える

どうしても沼から抜け出せない時は「こんなところで躓いている」と共有をしています。

お互いプログラミング未経験なので似たような箇所で躓くことも多く、

既に解決済みの時は「さっき同じことがあったよ〜」といって参考にした日報や自身の日報を共有するし、

リアルタイムで同じところで困っている時は一緒に試行錯誤をすることもあります。

ただ、今後のことを考えると身内以外の人にテキストで状況を適切に伝えるという「質問力」をつけることは大切なので、

二人で考えて解決しない時はFBCの質問機能(Q&Aに投稿する、wakaranチャンネルで質問する、日報に書くなど)を利用しようと決めています。

  • 生活リズムが作りやすい

同じ目標があることで、二人で出社の日は外食orごはんを買って帰ったり、

早く家事を終えられるにはどうするのが良いかを二人で意識して動けるので生活の中に学習時間を組み込みやすいのもメリットだと感じています。

今後の課題かもと思うこと
  • 身内で完結してしまう問題

これはメリットでもあるのですが、学習中の不安や疑問を身近に話せる人がいてくれることで、FBCのコミュニティ的機能の活用が遠のいてしまっているというのもある気がしています。

この先プラクティスの進捗が変わってきたり、チーム開発や自作サービスのプラクティスに入ると状況も変わってくるのかもしれませんが、身内だけで完結してしまわないように意識は持っておこうと話しています。

まとめ

仕事をしながらパートナーと学習する日々はこんな感じです!

  • 仕事をしながらの学習はまあまあ時間に追われるけど、それによるメリットもある
    • 時間をどう使うかをより意識するようになった
    • 沼にはまっている時「もっと作業したい!」と葛藤することもあるけど、強制的に離れることが良い結果を生むことがある
  • パートナーと学習始めてみたら嬉しいことがいっぱいあった
    • 共通の話題が増える
    • 力を合わせて頑張ることができる
    • 生活リズムも整えやすい
  • 今の個人的課題点
    • ラクティス優先に傾いてしまっている
    • 身内だけで完結しないことは意識し続けるべし

最後に

思い返すと学習開始してから200日、本当にあっという間でした!

一年前の今頃は、自分がプログラミング学習をしているなんて思ってもいなかったので、人生って何が起こるかわからないな〜としみじみ

完了したプラクティスの一覧を眺めると確かに進んできた軌跡がある一方で

課題に詰まった時は「本当に自分は成長できているのだろうか…」と疑問に思ったりすることもありますが、

入学当初は「仲良くなれるのだろうか...」と心配していた黒い画面(ターミナル)を当然のように毎日開いてプラクティスを進めるようになった今の自分は、自分比でいえば確実に成長できていると感じます🙌

温かく見守り、困った時にはやさしく手を差し伸べてくださるメンターのみなさんや、

詰まった時に日報を検索するとエラー発生〜解消までを丁寧に記録してくださっている受講生のみなさんや卒業生のみなさん、

FBCを教えてくださり入学前にお話しを聞かせてくださったお二方、

そして学習に詰まった時にモヤモヤを聞いて一緒に解決を試みてくれるパートナーであり戦友であるhirano-vm4さん、

手探りながらも私が楽しく学習を続けられているのはみなさんのおかげだと思っています!いつもありがとうございます✨

 

思うようにいかず沼ることもしばしばありますが、入学前にSQL学習で感じた「プログラミングって魔法みたい!」という感動を学習しながら味わう日々です💡

プログラミング学習はとっても面白い😊!

一年後どこまで成長しているのかを楽しみに、引き続きわくわくしつつ学習を進めていけたらと思います🌸

 

明日はパートナーのhirano-vm4さんの記事です🐈