Neumann.Tokyo Blog

合同会社ノイマンの公式ブログです

Clojureを用いたインターンについて

この記事は Clojure Advent Calendar 2020 - Qiita に向けたものです。

合同会社ノイマン代表の馬場です。 弊社では次のようなインターン募集を行いました。

www.neumann.tokyo

Webプログラミングの基礎とともに Clojure を学び、開発を行うという趣旨のインターンです。 今日はこのインターンプロジェクトについてお話します。

なぜClojureを採用したのか

しばしば次のような質問を受けております。

「なぜ Clojure を使うの?他のもっと流行っている言語があるのに」

ごもっともな疑問ですが、答えはシンプルで「私が好きだから」というだけです。 特に具体的な展望があってのことではありません。 もちろん「好き」である理由はあるんですがくだくだしくなるのでここでは書きません。 ここではClojureが好きだからという理由だけでなぜそれを仕事にしようとするのかについて話します。

というのも、私はある時ふと、なぜ自分が会社を運営しているのか疑問に思いました。 もともと私が会社員をやめたのは完全テレワークで働きたかったからで、それはもう4、5年ほど前の話です。 幸いなことに私はこの4、5年の間ずっと完全テレワークで働いていて、お客様先に出向かったのはほんの数回程度です。 しかし、今ではご承知の通り新型コロナウイルスの流行により一気にテレワークという言葉が一般的になってしまいました。 テレワーク可能な受託開発の案件が増えたことは私にとっては有利なことでしたが、 一方でわざわざ会社経営などと面倒なことをしなくても完全テレワーク可能で技術的にも面白い会社に就職するという選択肢が出てきました。

おそらく起業家には二種類の人間がいて、一方は会社経営が好きな人、もう一方は仕方なく起業している人で、私は完全に後者です。 働き方の形態としては私は今でも会社員になりたいと思っていますが、給料面や自分の裁量の多さ、節税などを考えると社長をやらざるを得なくなってしまっただけなのです。

上記のような状況で自分が会社を続ける理由はなんだろうかと改めて考え直すことにしました。 流石に合同会社ノイマンを起業して1年目なので廃業するには早い気がしますし、売上は十分な額を出せています。 しかし、当初の目的であったテレワークには他の選択肢もあるわけで、それを選ばずに会社を続けるには理由が必要でした。 基本的に私が行っている受託開発はRubyやGoなどを用いたもので、Clojureを使った仕事はやったことがありませんでした。 Clojureと出会って早くも2年ほど経ちますがその間は趣味で少しずつ勉強する程度だったので、私はもっとClojureを使いたいという欲望が大きくなっていました。

一人で会社をやるなどというのはそもそも酔狂なもので、その会社で稼いだ金でClojureのようなマイナー言語に投資をしてもそれは酔狂に酔狂を重ねるだけのことで、何ら不自然なことではないのです。 流行の技術を使って開発をすることには多くのメリットがあることは言うまでもありませんが、私は自分が本当に美しいと思える技術で開発がしたいという気持ちが大きくなっていました。 Clojureを好きだと言いながら技術的にClojureで何でもできる状態にない自分というものが嫌でした。 そこで会社として、つまり自分の仕事として、もっとClojureを使っていくことに決めました。

インターンシップ制度では何を行っているか?

インターンシップ制度には無償コースと有償コースの2つを用意しました。 詳細は上記のホームページにありますが、無償はWebプログラミング経験があまりない人を対象とし、有償コースはある程度知識がある方を対象としています。

無償コースについて

無償コースではWebやDBといった開発のために必要となる知識をインターンに教えるようにしています。 本格的なプログラミングスクールほど教材を整備することができなかったので、各技術の公式サイトなどへの案内をまとめて各自で勉強してもらうスタイルにしました。 弊社からインターンに推奨しているサイトや書籍についてはライセンスを確認していますが、その教材を用いて授業を行ったり利益を得ているわけではないので、ほとんどの場合は利用可能でした。 これらを情報を google sites でまとめてポータルと称しています。 google sites は特定のメールアドレスにのみ限定公開する機能があるので、それによりインターンにのみ公開するようにしています。

f:id:kbaba1001:20201210095650p:plain ポータルのスクショ

また各技術の分野ごとにテスト問題を用意して、その問題を解くことで理解度を確認してもらうようにしていく予定です(問題の作成に時間がかかっておりこれはまだ実施できていません)。 問題の出題と回答の提出については google form を使っています。複数の問題があるのでこれらは google classroom でまとめる予定です。

上記のように弊社のインターンgoogle のサービスを活用することで成り立っています。 これは google のアカウントだけあれば色々できるようにしたかったためです。 今まで google sitesgoogle classroom は使ったことがありませんでしたが、今回のような小規模な教室のようなことを行うのであれば非常に役に立つ方法ではないかと思います。

有償コースについて

有償コースでは月20時間程度の稼働でClojureを用いた開発に協力してもらっています。 インターンは実際の開発に関わることで実践的なスキルを身につけられますし、私は開発力が手に入るのでお互いに助かります。 こちらは Duct や re-frame を用いて簡単なアプリを作成することから始めています。 ある程度形になってきたらローンチする予定ですが、このアプリでいきなり儲けようと言うよりは技術的な研究を行うことのほうが目的としては大きいです。

日頃のコミュニケーションについて

弊社はもともとテレワークの会社なのでインターンシップ制度もすべてテレワークで行っています。 参加しているインターンも東京だけでなく大阪や岡山など住んでいるエリアはバラバラです。 職業も学生だけでなくすでに働いている方もインターンに参加されているので、稼働時間もバラバラです。

そのため日頃のコミュニケーションは Discord を用いてチャット上でやり取りしています。 社内のコミュニケーションには Slack を使う会社が多いと思いますが、いくつかの理由により Discord にしました。

  • 音声通話が気楽にできる
  • 権限管理が楽
  • 社外の人も含めてオープンなコミュニケーションの場所にしたかった
  • インターンにDiscordの他のサーバーも利用することでエンジニアとしての和をひろげてほしかった

弊社Discordは社外の人も入れるので興味のある方は次のリンクからご参加ください。

discord.com

一方課題に感じていることとしては、同期的なコミュニケーションが非常に難しいということです。つまりミーティングの開催が難しいのです。 無償コースは基本的に各自で動いてもらうのでよいのですが、有償コースはミーティングを設ける必要があることもあるのですが、 予定の調整が面倒くさいのと土日や夜になったりするのが嫌なのでミーティングは基本的にやらない方針にしてきたいと思っています。 そのうえでどのようにコミュニケーションをしていくかは今後の課題かなと思っています。