toshiのエンジニア日記

できるエンジニアを目指して勉強した内容を日々まとめていきます。

Mercari Tech Conf 2018(mtc18) に行ってきた

f:id:ntoshi1900:20181004223156p:plain

本日、去年に引き続きMercari Tech Conf 2018に行ってきました。

今回は講演少々、メインはブースで直接詳しい話を聞くこと、という形で回ってました。

昨年度と比べていろいろ感じるところがあったので、簡単なレポを掲載したいと思います。

ざっくり感想

Mercariは巨大企業へと成長し始めている

ここ1年でエンジニアの数が急増したようで、いろいろと企業文化が変わりつつあります。

顕著なのが開発アーキテクチャの刷新。

複数のセッションでマイクロサービスアーキテクチャ化の話がされており、急増するエンジニアの数にスケールアウトするようにいろいろな面をRearchitectしているよう。

そのあたりがカッチリ決まってきているあたり、大企業化してきたな~と感じました。

ベンチャーならではの足の速さを失わないようにがんばってほしいです。

企業のグローバル化がすごい

従業員には結構な数の外国人が在籍している模様。実際に説明員にも外国の方が多かったです(たいてい日本語ぺらぺらでしたが)。

去年度の時点でMercari USとしてアメリカ向けのアプリを別途作成しているあたり、グローバルをしっかりと視野に入れてるな~とは思っていましたが、想像以上のグローバル化っぷりでした。

世界を相手にする気概は伝わってきますね。

未来への投資もしっかり

一見メルカリとはなんの関係もなさそうな、量子アニーリングとかの研究も行っているそう。

機械学習とかは展開先が想像付くので納得感ありますが、そのあたりの領域は直接的には今のメルカリアプリにどう活用するのかは見えにくいですね。

しかし、今今で価値を出すのではなく、将来性のある技術にはしっかりと投資を行う姿勢の模様。

ECサイトだけで終わらなかったAmazonや、検索エンジンだけで終わらなかったGoogleSNSだけで終わらなかったfacebookなど、海外の名だたるIT企業に似た野心を感じますね。

Mercariが日本のGoogleとか言われる日が、いつか来るのだろうか・・・と期待してしまいますね。

各ブースの感想

メルカリにおける量子アニーリングの研究

D-waveと契約を結んだり、量子アニーリングの界隈では有名な東北大学大関先生と共同研究契約を結んだりと、かなりガチで取り組んでる模様。

具体的な出先が決まる前から、取り合えず将来性あるからやろうぜ!と速攻でD-waveと契約結んだそうです 笑

勢いがあって素敵ですね~

量子コンピュータ系というと、日立さんとか富士通さんとか大手メーカーが取り組んでいるイメージですが、今後はMercariから面白い成果が出てくるかもしれませんね。期待です。

経営課題をエンジニアリングで解決、Corporate Solutions Engineering の取り組み

メルカリの大企業化を強く感じる展示でした。

人材管理等をきちんと行うために、人事管理システムTeamsと人事評価ツールReviewsというものを内製しており、その紹介がありました。

従業員の急激な増加に伴い、きちんとしたシステムの上での人材管理が必要とのことで、エンジニアリングによる解決を図ったとのことです。

ただ、完全に大企業的な評価になっているのかというとそうでもなく、面白かったのが人材評価のときに業績や達成度度合いによりレーティングをつけないノーレーティング評価を行っているという点でした。

実力を持っていて本当はもっと評価されていい、という人がいたときに、レーティングベースだと実力に関わらず実績を積み上げなければ昇給できないという問題点がでるため、360度フィードバックと上長評価で評価を決めているそうです。

また、上長の判断だけで評価結果が左右されないように、キャリブレーションの仕組みを取り入れているそうで、やさしい上司の下に付いたもの勝ち、見たいな事もないそうです。

これらの仕組みは、きちんとした評価をしてもらえると、内部でも好評の模様。たまたま担当したプロジェクトが軌道に乗るやつなのかどうなのかの運ゲーにならないところは素敵ですね。

内製システムに関しては人事評価のやり方が変わったとき等に柔軟に対応できるように、と内製したそうですが、その点に関しては、外部システムではダメだったのかなぁと少し疑問でした。人材管理とかは世の中にたくさんあると思うので・・・

