見出し画像

社内勉強会「NEXTLAB」活動報告#2 図書館アプリだけじゃない!私たちが「やりたい」コト

みなさんはじめまして!NEXTLABのはぎです!

前回のNEXTLABの紹介記事はこちら↓

前回の記事でお話しした図書館アプリ以外にもNEXTLABは活動をしていて、今回はそちらの活動テーマを、2期生としてNEXTLABに加入した私としゅんたさん、2人の視点から紹介していきます!


はじめに

加入の決め手

NEXTLABに途中加入した2人なので、まずはそれぞれの加入理由をお話しようかなと。

私はぎは部署を越えた横の関係性を築きたかったからです!お誘いを受けたときはまだまだコロナの影響も大きく、部内の限られたメンバーとしか交流がなかったので、NEXTLABの活動でのメンバー交流がとても魅力的に感じたんですよね~

しゅんたさんは今まで勉強会に参加したことがなかったため、純粋な興味から参加を決めたそうです。また、中々勉強に踏み出せないことに危機感を感じていて、NEXTLABが勉強のきっかけ・モチベーションなるのでは、という理由もあったとのこと。

テーマぎめ

活動を始めるにあたってまずはテーマ決めをしたのですが、決め方は非常に自由でメンバーが活動を通して達成したい項目を列挙した後、全員から多く賛同を得られたテーマを採用しました。

眺めてみると多方面でやりたいことが出てましたね。その中でもメンバーの興味が技術を学びたい方面へ向いていることが見えたりします。そんな中で結果として人気のあったSnowflakeGo言語をテーマに決めました!

進め方については、図書館アプリの活動も継続していたので、Snowflake、Go言語、図書館アプリで計3チームに分かれて約4ヶ月間活動しました。各チーム目的を定めた上で調査や実際に手を動かし、隔週の全体ミーティングで進捗状況を共有することで別活動の知識・技術も吸収しつつわいわいと進めた形です。

以降ではSnowflakeチームだったしゅんたさんとGo言語チームだった私で各チームの活動をお話していきます。

Snowflake活動

Snowflake活動は私しゅんたがお話します。チームメンバーはにのさん、こーへいさん、私の3人で活動しました。

目的

話に入る前にSnowflakeってなんぞやという方もいると思いますので、特徴や活用事例は会社の公式ページを宣伝込で載せておきます。ご興味があればご覧ください。

事前情報を補足した上で、メンバー全員それまでに触る機会がなかったので、実際に使ってみて特徴・機能を把握することを目的にしました。一方で何ができるかわからない状態でもあったので、ひとまず目標は大きく立てずとにかく使ってみることに主眼を置きました!

進め方

Snowflakeは30日間無料のトライアル環境を利用することができます。そのためメンバーが各1回ずつトライアル環境を立ち上げ、計3回サイクルを回す方針としました。各サイクル毎に確認したい機能や概念を定めて週1のミーティングで調査内容を共有した形です。

すべての内容をお話しするとただのSnowflake紹介記事になってしまうので控えますが、多くの機能や概念を調査できました!また広く満遍なく調査したため一人の調査内容だとふんわりとした理解になる部分もありましたが、他のメンバーの内容を併せることで理解が深まることが多くありました。私はどちらかというと一人で黙々と調べ物をしてしまう人間ですが、チーム活動としての効果がしっかり出ていたと思います!

成果物

特徴・機能を中心に調査しましたがどうせなら形ある物を作成したいというメンバーの総意で、最終的にSnowflake × Streamlitを利用した簡単なウェブアプリを作成しました。

Snowflake × Streamlitの良さを簡潔にお伝えすると”Pythonスクリプトを記述するだけ”という点です。通常フロントとバックエンドは分けて開発しますが、StreamlitはPythonだけで完結します。それに加えてSnowflakeのUI上で操作できることにより環境構築すら不要になるところが最大の利点だと思います。(ただしUI上での操作はリリース前でこの時恩恵は受けられず…以下当時のやり取りメモです。)

私は日本のレストランデータを利用して、例えば自店舗などターゲットとする店舗がある前提で競合の他店舗が周りにどれだけ存在するか手軽に可視化できるアプリを作成してみました。データはSnowflake Marketplaceという機能で無料の公開データを利用しました。

まず確認したい店舗をキーワード検索すると候補となる店舗が選択できるようにしています。(当時公に出す気がまったくなかったので緩すぎるテイストになっていますがご容赦ください。)

