#えむけーろぐ

間違った事を書いていたらやさしく教えてください

グロービスのエンジニアインターンとして「グロ放題」の開発をしてきた

はじめに

グロービス(GLOBIS)

8月22日(火)から9月1日(金)までの約2週間、株式会社グロービスのGlobis Digital Platformチーム(GDPチーム)で、エンジニアのインターンをやってきたのでここに記録しておく。

グロービスについて

経済分野における社会人教育・投資を行う企業グループ。

『経営に関する「ヒト」・「カネ」・「チエ」を提供し、社会の創造と変革をサポートする』ことを謳っている。

グループは、社会人教育・研修・出版を行う「株式会社グロービス」、ベンチャーキャピタル投資・MBO支援を行う「株式会社グロービス・キャピタル・パートナーズ」、ビジネススクールから発展した「学校法人グロービス経営大学院」の3つの組織からなる。

グロービスとは - はてなキーワード

有名なのは、MBAグロービス経営大学院とか、G1サミットあたりだろう。IT界隈の人は、ベンチャーキャピタルで知っているという人がいるかもしれない。

2017年3月からは、グロービス学び放題というビジネススキルを中心とした動画コンテンツを月額定額制で見放題なWebサービスをリリースした。一言で言うと、ビジネス版ドットインストールといったところだろうか。

今回のインターンで僕が開発をお手伝いしたのも、このグロービス学び放題、通称「グロ放題」だ。

きっかけなど

採用サイトを見ても分かる通り、グロービスは新卒採用を行っていない。基本的に、ある程度キャリアを積み重ねた人たちに中途で入ってきてもらい、力を発揮してもらうという方針なのだろう。

Job Listing | グロービス採用サイト

インターンシップも受け入れてはいるが、「経営もしくは教育に関わる修士または博士課程に属している者」かつ「企業での実務経験3年〜10年程度」が必須条件という社会人経験者向けのインターンだ。

そんなグロービスが、去年からEdTech推進を目的としたGDPチームを立ち上げたのだが、第一号エンジニアとしてグロ放題を立ち上げたのは、LOUPEの時からお世話になっている末永さん。その末永さんからインターンのお誘いを頂いたというわけだから、断る理由なんて無いよねということで、この夏休み期間、インターンとしてお世話になることにしたのであった。

やったこ

インターンの期間は2週間だった。この2週間でやったことは主に2つ。

ひとつは、今後のサービス改善に向けたAPIの開発。こっちはGrapeとGrape Entityを使ったふつうのRails開発だ。

もうひとつは、新機能のプロトタイプ作成。前々からグロ放題に組み込みたかったらしいある機能について、プロトタイプを作って、動かす様子をプレゼンして、というようなことをやった。

前者は本当に普通のRails開発だったので、普通に開発をしていただけだけど、実はGrapeもGrape Entityも触るのは初めてだったので、自分の中での手札が増えて良かった。

後者については、アイデアだけはあってそれ以外は何もないという段階から作って、他の人に見てもらって意見をもらい、また改善していくという事をやって、とても楽しかった。最初アイデアを聞いた時は、正直「できるのかこれ」という気持ちだったのだけど、プロトタイプとしてそれなりのものができ、社員の人達に見せた結果とても良い反応をもらえた。本当にいい話。

2週間のインターンじゃ大したことできないかなとも思っていたけど、APIの開発で普通の仕事も体験できたし、新機能の開発では設計から実装、フィードバックを受けてからの改善まで一通り体験できたし、なかなか濃い2週間を過ごすことが出来たと思う。

思ったことなど

これまでは、小さなスタートアップだったり、大きな企業の立ち上げ段階の新規事業チームだったりという、厳しい制約の中やっていくチームしか体験したことがなかったので、ユーザもお金もデータも何もかも持っているところでエンジニアとしてインターンすることができたのはとても良い経験になったと思う。

実は僕は19卒のITエンジニア学生なのでそろそろ就活を始めなきゃいけないのだけど、今回の体験で得たものは間違いなく会社選びの大きな軸のひとつになるはずだ。

