No day younger than today

RubyとかRailsとか蒙古タンメンとか

Rubyの技術書を輪読する”りんどく.rb”を立ち上げます

こんにちは!ふーがです。

この記事はRuby Advent Calendar 2021(カレンダー2) の14日目の記事です。

突然ですが、僕はRubyというプログラミング言語は心底たのしいと感じています。
たのしいのでもっと深く知りたいし、多くの方と学びが共有できたら嬉しいです。

これを実現するため、輪読会をメインとしたRubyコミュニティを立ち上げます!!
その名も「りんどく.rb」!!(そのまんま…)

ロゴもつくりました

自己紹介

ふーがという名前で活動しています。
今年11月にFJORD BOOT CAMP(フィヨルドブートキャンプ)というプログラミングスクールを卒業したばかりの実務未経験者です。

 少し前に、「せるれぽ」という書籍のセール通知サービスをリリースしました。

serurepo.com

輪読会を開催します

冒頭に書いたとおり、輪読会をメインとしたRubyコミュニティを開催します。
理由は絶え間なく輪読会をしたいからです。

きっかけ

フィヨルドブートキャンプでは、2021年12月現在、受講生・卒業生が主体となって開催する輪読会がなんと7個もあります。
中には参加したい輪読会もあるのですが、時間的に都合が合わないことが多く、ヤキモキしています。

"自分の都合がいい時間帯"に"自分が読みたい本を読める"輪読会があればなぁ〜と考えていましたが、「探すより自分で立ち上げた方が早いのでは?」とひらめき、勢いで開催を決めました。

コミュニティじゃなくてもいいのでは?

もちろん、フィヨルドブートキャンプ内のみの開催も考えました。

でも、せっかくならRubyコミュニティを主催したいですし、たくさんのRubyistとの交流の機会になればありがたいという想いもありました。
また、今後は交流の輪をもっと拡げたいという考えもあります。

このような理由から、Rubyコミュニティという形で開催することにしました。

開催の目的

以下の3点を実現できたらいいなと考えています。
高すぎる目標な気もしますが、あくまで目標なので!!

  • Rubyについてもっと深く知ること
  • Rubyist同士の交流を深めること
  • Rubyコミュニティのさらなる活性化に貢献すること

Rubyについてもっと深く知ること

そのまんまです。
もっとRubyを知って、もっとRubyをたのしみたいです。

Rubyist同士の交流を深めること

Rubyistはだいたいともだち(?)みたいな世界になればいいなぁと思っています。

Rubyコミュニティのさらなる活性化に貢献すること

コミュニティがもっと盛り上がればRubyの価値がもっと上がりRubyistの魅力も高くなり、間接的にRubyの進歩にも貢献できるのかな、と考えています。

読む本の対象

初回は、最近Ruby3.0対応の第2版が出版された、「プロを目指す人のためのRuby入門[改訂2版] | 伊藤 淳一」を輪読したいと考えています。

以降は、Ruby || Ruby on Railsに関する書籍を何かしら選んで輪読するつもりです。
参加者の皆さんの希望により例外もあるかもしれません。
柔軟にやっていきたいですね。

開催日

初回はまだ未定ですが、来年1月の初旬から始められたらいいかなと思っています。
時間帯は朝早めの時間を考えています。
一緒に朝の時間を有効活用しましょう。

輪読会の進め方

予習はなし、頭から音読で読み進めつつ、疑問点や解説(できる方がいれば)を挟んでいく方針で考えています。
コードの部分はモブプロ形式で実際に実行したり、「ここ、こう変えたらどう?」みたいなこともやっていきたいです。

ドライバーは参加者の中からランダムに選出してやってもらおうかなと考えています。

参加方法

輪読会はDiscordの音声チャンネルを使用して行います。
テキストのやりとりもDsicordのテキストチャンネルを使用します。
参加者の皆様へのお知らせもDiscordで行います。

参加を検討してくださった方は、下記のリンクからりんどく.rbのDsicordサーバーにjoinをお願いします!
具体的な開催日時や要領が決まり次第、お知らせします。

discord.gg

ぜひご参加ください

参加資格はありません。
初心者からベテランの方、性別、居住地、どなたでも大歓迎です。

一人でも多くの方にご参加いただいて、一緒に盛り上げていければ嬉しいです。

Rubyと出会って1年経ちました

僕がRubyに初めて触れたのが去年の12月なので、丸1年経過したことになります。
1年前はコミュニティのコの字も知らなかったし、そもそも「プログラミングを続けていけるのか…?」とすら思っていました。

そんな僕が、毎日欠かさずプログラミング学習を続け、コミュニティを開催しようという気持ちを持つことができたのは、フィヨルドブートキャンプというコミュニティに近い環境にいられたことやRubyコミュニティの良さをこの1年で体感してきたからだと思います。

