Log.d("yt8492", blog)

Kotlinってかわいいよね…

DMMのインターンに行ってきました

こんにちは。マヤミトです。

夏休み中、DMMのインターンに参加させていただきました。

dmm-corp.com

参加までの経緯

すべての元凶はこのツイートです。

f:id:yt8492:20190930183348p:plain:w600

冗談のつもりが、

f:id:yt8492:20190930184003p:plain:w600

エンジニアと人事の方に捕捉され、

f:id:yt8492:20190930184137p:plain:w600

あれよあれよという間に話が進んでいきました。DMMはフットワークが軽いです。

あと念の為に言っておきますが今回のインターンFANZAではなくDMMです。

このあとカジュアル面談をし、「Androidとかでインターンが公開されたら連絡ください!」と言ったところ、インターン募集開始の案内ではなくインターン内定のお知らせが来てたまげました。DMMすごい。

もともとDMMのサービスはいくつか利用していましたし、仲のいい先輩が新卒でDMMに入ったこともあり、DMMには興味を持っていたので、ありがたくそのままインターンさせていただくことにしました。

インターンの概要

期間: 8/26 ~ 9/27

配属先部署: CTO室

内容: Androidアプリ開発

憧れの id:kgmyshin がメンターでした。やばい(語彙力)

やったこと

新卒研修のAndroidパート

DMMの19卒の人達がやった新卒研修のAndroidパートをやらせてもらいました。

inside.dmm.com

Kotlin + MVVM + Android Clean ArchitectureでJetpackやCoroutine、Daggerなどもバリバリ使ってたのでこれ本当に新卒研修の4日間のAndroidパートでやったのか?って感想でした。アプリの実装だけでなくテストもちゃんと書いてCircle CIで自動でテストが走るようにするところもやったので大変勉強になりました。

AquizのAndroidアプリ開発

新卒研修の内容を終わらせたあとはAquizのAndroidアプリ開発に関わることになりました。

aquiz.jp

AquizのAndroidは大学の先輩で在学時代からお世話になっていた id:slme9364 がチームリーダーをやっていて(この人新卒だよな…🤔)、いくつかタスクを振ってもらいました。

自分が担当したタスクは

  • Retrofit2公式のコルーチン対応の導入(Jakeのretrofit2-kotlin-coroutines-adapterへの依存をやめる)
  • 新機能の実装

こんな感じです。

Retrofitのコルーチン対応については、プロジェクトのコードがかなり綺麗で依存関係の分離もしっかりなされていたので移行自体は楽だったのですが、status codeが204 or 205でレスポンスのbodyが空だとぬるぽで死ぬRetrofit側の仕様(バグ?)によりそこだけsuspend funにできませんでした。ちょっと心残りです。

新機能の実装については具体的にどんな実装をしたかはNDAに触れそうなので言えないのですが、結構大きいタスクをいくつか振ってもらい、やりがいがありました。今まで苦手に思っていた設計の部分やUIの部分の実装力などが向上したように感じます。

Aquizには結構爪痕を残せたと思うので嬉しいです。

インターンを振り返って

今回のインターンは大学に入ってから二回目のインターンでしたが、やはり実際に業務に関わるのは学びが多く、成長に繋がるなと感じました。前回のインターンに引き続き今回もAndroidでしたが、メンターさんの教え方やタスクの振り方がちょうどよく、これまでの成長を実感したとともに自分に足りていなかった部分を補完・強化できたと感じます。

今回のインターンを通して自分の長所や得意分野、短所や苦手分野を見つめ直すことができたと思います。まだ大学2年生、時間はまだ残されているのでこれからも精進を続けていきたいと思います。

終わりに

DMMにはまるまる1ヶ月いたわけですが、インターンの目的である技術力の向上と社内の雰囲気を知るの2つは高いレベルで達成できたと思います。メンターの id:kgmyshin さんのもと、Aquizというまだ出たばかりのサービスにエンジニアとして関わることができたのは貴重な経験になりました。また、Androidだけでなく様々な技術分野の社員さんとランチに行くことができ、わくわくするお話をたくさん聞くことができました。

DMM、面白い会社でした。今回のインターンでお世話になった全ての方に感謝したいと思います。本当にありがとうございました。

平成最後のハッカソンに参加してきました

こんにちは。マヤミトです。

4/30、平成最後の日に開催されたハッカソンに参加してきました。

平成最後のハッカソンとは

読んで字の如く、平成最後に開催されるハッカソンです。主催はサイバーエージェントで、準備期間が10日もある長いハッカソンです。

詳しくはイベントページ

参加に至るまで

このイベントをTwitterで知り、平成最後という言葉に惹かれ、僕と大学の尊敬する先輩二人(id:flying_hato_busid:NoahOrberg)の三人で参加することになりました。 彼女いないの俺だけなので事あるごとにイキってきて心がしんどい。 二人とも技術力が高いので「足引っ張ったらヤバイ!」と思いながら事前に使いそうな技術を調べたりしました(が結局役には立ちませんでした)。

