GameWith Developer Blog

GameWith のエンジニア、デザイナーが技術について日々発信していきます。

毎年旧バージョンのiOSサポート打ち切り交渉するのが大変なので、iOSアプリ サポートOSバージョンルールを作った #GameWith #TechWith

こんばんは、ApexLegendsで物資調達中に崖から転落死した @peka3 です。

iOSは毎年メジャーバージョンアップが行われますね!

ずっと古いバージョンもサポートできればいいのですが、そうすると開発効率が落ちていくので、サポートバージョンを打ち切ることも大事だったりします。

そういうときはエンジニアとプロダクトオーナー間で交渉して、じゃあこのバージョンまではサポートを終了しましょう、となったりならなかったりします。

これが毎年の作業として入ってくるチームも多いのではないでしょうか!?

GameWithアプリでも先日iOS10のサポートを終了しました。

その際に「iOSアプリ サポートOSバージョンルール」を設け、今後はこのルールに沿いますということでプロダクトオーナーと合意を取ることにしました。

なぜ iOSアプリ サポートOSバージョンルール を決めたのか?

毎年iOS Xのサポートを打ち切るとどういうメリットがあって…などをまとめるのは非効率です。

そもそもサポートOSのバージョンを上げることのメリットはほとんど

  • 新機能が使えて開発効率や開発の幅が広がる
  • テストにかかる工数が削減できる

この2点に集約できるので毎回洗い出すほどではないと考えました。

よって、考えることを削減したい、コミュニケーションコストを削減したい、という目的でルールを決めました。

テスト工数削減について

ほとんどの開発において、各バージョンで動作確認するので、たとえばiOSの場合、i0S10, 11, 12 をサポートしようとすると、テストは3必要。

これが直2バージョンのみのサポートになれば、 iOS11, 12 だけでよくなり、テスト工数は 2/3 になります。

ものすごく単純計算で出しましたが、古いバージョンを打ち切ったらテスト工数が増えてしまう、ということはないでしょう。

古いOSではセキュリティリスクがある

iOSは基本的に最新のメジャーバージョンにしかセキュリティパッチが来ないので、iOS12が最新なら12未満を使ってるだけで、すでにセキュリティリスクがある状態で利用していることになります。

サポートOSバージョンを上げたとしてもサポート対象外のOSで使えないわけではない

打ち切られたOSであってもすぐに使えなくなるということはなく、AppStoreで対応していた最終版のアプリをDLもできます。

よって、サポートを打ち切られたバージョンの利用者が突如離脱につながる、ということはありません。


 

……前提のお話として、まずここまでプロダクトオーナーと認識を合わせました。

ここから具体的にどのラインを割ったらサポートを打ち切るかの交渉になるのですが、GameWithアプリでは以下のようにしました。

   

サポート打ち切りライン

iOS10はシェア3%を切ってからこの2ヶ月、2.5%〜2%前後で推移している。

バージョンアップに興味がない、したくない一部のユーザがずっと使い続けている状態であり、これ以下にはほとんど下がらないのでは?と推測できる。

よって今後も該当OSバージョンのシェアが3%未満 であればサポートを打ち切る。

……として、上記の内容でプロダクトオーナーと合意しました。

コミュニケーションコスト削減目的でもあるので、この数値を割ったらまずサポート打ち切る前提で話を進めることになります。

 

ユーザに告知する

サポートバージョン打ち切りはユーザの皆様にも理解していただかなくてはいけないので、きっちり告知をするところまで含めて行います。

gamewith.jp

   

まとめ

GameWithアプリではiOS10はこのようにしてサポート終了としました。

今後は交渉は特にせず、サポート終了をすることの確認と、ユーザへの告知記事作成だけで行ける想定です。

他のアプリでの交渉事例、シェア何%で打ち切るのかなども知りたいです!

もしよかったらコメントいただけると嬉しいです。


GameWithアプリチームでは一緒にアプリをよくしていく仲間を募集中です! 興味がありましたら以下からご連絡をいただけるとありがたいです。 www.wantedly.com

エンジニア公式ツイッターもはじめてます twitter.com

ユビキタス言語を発見するためにユーザーストーリーマッピングをやってみた #GameWith #TechWith