あと、人材管理システムの名称「Teams」が、MicrosoftさんのチャットツールのTeamsと名前がド被りしてるのもちょっと気になりましたね。

メジャーどころとの名称被りはいろいろと不都合がありそうなので、少し見直したほうがいいところかもしれませんね;

エキスパートチームの取り組み(Gopher道場、Go Fridayなど)

社内にGCPにめっちゃ詳しい人とGolangにめっちゃ詳しい人がいるらしく、その人たちで構成されるエキスパートチームの紹介でした。

業務時間の50%ほどを使って社外活動を行っているらしく、社外に対する技術アピール+情報収集で得た知識を社内展開する取り組みを行っているそうです。

Tech企業感あっていいですね~

私もこういう活動が許されるくらい特定の分野に強くなりたいものです・・・

MTC App by Flutter

Flutterを使ってMTC2018のアプリを作ってみたという紹介でした。

Flutterを使うとマルチプラットフォームへのデプロイが可能で、コンパイルもめちゃくちゃ早いことから、一時的に利用するようなアプリをさくっと作るにはかなりいいとのことです。

私はFlutter使ってことがなかったのですが、ちょっと触ってみたいなと興味がわきました。

AQAチームによるテスト自動化及びZapier自動化ブース

相変わらずすごいMercariの自動UIテスト。

Appium等を使ってカッチリとリグレッションテストを行ってるとのこと。

新しいUI追加時にはあらかじめテストチームにアラートあげて対応準備をするなど仕組みとしてもかなり洗練されているようで、見習うところが多いなぁと感心いたしました。

クイズ・iOS app Rearchitecture

アーキテクチャ前後のアプリをインストールした端末が置かれており、どっちがリアーキテクチャ後でしょうか!?というクイズを展示してました。

二つを見比べてみると、圧倒的に読み込み速度が違っていて、もやはクイズでも何でもなかったです 笑

エンジニアの増加に伴い、ビューコントローラ編集時のコンフリクトを避けるために、ボタン1個とかコンポーネント単位でビューコントローラを分割したところ、なぜか読み込み速度が劇的に向上したそうです。

どうもコンポーネントをビューコントローラに置き換えることでレイアウトの処理が高速化したらしく、特に低スペックの端末では顕著に差が出ていました。普通にこれはすごいなと感じましたね。

ただ、やはり細かい単位でビューコントローラにしてしまうと全体の管理は少し大変になるらしく、個人レベルの開発ではマネできないな~と感じました。

Welcome to Mercari US

Mercari USの紹介と、US版のインターフェースが紹介されていました。

日本版とは結構仕様が違っており、例えば値下げ交渉などが出品者と直接やり取りしなくてもできるようになってたりします。

また、配送の関係で商品の重さが重要になっているため、機械学習を用いて商品の重さを推測する機能などが追加されているらしく、USならではの事情に合わせた技術開発がしっかりと行われているようでした。

今まで、日本で成功したベンチャーとか(ソシャゲとか)が、何も考えずに海外展開して大コケする姿を良く目にしてきましたが、そういうのとかとは明らかに違う姿勢で取り組まれてます。

こりゃ海外でも成功するわなぁ・・・と納得せざるを得ない親和っぷりでした。

Days in Mercari Android

Android開発をする際の開発の流れを説明する展示がありました。

昔はスピード感を重視するためにアーキテクチャとかは厳密に議論されていなかったようですが、今は開発項目が出た際に、アーキテクチャ検討の時間がきちんと取られ、メンバー全員で議論したうえで開発に取り掛かるするそうです。

また、MVPアーキテクチャ(Model-View-Presenter)を取り入れることで、処理とViewが独立し、例えばA/Bテストのときの切り替えなども簡易に行えるようになったとのこと。

このアーキテクチャの刷新で、テストカバレージなども劇的に上がったそうで、開発プロセスも成熟してきたな~と感じるところでした。

We are the Machine Learning team!!

メルカリでの機械学習の取り組みを紹介する展示。 私自身、機械学習に携わっていることから、いろいろ詳しく聞いてきました。

まずデータに関してですが、全てBigQueryに集約しているそうです。

