ペンギン村 Tech Blog

技術をこよなく愛するエンジニア集団が在住するペンギン村から、世界へ役立つ(かもしれない)技術情報を発信する技術系ブログです。某アラレちゃんが済む村とは一切関係ありません。んちゃ!

Merpay Tech Talk #2 に参加してきました

はじめに

お疲れ様です。最近寒くてオフトゥンから出られないかむいです。

勉強会に足を運べていない日が続いていたのですが、今回はメルペイさんが主催する『Merpay Tech Talk #2』にお邪魔して来たので、レポートをまとめたいと思います!

mercari.connpass.com

この日はペンギン村の村民でもある@natpenguin氏も主催側で参加されており、久々にお会い出来て良かったです😃
発表されたテーマはUIにフォーカスを当てたものが多く、どれもiOSエンジニアにとっては関心の高い発表内容でした。  

「Cloning Photos app fluid interface」by @masamichiueta さん

 

speakerdeck.com

WWDC2018でもセッションがあった、iPhone Xなどに使われる操作インターフェースであるDesigning Fluid Interfaceについての発表でした。

メルペイのミッションに「信用を創造して、なめならかな社会を創る」という言葉があるとのことで、この発表でも滑らかな動きをどう実現し、ユーザーにどう体感してもらうかというテーマでお話をされていました。
  実際にWWDC2018のセッションで紹介されたFluid interfaceの話から「いつでも行ったり戻ったり出来ること」というポイントを取り上げ、実際にiPhone XとiPhone 8とのアプリのバックグラウンドへの退避例を挙げて説明をされていました。

また最後には標準の写真アプリにもFluid interfaceを意識した仕組みが用意されていることを例に挙げ、実際にクローンして動きを紹介しながら仕組みを説明してもらいました。

t.co

確かに何気なく使っている端末のジェスチャー1つ1つに、ユーザーの意思決定と並行にジェスチャー操作が行えるのは使いやすいですよね。
アプリ開発者としてUIを考える際に意識しないとなぁと再認識しました(・ω・)

「UIViewController in XIB + IBDesignable」by @akifumifukayaさん

speakerdeck.com

画面をレイアウトする際、iOSではStoryboardファイルがよく使われますが、Storyboardのデメリットを挙げつつ、xibファイルを使うとどんなメリットがあるかについて発表をされていました。
またIBDesignableを合わせて使うことで、よりxibが便利になることも合わせて紹介していました。

実際にメルペイのプロダクトでも画面レイアウトにはこの形を採用しているとのことで、@natpenguinさんからも発表にあったようなメリットがあることを教えてもらえました。

僕が所属するプロジェクトでは、Storyboardファイルを使いつつ、独自でDIを行える仕組みを構築し画面レイアウトに取り組んでいますが、内製化・堅牢化が過ぎると、今度はそのルールを理解するための取り組みが必要になるデメリットもあるんですよね。
(そこはチームの方針や運用ルールをしっかり決めれば問題は無いのですが)

今回のようにiOS SDKが標準で提供している仕組みを使い、新規の人でも「xibのイニシャライザを使ってDIを実現する」というシンプル且つiOSエンジニアには馴染みのある仕組みを採用する取り組みもまたメリットがあるなぁと感じました。  

「Functional programming for UI」by @Teddyさん

speakerdeck.com

トリを飾ったのは「UIのための関数型プログラミング」について発表された@Teddyさん。
ニューヨークから昨年来られたとのことで、英語の方が発表しやすいらしく、その注意を完璧な日本語で謝っておりました
個人的に問題の無さを感じつつも、この発表は英語で行われました。
(英語耳が育って無い僕ピンチ…!😇)

発表されたコードは、ある起点に吹き出しの矢印をあてたBalloonViewのポップアップ表示処理を連続でアニメーションさせる実装についてです。

大抵の場合は数が多ければ多いほど、コールバック地獄になりそうな処理をどう綺麗にまとめるかという点で、下記のREAD.meにも記載されているような関数を使うと、階層が深くならないコーディングを実現できるという処理について説明されていました。

 github.com

個人的に >>> が視覚的にわかりやすくて好きです。
(pbxpojファイルの競合箇所かと一瞬思ったのは内緒)

ソース上で使用それているキャラクターが可愛く、発表中にも良いアクセントにもなっていました。