こんにちは、 最近はゼリー状の物体を四つ繋げて消すゲームと、三人一組で生き残るゲームをしている @peka3 です。

先日、GameWithアプリチーム内でユーザーストーリーマッピングを行ってみました。

今回はそれについてのレポートとなります。

ユーザーストーリーマッピングとは?

簡単にいうと、ユーザーの行動に対してどういう機能があればいいかを洗い出す作業になります。

ユーザーストーリーマッピングそのものについての説明は以下スライドが参考になります。

ユーザーストーリー駆動開発で行こう。

スライドより引用

f:id:peka3:20190228201035p:plain
ユーザーストーリーマッピング

きっかけ なぜユーザーストーリーマッピングをやろうとなったのか?

チーム内でユビキタス言語が設定できてないので、会話が難しい。ユビキタス言語を作りたい、というのがきっかけでした。

当初はDDDのイベントストーミングという手法を使おうとしていたのですが、チーム内にその手法に詳しい人がおらず、正しいやり方で行うのが難しそうだと断念しました。

そこで出てきたのがユーザーストーリーマッピングでした。

こちらは経験者もいて、これでもユビキタス言語は発見・設定できそうだということで、今回はユーザーストーリーマッピングを行うことになりました。

人数

今回は議論があまり活発になりすぎず、発散せず、短期間で仕上げられるように、ドメイン知識に詳しいプロダクトオーナー、デザイナー、エンジニア2人の合計4人でユーザーストーリーマッピングを行いました。

ペルソナの設定

f:id:peka3:20190304183505p:plain
ペルソナ T君

GameWithアプリにはすでにT君というペルソナがいるので、今回はこれを活用し、このT君がGameWithアプリを使ってゲームの攻略情報を探すまでの一連の動作を深掘りします。

大きなタイムラインを描く

タイムライン

タイムラインをざっくり抽出します。これは一人で一気に書き出してしまいました。

今回はアプリを使って攻略記事を読み、さらにそこから別の攻略記事を読みに行く、というタイムラインで考えることにしました。

それぞれのタイムラインで、ユーザーがどういう行動をとるか

次にユーザーのアクションを抽出していきます。

ここでは細かい機能の話はせずに、それぞれのタイムラインでユーザーはこういうことをする、ということを付箋に書き出します。

これも粒度がまちまちだと困るので、合意のもと一人で一気に付箋に書き出しました。

ユーザーのアクション

それぞれのアクションでユーザーは具体的に何ができるか?ストーリーの洗い出し

アクションが設定できたら次はストーリー(機能)を洗い出します。

たとえば「記事を探す」というアクションをユーザーがとるとき、どういった機能を使ってそれを行うのか?という視点で機能を出していきます。

これは全員で付箋に書いて貼っていく作業となります。

f:id:peka3:20190228191542p:plain
ストーリーの洗い出し

書いた内容を説明しながらホワイトボードに付箋を貼ります。

優先度順に並び替え、MVPの設定

最後は機能として出した付箋を優先度順に並び替えます。

ここは議論になりやすかったです。上手にファシリテートしないと時間が一気に消費されてしまいます。

さらに機能群の最上段に一本線を引き、ユーザーがアクションを行うために最低限必要な機能をその線より上に置きます。

この線より上にあるものが MVP(minimum viable product)の要件となります。

f:id:peka3:20190227190518p:plain
優先度順に並び替え

仕上げ

新規のプロダクトではないので、すでに実装がすんでいるものを洗い出し、上に持っていきます。

マスキングテープより上のものがすでに実装済みのものでした。

f:id:peka3:20190228174831p:plain
ユーザーストーリーマッピング

これでユーザーストーリーマッピングが完成しました。

しかし今回はこれで終わりではなく、ユビキタス言語の抽出を行います。

ユビキタス言語

付箋に出てきた言葉をユビキタス言語として命名していきます。(細長の黄色付箋)

他のものと混同してしまわないだろうか?というところを注意して命名していきました。

今後は会話の中でこのユビキタス言語を使っていくことになります。

f:id:peka3:20190228175702p:plain
ユビキタス言語

まとめ

ユーザーストーリーマッピングをやってみた個人的な感想なのですが、一連の操作に沿ってじっくり考えることができるので、どういう風にユーザーがアプリを使っているのかが具体的に想像しやすくなりました。