そのため、実際に分析するときにはBigQueryにクエリを投げるだけであって、かなり機械学習が行いやすい環境が整っている模様。

BigQueryは定額契約をしているそうで、クエリは投げ放題だそうです。確かに、1クエリいくらとか言われたら、試行錯誤しづらいですからね;機械学習エンジニアとしてはかなり良い環境だと思います。

画像系はAmazon S3に放り込んであるらしく、学習プロセスもクラウド上で全て完結するなど、クラウドネイティブな環境になってるそうです。

ローカルで蓄積されたデータを手渡されて、さあ分析してくれ!と依頼される身としては羨ましい環境です;

あと、商品説明などを画像のみから自動入力するデモなどが展示されていましたが、かなりいい感じでしたね。これぞ、機械学習の有効活用!という感じでした。

Mercari & Microservices

メルカリでの各サービスのマイクロサービス化に関して紹介した展示。

初期の頃はモノリスな構造だったが、チームが大きくなるにつれてマイクロサービスに移行していく必要出てきたという話。

現状ではチーム単位でマイクロサービスの管理をしているそうで、例えばそれぞれの管轄するデータベースに関しては、各チームが責任を持ってAPIを提供すること、といった完全なる分担が行われていそうです。

やはり、急速なエンジニアの増加に伴い、エンジニアのスケールアウトが急務になっているようです。

まだマイクロサービス化していない部分に関しても、順次マイクロサービス化を行っていくとのこと。過渡期でのパスによる制御などもかなりカッチリと設計されており、スムーズなマイクロサービスへの移行が期待できそうでした。

研究開発組織「R4D」

f:id:ntoshi1900:20181005002323j:plain 一番メルカリやべぇ、ってなった展示でした。

量子コンピューティングとか、衛星とかメルカリが取り組んでいる意味が分からん。

だがしかし、だからこそ、Mercariがしっかりと未来を向いていることが分かる。

目の前の利益だけではなく、将来性への投資ができていることがわかる。

GoogleMicrosoftAmazonFacebook、世界の名だたるIT企業たちもやはり、本業だけではなく、Tech企業として未来のある技術に投資を行ったからこそ今の姿がある。

Mercariも、うまくテクノロジーを育てていくことができれば、そういった企業たちと方を並べる存在に今後なっていけるんじゃないかなという、可能性を感じました。

まとめ

やはり、ベンチャーの中でも特に勢いがあるなと感じました。

海外展開が文化にあわせてしっかりと行われている点や、将来性のある技術に対する投資など、現状に満足せずしっかりと高みを見据えられているところがかなり感じられました。

これからのMercariの躍進に期待ですね! 是非とも日本を誇るTech企業へと成長してほしいです!

おまけ

今回のおみやげ物など。

f:id:ntoshi1900:20181004223208j:plain
USB充電器のハブ。正直普通に欲しかったやつなんで、かなり嬉しいです
f:id:ntoshi1900:20181004223215j:plain
ケーブルとかまとめられるポーチ。開発合宿のときなどに利用できそうですね。
f:id:ntoshi1900:20181005004653j:plain
やたらオシャレなドリンクスペース。フォトジェニックということでTwitterとかにもめっちゃアップされてます

今回昼から参加させてもらったんですが、Twitterとか見るとお昼の弁当も出た模様・・・ ちくしょうっ!無理してでも午前から行くんだった!!

来年はそこも期待して、ちゃんと時間取って参加したいと思います~♪

GridLayoutに動的にImageViewを生成して割り当てる(Android Studio 3.0.1、Kotlin)

等間隔のグリッド上にViewを配置できるLayoutとして、GridLayoutがあります。

GridLayoutに対して静的に要素を割り当てる方法(xmlに直接記入する方法)はWeb上で多く紹介されていましたが、動的に生成して割り当てる方法がわかりづらかったのでまとめます。

動的割り当て方法

以下のようにして、動的にImageViewを生成して割り当てることができます(GridLayoutのIDはtestGridLayout)。