会社的なイメージの話では、インターン前には結構おカタい会社なのだろうなと身構えていたのだけど、入ってみると少なくともGDPチームに関してはそんなこともなく、とても暖かく受け入れてもらえたので、居心地の良い空間だった。

おわりに

2週間と短い間だったけど、歴史ある大企業の中の、ベンチャー気質の出来たての小さなエンジニアチームという、ある意味異様な空間で過ごした時間はとても良い体験だった。

そしてなにより、また末永さんと、そしてGDPチームの人たちと仕事ができたということが、僕にとって本当に良い体験となった。

2週間と短い間でしたが、お世話になりました!!!!!

近況

8月13日(日)〜17日(木) Liaroのお手伝い @ 恵比寿・渋谷あたり

@hanaken_n の会社の手伝いをしていた。

golangでAPIサーバ書いてた - #えむけーろぐ

8月18日(金) TDD Challenge @ 株式会社ミクシィ

TDDとペアプロの実習型イベント。

「TDD challenge」というイベントに参加してきた #mixi_TDD - #えむけーろぐ

8月19日(土)〜20日(日) オープンキャンパス @ 苫小牧高専

f:id:mktakuyax:20170820162131j:plain

Scratchでちびロボを動かす的な展示をやっていた。

8月22日(火)〜9月1日(金) インターン @ 株式会社グロービス

グロービス(GLOBIS)

f:id:mktakuyax:20170901130348j:plain

TODO: あとで記事書く

9月2日(土) LT会 @ 株式会社ジースタイラス

【9月2日】夏だわっしょい!!逆求人感謝祭 - connpass

LT大会で優勝した

9月4日(月)〜9月15日(金) @ 株式会社リブセンス インターン

株式会社リブセンス - Livesense Inc.

f:id:mktakuyax:20170904190505j:plain

インターン生は全部で9人くらい。そのうちの5名とオシャレシェアハウスにブチ込まれている。もう3名もまた別のシェアハウスにブチ込まれている。

f:id:mktakuyax:20170904205326j:plain

インターン生は全員男だったということを書いて、近況報告を終わりたいと思います。

「TDD challenge」というイベントに参加してきた #mixi_TDD

この1、2週間いろいろイベントがありすぎてブログが現実世界に追いつけていない。。。

はじめに

f:id:mktakuyax:20170818130839j:plain

8月18日(金)に渋谷駅のきれいな方にあるミクシィで開催された、「TDD challenge」というイベントに参加してきたので、その記録を書いておく。

そもそもTDDやペアプログラミングってなんじゃいって人はこのへんどうぞ。(ペアプロのページ開くといきなり「ワークステーション」って出てきて時代を感じる)

テスト駆動開発 - Wikipedia

ペアプログラミング - Wikipedia

TDD challengeとは

connpass.com

今年の新入社員研修で、受講者から大変好評だった「テスト駆動開発研修」のコンテンツを、
「TDD challenge」と称してご提供する特別な1dayワークショップです。
*TDD=test-driven development

テスト/設計について学ぶ機会が少ないものの、今後のサービス開発において役に立つ開発手法です。
現場エンジニア社員の講師・チューターのサポートを受けながら、この夏のスキルアップを目指しましょう!

- 【学生限定】TDD challenge(テスト駆動開発ワークショップ) #1 2018.08.18 - connpass

とのこと。

午前中にテストや設計についての講義を受けた後、軽くTDDとペアプログラミングの実習をして、午後は与えられた3つの課題をガッツリ解いていくという感じだった。

事前アンケートでgit/GitHub等開発ツールの使用経験や、得意なプログラミング言語について聞かれ、それをもとにしていい感じにマッチングされた相手と2人組、"ペア"になって課題をこなしていく。僕は、得意な言語として同じRubyと答えた@_iamkuntaoさんとペアになった。

また、ランチタイムには新卒のエンジニアのみなさんとランチしながらお話をすることができた。(記事TOPの画像はランチタイムに出た釜飯です。激ウマであった。)

開催中のいろいろ

9月4日にも第二弾をやるらしいので、そこに参加する人たちに最大限楽しんでもらうために詳細は書かないでおく。だからまぁ雰囲気だけでも伝わればということでここはひとつ。