今後の見通しも立つのでユビキタス言語の発見はもちろん、技術的にもモデルを考えやすくなりました。

意見もたくさん出てきて、1テーブルでわいわい話せる人数だったのも良かったかもしれません。

かなりゆっくりすすめても、合計3時間ほどでできたので、一度みんなで認識合わせをするツールとして有効そうです。

皆さんもやってみてはいかがでしょうか!

GameWithアプリチームでは一緒にアプリをよくしていく仲間を募集中です! 興味がありましたら以下からご連絡をいただけるとありがたいです。 www.wantedly.com

以上です。

GameWith フロントエンド もくもく会 #8 開催しました #GameWith #TechWith #gamewith_moku2

はじめに

こんにちは。GameWithのエンジニアのtiwuです。

2月28日(木)にGameWith主催で第8回目のもくもく会を開催しました!

GameWith フロントエンド もくもく会 #8

gamewith.connpass.com

今回のテーマは僕自身が関心を高く持っているフロントエンドを採用しました。

当日は昼から豪雨が振るという悪天候でしたが、外部の参加者の方3名にお越しいただきつつ、GameWithのエンジニアは4名で参加しました。

もくもく会は最初に自己紹介と今日のもくもく内容を発表して、もくもくスタート!

僕はService WorkerについてQiitaを書いていました。

f:id:tiwu_gamewith:20190304151554j:plain

SUBWAYを食べながらもくもく・・・

2時間ほどもくもくしたら本日の進捗の発表をしました!

・・・

参加者はいろいろなフロントエンドの技術に触れていました!

  • Vue.jsの公式HPのチュートリアルを進める
  • Vue.jsでアプリが作れるNativeScriptについて調べる
  • phina.jsでモンスト風のブラウザゲームの開発

1口にフロントエンドと言っても純粋なWebフレームワークから、アプリ、ゲーム開発など幅広さを感じました。

GameWith フロントエンド もくもく会 #9

次回のもくもく会は 3月28日(木)に開催します!

次回のテーマもフロントエンドです!

gamewith.connpass.com

最後に

参加していただいた社外・社内エンジニアの皆様ありがとうございました!

GameWithは、フロントエンドが大好きで、新しい技術をどんどん使っていきたいという方を大募集中! Wantedly でもよいので是非お気軽にお声がけください!

www.wantedly.com

またGameWithのDeveloper向けTwitterアカウントも開設しました。
もくもく会の告知やブログの更新情報などを発信するので良かったらフォロー宜しくお願いします!

twitter.com

半年間輪読会を運営してみて #GameWith #TechWith

GameWithエンジニアのTです!

皆さん輪読会というのをご存知でしょうか?

輪読会とは複数人で1つの本を読み、内容に関する議論をしていくといったスタイルの読書会です。

GameWithでは社内勉強会の一環として輪読会を行っており、前回は「リーダブルコード」を輪読会していました!

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/06/23
  • メディア: 単行本(ソフトカバー)
  • 購入: 68人 クリック: 1,802回
  • この商品を含むブログ (140件) を見る

詳しくはこちらの記事をご覧ください。

tech.gamewith.co.jp

今回の輪読会

今回は「 エンジニアリング組織論への招待」を半年かけて輪読会をしました。

エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング

エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング

なぜ「 エンジニアリング組織論への招待」を選んだか

特定のプログラミング言語に関する本ではなく、GameWithのエンジニア・デザイナーが全員参加できる本というテーマで選びました。

DDDなどの開発手法を学ぶ本なども候補としてあがりましたが、社内で「 エンジニアリング組織論への招待」を実際に買って読んでいる最中の人もいたことから、今回は「 エンジニアリング組織論への招待」を選びました。

GameWithはこの1年間でエンジニア・デザイナーの数が増えてきており、チーム毎に分かれて業務を行うようになることでメンバー間の距離が遠くなり、コミュニケーションコストが増加しました。

また、各チーム内の開発で業務範囲が閉じてしまうので、他チームのエンジニア・デザイナーと交流しての業務知識・技術知識の研鑽がしにくくなってきました。

そのため、マネージャーだけでなく組織についてエンジニア・デザイナー1人1人が学ぶ必要性を感じ始めたのもこの本を選んだ一つの要因です。