for(i in 0..(testGridLayout.rowCount - 1)) {
    for(j in 0..(testGridLayout.columnCount - 1)) {
        // ImageViewの生成
        val imgview = ImageView(this)
        // GridLayout用のパラメータを設定
        val params = GridLayout.LayoutParams()
        params.width = 256
        params.height = 256
        params.rowSpec = GridLayout.spec(i)
        params.columnSpec = GridLayout.spec(j)
        imgview.setLayoutParams(params)
        // ImageViewへ画像を設定
        imgview.setImageResource(R.drawable.smartphone_app)
        // GridLayoutへImageViewを割り当て
        testGridLayout.addView(imgview)
    }
}

ポイントは、paramsというパラメータを設定するための変数を生成して、ImageViewに与えている点です。

実行結果

4*5のGridLayoutに動的割り当てを行った結果を示します。

f:id:ntoshi1900:20180121221528p:plain

生成できています。

画像ファイルをインポートする(Android Studio 3.0.1、Kotlin)

画像ファイルのインポート方法がわかりづらかったのでまとめます。

やりたいこと

アプリ上で使えるように画像ファイルをインポートしたい。

drawableフォルダの中にある画像がリソースとして扱われるが、直接drawableフォルダに画像突っ込んで使うとエラー吐く。

インポート方法

1.インポートしたい画像をクリップボードにコピー(ファイル選択してCtrl+CでOK)

2.Hierarchy Viewからdrawableフォルダ選択して貼り付け

3.いろいろウィンドウ出てくるので、基本OKで

f:id:ntoshi1900:20180121214007p:plain

インポートした画像ファイルを使う(Kotlin上)

コードから画像ファイルにアクセスする例として、ImageViewに画像を設定するコードを以下に示します。

imgview.setImageResource(R.drawable.smartphone_app)

このコードで、imgviewというImageViewに、smartphone_appという名前でインポートした画像が設定されます。

R.drawable.smartphone_app自体はリソースのインデックスを示しているため、型がIntであることに注意です。

アプリのタイトルバーを消す(Android Studio 3.0.1)

アプリのタイトルバーを消すのに少し苦戦したので、やり方をメモします。

消す対象

アプリ実行画面の上部に表示される青い帯状のタイトルバーです。

f:id:ntoshi1900:20180121210007p:plain

Web上ではandroidmanifest.xmlandroid:themeをタイトルバーなしのものに変える方法などが紹介されていますが、現行バージョンではRun時にクラッシュしてしまい、うまくいきませんでした。

消す方法

styles.xmlにタイトルバーを消すための設定を追加します。

styles.xmlはHierarchy Viewerから開けます。

f:id:ntoshi1900:20180121211910p:plain

styles.xmlに以下の設定を追記します。

<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>

styles.xmlは以下のようになります。

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

</resources>

結果

消えました。

f:id:ntoshi1900:20180121212349p:plain

WindowsのAndroid StudioでKotlinを学ぶ - 導入編

こんにちは。 雑魚エンジニアToshiです。

先日Androidアプリをリリースしましたが、もっとちゃんと「Androidアプリ開発できます!」ってアピールするために、最近Android界隈で話題のKotlinを勉強してみることにしました。

本記事では、Windows上でのKotlinの導入手順などをまとめます。

なお、学習には日本Kotlinユーザグループが無料で公開してくださっている「Kotlin助走読本」を活用させていただく予定です。

kotlin-prior-learning-book.pdf - Google ドライブ

Android Studioのインストール

ここから、Windows用のAndroid Studioがインストールできます。

ダウンロードが完了すると、自動的にインストール手順を説明したページに遷移します。

説明にしたがって設定を行いましょう(まぁウィザードでぽちぽちするだけですが)。

Java環境の構築

Javaのインストールと設定をしましょう。

以下のTechAcademyの記事に従うと良いです。

Androidアプリの開発環境構築方法(Windows編)【初心者向け】 | TechAcademyマガジン

Kotlinプラグインのインストール

助走読本ではプラグインの導入に関して記述されていますが、Android Studio 3.0 以降のバージョンでは、最初からKotlinが導入されているようです。

新規プロジェクトの生成時に、ウィザード上で「Include Kotlin support」というチェックボックスにチェックをすればOKです。

Kotlinプロジェクトのつくり方などは以下の記事が参考になりました。

employment.en-japan.com

おわりに

以上で、KotlinでAndroidアプリ開発を行う環境構築ができました。

