ログラス初のインターンにたった一人で参加してきた!
はじめに
私は現在、情報系の専攻で大学院生をしておりそろそろ就職を考える時期のため、Loglassという経営管理SaaSを提供している株式会社ログラスに1週間のサマーインターンに行ってきました!
変化の激しい時代において企業が生き残っていくためには、業績を数字で分析し正しい施策を打っていく必要があります。経営管理SaaSであるLoglassは、企業の経営判断をより効率的かつ効果的にするための新たなソリューションであり、創業5年目でありながら大企業を含む多くの企業に導入されています。
新進気鋭のベンチャー企業であり、高い事業価値をもったプロダクトを扱っているログラスにおける開発の雰囲気やカルチャーをぜひ体感してみたいと思い、今回インターンに参加してきました!
今回のインターンを通じて、ログラスにおける開発体験やカルチャーについてよく知ることができ、採用狂気もビシビシ感じることができました!この記事では、ログラスに興味があるという人に向けて自身のアウトプットも兼ねてインターンについて書いていきたいと思います。
ログラスについて
ログラスは「良い景気を作ろう。」をミッションに、企業の経営判断をより効率的・効果的にするためのサービスLoglassを開発・提供している会社です。
私が今回インターンに行かせていただいたエンジニアリング組織においては「Update Normal」というTech Valueを掲げており、「顧客の本質的な価値提供」、「学びと適応」、「技術的卓越性の追求と還元」という3つの活動原則を大切にしています。
今回のインターン課題に取り組む中でも「顧客の本質的な価値提供」を考える場面や、実装やリファクタリングを通じて「技術的卓越性の追求と還元」を体感することがあり、「Update Normal」という価値観が浸透していることを感じることができました。
インターンについて
概要
今回がログラスにとっても会社として初のインターンということでしたが、下記のメンター体制から見てもらってもわかるとおり、まさに採用狂気をビシビシ感じました。今回はインターン参加者が私1人だけだったということもあり、こんな贅沢な経験をさせていただいて良いのか毎日困惑しきりでした。
基本的にドメイン駆動開発(DDD)とスクラム開発を基本としており、最初に座学を行った後、メンターの方と2人でスクラム開発を行い、水曜日に中間レビューが入る形で進みました。スクラム開発の進行やモデリング、実装のサポートなどメンターとサポーターの方には5日間本当にお世話になりました!🙇♂️
今回のインターンを通じて多くの学びと経験を得られ、ログラスでの開発体験の良さを体感することができました!まだインターンは募集されているようでしたので、興味がある方はぜひ調べてみてください!DDDやスクラム開発についての解像度を大幅に上げることができると思います!次回以降のインターン日程は、8/19~8/23と9/2~9/6といった感じで直近なので興味を持ったらすぐに申し込んでみるのがいいと思います!
- 期間: 2024/08/05 - 2024/08/09 (5日間)
- Day1: DDDとスクラム開発の座学、スクラム開発
- Day2: スクラム開発
- Day3: スプリントレビュー
- Day4: スクラム開発
- Day5: スプリントレビュー、成果発表会、フィードバック
- メンター体制
- メンター: 1名
- サポーター: 1名
- レビュアー: 1名
- 座学の講師: 2名 (レビュアーの方1名含む)
- その他: 10名程度 <- まさに採用狂気
- VPoEの伊藤さんやCTOの坂本さん、お昼をご一緒した方、成果発表に来られた方などなど
インターン課題の概要
インターンで与えられた課題は、仕訳表(上図)といういわゆる複式簿記で書かれた帳簿がExcelで管理されており、それをミニLoglassを開発してシステム化しようというものでした。そして今回の課題の目標は、与えられた帳簿をシステムに登録し、損益計算書(PL)や貸借対照表(BS)を計算し、UIで確認できるようにするというものでした。
課題には単に実装するだけでなく、仕訳やPL、BSをモデリングするというタスクも含まれており、簿記のことも知らなかった自分にとっては非常に難易度の高い課題に感じました。しかし、メンターの方の手助けもあり、最終日までには要件機能を全て実装することができ、追加の機能も開発することができました.
モデリングと実装を通じて、Loglassというアプリケーションがどのように動いているのかやDDDの原則に従った開発がどのようなものなのかということを具体で学ぶことができました。
技術スタック
基本的にKotlinでバックエンドを書き、UIはmustacheというテンプレートエンジンを用いてHTMLと簡単なJSのベタ書きでした。RDBMSはJavaで書かれたH2というものを用いており、バックエンドから利用する際は、jooq
というJavaのORMを使用していました。
- エディター: IntelliJ IDEA CE
- 言語: Kotlin
- RDBMS: H2
- ORM: jooq
- フレームワーク: Spring Boot
- UI: mustache (テンプレートエンジン)
ミニLoglassの初期画面
メンターの方がミニLoglassの基盤を作ってくださり、以下のような画面が初期画面でした。ここに、損益計算書(PL)や損益計算書(BS)などをサイドバーに追加してそれぞれUIから見れるようにするというのが最終的な目標でした。
簿記の基礎についての学習
インターン課題の概要でも触れたように今回対象としたデータは、簿記に関するデータであったため、まず簡単に簿記の勉強をしました。具体的には、「貸方」、「借方」とは何かや損益計算書(PL)や貸借対照表(BS)はどのようなものかということを学びました。
最初の学習時間以外にも実装中にPLやBSの意義や利用者は何が見たいのかということがわからなくなり、メンターの方やレビュアーの方に伺いながらドメインに対する理解を深めていきました。
なぜここまでドメイン(簿記に関する知識)の理解に時間を割いたのかというと、ログラスにおいて当たり前のように用いられているドメイン駆動開発(DDD)という手法はその名の通りドメインへの理解度がそのまま実装の良さに直結するからです。
実際、良いモデリングができればDDDの原則に従って限り実装で詰まることはあまりなく、気持ちよく開発を進めることができました。
複式簿記でなぜ仕訳は左と右に分かれるのか
最初に複式簿記の説明を聞いて感じた感想は、左と右で同じ「現金」という勘定科目でも意味が全く異なるの全然直感的じゃなくてわかりづらいな、というものでした。しかし、簿記は商売を成功させるために長い年月をかけて洗練された会計の付け方でありわかりづらいと感じるのはその裏の意図を自分が読み解けていないからだ、という意識もありました。
そのような疑問をメンターの方にぶつけたところ、仕訳はなぜ左と右に分かれるのかという記事を共有していただき、非常に納得がいったので複式簿記の意味がいまいち腹落ちしないという方にはぜひ読んでいただければと思います。
自分もまさかITベンチャーのインターンに行って簿記の勉強をすることになるとは思っていなかったので、逆に新鮮で面白かったです。
スクラム開発に抱いていた誤解の解消 (座学)
スクラム開発の座学については、飯田さんという社員の方に講義をしていただきました。この講義を受ける前の私は、「スクラム開発って確か短期間のゴールを定めて毎日ミーティングと振り返りをしながら短いフィードバックを回して開発を行う手法だったよな...」みたいな解像度でした。つまり、開発を行うための具体的なHowを教えてくれるものだと考えていたということです。
しかし、講義を受けてみるとその印象は全く消え、スクラム開発とは「より良いプロダクトを作るためにチームメンバー全員が共通認識として持っておくべき指針のようなもの(アジャイルソフトウェア開発宣言)」だということを知ることができました。つまり、スクラム開発でよく言われるミーティングや振り返りもより良いプロダクトを作るための手段であって、それらを淡々とこなすことだけが目的ではなかったということです!
スクラム開発の思想を高いレベルで社員全員が共有しているログラスだからこそ高品質なサービスを創業5年という短期間で提供することができているのだと思います。私のようにスクラム開発をHowを教えてくれるものだという認識を持っている学生がいればぜひログラスのインターンに参加し、その誤解を解いて欲しいです!
松岡さんに直接学ぶドメイン駆動開発 (座学)
ドメイン駆動開発(DDD)の座学においてはなんと!松岡さんに直接講義をしていただきました!!
実は講義を受けていた初日の時点では松岡さんのことを存じ上げなかったのですが、その後お会いしたどのエンジニアメンバーの方々も松岡さんから直接DDDを教わるなんて羨ましいというお話をされていたので後々事の重大性に気がつきました(汗)。
実際、松岡さんの講義のおかげで私はDDDについて解像度高く理解することができました。
講義を受ける前は、「責務の分離」や「オニオンアーキテクチャ」など抽象的な概念をなんとなく理解していたものの、それの何が嬉しくて具体的にどう実装されるのかは理解できていませんでした。今回の講義では、DDDの原則に従っていない実装とそれをDDDの原則を意識してリファクタリングしたコードを用いて説明してくださり、非常にすんなりと理解することができました。
自分1人で記事や書籍を読んでいても抽象を具体に落とし込むことは難しかっただろうと考えているので、松岡さんの講義を受けることができて本当によかったです!
インターンの感想
本気で感じた採用狂気
この記事をここまで読んでくださったならログラスがどれだけ採用に力を入れているかビシバシ伝わっていると確信しています。正直意味がわからないくらいの高待遇をこのインターンで受けてきました(本当にありがたかったです!)。
まず、たった1人に5日間2人もメンターとサポーターがつくということがすごいことだと思っています。それに加えてDDDとスクラム開発についてそれぞれのエキスパートから座学を受けさせていただきました。さらにさらに、お昼ご飯ではほぼ毎日他部署の人とお話しさせていただき、ログラスのカルチャーや社員さんの雰囲気を直に感じることができました。極め付けに最後の成果発表会には、たった1人のインターン生の発表のためにCTOの坂本さんを含む総勢10名以上の方が見に来てくださいました。
会場のキャパを超えるオーディエンスを前に非常に緊張しましたが、みなさま暖かく発表を聞いてくださりリラックスして発表を終えることができました。
また、待遇面だけでなく技術面でもスクラム開発とDDDについて学びを深めることができ、自分1人が1週間一生懸命独学したところで絶対に得ることのできなかったであろう量と質の学びを得ることができました。ログラスという会社に少しでも興味があるならぜひインターンに申し込んでみることをお勧めします!
DDDで開発すると実質的に開発力が上がる話
今回のインターンではドメインのモデリングを行い、それをDDDの原則に従って実装していくという手順で開発を行っていました。そこで感じたことは、DDDの原則に従うことで実質的に自身の開発力が上がるということです。
ここでいう開発力とは、開発目標を定められた期間内に達成するために必要な総合的な能力のことです。これまで私は、開発力を上げるために必要なのは実装力を上げること、噛み砕いて言うと高度なロジックをすぐさまコードに落とし込めることだと考えていました。しかし今回のインターンで感じたことは、開発力を上げる方法は実装力を上げるだけではないということでした。
DDDでは、どこにどのようなコードを書くべきかということが明確に決まっています。また、実装の前には必ずモデリングが行われます。これが何を意味するかというとモデリングさえ適切に行われていればどこに何を書くかを考える必要はほとんどないということです。そのため、実装箇所に迷わないことで実装速度が向上し、結果的に開発力が向上しました。
特にこれは、進行中の課題Aが次の課題Bに切り替わった時などに顕著に効きます。例えば、モデリングが難航しモデリングに数時間かかったとします。すると、実装に移る時にコードのことはほとんど覚えていません。以前までの自分であれば作成したモデルをどこに実装すれば後が楽になるか考えるのに多くの時間を使っていました。しかし、コードの具体的な実装を忘れようともDDDの原則は変わらないため、一定の速度で実装に移ることができました。
このように、DDDの原則に従って開発を行うことで実質的に開発力が上がるのは、実装力が同じでも実装速度が格段に向上するためです。このため、実装力に大きな変化がなくとも、目標達成までの時間を大幅に短縮することができ、実質的に開発力を向上させることができました。
実装力を上げるためには、コーディングに関する多くの経験や知識が必要となり、一朝一夕で身につけられるものではありません。そのため、開発力を上げるというのは長く険しい道だと考えていました。しかし、DDDという新しい考え方を取り入れることで実装力とは別の方面から開発力を向上させることができるということを知り、正しい考え方を持つ重要性を理解しました。
開発力の向上により、自身が思い描いていたものが目に見える速度で形になっていくため、非常に楽しく開発を行うことができました。またこのインターンを通じて、ログラスにおける開発体験が良い言われる理由には、DDDを意識した開発体制が関わっているのだということを理解することができました。
おわりに
今回のインターンでは、Loglassが顧客に提供する価値やログラスでの開発体験、社内のカルチャーや雰囲気など多くの学びを得ることができました。また、採用狂気というキャッチフレーズ通りの高待遇の中、5日間本当に楽しく過ごさせていただきました。ログラスでのインターンは本当にお勧めできるので興味があれば今すぐに申し込むことをお勧めします!ログラス初のインターンをぜひ体感してみてください!
Discussion