輪読会のやり方

輪読会は毎週金曜日の15時から1時間実施しました。

発表者はローテーションで予め決めており、その週の発表者は輪読会の前に内容を要約して当日それを元に発表しディスカッションをする形式をとっていました。

また、ディスカッションは次の発表者が議事録を取っていました。

下記のように発表者が章ごとに要約をまとめていたので、途中参加のしやすさも心がけていました。

f:id:tiwu_gamewith:20190226121140p:plain

輪読会最終回 オープンスペーステクノロジー形式

輪読会の最終回はオープンスペーステクノロジー形式で行いました。

オープンスペーステクノロジー形式とは

各メンバーに過去に学んだテーマの中で特に最後に掘り下げて扱いたいテーマを選んでもらい、セッションを立ち上げディスカッションを行いました。

ディスカッション中は軽食も用意したのでとても盛り上がりました。

f:id:tiwu_gamewith:20190207112114j:plain

輪読会参加者の集め方

今回12,13人の参加者が集まりました。

過去にリーダブルコードの輪読会をやっていたため、その輪読会に参加していたメンバーがそのまま流れで参加したり、新規エンジニア・デザイナーにも声をかけ集めました。

みんなが興味あった本を選んだのも多くのメンバーが集まってくれた理由かもしれません。

輪読会の運営にあたり工夫したこと

前日にSlackの輪読会チャンネルで下記のようにリマインドを必ず行いました。

f:id:tiwu_gamewith:20190226131938p:plain

また、当日もリマインドを必ず行いました。

f:id:tiwu_gamewith:20190226131949p:plain

勉強会に関しては業務の一環として行って良いと許可をもらっており、それをメンバーに伝えることで参加への心理的安全性を高くしました。

また、メンバーが忙しく発表できないときは、うまくフォローをして、毎週の輪読会を途切れないようにしました。

ディスカッションの際にはファシリテーションをして、楽しい輪読会になるよう心がけました。

運営していて辛かったこと

毎回の発表者へのリマインドや、資料の進捗管理など単純なタスクではありましたが地味に手間がかかりました。

また、ディスカッション中のファシリテーションは基本的には自分が行っていましたが時には負担になることもあったため、発表者にファシリテーションを任せる方式にしてもよかったかもしれませんでした。

また、この輪読会は終了するまでに半年間かかりましたが、期間として長かった気もしました。

改善するなら or こうしておけばよかった

半年間は長い気がしたので、ディスカッションの時間を減らして、3ヶ月で終わるくらいのほうがよかったもしれません。

当初の目的としてGameWithのエンジニア・デザイナー内で輪読会という活動を広め、各人に参加してもらうことで、輪読会のナレッジ等を貯めるのも開催の意図としてあったので、もし次やるなら本のテーマを絞って人数を少なくしてもいいかもしれません(今回は12,13人いて少し多いと感じました)

また、今回は輪読会でしたが次回はハンズオン形式など輪読会以外にもエンジニアの志向に合わせた活動をしていきたいと考えています。

運営してみての感想

ディスカッションでメンバーがそれぞれいろんなエピソードや、意見を述べていて各人の考え方を知ることができて良かったです。

メンバー全員がモチベーション高いまま半年間輪読会を行えたのは良かったです。

また、エンジニアだけでなくデザイナーも参加してくれて嬉しかったです。

現在はフロントエンドに特化した輪読会なども開催されており、この輪読会という文化がエンジニア・デザイナーに浸透してきた思うので、運営した甲斐がありました!

最後に

参加していただいたエンジニア・デザイナーの皆様ありがとうございました!

GameWithは、ゲームが大好きで、新しい技術をどんどん使っていきたいという方を大募集中! Wantedly でもよいので是非お気軽にお声がけください!

www.wantedly.com

またGameWithのDeveloper向けTwitterアカウントも開設しました。
社内イベントの告知やブログの更新情報などを発信するので良かったらフォロー宜しくお願いします!

twitter.com

GameWithアプリに動画機能をつけた話_2つのアプリの統合 #GameWith #TechWith

GameWithでiOSエンジニアをしているkyamです。

いきなりですが、最新のver2.1.0でGameWithアプリで攻略動画が見られるようになりました! 今回の記事ではGameWithアプリに攻略動画を閲覧する機能をつけた話をしています。