お題公表とチームのテーマ

イベントの参加者募集が開始された時点で「平成にまつわるなにか」だというのは公表されていました。

4/19のお題発表で「平成生まれの私たちが、平成を楽しく振り返ることができるサービス/モノ」と確定し、翌日に大学に集まって会議しました。

「平成を振り返る?」

「そもそも平成ってなんだ?」

となり、僕たちは「平成」を

「僕たちが生まれ 青春を過ごした時代」

と結論づけ、僕たちの青春ってなんだっけと振り返った結果……

青春してねーじゃん!!!!!

となりました。僕は今このブログを書きながら泣いています。

学校の周りの人たちが部活に遊びに恋愛に精を出しているなか僕が何をしていたかといえば部屋に篭りインターネットに黒歴史を量産することです。

そう、言うなれば黒歴史こそ僕の青春です。そんなわけでハッカソンでの僕たちのチームのお題は

黒歴史を振り返る

になりました。

f:id:yt8492:20190506173538p:plain

具体的に作るものの仕様としては

といった感じに決定しました。

開発コード名はEvil Eye(邪気眼)です。

開発

僕はクライアント側(Androidアプリ)担当、@flying_hato_busはサーバーサイド担当、@NoahOrbergブロックチェーンとサーバーサイド担当で役割を分担し作業していきました。