BalloonViewに限らず、こうしたアニメーション処理を複数回連続で実施したいということは多くあることだと思うので「どのようにReadableなコードを実現するか」参考になる発表でした。

何よりもインパクトがあったのは発表後の質問タイムで、参加されてた@hatakenokakashiさんはじめほとんどが英語で質問し(!?)、またその質問に対する返しをTeddyさんが普通に日本語で返す(!!?)というやり取りが凄かったです。

皆さん外国語も技術力と兼ね揃えていてヤバみが深いです😇😇😇

ちなみに懇親会でTeddyさんと少しばかしお話させて頂きましたが、日本語の勉強期間をお聞きしたところブランクも含めてざっと3年ほどだそう。
自分がそのスパンで英語をどれだけ理解出来るようになったかと思うと目眩がした次第です笑

メルペイさんには凄いエンジニアが続々と参加されているなぁと感じた瞬間でした…!

f:id:kamui_project_tony:20181115210651j:plain
お肉だー!🥩 ✨ (あまり多く食べれなかったのが心残り笑

 

最後に

最近のiOSの勉強会では主に設計やテスト、CI/CDといったアプリ開発を支える技術のテーマが多くなってきている印象だったので、久々にUI実装の発表を多く聞けて楽しかったです。

参加者の関心度も高かったようで、まったく質問の手があがらないというようなことも無かったのが素晴らしいと感じました。僕も英語の勉強頑張らねばと痛感しました笑

楽しい勉強会の場を催して頂き、メルペイの皆様、ありがとうございました!

DroidKaigi 2019 のプロポーザル一覧を閲覧できる「とあるDroidKaigiの提案目録」をリリースしました。

どうも、最近涼しくなってきたので温泉が最高に感じる今日この頃な tobi462 です。

そんなわけで iOSDC Japan 2018 に続き、DroidKaigi 2019 のプロポーザル一覧を快適に見れるかもしれないサービスを開発・公開しました。

droidkaigi-index.penginmura.tech f:id:yu_dotnet2004:20181111195637p:plain

前回と同様に SPA で快適に検索・閲覧出来ることを目標としています。 また iOSDC とは違い、いわゆるプロポーザルの詳細画面が公式になかったので、SNSでシェアする目的にも使えるように用意してみました。

f:id:yu_dotnet2004:20181111195707p:plain

きっかけ

例によってペンギン村Slackでの発言がきっかけでした。 f:id:yu_dotnet2004:20181106214156p:plain

あいかわらず雑なノリだと感心しますが、賛同してくださった開発メンバーで作ることになりました。

それにしても間違って去年のDroidKaigiのURLを貼っているあたり本当に雑だと思います。

利用技術について

インフラ

前回は技術検証という意味も込めてインフラには「GKE(Kubernetes)」を採用しましたが、今回は「Firebase Hosting / Firebase Cloud Function」を利用したシンプルな構成にしました。

やはり「GKE」はランニングコスト的に厳しいものがあり、我々が支払い続けるのは無理だという結論が出ました。(そして前回の「この素晴らしいCfPに祝福を!」はサービスダウン中です)

そんなわけで、今回は逆に如何にランニングコストを下げられるか、ということで巷で流行りの「Firebase」をインフラとして採用してみた次第です。 まぁ料金を除いても、GKE(というか Kubernetes)は小規模なサービスに対しては複雑すぎるという真面目な理由もありました。

Webフロント

Webフロントには前回は「Vue.js」を使っていましたが、今回は巷で流行りの「Nuxt.js」を採用してみました。 最初はSSR(サーバサイドレンダリング)してSEOも考慮してとか考えていたのですが、最終的にはサーバレスで「Firebase Hosting」を利用しています。

まぁこのあたりは流行りの技術を使ってみたかったという気持ちが大きかったかもしれません。

デプロイ

デプロイは流行りの「Google Cloud Build(beta)」を使って自動化しています。 Firebase デプロイ用のトークンを暗号化するために「Google Cloud KMS」なんてものを使う必要があったりして、正直わりと面倒だったのですがそのあたりの話は機会があれば。

サービス名について

読み方は「とあるかいぎのいんでっくす」です。 なんだかとあるアニメのタイトルと似ている気がしなくもないですが偶然でしょう。

前回の iOSDC 向けには「この素晴らしいCfPに祝福を!」という SEO を120%無視したサービス名をつけたばかりにグーグル検索からたどり着けないというのが最大の反省点でした。

にもかかわらずこのサービス名・・・ペンギン村のメンバーは検索性よりもネタの方が重要なようです。

今後

開発メンバーのモチベーション次第ですが、機能追加とかはもう少ししていく予定です。 要望などがあれば対応していきたいという想いはありますので、Twitterなどで適当にコメントいただければと思います。

ということで、久しぶりにサービス告知の記事でした。

Swift 4.2 の変更点を iOSDC 2018 で話してきました

どうも、最近は「進撃の巨人 3期」が楽しみな tobi462 です。

しかし、最近一部の人達から「シュタインズ・ゲート ゼロ」を強烈に推されプレッシャーを感じる今日このごろです。いや原作こそ未プレイですがアニメ初期は見てますし、全話配信されたら見ようと思ってはいたんですよ?

レギュラートーク30分

はい、ということで iOSDC Japan 2018 にて 30分 のレギュラートークをさせていただきました。

去年は LT で発表させていただいたのですが、今年はレギュラートーク、しかも今までに経験したことがない 30 分の発表ということで、資料作り・発表練習ともに苦労した面も多いのですが、良い経験が出来たと思います。

正直なところを言うと、こんな平凡な(あるいは中身の透明性が高い)テーマを聞きに来る人はいないのではないかと思っていたのですが、予想に反して聞きに来てくれた人が多かったので嬉しかったです。

このテーマであれば後で資料を見れば十分だ、と判断された方も多いのではないかと思います。少なくとも私が参加者であればそういう判断をしていたと思います(苦笑)。まぁしかしスライドの出来はわりと良いと自負しているので、参加されなかった方もよろしければご覧いただければと思います。

今年の iOSDC

f:id:yu_dotnet2004:20180903003226p:plain

正直なところ「疲れた」というのが一番の感想でしょうか(笑)

登壇も含めて 3.5日 という日程はさして生易しいものではなく、もう若くない私としては日に日に消耗していた感もあります。 (ええぃ!スタッフの体力は化物か!)

しかし、イベントの質としては明らかに去年よりパワーアップしていました。とくに、

  • ルーキーズLT、iOSエンジニアに聞いてほしいトーク
  • Wifiネットワークの高速・安定化、無限コーヒー

といった点は非常に良かったと私は感じました。

初心者でも登壇しやすい空気を作りつつテーマの幅を広げ、イベント参加者がよりイベントを楽しめるようにする仕組み、ということを実現したスタッフの方々には頭が上がりません。

異なる関わり方

今回、iOSDC を陰ながら応援しようと思い、CfPの検索サービスを「ペンギン村 Tech」の一部の有志で開発しました。

blog.penginmura.tech

実は iOSDC 最終日に GCP の無料枠を使い果たしサービスダウン しているのですがそれはさておき。

当初、CfP の一覧を快適に見られるようにし、興味のあるトークを見つけやすくすることで、開発者の興味があるトークをSNSやブログでシェアしやすいようにするという狙いがありました。

今年は CfP が(たしか) 540 本も提出されたのですが、公式のプロポーザル一覧は検索もなければ10件ごとのページングによる画面遷移が必要で、とても興味があるトークがSNSでシェアされるようなUXが提供されているとは感じられなかった為です(そもそもプロポーザル一覧のページさえ見つけられない人もいたのではないかと思います)。

それゆえにこのサービスの企画初期の時点から SPA で開発することは決定していました。

この取り組みが功を奏したのかは実際のところわかりませんが、Twitterでは「役に立った」というコメントをいくつかいただけ、間接的ながらイベントに関わることが出来たのではないかと思います。

実のところ「API提供」や「iOS/Androidアプリの提供」も視野に入れていたのですが、開発メンバー3名のうち2名がレギュラートークに登壇することもあり、リソース的にそれは叶いませんでした。このあたりは来年(もありますよね?)、改善していけたらと思ったりします。

終わりに

まぁ、つまるところ「楽しかった!」です(笑)

私は基本的に人見知りで、こういう場でのコミュニケーションが苦手なのですが、発表・聴講・スピーカーディナーなどを通じて多くの開発者とコミュニケーションが取れて嬉しかったです。

私自身が iOS アプリ開発からしばらく離れていることもあり、他の登壇者のトークではとても多くのことを学べたと感じます。

そんなわけで関わってくれた多くの人に感謝の意を示しつつ、来年もまた楽しみにしています。 f:id:yu_dotnet2004:20180903003150p:plain

では。

iOSDC2018に参加してきました!

ども、かむいです。

 

僕は今回iOSDC初参加でした。
以前から行きたかったのですが、お仕事が…参加費が…CfPが…ごにょごにょ


そんなこんなでCfPは見事に不当選だったものの、ついにスポンサーチケットという素晴らしいアイテムを駆使して参加することが出来ました!


f:id:kamui_project_tony:20180902195937j:image


行った感想ですが、マジでハッピーな4日間でした!!


普段の勉強会でも参加するだけで刺激を受けるというのに、著名な方や初めてお会いする方、初めて登壇される方々のセッションをずーーっと1日中聴けるという体験は今年一番の思い出になりました。

 

f:id:kamui_project_tony:20180902200004j:image

ランチはどれも美味しかった…


また今回僕の同僚でもあり、31日のルーキーズ枠でも登壇した@hayatanさんの発表は応援する側ながら僕も緊張しっぱなしでした。無事終えられて良かったです。お疲れ様でした!mm
f:id:kamui_project_tony:20180902200031j:image

この人数の前で発表をやってのけるとか…メタルスライム倒した時並のレベリングが出来たに違いありません。


特に彼の発表テーマであった設計の話は、今彼と一緒に死にそうになりながら取り組んでいることの内容でして、その成果を以下の著名な方々に評価して頂けたことは彼と同じくらい僕も嬉しいツイートとなりました。

 

 

 

 

なお、前回の記事にもあった通りペンギン村から2名が参加し、彼らの勇士もしっかり見届けることが出来ました。きっと彼らからも思いの丈が追って聞けることでしょう(チラッ


最後に、参加された方々は(ほぼ)iOSエンジニアで、同じ苦労をされてる人たちとお話できたのはとても良かったです。
普段勉強会でお会いしてる人、改めてどんな仕事をしているか深くお話しできた人、はじめましてな人。
ここまで繋がりを多く持てるイベントもiOSDCならではなんだなぁと思えました。


また来年こそは、CfP投げまくって、登壇を勝ち取りたいと思います!


f:id:kamui_project_tony:20180902221541j:image

 

運営スタッフの皆さま、登壇・参加された皆さま、登壇頑張った同じ村民のtobi462さんk_miyasakaさん、そして自分、乙!!!

ペンギン村 Tech から 2名 が iOSDC 2018 に登壇します

f:id:yu_dotnet2004:20180829182353p:plain

どうもご無沙汰しています tobi462 です。iOSDC Japan 2018 の開催がついに明日にせまりましたね。

以前の記事で軽くふれましたが、ペンギン村 Tech からは私と k_miyasaka の2名が登壇します。

blog.penginmura.tech

せっかくなのでトークに対する一言コメントを紹介したいと思います。まぁお約束的な感じですね(笑)

Swift 4.2 はどのような進化をしているのか

  • tobi462
  • 2018/08/31 11:20〜 Track B レギュラートーク(30分)

Xcode 10 から Swift 4.2 に変更となりますが、変更点のチェックはお済みでしょうか? CfPを出す現時点で Swift 4.2 には 18個の Proposal が実装されています。 本トークでは時間の許す限りで、すべての Proposal についてその解説を努めていきたいと思います。

https://fortee.jp/iosdc-japan-2018/proposal/a355f634-3855-40ff-882e-328704bd6136

一言コメント

コメントするまでもなく内容が透けて見えるトーク概要ですが(苦笑)、30分という短時間でプロポーザルをざっと駆け巡って「効率的にキャッチアップしてもらう」というのを目標にしています。

ただ、それだけだと味気ないと感じたので 今までの Swift の歴史を振り返ってみた上で、Swift 4.2 がどのように進化しているのかという構成にしてみました。

30分という短時間で多くを語ることは出来ませんが、楽しんでもらえたらと思っています。

果たして30分以内に本当にすべてを喋り切ることができるのか、それもあるいは見どころの一つかもしれません(が、がんばるぞい・・・)

LLDBを最大限活用してみる。

  • k_miyasaka
  • 2018/09/02 15:10〜 Track B レギュラートーク(15分)

XCODEのデバッグ機能は便利で、スタックトレースとpoコマンドの入力だけでもゴリゴリとデバッグできる方が多くいらっしゃると思いますが、 それらはLLDBの機能の氷山の一角です。 不具合の原因検知、修正だけでなく、 リビルドせずにコンソールからUIを変更するなど新規コーディングでも活用できる方法を発表致します。

https://fortee.jp/iosdc-japan-2018/proposal/db9e05a4-2357-4140-8274-c642e158f1d9

一言コメント

現在のSwiftはOptional Bindingやenum、structなど、静的に安全を保障できる機能が多々あります。

その反作用として、デバッグ実行時の操作のの自由度はObjective-Cに比べると格段に下がっています。

プログラミングはデバッグの時間が大半を占めるといわれているので、Swiftのデバッグ手法については改善の余地が多々あると思います。

今回はLLDBのもつ無限のポテンシャルを生かし、そのいくつかの手法、方針を提案させていただきます。

おわりに

そんなわけで、登壇者からの一言コメント紹介でした。

あとは皆様との機会があえば当日の発表でお会いしましょう。(べ、べつに私達のトークを聞きに来てほしいってわけじゃないんだからね///)

では。

iOSDC 2018 のプロポーザル一覧を閲覧できるサービスを公開しました。

この度、ペンギン村 Tech のエンジニア3名で iOSDC 2018 の プロポーザル(CfP)一覧を閲覧・検索できるサービスを公開しました! iosdc-cfps.penginmura.tech

f:id:yu_dotnet2004:20180723234118p:plain

Web UI は SPA で開発し、画面遷移なしで快適に見られるようにしてみました。

1stリリースでは一覧表示のみでしたが、現在では採択ラベルの表示・フィルタリング・キーワード検索にも対応しており、今後も少しずつ改善していきたいと思っています。

なぜ作ったか?

これは私個人の話になるのですが、私は去年 LT を採択され iOSDC 2017 にて登壇させていただきました。 iosdc.jp

参加して感じたのは、カンファレンスをより楽しいものにしようとするスタッフ達の想い・情熱でした。

そんなわけで「来年はスタッフをやるぞ!」と意気込んでいたのですが、ふとプロポーザル一覧をもっと手軽に見れたらいいのにと思い、仲間内の Slack で以下の発言をしました。

f:id:yu_dotnet2004:20180717020254p:plain

そんな雑な振り方から始まり、賛同してくださった仲間と開発を始め、気づけばリリースしていたというわけです。

インフラ

サービスは GKE(Google Kubernetes Engine)上に構築しており、ゼロダウンタイムでのアップデートを実現しています。

なぜ GKE を選択したかを始め、どのような技術を利用したかについては今後記事にしていきたいと思っています。

まぁ、ペンギン村で Kubernetes入門 の輪読会を始めたのが影響しているのは間違いないでしょうか。 blog.penginmura.tech

まとめ

そんなわけでサブタイトルは「iOSDC 2018 応援サイト」として、こんな我々でもiOSDCを応援できたら「それはとっても素敵だな」という感じで作らせていただきました。(アニメネタを自重できない

幸いにも今年の iOSDC 2018 でも CfP が採択され、今回の開発メンバーである私 tobi462k-miyasaka が登壇させて頂く予定です。

Swift 4.2 はどのような進化をしているのか by Yusuke Hosonuma | プロポーザル | iOSDC Japan 2018 - fortee.jp

LLDBを最大限活用してみる。 by k_miyasaka | プロポーザル | iOSDC Japan 2018 - fortee.jp

今年も楽しい iOSDC になることを心から願っています。

We believe in iOSDC 2018.

Xcode 10 betaにおけるSource ControlとAsset Catalogの新機能のお話

f:id:kamui_project_tony:20180701181028p:plain

はじめに

ども、かむいです
気がついたら2018年も7月に突入してますね(´・ω・`)
投稿がご無沙汰だったので、先月弊社で登壇したイベントがあったので、その話について書きたいと思います

WWDC18報告会 in 弊社

dmmcj.connpass.com

当日はまさかの申込数約200人と大変注目を浴びたイベントとなりましたmm
登壇1番手として変なプレッシャーもあったり(´・ω・`)

そんな中で発表した内容がこちら
https://speakerdeck.com/tony1224/wwdc18-cherry-pick-xcode-10-beta

WWDC18 cherry-pick Xcode 10 beta

というお題目で発表しました
ただXcode絡みのテーマのセッションは複数あったので、その中から

  • Source Control Workflows in Xcode

developer.apple.com

  • Optimizing App Assets

developer.apple.com

の2つについて話しました

Source Control Workflows in Xcode

XcodeにあるSource Control機能がパワーアップしたよ!というお話
具体的には

- Git上の差分をエディタ上に表示
    - 色線で変更行, 競合行が色分けで表示される
- GitLab, Bitbucketもサポート対象に追加
- pullボタンで--rebaseオプションを設定可能に
    - チェックボックスの初期値設定はPreferenceより変更可
- Xcode上でSSHキーの登録, 更新ができるようになった

ていうもの
競合箇所は競合した行のコミッター情報とか、競合した箇所の修正対応(こちらの変更を取り消す, 競合差分を見る)とかもできたりしてより便利に
ちなみにXcodeの3大競合あるあるファイル

- .storyboard
- .xib
- .pbxproj

ではこの機能に反映されては無いようでした
ただここは素直にPull時に指摘される箇所ではあるので、その時点で解消できれば問題ありませんね

ちなみに僕のプロジェクトでは .pbxproj の競合についてはXcodeGenで対処する予定です
まだ実際に使い倒してみての選定ではないため、完全に熟知したタイミングで僕も記事を書こうと思っています

qiita.com

Optimizing For Assets

Asset Catalogの中がパワーアップしたよ!というお話
ただiOS12における新機能はセッションで話された4項目のうちの1項目のみだったので、その項目のみ話させてもらいました
(10分LTだったので意図的に省いてしまったのもありますが)

ちなみにXcodeの話ちゃうやんけってツッコミがあるのですが、Asset Catalogだしまぁいいよねて魂胆です

Session Talk1: Apple Deep Pixcel Imgae Compression

ていうのが今回iOS12から追加されました
Asset Catalogに格納されているリソースをiOS12端末にインストールする場合、これまでと違い最大20%※のサイズダウンを実現させてまっせというもの
※色や画像など、全てをAsset Catalogでまかなっていた場合による差分値なのではという推測です
(セッションでもここについては言及してませんでしたが、自分のアプリで検証済)
そのため画像のみの管理で20%のサイズダウンを発揮できるものでは無さそうです

iOSerの方々はどのあたりまでAsset Catalogを活用されてますでしょうか?

僕は個人アプリの場合

  • 色: 🙅‍♂️ColorUtil.swift とか作って定数で管理。Asset CatalogのColor SetもiOS11からしか使えないというバージョン都合もあったり
  • 動画/音源: 🙅‍♀️ Data Setで入れられるんですよね。まだ対応できてませんでした(´・ω・`)

dev.classmethod.jp

  • 画像: 🙆‍♂️ ただVector使えてなかったり解像度も2xのみだったりしてました

結論: 20%のサイズダウンは出来ずorz

なので諸々のリソースをAsset Catalogに突っ込んでいくと、今後は良いことがあるよという話でした
色はiOS10をカバーするかどうか問題が残るので、チームで相談してみても良いかもしれません

Session Talk3: Cataloging - Namespace

f:id:kamui_project_tony:20180701175919p:plain

最後にこちら発表では話せなかったネタを1つ
Swiftでは相変わらず名前空間が無いよ状態なんですが、Asset Catalog上では名前空間は使えるんですよ奥さんってのを発表されてました
R.swiftも使ってこれを活かせるとかなり便利だったので、僕のプロジェクトでもこれを活かしていく予定です

実装方法もすでにまとめられてる方がいましたので紹介させて頂きます

qiita.com

さいごに

とにもかくにも、発表疲れました(´・ω・`)
当面は勉強会で登壇予定はないものの、8-9月に行われるiOSDC2018にCfP出しました
当選されることがあれば、次回はそのあたりかなと思ってます

ただ申込数半端ないって!多すぎて締め切りのアディッショナルタイムが8時間やもん!そんなん出来ひんやん普通!

なので落ちてもリジェクトコンにすら受かるか怪しい
その場合は技術書典5に申し込んだので、そこで改めて本の形で発表したいッス

え、そこも落ちるの?(´・ω・`)
泣いちゃうよ?(´・ω・`)