今後は、助走読本をベースにKotlinの勉強を進めていく予定です。

今年度中くらいに、Kotlin製のクソアプリをリリースしたいなぁ。

Androidアプリリリースしてみた

f:id:ntoshi1900:20180110212912p:plain

こんにちは。雑魚エンジニアのtoshiです。

約一ヶ月前に記事で書いてたスマホアプリですが、ついにリリースできました!

play.google.com

クリスマスを満喫するリア充どもを、様々な嫌がらせアイテムを投げつけて撃退するゲームです!

クリスマス当日にリリースしてましたが、そこから正月モードに入ってしまい、記事にするのをすっかり怠っていました;

15分くらいで全クリできるいい感じのクソゲーなので、お時間あれば遊んでみてください。

以下、リリース申請時の注意点などをまとめておきます。

Google Play Developer への登録

Androidアプリをリリースするためには、事前にGoogle Play Developer への登録が必要です。

以下のURLから登録申請が行えます。

https://play.google.com/apps/publish/signup/

登録には25ドルかかるので、事前にクレジットカード等を用意しておきましょう。

また、登録時にはポップアップが出てくるので、スマホからでは登録できません。PCから登録申請を行いましょう。

登録完了まで最大 48 時間かかるとのことですが、私はすぐに登録完了しました。

apkファイルの作成

Androidアプリをリリースする場合、もろもろのアプリ設定のほかに、Keystoreというデジタル署名用のファイルの生成が必要になります。

Unity上での生成の方法などは以下の記事が参考になります。

halcyonsystemblog.blog.fc2.com

Keystoreを紛失するとアプリのアップデート等ができなくなるそうなので、気をつけて管理しましょう。

ストアの掲載情報の入力

ストア上で表示されるもろもろの設定を行います。

f:id:ntoshi1900:20180110230613p:plain
アプリ一覧画面に表示される情報
f:id:ntoshi1900:20180110230607p:plain
アプリ詳細画面に表示される情報
f:id:ntoshi1900:20180110230602p:plain
アプリ詳細画面の下のほうに表示される情報

タイトル

アプリの顔、タイトルを入力します。

スマホでPlayストアを確認すると、アプリ一覧の画面ではタイトルの最初の全角20文字程度が見えるので、最初の20文字でゲームの内容が推測できるようにするといいかと思われます。

簡単な説明

かなり重要な項目です。

アプリをキーワードで検索したときに出てくるアプリ一覧画面では、タイトルとスクリーンショットのサムネイルと、この簡単な説明のみが表示されます。

基本的に、ここだけでアプリの魅力を伝えなければいけません。

最大全角80文字と限られた情報しか入力できないので、アプリの一番売りとなる内容を記述するようにしましょう。

ちなみに、改行を入れてしまうとアプリ一覧画面で1行目しか表示できなくなるようなので、1行で記述するようにするといいでしょう。

詳細な説明

実はあんまり優先度は高くないです。

というのも、スマホではアプリの詳細画面からさらに「詳細はこちら」というリンクをクリックしないと見えない部分だからです。

簡単な説明で記入したこと以外に伝えたいことがあれば記述すると良いと思います。

簡単な操作説明や、フリー素材のクレジット表記などを含めることが多いようです。

スクリーンショット

おそらく最も重要な項目になります。

アプリ一覧にも表示され、アプリの雰囲気をつかむために最も利用されるソースだと思います。 スクリーンショットで「面白そう!」と思わせれば勝ちです。

ゲーム画面に加えて、簡単な説明を付加した画像を生成するとわかりやすくていい感じです。

また細かいところになりますが、実際にゲームのプレイ中にいい感じのスクリーンショットを取るのは意外と難しかったりします。

スクリーンショット作成用の、敵とか弾とかが静止しているシーンを別途作成すると、楽でいい感じでした。

高解像度アイコン

タイトルと並ぶアプリの顔ですね。

アプリ自体に設定したアイコンと同じものを使うといいと思います。

ただ、512×512と、アイコンにしては本当に高解像度なので、Unity上でアイコンを設定する際も、512×512のアイコンをベースに作成するといいでしょう。

ヘッダー画像

これが意外と重要。