りんどく.rbもRubyの楽しさやコミュニティの良さを感じてもらえる場になればいいなぁと思っています。

とはいえ気負いすぎたり理想を追い求めすぎてもうまくいかない気もするので、ゆるくふんわりまずは楽しんで継続していけたらいいなぁと思います。

フィヨルドブートキャンプはプログラミング”だけ”を学ぶ場じゃなかった

こんにちは!ふーがです。

この記事は「フィヨルドブートキャンプ Part 1 Advent Calendar 2021」の8日目の記事です。
Part2もあります。
昨日は @pofkumaさんの「フィヨルドブートキャンプの門をくぐって - pofkuma’s blog」と、@ogaworksさんの「OOPに対するもやもやがだいぶ晴れてきた話 - ogaworks」でした。

先に結論を書くと、フィヨルドブートキャンプはプログラミングスクールですが、プログラミングスキル”だけ”ではなく、他の汎用的なスキルも学べる場だということに気がつきました(おそい)。 現職での業務を通じてそれを強く感じることがあったので、何をどう活かせたのかを書きたいと思います。

僕のステータス

フィヨルドブートキャンプを11月に卒業したばかりの実務未経験者です。
WEBエンジニアとしてのスタートを切るため、現在転職活動中です。

現職の仕事内容

公務員としてDX推進を担当しています。
内部的な開発部門もあるのですが、それとは別に、事業者が提供しているソリューションを導入するなどして、組織全体の事務効率を向上させることを目的とした部署に在籍しています。

はじめてのRPA

現在の部署に異動して最初に任されたのが「RPA」の導入でした。
これがきっかけで業務でプログラムを書くことになりました。
少し前置きが長くなってしまいますが、その辺の経緯も書いていきます。

RPAとは

RPA(Robotic Process Automation)は、人間がパソコンを使って行う定型作業(人の判断が介在しないもの)を、ロボットで自動化することをいいます。
ここでいう「ロボット」とはいわゆるプログラムであり、例えばデスクトップにあるショートカットをクリックするだけでロボットが自動で作業を進めてくれます。

具体例をあげると、エクセルに入力されたデータを目視で確認しつつ別の業務システムに入力して登録する、定期的に様々な宛先へ報告メールを送信する、といった業務を自動化することができます。

RPAでロボットを作成できるソリューションは各社からさまざまな製品が出ています。
製品によってできることやプログラムの組み方も違うようです。

導入の背景

現職では、「時間外勤務の縮減」や「ワークライフバランスの充実」といった取り組みが進められている一方、時期ものの定型作業によってこれらの推進が阻害されているというのが現状です。

阻害の要因となっている業務を見てみると、「人の判断を必要としない」入力業務であったり、すでにあるデータを「他のシステムに入力しなおす」ものであったりと、RPAを導入することで大幅な時間削減と事務効率の向上が見込めました。

こういった状況から、「RPAを導入して定型作業を自動化し、職員の時間外勤務を削減してワークライフバランスの充実に貢献しよう!」という流れになり、導入を進めることとなりました。

RPAの導入と未知の技術に興味津々なわたし

導入当初、プログラムの作成については開発部門が一手に引き受けていました。
すでにフィヨルドブートキャンプで学習していた僕としては、「RPAってどんな感じで書けるんだろう?」と、未知の技術に興味津々でした。

打ち合わせと称して開発部門に足を運び、プログラムを組んでるところを見させてもらったり、どんなことができるのか教えてもらったりしているうちに、「もしかして自分にもできるのでは?」と思い始めました。
コードの記述の仕方や細かい挙動こそ違えど、やっていることはまさにプログラミングそのものでしたから。

とはいえ開発部門ではない僕は「自分がプログラムを組むことはないだろうな」と諦めムードでした。

プログラム開発をさせてもらえることに

そんな中、開発部門の人手が足りないという話をキャッチしました。
僕は今しかない!と思い、上司に「開発部門の人手が足りないと業務効率化が進まなくなる!」とか「僕プログラミングできます!」的なことを懇々とプレゼンし、紆余曲折の末RPAプログラムを開発する許可を得たのです。

これ以降、通常業務に加えてRPAプログラムの作成も行うようになりました。
Rubyではないにしろ、業務でプログラミングができる!ということにめちゃくちゃ舞い上がっていた記憶があります。

何を活かせたのか

さて、前置きがだいぶ長くなりました。

新しい技術で実装していくことや担当者からヒアリングして要望を形にしていくのはすごく大変なことでしたが、フィヨルドブートキャンプで学んだスキルがめちゃくちゃ役立ったと感じています。やっと本題です。

未知の技術を学び、使う

