<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Chihappy on Medium]]></title>
        <description><![CDATA[Stories by Chihappy on Medium]]></description>
        <link>https://medium.com/@chiharu.masuyama?source=rss-2e30a8f344a2------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*Z_uqWncFKWgk2YmHgZJk6A.jpeg</url>
            <title>Stories by Chihappy on Medium</title>
            <link>https://medium.com/@chiharu.masuyama?source=rss-2e30a8f344a2------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 24 May 2026 21:27:54 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@chiharu.masuyama/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[MIXIはSRE NEXT 2024に協賛しました！出展ブース＆アンケート結果をご紹介します]]></title>
            <link>https://mixi-developers.mixi.co.jp/srenext2024-after-ff6acf17cfec?source=rss-2e30a8f344a2------2</link>
            <guid isPermaLink="false">https://medium.com/p/ff6acf17cfec</guid>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[sre]]></category>
            <category><![CDATA[engineering]]></category>
            <category><![CDATA[sre-next]]></category>
            <category><![CDATA[tech-conference]]></category>
            <dc:creator><![CDATA[Chihappy]]></dc:creator>
            <pubDate>Thu, 15 Aug 2024 03:01:35 GMT</pubDate>
            <atom:updated>2024-08-15T06:58:39.678Z</atom:updated>
            <content:encoded><![CDATA[<p>こんにちは！MIXIのDevRelのちはっぴーです。</p><p>MIXIは、2024年8月3日（土）〜8月4日（日）に開催された<a href="https://sre-next.dev/2024/">SRE NEXT 2024</a>にダイヤモンドスポンサーとして協賛しブース出展を行いました。本記事では当日ブースで実施したアンケートの集計結果を中心に、ブースの様子をお伝えしていきます🙌</p><h3>開発本部 CTO室 SREグループ多羽田が登壇しました</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*S8O7V2RLbTxi9L46" /><figcaption>開発本部 CTO室 SREグループ 多羽田 （<a href="https://x.com/bbq_all_stars">@bbq_all_stars</a>）</figcaption></figure><p>『徹底的な自動化とトイルの撲滅で実現する効率的なSREの実践例』と題して、開発本部 CTO室 SREグループの多羽田が登壇いたしました。</p><p>MIXI GROUPではさまざまなサービスを提供しており、各サービスで公式サイトやキャンペーンのLPなどを準備する必要があります。コーポレートサイトをはじめとした、これら数十のウェブサイトは、横断組織である開発本部 CTO室 SREグループによって構築・運用されています。</p><p>SREグループでは、それらのサイトを少人数で運用していくための基本方針として「自動化とトイルの削減」「共通化・標準化」「システムに対しての割り切り」を掲げており、本発表では、多羽田がその具体的な実践内容についてお話しました。</p><p>👇詳細は登壇資料をぜひご覧ください<a href="https://speakerdeck.com/bbqallstars/che-di-de-nazi-dong-hua-totoirunopu-mie-deshi-xian-suruxiao-lu-de-nasrenoshi-jian-li-sre-next-2024">https://speakerdeck.com/bbqallstars/che-di-de-nazi-dong-hua-totoirunopu-mie-deshi-xian-suruxiao-lu-de-nasrenoshi-jian-li-sre-next-2024</a></p><h3>MIXIの出展ブースのご紹介</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*WgotubFdmodlIvA9" /><figcaption>セッションが行われる部屋近くの広いスペースを割り当てていただきました！</figcaption></figure><h4>ブース運営を手伝ってくれたMIXI SREs</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*v_Ezn9VZ02L3CiOG" /><figcaption>おそろいのMIXI DEVELOPERS Tシャツを着てパシャリ📷</figcaption></figure><p>今回、ブース運営を手伝ってくれたのは、開発本部 CTO室 SREグループの多羽田（<a href="https://x.com/bbq_all_stars">@bbq_all_stars</a>）、同じく開発本部 SREの大野（<a href="https://x.com/i2tsuki_">@i2tsuki_</a>）、みてねプロダクト開発部 プラットフォームグループ 杉本（<a href="https://x.com/kohbis">@kohbis</a>）でした。</p><p>3人とも勉強会やカンファレンスへ参加慣れしていて、特に何もお願いせずとも（ぇ）、ブースにいらっしゃった方々にアンケートをご案内したり、ノベルティ類を配ってくれたりしていました🙌 感謝！</p><h4>ノベルティ＆スタンプ</h4><p>ノベルティとして、ラングドシャクッキーと缶バッジを用意しました。参加者の方から好評かつ個人的にとても美味しかったので、また機会があればお願いしたいと思います。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*NCN7ISijW5WOfBkh" /><figcaption>アンリ・シャルパンティエさんのラングドシャクッキー</figcaption></figure><p>缶バッジはアンケートと連動させた5種類の柄を準備しました。ほとんどの方がアンケートで選択した領域のバッジを選んでいたのですが、少しだけ結果が偏ることになりました😂 気になるアンケート結果はこのあとご紹介します。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Fb0wTtvWOJk7Mi31" /><figcaption>ブースで実施したアンケート</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ghAyMaixmTo8rpbE" /><figcaption>開発本部 デザイナー加藤がデザインしてくれた缶バッジ！キラキラのデザイン✨</figcaption></figure><h3>アンケートの集計結果</h3><p>DAY1とDAY2でそれぞれ異なるアンケートを実施しました。ここでは、各アンケートの結果をご紹介します。</p><p><strong>&lt;DAY1&gt;</strong></p><ul><li>いまSREチームを再度立ち上げ直すならどうする？</li><li>SREの立ち上げで悩んでいる/困っていることは？</li><li>あなたが「ワクワクする」領域は？</li></ul><p><strong>&lt;DAY2&gt;</strong></p><ul><li>SREチームとして導入したものの中で、一番効果が出たと感じたことは？</li><li>あなたが「助けて欲しい」領域は？</li></ul><p><strong>DAY1：①いまSREチームを再度立ち上げ直すならどうする？②SREの立ち上げで悩んでいる or 困っていることは？</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*v4_Ng4kK1sL7guI2" /><figcaption>回答数は①41件、②54件でした</figcaption></figure><p><strong>👇①のアンケート結果</strong></p><p>既にSREに取り組まれている方向けのアンケート結果としては、チームの文化づくりや、ビジネスサイドおよび開発チームとの協業に注力したいという意見が大半でした。SREとしてサイトの信頼性向上に取り組む前に、SREの意義を周囲のメンバーに理解してもらい、協力体制を築き上げることがいかに重要であるかがよく分かる結果になっています。</p><p>◎文化づくり・Enablement（10件）</p><ul><li>SRE文化醸成×2</li><li>チーム（会社）を辞めない文化</li><li>SREの定義づくり</li><li>SWEとSREの役割について言語化する</li><li>SREの役割を全社的に啓蒙</li><li>SREの啓蒙</li><li>Enablementをがんばる</li><li>ケイパビリティベースの職能横断チームにSREingを伝授していく</li><li>ストリームアラインドとしての文化醸成</li></ul><p>◎ビジネスサイドとの協業（8件）</p><ul><li>ビジネス部門に初期から説明する</li><li>責任者への説明をしっかりやる</li><li>ビジネス側ともっと一つになる</li><li>PdMとタッグを組む</li><li>ビジネスサイドと組む</li><li>ビジネス、PdMとの協業をより強化する</li><li>ビジネスKPIとSLOの連携</li><li>エンジニアじゃないチームとうまくやる</li></ul><p>◎採用（7件）</p><ul><li>2人目を採用する×2</li><li>もう一人プレイヤーが欲しい×2</li><li>採用をもっとがんばる×2</li><li>SREのエキスパートを採用する</li></ul><p>◎開発チームとの協業（5件）</p><ul><li>開発チームの話をちゃんと聞く</li><li>開発チームと目指したいゴールの目線を合わせる</li><li>アプリチームと協業できる体制をつくりたい！</li><li>プロダクトチームの協力者を募ったり育成したり</li><li>現場の仲間をチームに入れておく（多めに）</li></ul><p>◎その他（11件）</p><ul><li>やることとやらないことを分別する</li><li>片手間じゃなく時間を使って初速を出す</li><li>えらくなって権限を持つ！</li><li>SREとして働きたい</li><li>ポストモーテムする</li><li>システムの安定を目指すSREチームが欲しい</li><li>統計をまじめに勉強する</li><li>現状理解</li><li>SREingのケイパビリティを与える</li><li>わたしがリーダーをやる</li><li>セキュリティツールの導入</li></ul><p><strong>👇②のアンケート結果</strong></p><p>これからSREに取り組む方/現在立ち上げ中の方に対するアンケート結果としては、採用や育成など、人員不足に関連した意見が目立ちました。採用に関しては①の質問でも複数回答いただいていたため、それぞれのフェーズに共通の課題であることが分かります。一方で、②では文化づくりに関する意見が4件と①と比較して少なくなっています。立ち上げフェーズでは、文化づくりの重要性は理解しているものの、実務が多く啓蒙活動に手を回す余裕がないなどの課題を抱えていそうだと感じました。</p><p>◎採用（11件）</p><ul><li>人材不足・SRE採用×11</li></ul><p>◎SLI/SLO（7件）</p><ul><li>SLI/SLOの決め方+4</li><li>SLI/SLOの理解</li><li>マルチテナントのデータ量が違うときのSLI/SLO</li><li>SLOの実装</li></ul><p>◎SREのロールが不透明（5件）</p><ul><li>間に落ちたタスクがすべてSREに来る×2</li><li>SREがやってくれるんでしょ？感がある</li><li>何でも屋になりつつある</li><li>つよつよにSRE業務が吸収されている</li><li>ロールの明文化</li></ul><p>◎ビジネスサイドとの協業（5件）</p><ul><li>ステークホルダーとの調整</li><li>ビジネス側に重要性を理解してもらうのが大変</li><li>経営の理解</li><li>予算×2</li></ul><p>◎育成（4件）</p><ul><li>教育×3</li><li>SREの育成</li></ul><p>◎文化づくり・Enablement（4件）</p><ul><li>メンバーへの文化の醸成</li><li>Enabling SRE</li><li>DevOpsの加速（インフラ部分も開発にやってほしい）</li><li>開発チームとの連携</li></ul><p>◎業務量が多い（3件）</p><ul><li>やることが多い×3</li></ul><p>◎課題解決（2件）</p><ul><li>課題設定</li><li>課題解決力</li></ul><p>◎その他（13件）</p><ul><li>仕様が分かる人がいない×2</li><li>立ち上げ以前の問題！他社ベンダーが構築したIaC</li><li>E2Eの方針整えたい</li><li>オブザーバビリティ基盤の整備</li><li>Grafanaが職人芸</li><li>上モノのアプリが難しい</li><li>SREのやる気維持</li><li>SREと組織的連携</li><li>マネージドサービスへの移行</li><li>SREタスクとの優先順位付け</li><li>チームのマネジメント</li><li>さまざまな会社でのSRE文化の発展</li></ul><p><strong>DAY1：あなたが「ワクワクする」領域は？</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*DuTU8LN_o_bRLgqZ" /></figure><p>こちらは、「監視・分析」「インシデント対応」「パフォーマンス改善」「信頼性向上」「自動化・効率化」の5つの領域から、ワクワクする領域を選んでいただくアンケートです。</p><p>このアンケートへの回答結果は下記で、自動化・効率化やパフォーマンス改善など、比較的開発業務に近しい領域へ票が集まる結果となっています。インシデント対応は、一部の方々から「アドレナリンが出るのである意味ワクワクする」といったご意見をいただきました🙌笑</p><p>＜集計結果（全139票）＞</p><ul><li>監視・分析：26票</li><li>インシデント対応：20票</li><li>パフォーマンス改善：33票</li><li>信頼性向上：15票</li><li>自動化・効率化：44票</li><li>その他：1票</li></ul><p><strong>DAY2：SREチームとして導入したもののなかで、一番効果が出たと感じたことは？</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*N1CT2mgMUC3PnHjp" /><figcaption>回答数は61件でした！</figcaption></figure><p><strong>👇アンケート結果</strong></p><p>このアンケートへの回答では、可視化に関連するコメントが一際多い結果となりました。その他にも、自動化やSLI/SLOの定義など実務的な要素に関するコメントが多い中、文化づくりの一環と言える輪読会を挙げる方も数名いらっしゃいました。</p><p>中でも、「Enterprise Roadmap to SRE」は、SREへの取り組み方の実践的なステップが分かるドキュメントとのことで、ブース運営に入ってくれたエンジニアメンバーの杉本からも「これいいですね」という声が出ていたので、私も読んでみようと思っています👀！</p><p>◎可視化・オブザーバビリティ関連（17件）</p><ul><li>可視化（DataDog）×4</li><li>可視化（Grafana） ×2</li><li>可視化（New Relic）×2</li><li>可視化（Sentry）</li><li>可視化（ダッシュボード構築）</li><li>可視化</li><li>オブザーバビリティツールの導入</li><li>テナント別レイテンシダッシュボード</li><li>信頼性ダッシュボード</li><li>メトリクスの可視化とモニタリングの運用</li><li>Tracing導入</li><li>モニタリング定例会</li></ul><p>◎自動化・生産性向上（10件）</p><ul><li>トイル削減×3</li><li>トイルの可視化</li><li>AWSとGit（自動化）</li><li>CI/CDの効率化＆実行履歴の通知</li><li>CI/CD 導入・効率化</li><li>CI導入サポート</li><li>デプロイの自動化</li><li>Runbookの整備</li></ul><p>◎インシデント・アラート関連（9件）</p><ul><li>ポストモーテム×3</li><li>ポストモーテムをみんなで読む</li><li>インシデントコマンダーの実践</li><li>インシデントレスポンス</li><li>PagerDuty導入（アラートの整理も）</li><li>アラートのリッチ化</li><li>不要なアラートの削減</li></ul><p>◎クラウドの導入（5件）</p><ul><li>IaC×3</li><li>クラウドに身を任せる</li><li>EKSによる共通基盤の構築</li></ul><p>◎SLI/SLO（4件）</p><ul><li>SLI策定</li><li>SLOの導入</li><li>SLOによる定量化</li><li>SLI/SLOの定義</li></ul><p>◎輪読会（4件）</p><ul><li>SRE本の輪読会×3</li><li>Enterprise Roadmap to SREの輪読会</li></ul><p>◎ツールの統一化（2件）</p><ul><li>ツール統一</li><li>プロセス・ツールの統一（標準化）</li></ul><p>◎その他（10件）</p><ul><li>深夜のアラートが少なくなった</li><li>継続的プロファイル</li><li>私がお客様の支援に入ったこと！</li><li>「SRE」という名前をチーム名に付けたこと</li><li>スクラム</li><li>PR-Agent（AIによるコードレビューツール）の導入</li><li>共通負荷試験、クライアント基盤</li><li>配信メールのサービス横断監視</li><li>パフォーマンスの定期レポート</li><li>他チームがSRE用語を使うようになった</li></ul><p><strong>DAY2：あなたが「助けて欲しい」領域は？</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ntsyl1LbiDC4ri32" /></figure><p>DAY1とは趣向を変えて、最も困っていて手助けを必要としている領域を聞きました。DAY1とは反対に、監視・分析やインシデント対応の票が多い結果となりました。</p><p>＜集計結果（全67票）＞</p><ul><li>監視・分析：14票</li><li>インシデント対応：14票</li><li>パフォーマンス改善：12票</li><li>信頼性向上：11票</li><li>自動化・効率化：13票</li><li>その他：3票（セキュリティ対策、技術負債の解消、人的インシデント対応）</li></ul><p>集計結果は以上となります✏️</p><h3>おわりに</h3><p>最後に、今回もMIXIからたくさんのエンジニアがSRE NEXT 2024に参加しました。毎年、セッションや参加者のみなさまとの交流からさまざまな刺激を受け、自らのチームに還元してくれています。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*vygylYs6ZuJBr37i" /><figcaption>ブースに集まったMIXI SREsでぱしゃり📷</figcaption></figure><p>運営、そして登壇者のみなさま、今年も素晴らしい機会をありがとうございました！</p><p>・・・</p><p>最後に、公式の<a href="https://twitter.com/mixi_engineers">X(旧Twitter)アカウント</a>でもMIXIで扱う技術やエンジニアに関する情報など、随時発信してますので、フォローしていただけると幸いです。</p><p>それでは、最後までお読みいただき、ありがとうございました！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ff6acf17cfec" width="1" height="1" alt=""><hr><p><a href="https://mixi-developers.mixi.co.jp/srenext2024-after-ff6acf17cfec">MIXIはSRE NEXT 2024に協賛しました！出展ブース＆アンケート結果をご紹介します</a> was originally published in <a href="https://mixi-developers.mixi.co.jp">MIXI DEVELOPERS</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MIXIは今年もiOSDC Japan 2024にプラチナスポンサーとして協賛します＆チャレンジトークンはこちら‍♀️]]></title>
            <link>https://mixi-developers.mixi.co.jp/iosdc2024-bbd0cc2bb14e?source=rss-2e30a8f344a2------2</link>
            <guid isPermaLink="false">https://medium.com/p/bbd0cc2bb14e</guid>
            <category><![CDATA[iosdc]]></category>
            <category><![CDATA[mobile-app-development]]></category>
            <category><![CDATA[ios]]></category>
            <dc:creator><![CDATA[Chihappy]]></dc:creator>
            <pubDate>Mon, 05 Aug 2024 02:02:39 GMT</pubDate>
            <atom:updated>2024-08-05T02:02:39.106Z</atom:updated>
            <content:encoded><![CDATA[<p>MIXIは、今年もiOSDC Japan 2024にプラチナスポンサーとして協賛します！</p><p>今回、iOSDC Japan 2024の参加者へのノベルティとして、MIXIではチラシを用意しました。また、公式パンフレットにも記事を掲載させていただいております。カンファレンスの参加者以外の方々にもMIXIのエンジニアの考えを知っていただけたらと思い、本記事ではチラシやパンフレットの中身を簡単にご紹介させていただきます。</p><p>また、iOSDC Japan 2024に参加中のみなさまへ向けて、『iOSDCチャレンジトークン』も記事内に掲載しております😍❣️ トークンをお探しの方は、ぜひ最後まで読んでみてくださいね。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/0*vCedXAnKeuAWzs_W" /></figure><h3>iOSDC Japan 2024について</h3><p><strong>▼イベント概要</strong></p><p>開催日：8/22（木）〜8/24（土）<br>場所：早稲田大学理工学部西早稲田キャンパス （東京都新宿区）<br>イベントサイト: <a href="https://iosdc.jp/2024/">https://iosdc.jp/2024/</a></p><p>また、今年は新たな催しとして、『iOSDC Japan 2024 Swiftコードバトル』が開催されるもようです👀</p><p>「Swiftコードバトルはお題で指示された動作をするSwiftコードをより短く書けた方が勝ち、という競技です。 お題は決して難しいものではなく、少し練習すればSwiftプログラマであればどなたでも参加できる難易度を目指しています。」引用元：<a href="https://iosdc.connpass.com/event/326837/">https://iosdc.connpass.com/event/326837/</a></p><p>まずは8/12（月）に予選が開催され、勝ち残った方はiOSDC Japan 2024会期中に開催される本戦に出場が可能となるようです！！ぜひ、興味のある方は参加してみてくださいね🔥</p><h3>チラシのコンテンツをご紹介──iOSエンジニアへの2つのQ&amp;A</h3><p>今回、iOSDC Japan 2024の参加者への配布物として、MIXIではチラシを用意し、4名のiOSエンジニアに聞いたiOS開発に関するQ&amp;Aを掲載しました。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*KSKjN2maPYCTrhgC" /><figcaption>開発本部所属のデザイナーの加藤が制作！</figcaption></figure><p><strong>●「現在注目しているiOS開発のトレンド」と「iOS開発でわくわくする瞬間」</strong></p><p>みてねプロダクト開発部の轟、佐藤、hicka04、開発本部 たんぽぽ室 たんぽぽグループの久野の4名に上記2つの質問に答えてもらいました。「現在注目しているiOS開発のトレンド」では、Xcodeのアップデート内容やWWDC24で発表された内容、そしてiOSのアーキテクチャなどについての回答がありました。同じ会社や事業部で働いていても、各メンバーが違ったことに注目していることがわかり、それぞれの個性が出ていて面白いなと思います。</p><p>ぜひ、チラシ本文を読んでいただけたら嬉しいです！</p><h3>パンフレットのコンテンツをご紹介──iOSエンジニアの座談会トーク</h3><p>iOSDC Japanが公式で出しているパンフレット記事には、「新しい技術への向き合い方」をテーマに、MIXIのiOSエンジニアの座談会トークを掲載しております。パンフレット記事も、ぜひご覧いただけると幸いです🙌</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*WuzB-BH_ZOekw5zh" /></figure><h3>チャレンジトークンはこちらっ💁‍♀️</h3><p>iOSDC Japan 2024 の開催まで残り2週間を切りましたね！</p><p>毎年オフライン会場が大盛り上がりしているので、iOSエンジニアで集まってワイワイしたい方はぜひ参加してみてください。オフライン、オンライン問わず、参加される方は<a href="https://fortee.jp/iosdc-japan-2024/timetable">タイムテーブル</a>の予習を忘れずに😎</p><p><strong>そして・・iOSDCチャレンジトークンのお知らせです！</strong></p><p>・・・</p><p>株式会社MIXIのエンジニアは、</p><p><strong>#ユーザーサプライズファースト</strong></p><p>なサービスを提供するべく、日々開発に取り組んでいます！</p><p>・・・</p><p>トークンはこの他にもノベルティのチラシ内に隠されています。ぜひ、隅々までチェックしてみてくださいね〜！</p><h3>おわりに</h3><p>MIXIではコミュニケーションを軸に多様なサービスを展開しており、その多くがiOS/Androidで開発したモバイルアプリを提供しています。今後もより良いサービスを提供し続けるために、iOSDCをはじめとした技術コミュニティの支援を通じて、業界の技術力発展に貢献できれば幸いです。</p><p>最後に、公式の<a href="https://twitter.com/mixi_engineers">X(旧Twitter)アカウント</a>でもMIXIで扱う技術やエンジニアに関する情報など、随時発信してますので、フォローしていただけると幸いです。</p><p>それでは、最後までお読みいただき、ありがとうございました！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bbd0cc2bb14e" width="1" height="1" alt=""><hr><p><a href="https://mixi-developers.mixi.co.jp/iosdc2024-bbd0cc2bb14e">MIXIは今年もiOSDC Japan 2024にプラチナスポンサーとして協賛します＆チャレンジトークンはこちら💁‍♀️</a> was originally published in <a href="https://mixi-developers.mixi.co.jp">MIXI DEVELOPERS</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MIXIは SRE NEXT 2024 にダイヤモンドスポンサーとして協賛＆1名登壇します！ブース運営メンバーが気になるセッションもご紹介]]></title>
            <link>https://mixi-developers.mixi.co.jp/srenext-2024-95abf953584b?source=rss-2e30a8f344a2------2</link>
            <guid isPermaLink="false">https://medium.com/p/95abf953584b</guid>
            <category><![CDATA[tech-conference]]></category>
            <category><![CDATA[sre]]></category>
            <dc:creator><![CDATA[Chihappy]]></dc:creator>
            <pubDate>Fri, 02 Aug 2024 05:54:56 GMT</pubDate>
            <atom:updated>2024-08-15T06:59:04.675Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/960/0*swCcYf6O2pKRuPC5" /></figure><p>こんにちは。MIXIのDevRelの益山です！</p><p>MIXIは、SRE NEXT 2024にダイヤモンドスポンサーとして協賛させていただきます。本記事では、MIXIからの登壇情報、カンファレンスのMIXIブース運営メンバーが気になっているセッションをご紹介するとともに、当日のオフラインブースについてもチラ見せいたします。</p><h3>SRE NEXT 2024 について</h3><p>SRE NEXTは「信頼性に関するプラクティスに深い関心を持つエンジニアのためのカンファレンス」です。（引用元：<a href="https://sre-next.dev/2024/%EF%BC%89">https://sre-next.dev/2024/）</a></p><p>2022年の「SRE DIVERSITY」、2023年の「Interactivity」「Diversity」「Empathy」に続き、2024年のテーマは「Beyond NEXT」となっています。SRE活動が世間に浸透してきた今だからこそ、これまでのSREの枠組みを超え、新たな価値を創造していくような取り組みへフォーカスするような意思を感じました。</p><h4><strong>▼イベント概要</strong></h4><p>イベント名：SRE NEXT 2024<br>開催日時：2024/8/3–4（土日）<br>開催場所：Abema Tower<br>スケジュール：<a href="https://sre-next.dev/2024/schedule/#">https://sre-next.dev/2024/schedule/#</a></p><h3>MIXIから登壇するメンバーの登壇情報</h3><p>MIXIからは開発本部 CTO室 SREグループの多羽田が登壇しますので、セッション情報をご紹介します🎉</p><h4><a href="https://sre-next.dev/2024/schedule/#sp007">『徹底的な自動化とトイルの撲滅で実現する効率的なSREの実践例』</a></h4><p>本発表では、数十のウェブサイトを限られた人数で構築・運用するための徹底した自動化とトイルの撲滅手法を紹介します。</p><ol><li>IaCのモジュール化とテンプレート化: terraformのテンプレート化により、大量のインフラを効率的に構築・管理する手法を解説します。</li><li>モノレポによるCI/CDの効率化: terraformコードをモノレポで一元管理し、CI/CDリソースを最適化した方法を紹介します。</li><li>脆弱性の継続的な予防・検知・対応: アップデートツールやクラウドサービスを駆使して、脆弱性検知と自動アップデートを実現した手法を説明します。</li><li>モニタリングとアラート、障害対応: 少人数運用に必要十分なモニタリングとアラート設計、障害例とその対応について紹介します。</li><li>信頼性を担保する組織体制: 少人数での運用を支えるルールや体制、組織との連携について解説します。</li></ol><p>これら発表を通じて、少人数での運用の効率化と信頼性向上をどのように実現したかを共有します。</p><p>⏰ 登壇日時：8/4（日） 13:00–13:20<br>🌍 場所：TrackA<br>🗣️登壇者：開発本部 CTO室 SREグループ 多羽田 俊 <a href="https://x.com/bbq_all_stars">@bbq_all_stars</a></p><h3>MIXIのブース運営メンバーが選ぶ『SRE NEXT 2024』で気になるセッション👀</h3><p>明日・明後日、MIXIのブースを盛り上げてくれる予定の運営メンバーに、『SRE NEXT 2024』で気になるセッションについて聞いてみました。</p><h4>杉本 <a href="https://x.com/kohbis">@kohbis</a>（みてねプロダクト開発部 プラットフォームグループ SREチーム）</h4><p>気になるセッション：<a href="https://sre-next.dev/2024/schedule/#jp068"><strong>工学としてのSRE再訪</strong></a></p><p>SRE NEXT 2023ではyuuk1さんの<a href="https://sre-next.dev/2023/schedule/#jp029">『エンジニアのためのSRE論文への招待』</a>を大変楽しく聴講させていただきました。</p><p>SRE関連のイベントは当然のことながら各社のプラクティスが多く、もちろん勉強になります。しかし他にはない角度からの「SRE」のお話を聞く機会は貴重なので、より一層楽しみにしております！</p><h4>大野 <a href="https://x.com/i2tsuki_">@i2tsuki_</a>（開発本部 CTO室 SREグループ）</h4><p>気になるセッション①：<a href="https://sre-next.dev/2024/schedule/#jp005"><strong>Enabling Client-side SLO</strong></a></p><p>サーバサイドの SRE では SLI/SLO の導入といったプラクティスや目指す先が確立されています。一方で、クライアントサイド (iOS, Android) の SRE では、経営課題やサービスにもよりますが SRE の導入によるゴールの設定はサーバーサイドとは違ったものになると思っています。MIXI でもモバイル向けに多様なサービスを提供していることや、私自身がクライアントサイドの信頼性にこれまで注目できていないため、事例の一つとして大変興味があります。</p><p>気になるセッション②：<a href="https://sre-next.dev/2024/schedule/#pl001"><strong>Becoming SRE — SREって何から始めればいいの？</strong></a></p><p>7 年前に自分が SRE になったときは Web オペレーションエンジニアから、 SRE 本のプラクティスや考えを取り入れて信頼性に対してコミットメントを行なっていました。サーバインフラの専門知識を持ちながら SRE になったため、低レイヤの技術やアーキテクチャについて貢献したり責任を持つことが多いのですが、クラウドプロバイダーが提供するマネージドサービスが数多く普及しサービスアーキテクチャのパターンが多く例示される今、どのように SRE の分野に関わっていくことが求められるのか気になります。経営戦略として IaaS を使われることも多く、上位のマネジメントから見て SRE に何が求められているか、どのようにビジネスロジックとの棲み分けがされるのかといった色々な考えをオフライン限定の場で聞いてみたいです。</p><h4>多羽田 <a href="https://x.com/bbq_all_stars">@bbq_all_stars</a>（開発本部 CTO室 SREグループ）</h4><p>気になるセッション①：<a href="https://sre-next.dev/2024/schedule/#jp068"><strong>工学としてのSRE再訪</strong></a></p><p>自分は元々機械工学系の学科でシステム工学などを学んでいたため、SRE における工学的なアプローチには度々興味がありました。SRE は主に文化的な側面と、実務的な側面が多く語られがちな印象ですが、一方で理論的・工学的に語られる側面はあまりないという印象です。そのため、工学的な視点で SRE を捉えるという本セッションは非常に興味を持ちました。</p><p>気になるセッション②：<a href="https://sre-next.dev/2024/schedule/#jp055"><strong>Central SREとEmbedded SREのハイブリッド体制で目指す最高のSRE組織</strong></a></p><p>弊社でも「家族アルバム みてね」を始めとする Embedded な SRE 組織と、開発本部の Central な SRE 組織が混在している組織です。2つの組織が混在しているのは、利点もあれば欠点もあり、組織の形態として何がベストなのかは判断が難しいです。そのため、他社の事例を紹介しているこちらのセッションは、弊社での組織の形態を考える上で参考になるのではと思いました。</p><p>気になるセッション③：<a href="https://sre-next.dev/2024/schedule/#sp005"><strong>SRE文化の導入とプラットフォームの信頼性向上の取り組み</strong></a></p><p>弊社の開発本部 SRE グループでは、事業部の支援の一環として、プロジェクトの開発メンバーとして参画して SRE 文化を根付かせるということを行なっています。この SRE 文化をチームに根付かせるというのは、チームやメンバーによっても方法が違い、決まった方法があまりないという印象です。こちらのセッションはその一つの事例として、どういう流れでチームに文化を浸透させ、定着させてきたのかという部分に興味を引かれました。</p><p>────</p><p>明日、MIXIブースではアンケートパネルとSREのみなさまに聞いてみたい質問をご用意しています。ブースメンバー一同、皆様とお話できるのを楽しみにしておりますので、ぜひ遊びに来てくださいね。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*iarjkxo4WOYAkHvt" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*d29RWmZRCaNW0Arx" /></figure><h3>おわりに</h3><p>MIXIでは、SNS「mixi」にはじまり、世界累計利用者数が6,000万人を突破した「モンスターストライク」（2023年6月時点）や、利用者数が世界で2,000万人を突破した「家族アルバム みてね」（2023年11月時点）など、さまざまなサービスを提供してきました。</p><p>数々のサービスを長期間にわたって運用してきた経験から、私たちMIXI GROUPではSREの重要性を深く実感しています。SRE NEXTへのスポンサーを通して、SREコミュニティとの連携を強化し、SREコミュニティの発展に寄与できれば幸いです。</p><p>それでは、明日みなさまとお会いできるのを楽しみにしております！！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=95abf953584b" width="1" height="1" alt=""><hr><p><a href="https://mixi-developers.mixi.co.jp/srenext-2024-95abf953584b">MIXIは SRE NEXT 2024 にダイヤモンドスポンサーとして協賛＆1名登壇します！ブース運営メンバーが気になるセッションもご紹介</a> was originally published in <a href="https://mixi-developers.mixi.co.jp">MIXI DEVELOPERS</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MIXIはKotlin Fest 2024に協賛＆ブース出展しました！出題したクイズとブースをご紹介します]]></title>
            <link>https://mixi-developers.mixi.co.jp/kotlinfest-2024-aa01689f2973?source=rss-2e30a8f344a2------2</link>
            <guid isPermaLink="false">https://medium.com/p/aa01689f2973</guid>
            <category><![CDATA[kotlin]]></category>
            <category><![CDATA[kotlin-fest]]></category>
            <dc:creator><![CDATA[Chihappy]]></dc:creator>
            <pubDate>Wed, 26 Jun 2024 06:02:35 GMT</pubDate>
            <atom:updated>2024-06-26T06:02:35.237Z</atom:updated>
            <content:encoded><![CDATA[<p>こんにちは。MIXIのDevRelのChihappyです。</p><p>2024年6月22日（土）に開催されたKotlin Fest 2024 に、MIXI はことりスポンサーとして協賛いたしました。</p><p>MIXIのブースでは「Kotlinクイズ」を実施し、午前・午後あわせて200回以上の回答をいただきました。ブースに遊びに来てくださったみなさま、ありがとうございました！</p><p>本記事では、出題したクイズの解答と解説および正答数の分布、そして当日のMIXIブースについてご紹介させていただきます。</p><h3>クイズ</h3><p>まずは、今回出題したクイズの解答と解説をご紹介します。クイズは午前と午後で3問ずつ出題しました。</p><h4>午前：1問目</h4><p>問.以下のコードの実行結果は次の選択肢のうちどれでしょうか？</p><pre>import kotlinx.coroutines.delay<br>import kotlinx.coroutines.flow.MutableStateFlow<br>import kotlinx.coroutines.flow.combine<br>import kotlinx.coroutines.flow.map<br>import kotlinx.coroutines.flow.update<br>import kotlinx.coroutines.runBlocking<br>import kotlinx.coroutines.withTimeoutOrNull<br><br>fun main() {<br>    val f1 = MutableStateFlow(0)<br>    val f2 = MutableStateFlow(1)<br><br>    runBlocking {<br>        withTimeoutOrNull(1000) {<br>            f1.map {<br>                f2.update { 2 }<br>                delay(500)<br>                3<br>            }.combine(f2) { f1, f2 -&gt;<br>                f1 + f2<br>            }.collect {<br>                println(it)<br>            }<br>        }<br>    }<br>}</pre><p><strong>選択肢</strong></p><ol><li>「1」, 「2」, 「5」の順に表示される</li><li>「2」, 「5」の順に表示される</li><li>「3」のみ表示される</li><li>「5」のみ表示される</li></ol><p><strong>正答：</strong>「5」のみ表示される</p><p><strong>解説</strong></p><p>StateFlowは最新の値が流れてきます。そのため5のみ表示されます。</p><h4>午前：2問目</h4><p>問.以下のコードはBroadcastReceiverで受け取ったIntentをFlowに変換するコードです。[ ※※※ ] に入る文字は次の選択肢のうちどれでしょうか？</p><pre>override fun onCreate(savedInstanceState: Bundle?) {<br>    val intentFlow = [ ※※※ ]&lt;Intent&gt; {<br>        val receiver = object : BroadcastReceiver() {<br>            override fun onReceive(context: Context, intent: Intent) {<br>                trySend(intent)<br>            }<br>        }<br>        registerReceiver(receiver, IntentFilter(&quot;SAMPLE_ACTION&quot;), RECEIVER_EXPORTED)<br>        awaitClose {<br>            unregisterReceiver(receiver)<br>        }<br>    }<br>}</pre><p><strong>選択肢</strong></p><ol><li>suspendCoroutine</li><li>produce</li><li>flow</li><li>callbackFlow</li></ol><p><strong>正答：</strong>4. callbackFlow</p><p><strong>解説</strong></p><p>問題文を見ると、Intentを受け取った時BroadcastReceiver.onReceiveが呼び出されますが、その中でtrySendを呼び出しています。またreceiverの登録を解除する箇所ではawaitCloseを利用しています。どちらもChannelで利用するメソッドのため、produceかcallbackFlowに絞られますが、produceは呼び出しにCoroutineScopeが必要なためcallbackFlowが正解になります。</p><h4>午前：3問目</h4><p>問.以下のコードにおいて、[ ※※※ ] に入る適切なコードは選択肢のうちどれでしょうか？</p><pre>interface Logger {<br>    fun log(message: String)<br>}<br><br>class ConsoleLogger : Logger {<br>    override fun log(message: String) {<br>        println(message)<br>    }<br>}<br><br>context(Logger)<br>fun logWithPrefix(message: String, prefix: String = &quot;INFO: &quot;) {<br>   [ ※※※ ]<br>}<br><br>fun main() {<br>    val logger = ConsoleLogger()<br>    with(logger) {<br>        logWithPrefix(&quot;Hello&quot;) // &quot;INFO: Hello&quot; と出力されることを期待<br>    }<br>}</pre><p><strong>選択肢</strong></p><ol><li>log(prefix + message)</li><li>this.log(prefix + message)</li><li>logger.log(prefix + message)</li><li>println(prefix + message)</li></ol><p><strong>正答：</strong>1.<strong> </strong>log(prefix + message)</p><p><strong>解説</strong></p><p>Context Receivers を使用すると、拡張関数の内部でレシーバーオブジェクト (Logger) のメソッドやプロパティに直接アクセスできます。 logWithPrefix() 関数内で log() 関数を呼び出す際に、レシーバーオブジェクトの log() 関数が暗黙的に使用されます。</p><p>1. 正解</p><p>2. Build Failed : ‘this’ is not defined in this context. Unresolved reference ‘log’.</p><p>3. Build Failed : Unresolved reference ‘logger’.</p><p>4. 出力の条件は達成となりますが、Context Receivers を利用した適切なコードと考えると1が正解となります</p><h4>午後：1問目</h4><p>問. 以下のコードの出力は選択肢のうちどれでしょうか？</p><pre>fun main() {<br>    Constructors()<br>}<br><br>class Constructors {<br>    init {<br>        print(1)<br>    }<br><br>    constructor() : this(0) {<br>        print(2)<br>    }<br><br>    constructor(a: Int) {<br>        print(3)<br>    }<br><br>    init {<br>        print(4)<br>    }<br>}</pre><p><strong>選択肢</strong></p><ol><li>1234</li><li>3214</li><li>1432</li><li>コンパイルエラー</li></ol><p><strong>正答：</strong>3.<strong> </strong>1432</p><p><strong>解説</strong></p><p>このクラスには二つのイニシャライザと二つのセカンダリコンストラクタがあります。</p><p>イニシャライザはセカンダリコンストラクタより前に実行されます。イニシャライザが複数ある場合、それらはクラス内での定義順に実行されます。したがって、クラスを初期化すると 1、4 の順に出力されます。</p><p>main 関数では引数なしのコンストラクタが呼び出されています。引数なしのコンストラクタは引数を一つ取るセカンダリコンストラクタを呼び出します。このときに 3 が出力されます。その後、引数なしのコンストラクタの残りの部分が実行され、2 が出力されます。</p><h4>午後：2問目</h4><p>問. 以下のテストを実行すると選択肢のうちどの結果となるでしょうか？※Joda-Time 2.12.7 の環境で作問</p><pre>// Page.kt<br>package us.mitene<br><br>import org.joda.time.DateTime<br><br>data class Page(val createdAt: DateTime)</pre><pre>// PagesByMonth.kt<br>package us.mitene<br><br>import org.joda.time.DateTimeZone<br>import org.joda.time.YearMonth<br><br>data class PagesByMonth(<br>    val month: YearMonth,<br>    val pages: List&lt;Page&gt;,<br>) {<br>    companion object {<br>        fun make(pages: List&lt;Page&gt;): List&lt;PagesByMonth&gt; =<br>            pages.sortedByDescending {<br>                it.createdAt<br>            }.groupBy {<br>                YearMonth(it.createdAt.withZone(DateTimeZone.getDefault()))<br>            }.map {<br>                PagesByMonth(it.key, it.value)<br>            }<br>    }<br>}</pre><pre>// PagesByMonthTest.kt<br>import androidx.test.ext.junit.runners.AndroidJUnit4<br>import io.mockk.mockk<br>import org.junit.Assert.assertEquals<br>import org.junit.Test<br>import org.junit.runner.RunWith<br>import us.mitene.Page<br>import us.mitene.PagesByMonth<br><br>@RunWith(AndroidJUnit4::class)<br>class PagesByMonthTest {<br>    @Test<br>    fun make() {<br>        val pages: List&lt;Page&gt; = List(3) {<br>            Page(createdAt = mockk(relaxed = true))<br>        }<br>        val result = PagesByMonth.make(pages)<br>        assertEquals(3, result.size)<br>    }<br>}</pre><p><strong>選択肢</strong></p><ol><li>テストは問題なく通る</li><li>NullPointerException が起きる</li><li>IllegalArgumentException が起きる</li><li>ArrayIndexOutOfBoundsException が起きる</li></ol><p><strong>正答：</strong>4.<strong> </strong>ArrayIndexOutOfBoundsException が起きる</p><p><strong>解説</strong></p><p>org.joda.time.YearMonth は org.joda.time.base.BasePartial を継承しています。</p><p>BasePartial は iValues: int[] というプロパティを持っており、 YearMonth の場合は年月を「年、月」の順に格納しており本来であれば必ず値がセットされるように定義されています。</p><p>ところが、 mockk を使用して YearMonth を初期化すると本来は格納されるはずの iValues が空のままとなってしまいます。</p><p>この状態となっている YearMonth の配列に対し groupBy を実行すると java.util.HashMap 経由で YearMonth のハッシュを求める実装（ hashCode() ）が呼び出されます。 YearMonth の hashCode() は BasePartial が継承している AbstractPartial に実装されており、その実装は次のようになっています。</p><pre>    /**<br>     * Gets a hash code for the ReadablePartial that is compatible with the <br>     * equals method.<br>     *<br>     * @return a suitable hash code<br>     */<br>    @Override<br>    public int hashCode() {<br>        int total = 157;<br>        for (int i = 0, isize = size(); i &lt; isize; i++) {<br>            total = 23 * total + getValue(i);<br>            total = 23 * total + getFieldType(i).hashCode();<br>        }<br>        total += getChronology().hashCode();<br>        return total;<br>    }</pre><p>この実装において size() はプロパティのサイズを返しており YearMonth の場合は年月の2つ、つまり 2 が返り、 getValue(i) の部分では上述の iValues へアクセスし「年」と「月」を取り出します。</p><p>これは例えば YearMonth が 2024年6月 のような場合は getValue(0) で 2024 、 getValue(1) で 6 が入りそれぞれ計算されハッシュ値として返す、というような実装です。</p><p>設問ではここで mockk を使用したことで iValues が空配列となり getValue(0) が失敗し結果的に「ArrayIndexOutOfBoundsException が起きる」という状況となったのでした。</p><h4>午後：3問目</h4><p>問. 以下のコードの出力は選択肢のうちどれでしょうか？</p><pre>fun main() {<br>    val languages = listOf(<br>        &quot;Kotlin&quot;,<br>        &quot;Java&quot;,<br>        &quot;Swift&quot;,<br>        &quot;Objective-C&quot;,<br>    )<br>    val result = languages<br>        .partition { it.contains(&#39;a&#39;) || it.contains(&#39;C&#39;) }<br>        .let { (contains, notContains) -&gt;<br>            contains.zip(notContains) { a, b -&gt; &quot;$a-$b&quot; }<br>        }<br>        .sortedByDescending { it.length }<br>        .joinToString(&quot;, &quot;)<br>    println(result)<br>}</pre><p><strong>選択肢</strong></p><ol><li>Objective-C, Swift-Java, Kotlin</li><li>Objective-C-Swift, Java-Kotlin</li><li>Java,Kotlin-Objective-C,Swift</li><li>Java,Kotlin-Objective-C-Swift</li></ol><p><strong>正答：</strong>2.Objective-C-Swift, Java-Kotlin</p><p><strong>解説</strong></p><p>① .partition でリスト内の各要素を ‘a’ または ‘C’ を含むかどうかで2つのリストに分割します。</p><p>・contains リスト： Java, Objective-C</p><p>・notContains リスト： Kotlin, Swift</p><p>② .let ブロック内でcontainsとnotContainsを.zipで結合します。</p><p>結合結果：[“Java-Kotlin”, “Objective-C-Swift”]</p><p>③ .sortedByDescendingで長い方の文字列から降順でソートします。</p><p>[“Objective-C-Swift”, “Java-Kotlin”]</p><p>④ .joinToString(“, “)でリストを結合します</p><p>出力結果：”Objective-C-Swift, Java-Kotlin”</p><h4>正答数の分布</h4><p>今回実施したクイズの正答数の分布は下記となります。</p><p><strong>午前</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/764/0*DGo-6Ywc6opE67F_" /><figcaption>全体の分布</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/762/0*sRr_swew_B4YJoYk" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/756/0*CuurwLMraxKuuib7" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/760/0*dmlBaXPc3m9GWzC5" /></figure><p><strong>午後</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/768/0*dUtcOuEaYxJs_F8s" /><figcaption>全体の分布</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/763/0*a0qyBqtTufNalpKw" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/759/0*BMbncA8Q-wduEDSl" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/763/0*rDVQC3dVPWOaRHoJ" /></figure><h3>当日のMIXIブース</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Z-zBzvu6gzDezk8V" /></figure><p>Kotlin Fest 2024では、クイズに回答してくださった先着100名様（午前、午後で50名ずつ）に公式ロゴを用いたマイクロファイバークロスをノベルティとしてお渡ししました。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*_1sZNT6yrFYim7t1" /></figure><p>ちなみにブース出展時は、ノベルティのみならず、企画に応じてさまざまな制作物が必要になります。これまでブース展示用の制作物は手弁当でなんとかしていたのですが、今回より、デザイナーの加藤がブースづくりを本格的に手伝ってくれることに・・！</p><p>おかげで一気にブースに統一感が出た気がします。今後もより一層MIXIらしさが伝わるようなブースにしていきたいです🙌✨</p><p>最後に、今回クイズを作成＆ブーススタッフを担当してくれたMIXI ENGINEERSをパシャリ📸📸</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*rx6pgdrRSvN55OqK" /></figure><p>最後まで読んでくださったみなさま、ありがとうございました〜！</p><p>MIXIでは様々な事業やポジションで仲間を募集中です。</p><p>こちらの記事を読んでいただき、MIXIで働くことに興味を持ってくださった方がいましたら、ぜひ<a href="https://mixigroup-recruit.mixi.co.jp/">採用情報</a>をご覧ください。MIXIエンジニアの<a href="https://twitter.com/mixi_engineers">公式X（旧：Twitter）</a>でもMIXIで扱う技術やエンジニアに関する情報など、随時発信してますので、フォローしていただけると幸いです。</p><p>それでは、最後までお読みいただき、ありがとうございました！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=aa01689f2973" width="1" height="1" alt=""><hr><p><a href="https://mixi-developers.mixi.co.jp/kotlinfest-2024-aa01689f2973">MIXIはKotlin Fest 2024に協賛＆ブース出展しました！出題したクイズとブースをご紹介します</a> was originally published in <a href="https://mixi-developers.mixi.co.jp">MIXI DEVELOPERS</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MIXIはGo Conference 2024に協賛＆MIXIのエンジニアが注目するセッションをご紹介します]]></title>
            <link>https://mixi-developers.mixi.co.jp/go-conference-2024-a24cbd04ccba?source=rss-2e30a8f344a2------2</link>
            <guid isPermaLink="false">https://medium.com/p/a24cbd04ccba</guid>
            <category><![CDATA[go]]></category>
            <dc:creator><![CDATA[Chihappy]]></dc:creator>
            <pubDate>Fri, 07 Jun 2024 10:04:12 GMT</pubDate>
            <atom:updated>2024-06-07T10:04:12.854Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/960/0*VVaOt0sCnGr75eGB" /></figure><p>MIXIは、昨年に引き続き、Go Conference 2024にブロンズスポンサーとして協賛します！</p><h3>Go Conference 2024 について</h3><p>まずはイベント概要を簡単にご紹介します。</p><p>Go Conferenceは、一般社団法人Gophers Japanが運営する、プログラミング言語Goユーザーのためのカンファレンスで、Goエンジニア、エンジニア志望の方、Goに興味のある方を対象としています。MIXIではGo Conference 2022 Springからスポンサーをさせていただいています。</p><p>日時：2024年6月8日 (土)<br>場所：Abema Towers<br>公式サイト：<a href="https://gocon.jp/2024/">https://gocon.jp/2024/<br></a>参加登録（connpass）：<a href="https://gocon.connpass.com/event/314876/">https://gocon.connpass.com/event/314876/<br></a>参加費：無料</p><h3>MIXI DEVELOPERSの注目セッション</h3><p>Go Conference 2024のセッションで特に気になるものと、その理由について、弊社エンジニアからコメントをもらいました。</p><h4>江畑（ソーシャルベッティング事業本部 開発室 新規開発グループ）</h4><p><strong>気になるセッション①<br></strong>イテレータによってGoはどう変わるのか<br><a href="https://gocon.jp/2024/sessions/2/">https://gocon.jp/2024/sessions/2/</a></p><p><strong>理由<br></strong>弊社のサービスの一つであるTIPSTARでは競輪・オートレース・PIST6のレース情報や車券購入の基礎を共通のデータ構造で扱おうと試みる中で、Generics やそれを利用するためのイテレータについて注目しています。本セッションではイテレータの基礎について Go のコミュニティと目線を合わせるとともに今後の Go の進化についてキャッチアップができるのではないかと考えています。</p><p><strong>気になるセッション②<br></strong>Custom logging with slog: Making Logging Fun Again!<br><a href="https://gocon.jp/2024/sessions/4/">https://gocon.jp/2024/sessions/4/</a></p><p><strong>理由<br></strong>弊事業部では Go を用いたツール開発は当たり前の後継となっていますが、そのロギングについては既存の前例踏襲として log package を利用することがほとんどです。slog パッケージについては導入を検討しているもののどのような利点があるのかを整理しきれておらず、このセッションが一定の判断軸を提供してくれるのではないかと考えています。</p><h4>洗川（minimo事業部 開発グループ バックエンド開発チーム）</h4><p><strong>気になるセッション<br></strong>Mapのパフォーマンス向上のために検討されているSwissTableを理解する</p><p><strong>理由<br></strong>mapの実装がhashmapからSwissTableに置き換わることにより、insertやdeleteなどが20~50%、iterateが10%改善されることが以前上がっていたかと思います。</p><p>そしてそれが、今現在どのような議論がなされているのかとても興味があることや、将来高速化したい状況になった場合の知見の一つとして、聴講できれば嬉しく思っています。</p><h3>おわりに</h3><p>Go Conference 2024は、Goの最新技術や活用事例について学ぶことができる貴重な機会になっています。MIXIは、Goを使って開発されたサービスを提供する企業として、今後もGo言語の発展に貢献してまいります。</p><p>MIXIでは様々な事業やポジションで仲間を募集中です。</p><p>こちらの記事を読んでいただき、MIXIで働くことに興味を持ってくださった方がいましたら、ぜひ<a href="https://mixigroup-recruit.mixi.co.jp/">採用情報</a>をご覧ください。MIXIエンジニアの<a href="https://twitter.com/mixi_engineers">公式Twitter</a>でもMIXIで扱う技術やエンジニアに関する情報など、随時発信してますので、フォローしていただけると幸いです。</p><p>それでは、最後までお読みいただき、ありがとうございました！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a24cbd04ccba" width="1" height="1" alt=""><hr><p><a href="https://mixi-developers.mixi.co.jp/go-conference-2024-a24cbd04ccba">MIXIはGo Conference 2024に協賛＆MIXIのエンジニアが注目するセッションをご紹介します</a> was originally published in <a href="https://mixi-developers.mixi.co.jp">MIXI DEVELOPERS</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MIXIは、技術書典16に協賛＆新刊「MIXI TECH NOTE #11」を無料頒布します！]]></title>
            <link>https://mixi-developers.mixi.co.jp/techbookfest16-0bf491ed8b16?source=rss-2e30a8f344a2------2</link>
            <guid isPermaLink="false">https://medium.com/p/0bf491ed8b16</guid>
            <category><![CDATA[techbookfest]]></category>
            <dc:creator><![CDATA[Chihappy]]></dc:creator>
            <pubDate>Tue, 21 May 2024 07:23:01 GMT</pubDate>
            <atom:updated>2024-05-21T07:23:01.984Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*k1Y0ImeqvllTVwAz86G4HA.png" /></figure><p>MIXIは、技術書典16にゴールドスポンサーとして協賛します🎉 また、MIXIエンジニア有志による新刊「MIXI TECH NOTE #11」を出典します！</p><p>今回もオフライン会場にてスポンサーブースを出展予定となっております。ブースでは、新刊の「MIXI TECH NOTE #11」の物理本を、”数量限定” で頒布します！もちろん無料です。</p><p><strong>本記事では、新刊「MIXI TECH NOTE #11」の内容についてご紹介いたします。</strong></p><p>興味を持っていただいた方は、ぜひオフライン会場のブースに遊びに来てください＆オンラインマーケットで電子版を無料DLしてみてくださいね。</p><h3>イベントの詳細</h3><p>オンライン開催</p><p>会期：2024/5/25 (土) 〜2024/6/9（日）<br>会場：<a href="https://techbookfest.org/event/tbf16/market">技術書典16 オンラインマーケット</a></p><p>オフライン開催</p><p>会期：2024/5/26 (日) 11:00～17:00<br>会場：池袋サンシャインシティ 展示ホールD（文化会館ビル2F）、<strong>MIXIのブースは入口すぐの「協01」です！<br></strong>参加：入場無料</p><p>👇公式ページのURLはこちら👇<br><a href="https://techbookfest.org/event/tbf16">https://techbookfest.org/event/tbf16</a></p><p>🗺MIXIのブースはこちら（赤丸の箇所）🗺</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lG_pfDvfois7_NStyTJxhA.png" /><figcaption>入口入ってすぐの「協01」です！（画像右上）</figcaption></figure><h3>「MIXI TECH NOTE #11」のご紹介</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*QOQJTvv-csxU4pCD" /><figcaption>表紙は、開発本部デザイナーの加藤に製作してもらいました！</figcaption></figure><p>今回は全5章からなる、86ページの冊子となっております。</p><p>目次はこちら：<br>１章：マスタデータとGitFlow<br>２章：Haskell とテスト<br>３章：UnityでDiscord内マルチ通信ゲームを作ろう！<br>４章：Scala.jsでFigmaプラグイン開発入門<br>５章：TIPSTARアーキテクチャの探索</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*pie9B-IprBZ-TR4Z" /><figcaption>さらに詳しい目次はこちら（1ページ目）</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*sV7Ump0UXw2X5vs5" /><figcaption>さらに詳しい目次はこちら（2ページ目）</figcaption></figure><h4>執筆者コメント</h4><p><strong>第１章：「マスタデータとGitFlow」<br></strong>ビジネス側とエンジニア側の両者で協力して開発・運用されるマスタデータ。お互いが気持ちよくマスタデータを管理できるように設計・実運用したワークフローの整備手法を紹介します。</p><p><strong>第２章：「Haskell とテスト</strong>」<br>プログラミング言語 Haskell でのテストの書き方について、簡単な四則演算パーサをサンプルプログラムにして紹介します。</p><p><strong>第３章：「UnityでDiscord内マルチ通信ゲームを作ろう！」<br></strong>2024年3月公開の Discord 埋め込みアプリ SDK で対戦ゲームを作り、ユーザ名・アイコンのゲーム内表示や、VC 内での自動マッチング機能、Node.js でのゲームサーバー開発で学んだこと等を紹介します。</p><p><strong>第４章：「Scala.jsでFigmaプラグイン開発入門」<br></strong>Figma はプラグインによって独自の機能拡張ができ、それは標準的な Web の技術で構築可能です。今回は Scala.js を用いてどのように Figma のプラグインを開発できるか紹介します。</p><p><strong>第５章：「TIPSTARアーキテクチャの探索」<br></strong>TIPSTAR の全体像をアーキテクチャ図ベースで紹介します。全体像をイメージできた後に、今回はマスタデータと非同期処理について焦点を当てて紹介します。</p><h3>おわりに</h3><p>電子版は、5/25（土）〜オンラインマーケットにて頒布を開始しますので、どうぞお楽しみに！下記ページの「💚（グリーンのハートマーク）」を押して、お待ちくださいね。</p><p><a href="https://techbookfest.org/product/7DLTppLS5fXb8b8S1PPeUT">https://techbookfest.org/product/7DLTppLS5fXb8b8S1PPeUT</a></p><p>それでは、みなさんと会場でお会いできるのを楽しみにしております！</p><p>・・・</p><p>MIXIでは様々な事業やポジションで仲間を募集中です。</p><p>こちらの記事を読んでいただき、MIXIで働くことに興味を持ってくださった方がいましたら、ぜひ<a href="https://mixigroup-recruit.mixi.co.jp/">採用情報</a>をご覧ください。MIXIエンジニアの<a href="https://twitter.com/mixi_engineers">公式X（旧：Twitter）</a>でもMIXIで扱う技術やエンジニアに関する情報など、随時発信してますので、フォローしていただけると幸いです。</p><p>それでは、最後までお読みいただき、ありがとうございました！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=0bf491ed8b16" width="1" height="1" alt=""><hr><p><a href="https://mixi-developers.mixi.co.jp/techbookfest16-0bf491ed8b16">MIXIは、技術書典16に協賛＆新刊「MIXI TECH NOTE #11」を無料頒布します！</a> was originally published in <a href="https://mixi-developers.mixi.co.jp">MIXI DEVELOPERS</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MIXIはtry! Swift Tokyo 2024にブース出展しました！出題したiOSクイズとブースをご紹介します]]></title>
            <link>https://mixi-developers.mixi.co.jp/tryswift2024-report-20fe8e434a1d?source=rss-2e30a8f344a2------2</link>
            <guid isPermaLink="false">https://medium.com/p/20fe8e434a1d</guid>
            <category><![CDATA[swift]]></category>
            <category><![CDATA[conference]]></category>
            <category><![CDATA[try-swift-tokyo]]></category>
            <category><![CDATA[ios]]></category>
            <dc:creator><![CDATA[Chihappy]]></dc:creator>
            <pubDate>Thu, 25 Apr 2024 02:02:12 GMT</pubDate>
            <atom:updated>2024-04-25T02:02:12.520Z</atom:updated>
            <content:encoded><![CDATA[<p>こんにちは。MIXIのDevRelのChihappyです。</p><p>2024年3月22日（金）〜24日（日）に開催された try! Swift Tokyo 2024 にて、MIXI はPLATINUMスポンサーとして協賛いたしました。</p><p>MIXIのブースでは、1日目、2日目ともにエンジニアが考えた「iOSクイズ」を実施し、2日間の合計で、397名の方にご回答いただきました。ブースに遊びに来てくださったみなさま、ありがとうございました！！</p><p>本記事では、出題したクイズの解答と解説および正答数の分布、そして当日のMIXIブースの様子をご紹介させていただきます。</p><h3>クイズ（1日目）</h3><h3>1問目</h3><p>Swift5.10の次に予定されているバージョンは、次のうちどれでしょう？</p><p><strong>選択肢</strong></p><ul><li>Swift5.11</li><li>Swift5.10.1</li><li>Swift6</li><li>Swift5.11RC</li></ul><p><strong>正解</strong>：「Swift6」</p><p><strong>解説</strong>：Swift5.10のリリースノートに次はSwift6を予定しているという記載があります。<br><a href="https://www.swift.org/blog/swift-5.10-released/">https://www.swift.org/blog/swift-5.10-released/</a></p><h3>2問目</h3><p>Swift 5.9では以下のコードの結果はどうなりますか？</p><pre>var number = 1<br>print(++number)</pre><p><strong>選択肢</strong></p><ul><li>1が出力される</li><li>2が出力される</li><li>コンパイルエラーが発生する</li></ul><p><strong>正解</strong>：「コンパイルエラーが発生する」</p><p><strong>解説</strong>：Swift3 でインクリメント / デクリメントは削除されました。<br>Swift Evolution Proposal SE-0004</p><pre>error: repl.swift:14:7: error: cannot find operator &#39;++&#39; in scope; did you mean &#39;+= 1&#39;?<br>print(++number)<br>^~</pre><h3>3問目</h3><p>期待通りの出力になるように空欄を埋めてください。</p><pre>let numbers = [1, 2, 3, nil, 4, 5]<br>numbers.[???] // [1, 4, 9, 16, 25]</pre><p><strong>選択肢</strong></p><ul><li>map { $0 * $0 }</li><li>map { number in number * number }</li><li>filter { $0 != nil }</li><li>compactMap { $0 }.map { $0 * $0 }</li></ul><p><strong>正解</strong>：「compactMap { $0 }.map { $0 * $0 }」</p><p><strong>解説</strong>：numbers の型は[Int?]です。nil に対して四則演算を行うことはできないため、compactMap で nil を取り除いてから演算を行う必要があります。</p><h3>4問目</h3><p>SwiftにおけるUInt8型が取り得る最大の値はいくつでしょう？</p><p><strong>選択肢</strong></p><ul><li>255</li><li>256</li></ul><p><strong>正解</strong>：「255」</p><p><strong>解説</strong>：Swift の UInt8型は符号なし8ビット整数であり、0から255までの整数を格納できます。</p><h3>5問目</h3><p>以下のようなProtocolのデフォルト実装がされている時、出力される結果として正しいのはどれですか？</p><pre>protocol TotoProtocol{<br>    func foo()<br>}<br><br>extension TotoProtocol {<br>    func bar() {<br>      print(&quot;bar() - Protocol&quot;)<br>    }<br>}<br><br>class TotoClass: TotoProtocol {<br>    func foo() {<br>        print(&quot;foo() - Class&quot;)<br>    }<br>    func bar() {<br>        print(&quot;bar() - Class&quot;)<br>    }<br>}<br><br>let toto: TotoProtocol = TotoClass()<br>toto.foo()<br>toto.bar()</pre><p><strong>選択肢</strong></p><ul><li>foo() — Class, bar() — Protocol</li><li>foo() — Class, bar() — Class</li></ul><p><strong>正解</strong>：「foo() — Class, bar() — Protocol」</p><p><strong>解説</strong>：bar()メソッドはプロトコル拡張で提供されており、TotoClass でも実装されています。しかし、変数 toto は TotoProtocol 型であり、プロトコル型の変数を通してプロトコル拡張のメソッドを呼び出すと、型に関連付けられた実装ではなく、プロトコル拡張にある既定の実装が使用されます。</p><h3>6問目</h3><p>メソッドのどこにもに付与できないアトリビュートは、次のうちどれでしょう？</p><p><strong>選択肢</strong></p><ul><li>@objc</li><li>@IBInspectable</li><li>@escaping</li><li>@inlinable</li></ul><p><strong>正解</strong>：正解は「@IBInspectable」</p><p><strong>解説</strong>：@IBInspectable のみプロパティに付与するアトリビュートで、Interface Builder(Storyboard, Xib)を使ったUIを実装する際に利用できます。</p><h3>7問目</h3><p>Swift2.xからSwift3.xへのバージョンアップで起こった変化は、次のうちどれでしょう？</p><p><strong>選択肢</strong></p><ul><li>fileprivate導入</li><li>guard</li><li>enumの頭文字が小文字</li><li>Codable</li></ul><p><strong>正解</strong>：「enumの頭文字が小文字」と「fileprivate導入」</p><p><strong>解説</strong>：『guard』はSwift2、『Codable』はSwift4になります。</p><h3>クイズ（2日目）</h3><h3>1問目</h3><p>以下のコードのコンパイル結果はどうなりますか？</p><pre>let tooBig: Int8 = 128</pre><p><strong>選択肢</strong></p><ul><li>正常にコンパイルできる</li><li>コンパイルエラーが発生する</li></ul><p><strong>正解</strong>：「コンパイルエラーが発生する」</p><p><strong>解説</strong>：SwiftのUInt8型は符号なし8ビット整数であり、-128から127までの整数を格納できます。Arithmetic operation ‘127 + 1’ (on type ‘Int8’) results in an overflowが表示されます。</p><h3>2問目</h3><p>Swiftの正しい構文になるように、空欄を埋めてください。</p><pre>//定数宣言<br>（ ① ）hoge （ ② ）String = &quot;hoge&quot;<br><br>//メソッド定義<br>（ ③ ）fuga() （ ④ ）String { return &quot;fuga&quot; }</pre><p><strong>選択肢</strong></p><ul><li>①let ②: ③func ④-&gt;</li><li>①val ②: ③fun ④:</li><li>①let ②: ③function ④:</li><li>①val ②-&gt; ③fun ④-&gt;</li></ul><p><strong>正解</strong>：「①let ②: ③func ④-&gt;」</p><p><strong>解説</strong>：2番目はKotlin、3番目はTypeScript、4番目は架空の言語になります。</p><h3>3問目</h3><p>MediaPlayer Package の中にMediaConfiguration Module, MusicPlayer Module を定義しました。 MediaClient#get(_:) を App Target からは呼び出せないが、MediaPlayer Package の中では参照できるようにするとき、（???） には何を入れる必要があるでしょうか？</p><pre>// Module `MediaConfiguration` in `MediaPlayer`<br>public class MediaClient {<br>    public init() {}<br>    [???] func get(_ url: URL) -&gt; Data {…}<br>}<br><br>// Module `MusicPlayer` in `MediaPlayer`<br>import Foundation<br>import MediaConfiguration<br><br>public class MusicPlayer {<br>    let client = MediaClient()<br><br>    public init() {}<br><br>    public func play(_ url: URL) {<br>        let data = client.get(url)<br>        // Play music based on the Data object<br>    }<br>}<br><br>// App<br>import Foundation<br>import MediaConfiguration<br>import MusicPlayer<br><br>let url = URL(string: &quot;…&quot;)!<br>MusicPlayer().play(url) // can access `play` since it&#39;s a public symbol<br>MediaClient().get(url) // &#39;get&#39; is inaccessible</pre><p><strong>選択肢</strong></p><ul><li>open</li><li>package</li><li>private</li><li>package(private)</li></ul><p><strong>正解</strong>：「package」</p><p><strong>解説</strong>：<br>package はSwift5.9、SE-0386で導入されました。</p><p>・open を使用するとMediaClient#get(_:) を App Targetから呼び出せてしまいます<br>・MediaDecoder などを private で宣言すると、MusicPlayer module からはもちろん、MediaConfiguration module 内の別のファイルからも参照できなくなります。<br>・package(private) は Swift5.9現在存在しませんが、将来packageopen、open(package)、package(override)などが導入される可能性があることが示唆されています。</p><h3>4問目</h3><p>Swift5.5 で iOS15以降で使える Swift Concurrency が登場し、その後 iOS13 以降で使えるようになりましたが、iOS13 で使用可能な条件はどれですか？</p><p><strong>選択肢</strong></p><ul><li>Xcode13.0</li><li>Xcode13.2</li><li>Swift5.6</li></ul><p><strong>正解</strong>：「Xcode13.2」</p><p><strong>解説</strong>：Swift Concurrency は Xcode13.2 で iOS13まで拡張されました<a href="https://developer.apple.com/documentation/xcode-release-notes/xcode-13_2-release-notes#Swift">https://developer.apple.com/documentation/xcode-release-notes/xcode-13_2-release-notes#Swift</a></p><h3>5問目</h3><p>以下のコードの結果はどうなりますか？</p><pre>class Person {<br>    var name: String<br>    init(name: String) {<br>        self.name = name<br>    }<br>}<br><br>let firstPerson = Person(name: &quot;Alice&quot;)<br>let secondPerson = firstPerson<br>secondPerson.name = &quot;Bob&quot;<br><br>print(&quot;First: \(firstPerson.name), Second: \(secondPerson.name)&quot;)</pre><p><strong>選択肢</strong></p><ul><li>First: Alice, Second: Alice</li><li>First: Alice, Second: Bob</li><li>First: Bob, Second: Alice</li><li>First: Bob, Second: Bob</li></ul><p><strong>正解</strong>：「First: Bob, Second: Bob」</p><p><strong>解説</strong>：クラスのインスタンスである firstPerson と secondPerson は、同じ参照を共有しています。secondPerson.name を変更すると、同じインスタンスの firstPerson.name も変更されるため、両方の name プロパティには “Bob” が格納されます。</p><h3>6問目</h3><p>以下のコードに使われているマクロの種類で正しいのは、次のうちどれでしょう？</p><pre>func myFunction() {<br>    print(&quot;Currently running \(#function)&quot;)<br>    #warning(&quot;Something&#39;s wrong&quot;)<br>}</pre><p><strong>選択肢</strong></p><ul><li>Freestanding Macros</li><li>Attached Macros</li></ul><p><strong>正解</strong>：「Freestanding Macros」</p><p><strong>解説</strong>：Freestanding Macros は#から始まり、クラス等の宣言に付与されることなく単独で使用します。Attached Macros は@から始まり、付与されたクラス等の宣言に対してコードを生成します。<br><a href="https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/">https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/</a></p><h3>MIXIブースのレポート</h3><p>ここからは、当日のMIXIブースの様子について簡単にご紹介します。</p><p>まず、MIXIブースの場所はコーヒー☕などを提供しているブレイクエリアでした。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/716/0*MqElIML4QyC0C_Vk" /><figcaption>ブレイクエリアの様子：セッションの合間ごとに、大勢の方で賑わっていました</figcaption></figure><h4>iOSクイズの出題</h4><p>ブースでは、前述のiOSクイズを出題し、日本語版と英語版の2種類を用意しました。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*FHyPc7U68WgE-h3d" /><figcaption>ワイワイ回答いただいている様子</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Hfbe_ZDso9oxwDo6" /><figcaption>真剣に考え込む姿も…</figcaption></figure><p>クイズの正答数の分布は下記となります。中央値は2日間ともに4点となりました。</p><p>1日目は5問以上正解、2日目は4問以上正解でノベルティをプレゼントしていたのですが、両日ともに3,4,5点に分布が集中しており、ギリギリでノベルティをお渡しできなかった方も大勢いらっしゃったのではないかと思います。</p><p>1日目に惜しくも正答数が足りなかった方が2日目にリベンジしてくださり、無事ノベルティをゲットされることもありました。楽しんでいただけたようで、とてもうれしかったです🙌</p><p><strong>1日目（日本語版）回答数の合計：144件</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*IDYPaC16r_dTEZU5" /></figure><p><strong>1日目（英語版）回答数の合計：90件</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*QGOCjxLoud1Lq6S9" /></figure><p><strong>2日目（日本語版）回答数の合計：106件</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*3d1YrUADYm0EE5E3" /></figure><p><strong>2日目（英語版）回答数の合計：57件</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*-vx2PNiFeri1l7V7" /></figure><h4>ノベルティ</h4><p>クイズの成績が良かった方にはノベルティとして、Swiftに関連付けて「値型」タオルをプレゼント🎁海外の方も多いので、何か日本らしいものを…と思い漢字でデザインしました。こちらもエンジニアにアイディアを出してもらい、余談ですが、他にも「並行処理」や「拡張」などの案も出ていました。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6p9qBj7nGRRQxFk1" /><figcaption>タオルデザイン by 開発本部 デザイナー 加藤</figcaption></figure><h3>ブースづくりに協力してくれたMIXI ENGINEERS</h3><p>最後に、今回ブースのコンテンツおよびノベルティ作成を中心となって進めてくれたMIXI ENGINEERSをパシャリ📸📸</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*yQ4KzhyawvGQzkWS" /></figure><p>・・・</p><p>MIXIでは様々な事業やポジションで仲間を募集中です。</p><p>こちらの記事を読んでいただき、MIXIで働くことに興味を持ってくださった方がいましたら、ぜひ<a href="https://mixigroup-recruit.mixi.co.jp/">採用情報</a>をご覧ください。MIXIエンジニアの<a href="https://twitter.com/mixi_engineers">公式X（旧：Twitter）</a>でもMIXIで扱う技術やエンジニアに関する情報など、随時発信してますので、フォローしていただけると幸いです。</p><p>それでは、最後までお読みいただき、ありがとうございました！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=20fe8e434a1d" width="1" height="1" alt=""><hr><p><a href="https://mixi-developers.mixi.co.jp/tryswift2024-report-20fe8e434a1d">MIXIはtry! Swift Tokyo 2024にブース出展しました！出題したiOSクイズとブースをご紹介します</a> was originally published in <a href="https://mixi-developers.mixi.co.jp">MIXI DEVELOPERS</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[自律的に考え、行動する。スクラムの考え方がより強固になった「家族アルバム みてね」 iOSエンジニアのいま]]></title>
            <link>https://mixi-developers.mixi.co.jp/mitene-iosengineers-interview-202404-f166a43afae4?source=rss-2e30a8f344a2------2</link>
            <guid isPermaLink="false">https://medium.com/p/f166a43afae4</guid>
            <category><![CDATA[developer-interview]]></category>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[ios-engineer]]></category>
            <dc:creator><![CDATA[Chihappy]]></dc:creator>
            <pubDate>Tue, 23 Apr 2024 02:02:22 GMT</pubDate>
            <atom:updated>2024-04-23T02:02:22.796Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*iczuuASvQtklRb8E" /></figure><p>「家族アルバム みてね（以下みてね）」では、2023年3月にプロダクト開発部 部長に平田が就任して以来、チームにスクラムの考え方を浸透させるべく、さまざまな取り組みを行ってきました。</p><p>この取り組みにより「考え方の軸が強固になった」とiOSエンジニアの飯塚は語ります。</p><p>本インタビューでは、スクラムの浸透による変化を経たいま、みてねのiOS開発メンバーに共通する考え方や、自主性を重んじるカルチャー等についてiOSエンジニアの飯塚・佐藤・阿部に聞きました。</p><h4>メンバーの紹介</h4><p>飯塚（写真左）：2019年にミクシィ（現MIXI）に新卒入社。現在までみてね事業部で、iOSを中心にアプリ開発や、技術的負債の解消などに携わる。みてねプロダクト開発部 プロダクト開発Dグループ所属。</p><p>佐藤（写真中央）：新卒入社した会社で主にiOSアプリ開発を担当し、2021年11月にミクシィ（現MIXI）に入社。 iOS・Android・バックエンドの開発を幅広く担当。みてねプロダクト開発部 プロダクト開発Dグループ所属。</p><p>阿部（写真右）：新卒入社した会社でiOSアプリ開発を担当し、 2023年6月にMIXIに入社。 iOS・Android・バックエンドの開発を幅広く担当。みてねプロダクト開発部 プロダクト開発Mグループ所属。</p><h3>幅広い技術に携われる環境</h3><p><strong>──佐藤さんと、阿部さんは中途入社されていますが、みてねにジョインしたきっかけを教えてください。</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*SNRP71cCj0-elmde" /></figure><p>佐藤：新卒で入社した会社では主にiOS開発に携わっていて、技術の幅を広げたいと考え、「みてね」にジョインしました。「みてね」でもiOS開発をメインに担当しつつ、Androidやサーバーサイドのタスクも取っていて、一つ前のスプリントではほぼAndroid開発のみ行っていました。</p><p>阿部：僕も佐藤さんと同じで、技術の幅を広げたかったのが転職の理由です。前職ではずっとiOS開発に携わっていて、最後の方はサーバーサイド開発にも携わらせていただく機会はあったのですが、もう少し深く飛び込んでいきたいと考えました。今は主に「みてね」関連の商品を扱うMERCHというチームに所属しています。MERCHチームは、時期にもよりますが比較的サーバーサイドの開発が多いので、最近はもっぱらRubyを書いています。</p><p>ただ、iOSから完全に離れたわけではなく、チーム横断でiOSエンジニアが集まって「みてね」をより良くするために会議する、週次の”iOS定例”の中で出てきたタスクは今も拾うようにしています。</p><p><strong>──”iOS定例”について、もう少し詳しく教えてください。具体的にはどんなことを話されているのでしょうか？</strong></p><p>飯塚：”iOS定例”は、週次で「みてね」内のiOSを得意とするメンバーが集まって、iOS開発に関することを話す場です。主に「みてね」のiOS開発における課題をリスト化して、新しい課題が出てきたら報告したり、ひとつひとつの解決方法を議論したりしています。新しい技術に関する話題も多いです。特に主催者がいるわけではなく、僕の入社前から脈々と続いている会です。</p><p><strong>──”iOS定例”で出てきた課題は、どのように分担し、解消しているのでしょうか。</strong></p><p>飯塚：各々が自主的に取っていくことが多いです。みてねでは「20%ルール」を採用していて、業務時間の内20%はメイン業務以外の好きな開発業務に充てることができるので、”iOS定例”のタスクもその時間に取り組んでいます。</p><p>阿部：定例で上がってきた課題や取り組むべきことはタスク化してあるので、各々が興味のあるタスクを取っているイメージですね。</p><h3>「スクラム研修」がもたらした変化とは</h3><p><strong>──自主性を持ったメンバーが多い印象を受けたのですが、他にも皆さんが思う、みてねのiOSエンジニアの特徴などはありますか？</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*WqaFU_eV2CZWhWmb" /></figure><p>阿部：新しい技術に敏感で、積極的に取り入れる姿勢があると思います。単に気になるで終わらせるのではなく、導入までの道筋を考えて実際に導入して…と行動に移すことができる方が多いです。</p><p>また、人柄でいうとみなさんすごく穏やかです。議論の場でも冷静で理路整然と話される方ばかりで、議論が苦痛じゃないですし、建設的に話せる環境だと感じています。</p><p>飯塚：結論が出るのも、すごくスムーズで早いですね。議論の場でA案、B案を持ち寄ったとしたら、必ずしもそのどちらかに帰結するのではなく、話し合いの結果を踏まえて次のアクションを決めています。例えば、「◯◯がまだ曖昧なことが分かったから、次のアクションとしては◯◯を深堀りして調査してみましょうか」、といった感じで。</p><p>阿部：自分の意見を通すのが目的ではないという共通認識がありますよね。あとは、みなさん「みてね」のことがとてもがすごく好きで、より良くしたいというブレない軸を持たれている印象です。</p><p><strong>━━他にも、何かありますか？</strong></p><p>佐藤：皆さん、課題を解決することと、より良くすることを分けて考えることができているため、物事を小さくして前に進めるのがすごく上手いと思います。まずは小さく、最低限これをやれば課題が解決できるというところまで持っていく。そしてそれをベースにより良くする、というサイクルが染み付いているような気がします。</p><p><strong>━━みなさん、最低限のポイントを押さえて、小さく始めることが身についているんですね。</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*sQnBJr3KEzZe8Zfc" /></figure><p>飯塚：スクラムの考え方が浸透してきていますよね。みてね プロダクト開発部 部長の平田の主導で「スクラム研修」が開催され、ドメインチームごとに参加したのですが、これが本当に良くて。</p><p>佐藤：スクラムの認定資格を持っている「みてね」のメンバーが講師をしてくれました。この研修のおかげで、「みてね」全体にスクラムの考え方がとても浸透しました。入社しただけでこの研修が受けられるなんて、最強の福利厚生だと思います。</p><p>飯塚：元から「みてね」のメンバーはとてもすごく自主性があり、自分で課題を見つけ、チームにももちろん相談しつつですが、どんどん改善を進めていました。研修を受けてからはさらにその傾向が加速していて、今までも薄っすらあった考え方の軸が、より強固になったように感じます。</p><p>佐藤：スクラムの考え方を学んで、実践して、少しずつ「みてね」のチームに合わせて改善して…を繰り返すことで、少なくともスクラムにおける守破離の”守”の部分はできているように感じます。</p><h3>さらに職域間の垣根を低くすることを目指す</h3><p><strong>━━みてねのiOS開発で、これから取り組んでいきたい課題について教えてください。</strong></p><p>阿部：「みてね」では職域問わずさまざまな領域のタスクを取れるので、普段あまりiOS開発に携わらない方でも、迷いなく実装できるようにしたいです。</p><p>佐藤：その課題の解決方法としては件は、SwiftUIが手段の一つになり得ると思います。例えばAndroidエンジニアの方であれば、既にJetpack Composeを使われているので、SwiftUIであれば書き方が似ていて使いやすいはずです。現在、「みてね」のiOS開発全体の約10%のファイルがSwiftUIで書かれていて、知見が溜まってきており、iOSエンジニアはSwiftUIが書けるようになってきています。次のステップとして、普段iOSをあまり書かない人にもSwiftUIでの実装がやりやすいと感じてもらえるよう、ドキュメントの整備を進めていきたいです。</p><p>ちなみに余談ですが、SwiftUIの導入時に開発の進め方・考え方をまとめたドキュメントを書いて全体に展開したのですが、まだ一度も修正せずに済んでいます。これまで最初の設計のままで上手くいくことがあまりなかったので嬉しかったですし、すごく誇らしいです（笑）</p><p>飯塚：たしかに、全く手直ししてないですね。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*9IhIz0BTN0sZGq4f" /></figure><p><strong>──実現したら、さらに職域間の垣根が低くなっていきそうです。最後に、未来の仲間へのコメントをお願いします！</strong></p><p>阿部：「みてね」は、得意分野を軸としつつ、更に別の領域にも挑戦したい方にはぴったりな環境だと思います。</p><p>飯塚：少し補足すると、入社前にフルスタックエンジニアとして完成している必要はありません。技術・知識の幅を増やしたいという気持ちがあればチャレンジさせてもらえます。なので、これからフルスタックを目指す方にとって良い環境だと思いますね。</p><p>新卒入社の観点からもお話しすると、今のスクラムの考え方が浸透した「みてね」でファーストキャリアを過ごすことは、必ず今後のキャリアの糧になると思います。</p><p>佐藤：一つひとつのタスクが小さいのも、チャレンジのしやすさに繋がっていますよね。「みてね」では、タスクが細分化されていて、小さく、急ぎじゃないタスクを選ぶことができるので、チャレンジのハードルが低いんです。</p><p><strong>──空気感だけでなく、仕組みとしても異なる技術領域にチャレンジしやすくなっているんですね。他にもありますか？</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*W7iyrAvjNxpXGeHF" /></figure><p>阿部：もし今「みてね」というプロダクトや組織に対して良い印象を抱いてくださっている方がいたら、それはこれまで「みてね」に携わってきた方々のおかげだということです。ここから先の数年はきっと自分たちにかかっているはずなので、もっと良くしたいと思ってくれる人がいたら、ぜひ一緒に働きたいです！</p><p><strong>──一緒にこれからの「みてね」を背負ってくださる方が見つかると嬉しいですね。それでは、ありがとうございました！</strong></p><p>MIXIでは様々な事業やポジションで仲間を募集中です。</p><p>こちらの記事を読んでいただき、MIXIで働くことに興味を持ってくださった方がいましたら、ぜひ<a href="https://mixigroup-recruit.mixi.co.jp/">採用情報</a>をご覧ください。MIXIエンジニアの<a href="https://twitter.com/mixi_engineers">公式X（旧：Twitter）</a>でもMIXIで扱う技術やエンジニアに関する情報など、随時発信してますので、フォローしていただけると幸いです。</p><p>それでは、最後までお読みいただき、ありがとうございました！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f166a43afae4" width="1" height="1" alt=""><hr><p><a href="https://mixi-developers.mixi.co.jp/mitene-iosengineers-interview-202404-f166a43afae4">自律的に考え、行動する。スクラムの考え方がより強固になった「家族アルバム みてね」 iOSエンジニアのいま</a> was originally published in <a href="https://mixi-developers.mixi.co.jp">MIXI DEVELOPERS</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[『共遊型ベッティングサービス TIPSTAR』の世界観を実現するために─特有のUIを採用するアプリ開発の裏側に迫る]]></title>
            <link>https://mixi-developers.mixi.co.jp/tipstar-mobileapp-interview-243ce035b10c?source=rss-2e30a8f344a2------2</link>
            <guid isPermaLink="false">https://medium.com/p/243ce035b10c</guid>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[android]]></category>
            <category><![CDATA[developer-interview]]></category>
            <category><![CDATA[mobile-app-development]]></category>
            <dc:creator><![CDATA[Chihappy]]></dc:creator>
            <pubDate>Mon, 15 Apr 2024 01:57:06 GMT</pubDate>
            <atom:updated>2024-04-22T08:23:15.748Z</atom:updated>
            <content:encoded><![CDATA[<p>『共遊型ベッティングサービス』として、ベッティングを主軸にさまざまな機能を提供するTIPSTAR。アプリ内にいくつかゲーム要素を取り入れるなど、そのUIは独自性の高いものになっています。</p><p>今回お送りするのは、そんなTIPSTARのiOS/Androidアプリ開発を担う、3名のエンジニアへのインタビュー。彼らが育むチームのカルチャーから、独自性の高いUIとの付き合い方等の開発の特徴、そしてTIPSTARのアプリ開発はどんな方に向いているか？などについて聞きました。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*2vGMs9ZKb3j3lM2x" /></figure><p>寺田（写真左）：携帯電話のゲームアプリ開発を経験し、2008年のiPhone 3G登場時よりiOSアプリ開発に携わり始める。ミクシィ（現MIXI）には2016年2月に入社し、複数事業でiOSアプリ開発を担当した後、2019年にTIPSTARにジョイン。</p><p>山田（写真中央）：2015年にミクシィ（現MIXI）に新卒入社。複数事業でAndroid開発やアプリ開発チームのリーダを経験し、2019年にTIPSTARへジョイン。TIPSTARではAndroid開発のテックリード兼 iOS, Android, Web開発を行うクライアントチームのリーダーを担う。</p><p>真田（写真右）：複数社でiOSアプリ開発をメインにAndroid, API, Webフロントエンドなど様々な開発に従事し、2022年1月にミクシィ（現MIXI）に入社。minimoでAndroidアプリ開発を担当した後TIPSTARにジョインし、現在はiOSアプリ開発を担当。</p><h3>経験豊富なアプリ開発エンジニアが集うチーム</h3><p><strong>━━まずは、チーム構成について教えていただけますか。</strong></p><p>山田：部署としては、Androidエンジニア4名、iOSエンジニア4名、Webエンジニア2名、Unityエンジニア1名の計11名のチームになっています。ただ、実際には各プラットフォームごとに分かれて仕事を進めることが多いです。</p><p><strong>━━チーム内では、どのようにコミュニケーションをとられていますか？開発に詰まった時などのことも教えてください。</strong></p><p>山田：今は全員が揃って出社することは中々ないので、仕事に必要なコミュニケーションはオンラインで完結するようにしてますね。</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*g0qSbvwuMbsxgaKt" /></figure><p>真田：開発で詰まった時のことですが、実は技術的に困って誰かに相談することがあまりなくて。二つの選択肢があるがどちらが良いか？くらいの軽い相談は雑談的にSlackチャンネルにポストしたり、ハドルで聞いたりしています。</p><p>寺田：たしかに、技術的に困って相談することはあまりないですね。相談するにしても、大体自分の中で答えを持っていることが多いですよね。</p><p><strong>━━なんと、そうなんですね。基本的に、開発では困らないということでしょうか…？</strong></p><p>真田：デザインが上がってきた時点で、実装が難しそうなものがあれば調整してもらっています。そのため、実装する段階で困ることが少ないという感じです。</p><p>山田：そのやり方が上手くまわっているのは、経験のなせる技ですよね。</p><p><strong>━━経験を積んだからこそ、という感じがしますね。Androidの方はどうでしょう？</strong></p><p>山田：Androidも割とベテランが揃っているので、開発で困る場面はそう多くないと思います。</p><p>ちなみに、Androidのメンバーの特色で言うと、新しい技術を取り入れる時は勉強会を開くことが多いです。たとえば、現在Jetpack Composeの導入を計画しているので、最近ではその勉強会を開きました。</p><h3>“TIPSTAR特有のUI” 、そのアプリ開発の裏側とは</h3><p><strong>━━チームの雰囲気やカルチャーについて、もう少し教えてください。</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*v_YU3gWGFqFVWL6d" /></figure><p>真田：カルチャーというほどでは無いかもしれませんが、最近はアプリストアのレビューを気にする空気が生まれてきています。アプリストアのレビューが流れるチャンネルを作ったことで、メンバー間でどのようにアプリを改善すべきかの会話が生まれ、レビューへ返信するようになりました。</p><p>山田：事業部全体のメンバーが見ているので、職種を超えたコミュニケーションのきっかけにもなっていますよね。</p><p><strong>━━ひとり一人が、より一層ユーザー体験向上について考えるようになったんですね。他にもありますか？</strong></p><p>山田：デザイン含む仕様書がきっちり揃っているので、誰でも開発に入りやすい環境だと思います。経緯としては、TIPSTARは機能が多く情報が散らかってきたので、きちんと仕様書に残すようになりました。</p><p><strong>━━「TIPSTARは機能が多い」とのことですが、UIも特殊な作りになっていますよね。。</strong></p><p>真田：ヒューマンインターフェイスガイドラインは最低限抑えつつ、そこにとらわれすぎない作りになっていると思います。</p><p>寺田：ガイドラインからは、かなり逸脱してますよね。TIPSTARのコンセプトは”共遊型ベッティングサービス”です。”共遊型”という言葉から読み取れるように、ゲームのような体験の提供を重要視しているため、TIPSTAR特有のUIになっています。実際、すごろくやガチャなどのミニゲーム的な機能が備わっていて、その辺りの実装にはUnityが使われていたりします。</p><p><strong>━━サービスのコンセプトに沿った結果なんですね。UIがTIPSTAR特有のつくりになっていることで、苦労されることはないのでしょうか。</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Hdpb9X_dyXfGpKYh" /></figure><p>山田：やはり、技術的なハードルは高いと感じます。演出として度々サウンドエフェクトやアニメーションを用いるのですが、ネイティブ側で実装することもあるので、大変なこともありますね。</p><p>あとは、世界観を表現するためにUIパーツのカスタマイズを行うことも多いです。例えばボタンは一色で塗りつぶして終わりではなく、TIPSTARでは色や効果を複数重ねてデザインされています。こういった独自のデザインは標準SDKに用意されていないので、カスタマイズが必要になります。</p><p>寺田：ここ10年ほどの、フラットデザインのトレンドを全て無視するようなUIになっていますね。なので、プラットフォームが用意してくれているパーツは、そのままだとほとんど使えなくて。</p><p>真田：一つひとつのパーツが作り込まれていると思います。ボタン以外にも、ナビゲーションバーのデザインも割と独特なので、実装は少し複雑ですね。</p><p><strong>━━世界観を表現するために、色々と工夫されているんですね。</strong></p><h3>新しい技術の導入にあたり、抱えている課題</h3><p><strong>━━iOS、Android開発それぞれで、現在課題に感じていることについて教えてください。</strong></p><p>真田：iOS開発側では、RxSwiftへの依存をなんとかしたいです。SwiftUIやSwift Concurrencyの導入ハードルが下がってきて、TIPSTARでもそろそろ…と思っているのですが、RxSwiftに深く依存していることで導入が難しくなっています。</p><p><strong>━━新しい技術の導入の妨げになっているんですね。SwiftUIの導入は、現在検討中ですか？</strong></p><p>真田：少しずつ導入していきたいね、という話は出てきています。</p><p>寺田：ただ、既存のUIを全てSwiftUIに対応する場合、普段の開発業務と並行して進めるのは大変ですよね。全画面を一気に書き換えることは難しいので、どうしてもSwiftUIに切り替わっている画面とそうでない画面が混ざるタイミングが出てきます。そうした時に、メインの開発業務に混乱をきたさないように進める方法を模索中です。</p><p>真田：以前、別のサービスでAndroid開発に従事していた時に、似たような状況になりました。新しい技術への書き換え前後の画面が混在することで、割と困った記憶があるので、慎重に進めていきたいです。</p><p><strong>━━Android開発側は、いかがでしょう？</strong></p><p>山田：Android開発では、現在Jetpack Composeの導入を進めようとしています。先ほど、UIパーツをカスタマイズしていると話しましたが、これが曲者でして。これまでAndroid Viewでカスタマイズしていた実装を、Jetpack Composeでも同様に置き換えていく必要があるので、なかなか大変です。</p><p>真田：開発現場に共通の課題だと思いますが、新しい技術に置き換えないとこれから登場する便利な機能が使えないため、なんとか進めていきたいですね。</p><h3>「普通のアプリ開発に飽きてきた」方におすすめの環境</h3><p><strong>━━最後に、どんな方がTIPSTARの開発チームで活躍できそうか聞かせてください。</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*mfU0bSIYM2TflGoQ" /></figure><p>寺田：その性質的にスタートアップ等ではなかなか難しい事業ですし、サービス内容的にも珍しいので、少し変わった事業に携わりたい方にとって良い環境だと思います。ギャンブルは特に好きじゃなくても、拒否反応さえなければ。</p><p>山田：技術的には、UIのカスタマイズ好きの方は楽しんでいただけるかもしれません。既にあるパーツを使うのではなく、作る側にまわれるので。</p><p>真田：レース映像の表示や認証に関しても、MIXI Mが今度SDKに対応するのでそれを使うみたいな話になっていて、そういった珍しい技術を触りたい方にとっては面白いかもしれないです。</p><p><strong>━━サービス面でも技術面でも独自性が高いので、珍しいことをやってみたい方に向いていそうですね。</strong></p><p>真田：そうですね。よくあるiOS開発には飽きてしまった、という方におすすめできるかも。</p><p>寺田：競輪って割とレガシーな業界なので、そういったレガシーなマーケットにアイデアをぶつけて、色々挑戦してみたいというモチベーションがあると尚いいかなと思います。</p><p><strong>━━技術的にも事業的にも、様々なハードルを乗り越えて挑戦していきたい方に楽しんでいただけそうに感じました。それでは、ありがとうございました！</strong></p><p>MIXIでは様々な事業やポジションで仲間を募集中です。</p><p>こちらの記事を読んでいただき、MIXIで働くことに興味を持ってくださった方がいましたら、ぜひ<a href="https://mixigroup-recruit.mixi.co.jp/">採用情報</a>をご覧ください。MIXIエンジニアの<a href="https://twitter.com/mixi_engineers">公式X（旧：Twitter）</a>でもMIXIで扱う技術やエンジニアに関する情報など、随時発信してますので、フォローしていただけると幸いです。</p><p>それでは、最後までお読みいただき、ありがとうございました！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=243ce035b10c" width="1" height="1" alt=""><hr><p><a href="https://mixi-developers.mixi.co.jp/tipstar-mobileapp-interview-243ce035b10c">『共遊型ベッティングサービス TIPSTAR』の世界観を実現するために─特有のUIを採用するアプリ開発の裏側に迫る</a> was originally published in <a href="https://mixi-developers.mixi.co.jp">MIXI DEVELOPERS</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MIXIのiOSアプリ開発最前線〜みてね・minimo・TIPSTARのエンジニアに”今”聞いてみたいこと〜]]></title>
            <link>https://mixi-developers.mixi.co.jp/ios-engineers-interview2024-4d3369f87585?source=rss-2e30a8f344a2------2</link>
            <guid isPermaLink="false">https://medium.com/p/4d3369f87585</guid>
            <category><![CDATA[swift]]></category>
            <category><![CDATA[developer-interview]]></category>
            <category><![CDATA[ios]]></category>
            <dc:creator><![CDATA[Chihappy]]></dc:creator>
            <pubDate>Thu, 04 Apr 2024 06:02:00 GMT</pubDate>
            <atom:updated>2024-04-04T06:02:00.302Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*j6LA3MPmHDbTLJUB" /></figure><p>めまぐるしく変化するモバイルアプリ開発。日々新たな技術や開発言語が登場する中で、開発現場のエンジニアたちはどのような視線でそれらの変化を捉えているのでしょうか。</p><p>現場のリアルな声をお届けするべく、『家族アルバム みてね（以下みてね）』から飯塚、『TIPSTAR』から寺田、『サロンスタッフ予約アプリ minimo』から穴水の、3人のiOSエンジニアにインタビューを行いました。</p><p>本インタビューでは、MIXIの各サービスの最前線にいるiOSエンジニアに聞いた最近の取り組みから、”今” iOSエンジニアに聞いてみたい3つの質問、目指す理想のエンジニアの姿までを座談会形式でお届けします。</p><h3>みてね・minimo・TIPSTARにおける最近の取り組み</h3><p><strong>━━みなさんの業務内容と、各サービスの取り組みについて教えてください</strong></p><p>穴水（minimo）：私は、今年10周年を迎える「<a href="https://minimodel.jp/about">サロンスタッフ予約アプリ minimo</a>」のメンバーで、現在は開発業務はあまりやっていません。では何をしているのかというと、主にminimoのモバイルアプリ全体の技術的負債解消のための戦略を立て、舵取りをする役目を担っています。また、メンバーの担当しているタスクの仕様や設計をどう実現するかについてや、ユーザーからの問い合わせ対応の優先順位づけなどの相談に乗るサポート的な業務もあります。</p><p>最近では、Androidアプリのフルリプレイスを決定し、目下Androidエンジニアのメンバーにリプレイス作業を進めてもらっています。iOSについては、どのような方針で動くか検討中です。</p><p><strong>━━アプリ開発全体の技術的負債解消のための戦略を練るポジションにいらっしゃるんですね。</strong></p><p>寺田（TIPSTAR）：僕は、<a href="https://tipstar.com/">TIPSTAR</a>という、友達と一緒に競輪やオートレースなどへのベッティングを楽しむことができるアプリのiOSエンジニアをしています。</p><p>TIPSTARはところどころでUnityを使って開発しているのが特徴で、昨年末にリリースした「<a href="https://about.tipstar.com/news/20231220_1/">すごろくダンジョン</a>」という新機能もUnityで開発しました。ネイティブのコードからUnityを組み込みのライブラリとして呼び出して、Unityの画面を出すという構造になっています。</p><p><strong>━━複雑なつくりになっていそうですね。</strong></p><p>飯塚（みてね）：僕は「<a href="https://mitene.us/">家族アルバム みてね</a>」のエンジニアで、iOS開発をメインとしつつ、Android開発をやることもあります。デジタルアルバム機能など、みてねの基礎部分の機能開発を担う<a href="https://team.mitene.us/articles/2023032402">DADチーム</a>に所属しています。</p><p>みてねのiOS開発では、2、3年ほど前からSwift Package Managerを使ったマルチモジュール化を進めています。最近では、UIのモジュールを切り出して単体でビルドできるようにすることで、Xcodeのプレビューを高速化して、開発速度を向上させることに取り組んでいます。</p><p>穴水（minimo）：マルチモジュール化では、共通処理をどこに置くかという問題があると思いますが、どんな考え方をされましたか？</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*suIUQoNY_YRzjW5n" /></figure><p>飯塚（みてね）：モジュールを縦に分割すると共通処理が発生すると思うのですが、みてねの場合は横のレイヤーで区切っています。そのため、その問題はまだ発生していません。現状はあくまでも依存関係の厳格化を主な目的としたマルチモジュール化という位置づけになっていますね。</p><p>穴水（minimo）：なるほど。そこを強制するためのマルチモジュール化なんですね。</p><h3>”今” iOSエンジニアに聞いてみたい3つの質問</h3><p>ここからは、「”今” iOSエンジニアに聞きたいこと」をテーマに、3つのトピックについて詳しく聞いていきます。</p><h3>コード生成AIツールの利用状況</h3><p><strong>━━ここからは座談会的に、さまざまなテーマでお話を聞いていきたいと思います。まずは各サービスにおけるAIの活用状況をお聞きしてもいいでしょうか？</strong></p><p>穴水（minimo）：minimoでは、今まさにGitHub Copilotを導入するための体制を整えている最中です。移行作業が終わったら、活用できる箇所では積極的に使っていけるよう、本格的に導入を検討する予定です。</p><p>飯塚（みてね）：みてねでは既に使える状況になっていて、体感ではエンジニアの1/3〜1/2くらいが利用申請を出して使っていると思います。ですが、僕個人としてはまだ使っていません。</p><p>穴水（minimo）：学習がWebベースな気がするので、学習ソースの少ないiOSでどこまで使えるコードが生成されるのか気になりますよね。</p><p>飯塚（みてね）：そうですね。Rubyを使っているメンバーからはポジティブな声を聞きますが、iOSエンジニアからはまだそういった声は聞いてないです。</p><p>寺田（TIPSTAR）：TIPSTARでは、事業部全体でかなり使っているメンバーが多いですね。特にWeb開発の方でかなり活用しているようです。アプリ開発では、僕個人としては、スニペットや数行単位でサジェストしてくれるものを使ってみています。レイアウトを組むなど、定型的な内容に関してはそれなりのものをサジェストしてくれる印象です。ファンクション単位ではまだ試せていませんが、AIの活用によって一応タイピング数は減っている、という状況ですね（笑）</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*3k7o8Q0Yey8Y-pPK" /></figure><h3>新しい技術を導入する際の姿勢</h3><p><strong>━━AIに限らず、新たな技術が次々と登場していますよね。こういった新しい技術を導入するタイミングはどう判断されていますか？</strong></p><p>飯塚（みてね）：みてねのアプリ開発では、Appleが提供する機能であれば前向きに検討することが多いです。ただし、いきなり全て導入するわけではなく、場合によっては現状維持する箇所もあります。例えばSwiftUIなら、画面遷移周りはまだ実運用面での課題も多かったため、その部分だけUIKitを維持するような方法を取りました。</p><p>導入のタイミングは、新しい技術が出た2〜3年後くらいになることが多いです。というのも、サポートOSのバージョンの関係で新しく出た技術をすぐに導入することが難しくて。そのため、発表から導入までの期間は他社事例を見つつ、知見をためているような状況です。</p><p>穴水（minimo）：minimoでは少し違う考え方をしているかもしれません。現在minimoのアプリ開発全体で技術的負債の解消に取り組んでいるところなのですが、特にAndroidアプリで一部だけに新しい技術を導入した箇所がいくつもあり、そこが大きな技術的負債となっています。メンテナンスコストもかかりますし、新旧両方のバージョンを知っている人でないと触れないコードになっているんですよね。</p><p>結果的にAndroidをフルリプレイスすることになったという事情もあり、リスクヘッジを重要視して、新しい技術が出ても一旦様子見することが多いです。みてねと同じく他社事例を見つつ、最後まで導入し切れるか？導入戦略が作れそうか？などを慎重に見極めるという方針です。</p><p>飯塚（みてね）：それで言うと、サポートOSが切れるまでの2〜3年のラグが、みてねの開発メンバーにとっても、ちょうどいい見極め期間になっていると思います。また、みてねでも小さく始めることを意識して、試しに一画面作ってみて現状の課題やメリデメを洗い出した上で導入するなどのステップは踏んでいますね。</p><p>寺田（TIPSTAR）：新しい技術を使うには、古いバージョンのサポートを切ることも必要になってきますよね。リリースから1年後には最新バージョンを使っているユーザーが7、8割だと思うので、保守的に考えても2年前のバージョンまでを残しておけば十分だと考えています。</p><p>新しい技術の導入としては、Apple公式が推奨しているものやリスクの少ないものはどんどん進めるようにしています。特にApple公式から推奨されているものは、突然古いバージョンのサポートが終了してしまうこともあるので、早め早めに動くことが多いですね。Swiftのバージョンアップについても、コードが書きやすくなるものなどはほとんどノーリスクなため、すぐに取り入れています。</p><h3>Flutterの盛り上がりについてどう思う？</h3><p><strong>━━近頃はFlutterで開発されているサービスも多いですが、皆さんはFlutterでのプロダクト開発についてどう考えていますか？</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*yCzlp0fj3VTNZlNW" /></figure><p>寺田（TIPSTAR）：世の中のトレンドでもありますし、新規プロダクトの開発時に、iOS/Androidの両輪かつ高速で開発を進めたいのであれば選択肢に入ってくるかなと思います。プロジェクトの規模感やメンバーの数にもよりますよね。</p><p>穴水（minimo）：Androidのフルリプレイスを検討した際に、ストアリリースやプロジェクト設計など、要所要所ではネイティブアプリ開発の知識が必要になるという話をいろいろな方から聞きました。寺田さんがおっしゃったように、少ないメンバーで多くの価値を提供することにフォーカスするのであれば、Flutterも良い選択肢だなと思います。</p><p>ただ、既存サービスでは既にメンバーが揃っていることが多いため、わざわざFlutterに移行するメリットは小さいかもしれません。プロダクトの時期によって意思決定が変わってきそうですね。</p><p><strong>━━今後需要が高まることを見据えて、Flutterエンジニアのキャリアを選ぶ可能性もありますか？</strong></p><p>穴水（minimo）：私はまだ様子見をしています。KMPのロードマップにおいて、iOSでもComposeが使えるようになると公開されているため、今後KotlinでもiOS/Android両方のUIを実現できるようになるかもしれません。Flutter以外のクロスプラットフォームの選択肢が増えることで、どのような変化が生まれるのか注意深く見ていきたいです。</p><p>寺田（TIPSTAR）：既にWebが立ち上がっているものと同様の動きをするアプリをリリースしたい場合は、ほとんどフロントエンド開発だけになると思うので、Flutterでかなり効率化できると思います。一方で、アプリ固有の価値を重視しているサービスの場合は、まだまだネイティブの知識が必要だという印象です。</p><p><strong>━━Flutterエンジニアとはいえ、ネイティブアプリの知識も必要なんですね。</strong></p><p>飯塚（みてね）：Flutterはプライベートで少し触ったことがあるぐらいなのですが、Flutterエンジニアの採用が難しいとたまに聞きますね。</p><p>穴水（minimo）：ネイティブの知識をそれなりに持っていて、かつFlutterも書ける人となると少しハードルが上がると思っています。minimoもFlutterを採用しなかった一因として採用の課題がありました。</p><p>寺田（TIPSTAR）：Flutterの諸々の課題というのは、時間が解決する話か、それとも本質的な違いか、どちらなのでしょうね。Swiftもリリース当初はそこまで評価されず、Objective-Cに戻るような方もいました。ですが、今ではSwiftがiOSアプリ開発のスタンダードになっています。いつの間にかFlutterが主流になる未来もあるのかなと考えてしまいますね。</p><p>穴水（minimo）：開発言語的にはすごい勢いで成長していますよね。現状、ユーザー体験の側面ではネイティブアプリに軍配が上がる気がしますが、将来的には分からないと思います。2本指での高速スクロールなど、Flutter固有の機能を活用してネイティブアプリよりも良い体験を提供できる場合もありますね。</p><p><strong>━━数年後に、答え合わせしたいですね。</strong></p><p>寺田（TIPSTAR）：その時には、もうAIが僕らの仕事を全部奪ってくれているかもしれませんね（笑）</p><h3>MIXIのiOSエンジニアが目指すエンジニア像とは</h3><p><strong>━━最後に、目指すエンジニア像について教えてください。</strong></p><p>飯塚（みてね）：普段注目されないけど実は重要なことに目を向けて、そっと改善してあげられるようなエンジニアになりたいです。その実現のために、やった方が良いと思いつつ放置されていたことに取り組んでみたり、現在進行系でデザインシステムの改善をチームを組んで動かしていたりします。</p><p>みてねには、新技術の導入やキャッチアップに精力的な頼もしいメンバーがたくさんいます。そのため、自分は新しい技術へ目を向けつつも、チーム全体を見た時に価値が最大化するような働きをしていきたいです。</p><p>穴水（minimo）：私は、ユーザー体験こそがモバイルアプリの強みだと考えています。そのため、そこを意識した価値提供をしていきたいですし、専門性を持って取り組みたいポイントでもあります。</p><p>あとは、これまで改善思考で物事に向き合ってきたので、今後もObserve（観察）、Orient（方向づけ）、Decide（意思決定）、Act（行動）のOODAで改善サイクルを回すことを意識したいです。全てを「改善できるかも」という視点で見れば、何かしら気づくことがあるかもしれません。それが自分が精通していない分野であれば詳しい人に相談すればいいですし、改善のきっかけを作れるよう、そういった視点を持つことを大切にしたいです。</p><p>寺田（TIPSTAR）：僕は、いつの間にかアプリ開発を始めて15年も経っていました。その間ずっと自分のコアとしてきた行動指針として、UI/UXの専門家としてきちんと意見するということがあります。特に、アプリの画面に関しては誰よりも長く見てきたという自負があります。</p><p>MIXIにはWebサービスに長く携わってきた方が多いです。そのため、アプリのUI/UXをやってきた自分ならではの知見を共有できるように努めていますし、これからもそうありたいです。</p><p>MIXIでは様々な事業やポジションで仲間を募集中です。</p><p>こちらの記事を読んでいただき、MIXIで働くことに興味を持ってくださった方がいましたら、ぜひ<a href="https://mixigroup-recruit.mixi.co.jp/">採用情報</a>をご覧ください。MIXIエンジニアの<a href="https://twitter.com/mixi_engineers">公式X（旧：Twitter）</a>でもMIXIで扱う技術やエンジニアに関する情報など、随時発信してますので、フォローしていただけると幸いです。</p><p>それでは、最後までお読みいただき、ありがとうございました！</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4d3369f87585" width="1" height="1" alt=""><hr><p><a href="https://mixi-developers.mixi.co.jp/ios-engineers-interview2024-4d3369f87585">MIXIのiOSアプリ開発最前線〜みてね・minimo・TIPSTARのエンジニアに”今”聞いてみたいこと〜</a> was originally published in <a href="https://mixi-developers.mixi.co.jp">MIXI DEVELOPERS</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>