自分は以前Mippleという攻略動画アプリを専任で担当していましたが、プロダクトの方針転換によりMippleの機能を本体アプリに統合することになりました。
この統合の過程で、どのように開発をし、どのような知見を得たのかを共有しようと思います。

統合の背景について詳しく知りたい方はこちらの記事をどうぞ。 tech.gamewith.co.jp

実際の開発方法

1.まずは別アプリとして作る

自分はまず旧Mipple側を統合後のUIに変更し機能などを実装しました。
本体アプリ側もトップネイティブ化という大きなアップデートを実装している最中でもあったため、まずは本体側はいじらずに別個で開発しました。

ただ意識していた点はあり、本体側でどのような設計をしているか、どのようなディレクトリ構成をしているか、どのようなExtensionファイル(実装を便利にするコード群)が用意されているか、各種フレームワークは何を使っているか、SwiftLintの設定をしているかなどを予め確認しそれに合わせてコードを修正しました。

例えば画像キャッシュのライブラリとして、本体アプリではSDWebImageを使っていますがMippleではKingFisherを使っていました。 その為、Extensionのコードなどで以下のようにライブラリに依存している部分を別ライブラリにしたり、ライブラリに依存しないコード(Codableを用いるなど)に変更したりしました。

import Kingfisher

extension UIImageView {
    func download(image url: String) {
        guard let imageURL = URL(string: url) else {
            return
        }
        self.kf.setImage(with: imageURL, placeholder: nil, options: [.transition(.fade(0.3))])
    }
}

別アプリとしてまず作った理由は他にもあり、デザインを見た時にUIが独立しており既存のコードには影響を与えないように実装できるなと感じた点です。

f:id:keeetaka:20190221154907p:plain

上記は実際のアプリ画面なのですが、見て分かる通りコンテナの中の一つのUIViewControllerとして独立しています。
ですので別アプリとしてまず独立して作っても後で綺麗に丸ごとコードを移植できるなと感じました。

実際本体側のコードでは、各タブ情報のenumがあり、項目に合わせて該当するUIViewControllerを表示させる仕様だったのでバッティングせず開発することができました。 下の例だとmipple(任意のkey)情報をAPIから受け取った場合は動画用のUIViewControllerを作成するといった形です。

    func indicatorInfoProviderViewController(for page: WalkthroughPageEntity) -> IndicatorInfoProvider {
        switch page.type {
        case .web:
            // WebView表示用のViewControllerを返す
        case .mipple:
            return buildVideoListViewController()
        }
    }

    func buildVideoListViewController() -> VideoListViewController {
        // 選択されたゲームを動画一覧を表示するViewControllerに渡す
        let videoListVC = VideoListViewController(selectedGame: selectedGame)
        return videoListVC
    }

実際以下のようにMippleのディレクトリをそのまま移すだけで基本的には済みました。 (※画像は開発中のものです)

f:id:keeetaka:20190225160511p:plain

2.UIと機能を統合後にコードレビュー

上記の通り機能とUIが完成後、本体側にコードを移植しました。
その際に本体アプリを担当している2人のエンジニアにコードレビューを依頼し、既存コードの書き方に合わせているかというよりはクラッシュに繋がりそうなコードや、新規で作らなくても既存コードにあるこのメソッド(既に安全性が保証されているもの)を使いまわせるなど、品質に影響を与えないかを中心にまずチェックしてもらいました。

統合を通して得られたもの(知見)

1. 音の取り扱い

以前動画アプリを作った時も感じたのですが、iPhoneのサイレント(マナー)と消音の違いを明確に分かっている人は結構少ないです。 自分もそんなに正確に言語化できるほど把握していませんでした。

サイレント(マナー)

着信音や通知音のほか、キーボードのクリック音に影響を与える

消音(音量調節ボタンで音量が0の状態)

音楽やムービーのサウンド音量に影響を与える

基本的な前提は上記のものなのですが、マナーなのに音が鳴るだったり鳴らないだったり人によって反応は様々でした。
ですので今回のチームで出した結論としては、例えサイレントでも消音(音量が0)にしていなければ音が出る、いわゆる他の一般的な動画アプリに音の仕様を合わせる事にしました。