Androidアプリ(https://github.com/yt8492/EvilEyeClient)

バックエンド(https://github.com/NoahOrberg/evileye)

アプリはKotlinで書き、サーバーとの通信はgRPC + protobufでやりました。

チームのテーマを決めた時に画面設計の殆どを一緒に終わらせたため、10日間をフルに開発に使うことができました。アプリが持つ機能としては

  • ログイン/ログアウト
  • タレコミの投稿
  • 投票待ちタレコミ一覧の表示
  • タレコミ詳細の表示
  • 投票
  • ユーザー一覧の表示
  • ユーザー詳細の表示
  • マイページ

になりました。ハッカソンで作るアプリとしてはそこそこ画面/機能が多いのではないかと思います。また、通信部分をgRPC + protobufでやるのは初めてだったので、とても勉強になりました。

実際に開発してみた感想としては、gRPC + protobufのおかげで通信部分で詰まることがほぼなく開発が爆速で進んでいきました。protoファイルで型やapiを定義して、自動生成されたJavaのファイルを呼び出すだけだったので、途中で仕様が若干変わってもprotoファイルを書き換えるだけで柔軟に対応できました。これが従来のREST APIだったらもっと時間がかかって期間中に開発が終わらなかったと思います。

発表当日

最終日、平成最後の日にサイバーエージェントのAbema Towersに集まり、最後の開発と発表を行いました。

前日までに殆どの機能を実装を終え、まあいけるやろ!wみたいな気持ちで迎えた最終日でしたが、発表数時間前にバグが見つかったりして結局ギリギリまで作業していました。開発終了直前の土壇場でバグが直って本当に良かったです。

発表は各チームが2分でスライドと動画を使って説明するという形で行いました。自分たちで予め5分くらいのスライドを用意していたのが無駄になってちょっと悲しかったです

会津大学生だけで構成されたチームが3チームあったのですが、まさかそこで黒歴史というネタが被り笑いました。 会津大生過去に黒歴史生み出しがち

正直な感想ですが、どのチームもレベルが高くて頭を抱えました。地方のハッカソンだと間違いなく優勝レベルの作品がゴロゴロと出てきて、まさに平成最後にふさわしいハッカソンだったと思います。

発表のあとはおさわりタイムがあり、他のチームの作品を体験することができました。開発での苦労話なども聞けて面白かったです。

結果発表

1位はGチーム、2位はAチーム、3位はKチームでした。

僕たちLチームは残念ながら入賞できませんでしたが、いいものを作ったという自信はありますし、エンジニアとして良い経験になったと思います。入賞した3チームに心からの称賛を贈りたいと思います。おめでとうございます!

懇親会

前半は同年代と、後半はAndroidエンジニアと同じ席で楽しくお話をすることができました。大学内にAndroidエンジニアがあまりいないので、Androidアプリ開発の話題で盛り上がることができて楽しかったです。また、以前にAndroidの勉強会で会ったことのある人がいて、エンジニアの世界は狭いなと感じました。

最後に

平成最後のハッカソン、その名に恥じない規模とクオリティで非常に楽しく刺激になりました。このような機会を設けてくださったサイバーエージェントの皆さん、共に開発したチームのお二人、そして素晴らしい作品を見せてくださった参加者の皆さん、本当にありがとうございました!

CAのインターンに行ってきました

こんにちは。マヤミトです。

春休みの間、サイバーエージェントインターンに参加させていただきました。

インターンの概要

参加させていただいたところ

株式会社マッチングエージェント

お恥ずかしながらインターンが決まるまでTapple(マッチングエージェント)がサイバーエージェントグループだったと知りませんでした…

期間

2019年3月7日 ~ 2019年3月29日

内容

Androidアプリの開発

はじめに

自己紹介

会津大学学部二年(インターンの時点では一年)のマヤミトと申します。

高校3年生のときに初めてAndroidアプリを作り、それからは趣味や大学関係のプロジェクトでAndroidアプリ開発をしています。使用言語はKotlinで、Javaから乗り換えて以降すっかり気に入っています。

Androidアプリ以外だと以前バイトでJava+SpringでWebアプリの開発に携わっていたこともあります。

インターンに応募した流れ

学部三年の先輩方が夏休みや春休みにインターンに行っているのを見て、「自分もいつか行ってみたいなぁ」とぼんやり思っていました。

CAでエンジニアをやっている大学のOBの方が人事の方を連れて会津に来てくださったときに、いろいろお話を聞いて「よさそう」と思い、その翌日に応募しました。インターンの応募フォームには(ある意味当然ですが)22卒の欄がなかったため、人事のみねさんにTwitterで直接DMを送ってなんとかしてもらったのを覚えています。

ダメ元で応募したインターンですが、なんとか一次面接を通り、その数ヶ月後に二次面接をしてTappleでAndroidエンジニアとしてインターンすることが正式に決まりました。合格の連絡が来たときは軽く飛び上がったあと夢じゃないか頬をつねったりしましたね。まさか学部一年でインターンに行けるとは正直思っていませんでした。

インターンでやったこと

インターン中はずっとTappleのAndroidアプリの開発のタスクを振ってもらっていました。自分が担当したのはこんな感じです。

  • UIまわりの改善(ボタンにリップルを追加する、文字数制限のある入力欄でオーバーした分をハイライトできるようにする等)
  • アプリからある機能を消し去る(画面から消すだけでなくソースコードやリソースから完全に消す)
  • アプリのモジュール分割
  • ソースコードリファクタリング

普段趣味で開発してるとどうしても自分のできること以上のことをやろうと思わないというか、自分の持っているスキルで作れるものしか作らないので、実際に世に出ているアプリの開発に携わるのは大変いい経験でした。若干苦手に思っていたUIまわりの実装やモジュール分割のタスクを結構振ってもらったので、インターン前に比べて苦手意識が減ったかなと思います。

これはインターン中に書いた記事です。

qiita.com

カスタムViewを自分で作ったのは初めてだったと思います。Androidアプリ開発は1年以上やってますが、まだまだ知らないこと、経験していないことだらけだなと改めて実感しました。

ソースコードリファクタリングについては、既にあるソースコードを読んでいたときに「ここ若干Kotlinっぽくないな…」と思って、ちょうどタスクを終えて手が空いていたので「やりたい」と言ったら快く任せてくれました。余裕がないとリファクタリングは後まわしにされがちなので、開発チームのいい意味での余裕を感じました。

自分の実装がレビューされたのちマージされて、実際にリリースされるという一連の流れを体験できたのはとてもいい経験になりました。自分の変更が実際にアプリに反映されて多くの人に使われているというのはとても感慨深いですね。

今回のインターンでは、メンターの方に限らず、Androidチームの皆さんに助けていただきました。皆さんのおかげでAndroidエンジニアとして成長できたと思います。ありがとうございました。

インターン中の生活

会社が渋谷にあり、3/6~3/11までは道玄坂アパホテルに、それ以降は会社のシェアハウスに滞在していました。アパホテルは会社の隣だったので出社10分前くらいまでのんびりしてました(おい)。シェアハウスも結構新しくて不便さは特に感じませんでしたし、幸いにも他の住民とのトラブルもなく快適に過ごすことができました。

今回驚いたのは、会社のお金でお昼が食べられたことです。普段大学にいるときは昼食をカロリーメイト1箱だけで済ますことが多いので、インターンじゃなきゃこんな美味しいのは食べられないよな…と思いながら毎日食べてました。エンジニアに限らずいろんな社員さんとお昼をご一緒できたのもよかったです。

平日は近くのAndroidやKotlinの勉強会に顔を出したり、休日は映画を見に行ったり秋葉原に行ったり高校時代の友人と会ったりしました。普段は娯楽も勉強会も殆ど無い会津にいるので、つかの間の都会生活を満喫していました。

感想

初めてのインターンがここでよかったと心の底から思えるくらいに充実して楽しい1ヶ月でした。大学1年生ではなかなか触れることのできないような大きいサービスの開発を経験することができ、大変勉強になりました。

面接をしてくださったりインターンの調整をしてくださった人事の皆さん、適切にタスクを振っていただき、わからないところがあれば優しく教えてくださったAndroidチームの皆さん、初めてのインターンで不安も大きかった自分に優しく気さくに接してくださったマッチングエージェントの皆さん、その他お世話になった大勢の方に深くお礼を申し上げます。3週間という短い間でしたが一緒に働くことができてとても嬉しかったです。感謝したくも感謝しきれません。

本当にありがとうございました。