スマホでアプリの詳細画面を開いたときに、一番上にドーンと鎮座しています。 詳細を開いたときに一番最初に目にする部分なので、ここでインパクトを残せると大きいと思います。

プロモーション画像

これは良くわかりませんが、Google Play Store でオススメのアプリとして紹介されたときに表示される画像だそうです。

必須項目ではないですが、一応設定しておくとよいでしょう。

ちなみに私は面倒だったのでヘッダー画像を圧縮したやつを使いました。

プロモーション動画

Youtube上でのアプリ宣伝用の動画を載せられるみたいです。

本気でユーザ獲得を狙う場合は重要になるかもしれません。

ちなみに私はもちろん登録していません 笑

まとめ

Androidアプリのリリース作業は結構面倒くさい。

特に画像作成系が多いので、わりと時間とられます。

だけど、実際に自分の作品が世に出ることは、やっぱりうれしい!

できるだけ多くのプレイヤーにやってもらえるといいなーと願っております(まぁ紹介サイトに書くとかプロモーションなんもやってないので今回は厳しそうですが・・・)。

とりあえず一通りアプリ作成の手順はわかったので、今度はちゃんと面白いといえるゲームを作成していきたいです!

リモートもくもく会をやってみたらめっちゃ良かった

こんにちは、雑魚エンジニアのtoshiです。

最近、Unityを使ったスマホアプリ開発をはじめました!

もともとRPGツクールなんかを使ってちまちまとゲーム作りに励み、リアル友人たちにやってもらって喜んでいたのですが、どうせなら公開できるものを、と取り組み始めました。

ひとまず、評判のいい入門書として以下を購入、一通り実装してみました。

www.socym.co.jp

なにこれめっちゃ楽しい。NejikoRun超楽しい。

colliderなどの基礎をしっかり押さえた上でサンプルゲーム実装ができ、楽しく学べる良書でした。

さて、一通りサンプルアプリを作り終わったところで考えるのは、もちろんオリジナルゲーム!

……しかし、大きな壁が立ちはだかるのだった……!

やる気が出ない

設定を考え、ゲーム性を考え、さあ作るぞ!というとこまではいくのですが、いかんせんやる気が出ない。

のそのそと重い腰を上げ、コーディングを始めるのですが、クラスをひとつ作ったくらいで謎の達成感を覚え、気が付けばベッドで寝転びマンガを読んでいる。

いかん!これはいかん!いつまでたっても完成しない!!

そこで、開発をブーストするため、もくもく会というものを利用することにしました。

もくもく会とは?

f:id:ntoshi1900:20171127210420j:plain

もくもく会とは、共通の興味を持った人間がカフェやコラボレーティブスペースなどのひとつの場所に集まり、もくもくと作業をするという謎の会です。

決して、喫煙家が集まる不健康な会ではありません。

もくもく会のメリットとしては、

  • 人の目があるのでサボらない
  • 同じ興味の人が集まっているので分からないところがあったら質問できる
  • 成果発表を行うことで、目標感がある

などがあります。

とにかくサボってしまう私にとってはピッタリの会! ということで早速、Unity関連のもくもく会に参加してきました!

もくもく会参加の結果

結論から申し上げると、かなり作業は進みました

なにせサボれるベッドもないし、ちゃんと作業しないと「なんだあいつ」という冷たい視線が飛んでくる(という妄想)ので、サボることなく作業時間いっぱい開発ができました!

ただ。。。結構お金がかかる。

参加費自体は1000円程度で安かったのですが、東京までの交通費が結構かかる+外食で結構いいもの食べてしまう で、結果として6000円くらい吹っ飛んでいきました。

集中力は金で買えとも言うし、進み具合から言って損した気はしないのですが・・・頻繁に利用するにはちとお金が掛かりすぎる。

食費抑えろ?尤もな指摘ですが、難しい 笑

一日にかけたお金のうち、交通費が占める割合が高くなると、何か悔しくなっちゃうんですよね~ なので、せっかくだからといいものを食べ、結果お金がすっとんでいく・・・

そこで、何とかお金をかけずに開発をブーストできないかと考え、リモートもくもく会なるものを開催することにしました。

リモートもくもく会とは

f:id:ntoshi1900:20171127212949j:plain