プログラミング全般的にそうかもしれませんが、新しい知識を学んで利用する機会がよくあると思います。
フィヨルドブートキャンプでのチーム開発や自作サービス開発を通じていろいろな知識・技術をインプットしては開発に反映する、ということを経験していたので、RPAプログラムを書くためのキャッチアップもまったく苦になりませんでした(むしろ楽しかった)。

また、「RubyだとこういうメソッドがあるけどRPAではどうだろう?」と考えて調べたり、今後僕以外がプログラムを修正することを考慮して「変数名わかりやすくしておかなくちゃ」とか「この処理はDRYにしておこう」と考えられたのも、フィヨルドブートキャンプでメンターの皆さんからそういったレビューをしていただいていたからだと思います。

実現したいことと実現可能性のギャップを埋める

実現したいことがあるとして、その実現方法を考えるには、「自分に何ができてどう活かすか」「足りない部分はどこでどうやって補うか」を整理することが必要です。

例えば、フィヨルドブートキャンプには「Rubyでlsコマンドを作る」というカリキュラムがありますが、初めて挑戦したとき「何から始めればいいんだ…」と絶望的な気持ちになった経験があります。 lsコマンドが実現したいことだとするならば、その実現方法がわからない状態ですね。

lsコマンドのカリキュラムに限らず、生徒がどうしていいかわからなくなっているときには、「小さいタスクに分割してみよう」というアドバイスがなされているのを見かけます。いわゆるタスクばらしです。
僕もすべてのカリキュラムにおいてタスクばらしを実践していましたが、この経験をそのまま今回の仕事に活かすことができました。

タスクばらしはプログラミングのみならず、仕事でも私生活でも応用が効きます。
実現したいことを小さく小さく分割していくと、今の自分にできること、今はできないけど少し努力すればできそうなこと、しっかり勉強する必要がありそうなこと…そして、それらを積み上げていけば実現したいことを実現できるということがわかります。

そして、それを共有することでRPAを必要としている担当者との認識の齟齬もなくなって、「最終的にどういうものが出来上がるのか」「この機能は入るけど、こっちは入らないよ」などといったビジョンの共有ができたように思います。

IT知識がない人に説明する

フィヨルドブートキャンプでは、学習をした日に日報を書きます。
Discordには個々人の分報チャンネルがあり、わからないことや日常のことなどしょっちゅうつぶやきます。
質問したいときには、何をどこまでどうやって今どういう状況でどうしたいのか、といったことを書き起こして質問します。

何かと文章を書く機会があるわけです。
自分の考えや状況をテキストで人に伝えるのって、想像以上に難しいです。
新しいことを学ぶときに理解するのにも、自分にわかりやすい言葉で咀嚼する必要があります。

こういった経験から、伝えることを意識した噛み砕いた表現を自然と意識するようになっていました。
そのおかげで、ITに疎い上司や業務担当者と話すときでも、平易な言葉できちんと説明して、伝えることができたように思います。

まとめ

フィヨルドブートキャンプでの学習は、与えられた課題に対して実装するというもので、「必要とする人から課題を引き出して実装する」というのは同じプログラミングでも似て非なるものでとても大変だということを、身を持って経験することができました。
ただ、大変ではありますが真摯に向き合ってプログラムが完成したときに、「すごく助かってるよ」「良いものを作ってくれてありがとう」といった言葉をかけてもらった時には、そんな苦労も忘れるくらい嬉しいです。
プログラムの先に人がいるのだということを、肌で実感できたと思います。

こうした喜びを感じることができたのは、フィヨルドブートキャンプでプログラミングスキルのみならず、汎用的なスキルも同時に身に付けられたおかげです。
僕はフィヨルドブートキャンプで、プログラミングの技術以外にも大切なことを学ばせてもらったのだと気づくことができました。

今はまだ組織内という小さな範囲内ですが、知識も技術も研鑽してもっと広い範囲で、広い視野で、課題解決できるエンジニアになれたらと思います。

(就活がんばろう…!)

次回予告

フィヨルドブートキャンプ Part 1 Advent Calendar 2021」はまだまだ続きます。
明日は@isshi_hasegawaさんと@nekokitareさんです。楽しみですね。

【Rails】DeviseとOmniauthでGoogleログインを実装する

こんにちは、ふーがです。
フィヨルドブートキャンプでプログラミングを学習しています。

現在は自作サービスを作成しているところで、そのサービスでGoogleログインを導入したので、その手順を残しておきます。

続きを読む

RailsでGoogleのMaterial design iconsを使う方法

こんにちは。

Railsで立ち上げたプロジェクトにGoogleMaterial design iconsを導入したのですが、その手順がよくわからず少しハマったので、正解の手順を残しておきます。

ちなみにGoogle Fonts経由でアイコンを取得する方法です。
セルフホスティングの手順については書いていないのでご了承ください。

続きを読む