イベントのはじめにハッシュタグの案内があったのであいさつツイートくらいはしたけど、その後はツイートしている暇など無いくらい楽しかったし忙しかった。とにかくガリガリとコードを書いていた。

ペアプロは、1台のPCを囲ってやるのではなく、それぞれのPCを使ってやる感じだった。運営側がでかいモニタを用意してくれたので、ドライバ(コード書き担当)になる人が適宜モニタに繋いで、ナビゲータさんがそのモニタを見ていろいろ指示出したりという感じ。モニタはHDMI接続だったけど、USB-Cのアレも運営側で用意してくれてました。

ペアでのソースコードの共有は、ぼくたちはGitHubを使った。

僕らの他にRubyのペアがもう1つか2つくらいあったと思う。あとはPythonとか、Swiftとか、Javaとか、そのへん。C言語のひとたちもいてすごかった。

イベント中はガッツリコード書くし、思考を言葉として、そしてソースコードとしてアウトプットし続けなければならないので、めちゃくちゃ疲れます。前日はよく寝たほうが良い。あとランチタイムのときにコーヒーもらっておくこと。

学んだこととか感想とか

学んだことについてあまり書きすぎると何やったかバレるのでふんわりと箇条書きで。

  • 名前は知っていたしそれっぽいことはやっていたかもしれないもののちゃんとはやっていなかったペアプロを実践できた。
  • ペアプロ中は、ドライバはとにかく自分の脳内を垂れ流しまくると良い。
    (自分自身の思考の整理にもなるし、ナビゲータの助けにもなる)
  • ナビゲータは、「これは指摘したほうが良いかな?」「でも今ノリノリでコード書いてるのにここでゴチャゴチャ言うのもな」とか迷うし、自分がドライバになってから「いやこれ絶対さっき言ってくべきだったわ、、、」となる。
  • テストしやすいコードは、良い設計である。
  • 自分たちが1時間前に書いたコードのテストしやすさに感動し、自画自賛をはじめる。
  • 「今回はTDDしにきたから、やりすぎってくらいテスト書こう」という感じでテスト書いてた。
  • コード書いてる横から「もっとこう書けるんじゃない?」が飛んで来るのは最高。よりよいRubyを知ることができた気がする。
  • HRTの精神ほんとうに大事。今回僕らのペアはそれをちゃんとできていたので、とても楽しくペアプロできたと思う。

おわりに

今回は他チームと競い合うイベントではないので気楽に参加できたし、かといって課題のボリュームや難易度もそこそこにあるのでガッツリコードを書くという体験ができたしで、たいへん良い1日であった。

僕らのペアは開始時点でいい感じに仲良くなって、各種開発ツールの使い方やコードの書き方、開発の進め方の合意も早い段階でとれて、git/GitHubもとりあえずこのイベントをこなすにはまったく困らない程度にお互い使えたので、素早く開発を始めることができた。活発に議論しながらやっていきを発揮できたので非常に楽しかったけど一番前の席だったのでうるさかったと思う。

あとはまぁ、普段フルスタックなフレームワークを使ったプログラミングしかしない人は、フレームワークに依存しないコードの書き方とテストツールのセットアップの方法くらいはおさらいしておくとスムーズでいいと思う。(例えばRails書きさんは、Railsに依存しない、RSpecやMiniTestのセットアップ方法を軽く調べておくと良いと思う。)

第2回もやるらしいので、興味ある方はぜひ参加してみてはどうでしょうか。

connpass.com

golangでAPIサーバ書いてた

先週、8月13日(日)に東京に来て、14日(月)から17日(木)まで、Liaroのお手伝いさんとしてgolangで社内向けツールのAPIサーバを書いていた。もっと早く記事書こうと思ってたけど、土日のオープンキャンパスやらなんやらで忙しかったので今投下しておく。

f:id:mktakuyax:20170817122807j:plain

Liaroは、苫小牧高専の4個上の先輩(ぼくが1年生のときの5年生)であるhanaken_nが作った会社で、まぁだいたい機械学習やらDeep Learningやらをやっている渋谷のミクシィがない側にあるスタートアップだ。