もくもく会では物理的にひとつの場所に集まりますが、リモートもくもく会は音声通話やチャットアプリなどで、仮想的に集まります。

そのため、全員が自宅などで参加でき、交通費も移動時間もかけずに作業が開始できるというわけです。

取り合えずお試しということで、知り合いを4人ほど集め、Slack上で開催してみることにしました。

流れは以下のような感じです。

  1. 9:00 Slackにログイン。各自作業内容を宣言する。
  2. 9:00~12:30 各自作業。
  3. 12:30~13:00 各自休憩。お昼ごはんの内容と進捗状況を共有。
  4. 13:00~17:30 各自作業。
  5. 17:30~18:00 成果報告

仕事かっ!と突っ込みたくなるほどのガチ構成です(事前に参加者にアンケートとったらこのプランが一番人気だったんです・・・)笑

集中力が持つか心配でしたが、取り合えずものは試しということでこのプランでやってみることにしました。

その結果は・・・

めっちゃ良かった

すごい。すごい良かった。

まず「めんどくせ~」とかならずに、強制的に朝9時から作業が始められる。一番の壁である「やり始め」が超スムーズ。

さらに、報告会で報告する内容なくなったら困る、と思い、サボることもない。他の人にいい面するために必死こいてやる。

結果、めちゃくちゃ作業が進む!!しかも、無料!やばい!移動時間もなし!!何か無駄に豪勢な食事することもない!ステーキとか食べない!!

最高かよ・・・

ただし、いくつかリモートならではの問題点などもありました。

成果報告がちょっとグダグダ

成果報告もSlack上でチャットベースでやったのですが、成果報告のテンポが悪かったり、突然の来客でAFKしてなかなか戻ってこなかったりしました。

テンポに関しては、誰かが入力する → 待ってる間作業する → 作業しすぎて入力完了に気づくのが遅れる の連鎖で、かなりのグダグダ感。

チャットベースでリアルタイムで行うのは無謀でしたね・・・

あらかじめ入力して、各自読んでね!というスタイルにするか、成果報告だけでもSkype等で音声つなぐのが良さそうですね。

AFKに関しては、簡易でもいいので何か連絡してね、と取り決めるか、、、やっぱり音声つなぐのがいいですね。

個人的に作業中は音声つなぐ必要はないと思っているので、成果報告時のみ通話にするのが一番スマートにできる気がします。

作業内容が少し限定される節がある

今回、私はUnityのアプリ開発でしたが、他の方々は新しい分野を勉強をしている人もいました。

しかし、新規分野の勉強だと、「勉強しました!」くらいしかいうことがなく、成果報告時に報告する内容がほぼない、という状況に陥るようです。

デモシステムの構築くらいまで進めると成果として分かりやすいのですが、前準備なしに取り組むと基礎的な理論の理解だけで一日が終わってしまいます。

なので、成果報告でちゃんとモノを報告したい!となった場合には、新規分野をイチから学ぶのは少し厳しそうです。

あらかじめ基礎は理解して、実装部分をやる、等の工夫が必要そうです。

まあ、もくもく会なので、そこまで成果にこだわる必要はないとは思いますが・・・

まとめ

リモートもくもく会めっちゃ良い

この一言に限る。

ただし、成果報告は音声でやるのがオススメ。

あと新規分野やるときはある程度予習しとくのがオススメ。

以上!

とりあえずとてもとても素晴らしいので、

みなさんリモートもくもく会積極的にやりましょう

おまけ

リモートもくもく会で作ってたアプリを少し紹介します。

タイトル:Xmas Crusher ~リア充どものクリスマスを台無しにせよ!~

設定:寂しいクリボッチを味わう主人公。ついに我慢の限界を突破し、クリスマスを充実するリア充どもを殲滅するため、孤独な戦いに挑む!

f:id:ntoshi1900:20171128064021p:plain
タイトル画面。陰鬱な雰囲気が漂いますね・・・

f:id:ntoshi1900:20171128064937p:plain
戦闘画面。左右からワラワラとカップルが出てくるので様々なアイテムを投げつけて攻撃します

季節向けですが、完全なネタゲーです 笑

クリスマスまでに公開する予定なので、お楽しみに!