実装としては、AVPlayerの再生前にtry? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)を設定するだけです。

この辺りは実際のユーザーの声を聴いて再度検討したいと思います。

2. Firebaseの取り扱い

複数プロジェクトを抱えている場合、firebase list で一覧を見ることができ、今何のプロジェクトに自分のアカウントが向いているかがcurrentの印により分かるのですが、その際に firebase use <projectID> でプロジェクトを切り替えられるっていうのを知らなくて少し時間がかかった部分があります。

f:id:keeetaka:20190225180013p:plain

具体的な話をすると、以前Mippleで運用していた管理画面を今回のGameWithでも使い回したいと思い、最初以下のようにJSコードのプロジェクトの設定だけを変えていたのですが、当然ながら向き先を変えてデプロイしないとダメですよというお話です。

export default {
  apiKey: "??????????????????????????????????",
  authDomain: "???????????.firebaseapp.com",
  databaseURL: "https://?????????.firebaseio.com",
  projectId: "????????????",
  storageBucket: "????????????",
  messagingSenderId: "??????????????"
}

またこれは知らなかったのですが、firestoreにはAのプロジェクトからBのプロジェクトにデータを移す機能も備わっているようです。 firebase.google.com

今回はデータ構造が異なったため利用しなかったのですが、Firebaseのステージ環境を構築するときなどに利用できそうなのでチェックしておきます。

3. 色々なメンバーと仕事をする楽しさ

今回動画機能の統合を担当したことで、本体アプリチームのPO・デザイナー・iOSチームに加えて、Androidチームともコミュニケーションを取ることが増えました。
Androidチームも今後動画機能を統合するため、動画機能の技術的な仕様などを主に自分が説明するためです。

せっかく会社にいるのだから色々なメンバーと仕事がしてみたいなと思うタイプなので、新しいプロジェクトを担当するのは面白いです。
自分は今新規事業の動画チームやソーシャルチームのMTGにも基本的に参加しており、この1ヶ月半で関わる人が増えたなあと思いました。

今後の予定

今回の統合を通して、無事本体アプリに動画機能を移植することができました。
リリース後、約5日間が経過していますが新規で開発した動画部分でのクラッシュの件数は0でした! デバッグに協力してくれたメンバーや、クラッシュに繋がりそうな部分を指摘してくれたメンバーにも感謝します。

無事統合が終わりホッとした所もありますが、まだまだやり残したこと、やりたいことがたくさんあります。

1. やり残したこと

アプリでは攻略記事のお気に入りや閲覧した記事を履歴として残す機能があるのですが、動画版は一旦見送りました。 Realmを使ってデータを管理しているのですが、どのように記事と動画のデータを扱うかで少し議論が必要になったためです。

こちらは次のversionに含む予定なのでお楽しみに!

2. やりたいこと

アプリではElasticsearchを用いて内製した独自の記事検索システムがあるのですが、これを動画にも適用したいなと思います。
現状動画データはFirestoreで管理しており、GameWithのDBなどに動画データがあるわけではありません。 Firestoreにも外部の Algolia などを用いることにより検索の仕組みを作ることができるのですが、一回の検索で別々の場所にある二つのAPIを叩くのは流石に非効率です。

こちらは社内のエンジニアと相談し、良い形に落とし込んで実装したいなと考えています。

検索機能について知りたい方はこちらの記事をどうぞ。 tech.gamewith.co.jp

終わりに

現在弊社ではいくつかの新規事業が並行して立ち上がっています。 今回実装した動画機能も元々は新規事業としてスタートしたものです。新規開発に興味があり少しでも話を聞いて見たいと思った方は是非Wantedlyで会いに来てください!

www.wantedly.com

またGameWithのDeveloper向けTwitterアカウントも開設しました。
社内イベントの告知やブログの更新情報などを発信するので良かったらフォロー宜しくお願いします!

twitter.com

今回の記事が少しでも多くの方の参考になれば幸いです。
ここまで読んで頂いてありがとうございました。

Elasticsearch勉強会でスピーカーとして登壇しました #GameWith #TechWith #elasticsearchjp

みなさん、 Hello World! めもりー (@m3m0r7) です 2019年の2/20(水)にElasticsearch勉強会のスピーカーとして登壇してきました。