Liaro

やっている事的にはPython一択なのだけど、会社としてPython以外の選択肢もほしかったらしく、「ちょっとgolang試してみたいから社内ツール4日くらいで作ってよ」と言われた。

僕自身も、なんか作るってなったらとりあえずRubyで書くけど、Ruby以外の選択肢は持っておきたいなと思ってgolang入門だけして放置していたところだったので、実際に動くモノを仕事として作る機会が降ってきてさらに小遣い稼ぎにもなってラッキーという感じ。

Webアプリケーションフレームワークとしては、gin-gonic/ginを採用した。net/httpとその他細々したライブラリで頑張る人も多かったけど、某golangやってる知り合いに「WAF何使ってるの」と聞いたところ「ginかecho」と言われたので、なんとなくginにしてみた。書いてみた感想は、Sinatra書いてるときの気持ちと近いなというところか。

ORMは、jinzhu/gormを使った。理由はなんだったかな……忘れたけど、たぶんgolangちゃんとやってなかったときからなんとなく名前は聞いていたからだと思う。そもそもgolangの構造体とORMって相性悪いのではという話を小耳に挟んでいたのだけど、実際そうなのかもと思いつつ……。とはいえ僕はActive Recordしか知らないだけだろと言われればそうな気もする。

golang自体を書いていた感想としては、まぁ、「型つらい」が一番だ。ずっとRuby書いてたんだからそりゃそうだという感じだろう。いつか、型に感謝する日が来るのだろうか。

完成したコードは恐ろしいクソコードになった。マトモにモノ作るの初めてな言語で、しかも期間が4日間しかないんだから仕方ないでしょうという言い訳は一応しておく。4日ぶっつづけて書いた結果、「ここはもっとDRYにできるな」とか、「エラーハンドリングもっとこうすりゃいいじゃん」というところが見えてきたので、これからリファクタリングする。(と思う)

 

今回得た学びというか体験としては、「自分の中でgolangという選択肢が増えた」ということもあるが、それ以上に「golangで一本アプリ作ったぞ」という自信を得たということだ。今回Liaroのお手伝いをしにいくにあたって一番心配だったのが、「僕がgolang書いてて躓いたときに助けを求められる人が社内にいない」ということだった。

ぼくがはじめてLOUPEでRubyを触ってWebアプリケーションを書きはじめたときは、メンター的な頼れる存在がいたし、その他のインターン・バイト先でもメンター的存在がずっといて、そういう存在無しでやっていけるようになったのは僕の中である程度Ruby/Railsかけるぞという自信を持てるようになってからだ。

今回はそうではなくて、マトモにモノを作ったことのない言語で、はじめて触るフレームワーク、そしてすぐ近くに頼れる存在がいないという状況で、クソコードとはいえ一本アプリを作ったということが、自分の中での精神的なブレイクスルーとなったような気がする。

今後もたぶんなんか作るってなったらRuby使うと思うけど、golangという選択肢があるということ、そして新しい言語でいきなりなんかやるということも不可能ではないということを胸に、明日からは某インターンRubyを書きます。

mktakuya先生の次回作にご期待ください!

スレッドフロート型の匿名掲示板

スレッドフロート型の匿名掲示板、いわゆる2chスタイルの掲示板を遊びで作ってみた。といっても1週間くらい前の話だけど。下書きだけ書いて公開するの忘れてた。

f:id:mktakuyax:20170811135447p:plain

f:id:mktakuyax:20170811135501p:plain

f:id:mktakuyax:20170811135513p:plain

f:id:mktakuyax:20170811135529g:plain

まぁ別にサービスとして動かしたいわけでもなく、なんとなく素振り的な意味で作っただけだけど。

身内向けにこっそり公開してみたら後輩(と思われる人物)が早速邪悪なスレ立てをしていた。まぁ数時間だけ動かしてすぐ消したからいいけど、こういうの本当に運用していくとして、誹謗中傷等の対策ってSNSやらなんやらやる人にとっての課題だよなぁ。