その次にターゲットの店舗で提供しているメニューをアップロードします。そうすると周辺に同じメニューを持ち、かつこちらの価格より低い店舗を検索できるようにしています。

こちらが結果です。いろいろ突っ込みどころはありますが、店舗を赤点で表示する所までを実装しています。上のバーで自店舗からの距離範囲を指定することもできます。

調査した機能をなるべく絡めて作成したためウェブアプリとしての完成度は度外視ですが、Snowflakeを扱う術をトータルで身につけるという意味で大変意義のある活動となりました。

Go言語活動

ここからは再びはぎがお話させていただきます!私はつつみんさん・みゆさんと共にGo言語の調査と、アプリ開発を行いました。

目的

業務ではなかなか触れないような言語をこの機会に触ってみようというのが活動のきっかけで、触れたことで感じる言語固有の特徴や利便性を知ることが目的です。その中で今回はGo言語を学習することに決定。

進め方

大枠は以下のように進めることにしました。

  • 言語調査

  • ドキュメントを用いた調査

  • 調査言語でのアプリ開発

今回の活動期間が約4か月ほどを予定していたので、前半2か月は調査、後半2か月でアプリ開発という大まかなスケジュールを立てて活動を進めていきます。

言語調査

Go言語を調査することが決まっていましたが、折角なら他の言語を調べてみてもいいかもということで、分野にとらわれずにいくつかの言語をリストアップしてみました。

各メンバーがそれぞれの言語についての印象や経験等をコメントで挙げていき、メンバーがあまり触れたことが少なく、新しめで調査が楽しそうという意見が挙げられた「Go言語」を進めていくことが正式に決まったという感じです。

私自身Go言語は新人研修時代に軽く触れたレベルだったので、この機会にがっつり触れることにかなりワクワクしました!

ドキュメントを用いた調査

言語が決まれば早速調査!ということでドキュメントを用いた調査に入っていきます。今回は「A Tour of Go」という公式のチュートリアルドキュメントを使って輪講方式で調査することにしました。輪講とは一つの資料について参加者が順番に講師役となって読み進めていくやり方です。

大学時代のゼミでも経験したことがあったので進め方のイメージがしやすかったですし、講師と生徒で交互に実施したことでマンネリゼロで進めることが出来ました!

調査言語でのアプリ開発

言語調査を終えたGo言語調査チームは、その知識の理解を深めるためGo言語を用いたアプリ開発へと移っていきます。今回はCLI(コマンドラインインターフェース)での「ToDoリストアプリ」をGo言語で実装してみることにしました!

ただ機能を実装していくのではなく、Go言語で使いたい仕組み(メソッド、インターフェースなど)を事前に列挙して、それらを盛り込みながら実装していくことに。使いたいものベースで自由に実装していけるのもNEXTLABのいいところですね~

実装はメンバー全員が毎週共通の機能実装を担当し、週1の共有会でそれぞれの実装を見比べて良いとこどりをするという形で進めました。あえて担当を分けないことでみんなの実装の個性を見つけることができ、そんな方法でも実装できたのか!と気づかされることが多かったです。

成果物

そんなこんなで完成した「ToDoリストアプリ」がこちらです。

アプリ起動時はタスクの情報が記述された別ファイル(タスクファイル)を参照して、未完了のタスクが一覧で表示されます(スクショ上部)。
スクショ下部のメニュー(一部見切れてしまっていますが)ではタスクの「編集」や「削除」などタスク内容をそれぞれ操作でき、アプリ終了時にはタスクファイルを更新し、次回起動時に最新の情報でタスクを参照できるようにしました。

短い期間ながらこのように形にすることができました~ Go言語の知識だけでなく、つつみんさん、みゆさんのコーディングについても知ることができ、学びが多い活動期間でした!

おわりに

今回はNEXTLABの具体的な活動内容を二つ紹介しました!
同じNEXTLABでも、活動テーマごとに進め方に色がでていましたね~ これはNEXTLABがやりたいことを「自分たち」で決めて、楽しそうな進め方を「自分たち」で定めているからこその色味だと考えています!そういったNEXTLABの自由な活動の雰囲気を今回の記事で感じていただけたら嬉しいです!
現在の活動としては、前回ご紹介した図書館プロジェクトの追加機能開発やAWSハンズオンにも取り組んでいますので、それらについても機会があればご紹介したいと考えています!
ぜひご期待ください!

この記事が参加している募集

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!