PHPカンファレンス仙台で登壇した話と趣旨は同じなのですが、今回はElasticsearch勉強会ということもあり、Elasticsearchメインに資料をいくつか作って差し替えています。

仙台に登壇したときのエントリーはこちらです。

tech.gamewith.co.jp

仙台でお話できなかったもともとの開発のきっかけや、選んだ辞書と抱える課題、あと最近R&Dチームとして動くことになったので、そのチーム自体が抱えてる課題として検索システムが1つあるので、それをどう解決していくかなどが今回加わった内容です。

勉強会

www.meetup.com

会場

会場はRetty株式会社さんでした。Rettyさんも六本木にあり、GameWithは六本木ヒルズにオフィスがあるので最初どう行こうか迷っていて最終的にはヒルズの地下からバスが出ていたので、それに乗って現地に向かいました。 バス代は100円です。210円のイメージしかなかった…。 ちなみにPasmoタッチしたら残高不足でした。

f:id:m3m0r7:20190221112318j:plain

いろんな会社さんが入居してました。 f:id:m3m0r7:20190221112524j:plain

登壇

Rettyさんの紹介が終わったあとに、トップバッターとして発表しました。途中から暑くなって息切れ結構してしまったので呼吸をうまくできるように訓練しておきます。

今回の登壇で使用した資料はこちらです。

speakerdeck.com

バッテリーもらいました。かわいい🐹

f:id:m3m0r7:20190221113115j:plain

Rettyさんもシールを配布されていたので、自分のPCに貼りました。もはやどこの会社の人間かわからなくなってしまった…。

f:id:m3m0r7:20190221113330j:plain

感想

Elasticsearch勉強会も、PHPカンファレンスとはまた違ったコミュニティで楽しくお話させていただきました。 オーディエンスの皆様のレベルが高くて本当に助かりました。

最初の挨拶で「みなさんHello World!」って言ったら滑ったので出直してきます。

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

次回

次回の登壇は PHPerKaigi というイベントで「PHPでJVMに入門する」という内容でお話します。

Laravel JP Conferenceで登壇してきました #GameWith #TechWith #laraveljpcon

はじめに

こんにちは。GameWithのエンジニアのtiwuです。

先日行われたLaravel JP Conferenceで登壇してきました。

Laravel JP Conference

conference2019.laravel.jp

Laravel JP Conferenceは2019年2月16日に開催されたPHPのフレームワークであるLaravelをメインテーマとした技術カンファレンスです。

「Laravel JP」を冠したイベントは日本で初開催とのこと。

f:id:tiwu_gamewith:20190218104444j:plain

Laravel JP ConferenceとGameWith

弊社は、「GOLD Sponsor」と「DRINK Sponsor」をさせていただきました。

f:id:tiwu_gamewith:20190218104752j:plain

当日はこのような可愛いGameWithオリジナルデザインのお水を提供させていただき、見事360本完売いたしました!ありがとうございました!

登壇

今回、「リリース直前にLumenからLaravelに移行した話」というタイトルで登壇させていただきました。

fortee.jp

聞きに来てくださった方々本当にありがとうございました!

f:id:tiwu_gamewith:20190218105350j:plain

下記が登壇時に使用した資料です。

speakerdeck.com

今回、Lumenを取り上げた発表は自分だけでしたが、会場の方に聞いてみると多くの方がLumenを使っていました。

登壇はとても緊張してしまい、ノンストップで喋り続けた結果早めに終わってしまいました・・・。

感想

最初から最後まで盛り上がっていて、暖かく楽しいカンファレンスでした。

ランチセッションでお弁当が出てきたタイミングに、ハッシュタグのランキングが一瞬1位になったり、LTのドラの音で毎回盛り上がったり、懇親会もとても楽しかったです。

実行委員会の皆様、並びに登壇者の皆様、ご来場頂いた皆様、本当にありがとうございました。

さいごに

GameWithでは登壇したいメンバーの後押しもしてくれるので、登壇に積極的に参加したい人も働きやすい環境です。興味のある方は是非、話を聞きに来てみてください!

www.wantedly.com

また、2/28(木)にもくもく会を開催します。テーマは「フロントエンド」ですので、興味のある方は是非お越しください!

gamewith.connpass.com