一応コンセプトは高専生のための新しい匿名掲示板ということで、ユーザ登録は必須だで誰が書き込んだかも記録されるけどユーザから見たら匿名という感じ。まぁTwitterログインのみだと捨てアカウントなどやられちゃうので、本気でやるんだったら高専のメールアドレスになんらかのトークンを送って本人確認とかやると良いのだろうか。

ひらがなせいかつ への いざない 2017

さいきんは なんとなく むかしの rebuild.fmを きいている。

さっき きいた Nさんはつとうじょうの えぴそーど37で しょうかいされていた 「ひらがなせいかつ への いざない」という きじを よんで いや よんでというか すごく よみづらかったので はんぶんも よんでいないのだけど まぁ おもしろいなと おもったので ぼくも まねしてみる ことにした。

たぶん ねて おきたら わすれて ふつうに かんじを つかっていると おもうけど いつか ぼくや ほかのだれかが このぶろぐを よんだときに このえんとりだけが ひらがなで かかれている という そういう ふしぎなたいけんを してほしいな とか かいてみる てすと。

ちなみに Nさんは ひらがなせいかつ の ためのあい・えむ・いーまで つくったと いうのだから おどろきだ。そのなも hiragany である。

github.com

ちなみに、りーどみーは ふつうに えいごで かいてあって うけた。

いんすとーるすると こんなかんじで うごいてくれる。

うん。つかいづらいでしょ。これ。ゎ。

ちなみに、ゎ。は、くしょうをあらわすらしい。

f:id:mktakuyax:20170807005425g:plain

ひらがなせいかつに にゅうもんしてみて きづいたこととして ぼくは いかに あいふぉーんの よそくへんかんに たよりきっていたか ということが ある。

あいふぉーんは ゆうしゅうな あい・えむ・いーを とうさいしている ので たしょう ふりっくにゅうりょくを みすっても いいかんじに してくれる。たとえば、「ふりっくにゅうりょく」と うちたいのに びみょうに ゆびが ずれて「すりっくにぬうりょく」と うってしまっても そのへんくうきを よんで いいかんじに してくれる。

f:id:mktakuyax:20170807005911p:plain

しかし、ひらがなせいかつしゃ、ひらがにすと は にゅうりょくした ありのままの てきすとを つかうしか ないので よそくへんかんの おんけいを うけることが できない。

この ふりっくにゅうりょくだと ひらがなせいかつつらいもんだい に たいして Nさんは どう たいしょして いるのだろうか。 そもそも もはや ひらがなすら つかっていないの だろうか。というか ふつうに QWERTYきーぼーどで ろーまじうち してるのかな。

さて ここいらで こうはいが りついーとしていた このついーとを しょうかいして ひらがなせいかつにゅうもんも おしまいに するとしよう。

 

FAXとジャイロ操作と老害と

思考のメモ。

ぼくはデジタルネイティブ世代の生意気なワカモノなので、E-Mailで済む所をわざわざFAXでやらせようとする現場を見ると、「2017年にもなってFAXとか、何考えてるの?E-Mailもロクに使えないの?やる気あるの?老害なの?」と反射的に思ってしまう。

一方、ゲーム機に関しては、中学校低学年の時にやっていたPSPで時代が止まっている。アナログスティックでフィールドを駆け回り双剣ラオシャンロンを狩っていたあたりで記憶が止まっている僕にとって、Nintendo Switchのジャイロ操作は正直つらい。マリオカート8 DXに関してはアナログスティックオンリーで操作しているし、スプラトゥーン2も最初はアナログスティックでやるつもりだったけど、後輩にジャイロをオススメされたので頑張ってジャイロでやっているという感じ。

そのうちゲーム機はジャイロで操作するのが当たり前になって、次世代ゲーム機にアナログスティックが搭載されなくなったら、怒る人が出てくるかもしれない。そういう人は、ジャイロ操作が当たり前の新しい世代の人たちから、「20XX年にもなってアナログスティックとか、何考えてるの?ジャイロもロクに使えないの?やる気あるの?老害なの?」と馬鹿にされてしまうかもしれない。

そういうわけで、僕は新しいモノを受け入れる練習として、スプラトゥーン2をやっているのだ。今はランク11ですよろしくお願いします。