時系列にそって写真でふりかえる2019年

まずは写真で時系列に振り返る(12ヶ月分振り返るものがあるとは言っていない)

1月

引っ越し(京都→東京)

転職に伴って東京へ引っ越し

旧居
新居

めっちゃ大変だった(なぜなら引っ越し前日まで荷造りをほとんどしていなかったため)
新居も2020年には退去予定……。また大変になる……。

3月

ディズニーシー

生まれて始めてディズニーシー行ってた。高専のときの同級生たちと。
学びとしてはシーだとアルコールが飲めるが飲んだあとにインディー・ジョーンズのやつとかいくとすごいぐるぐるする。

すごい異国感だった

FF14のファンフェス

2日間参加。思うところは色々あったけどすごい楽しかった。2020~2021にもまたファンフェスがあるっぽいので参加したい。

結構だいたいいいところに座ることができた

4月

技術書典にスタッフ参加した

mhidakaさんに声をかけていただいて技術書典6の当日スタッフで参加した。
まさか自分の初参戦がスタッフ参戦になるとはおもっていなかったけどこういう大規模イベントのスタッフ側になったことがなかったので学びがたくさんあった。

準備中の様子

5月

天下一キーボードわいわい会 Vol.3

天下一キーボードわいわい会 Vol.3に参加した。自作キーボードは2018年末あたりに作ったレツプリから界隈にいるけど初参戦。やっぱり技術書典もそうだったけど東京にいると人生において利点が多いことも実感した。

展示されていたなかで一番好き!ってなったキーボード

インクづくり

キーボードもそうなんだけど、自分は書くデバイスが好きで万年筆もLAMYのやつをいっぱい集めて使ってたりする。文具もインク沼とかがあったりするけど今回は生まれてはじめてインクを作った。蔵前にあるインクスタンド(https://inkstand.jp/)というお店。彼女のプレゼントに作りに行くのを目的にしてたんだけどいつの間にか自分のやつも作ってた。
ただの顔料インクだからボールペンのインクとしても使えるのでぜひ作って欲しい。おすすめコンテンツ。

作ってる様子 あまり広くなくて1度に入れる人数が決まっていて予約制
僕以外全員女性でちょっとびっくりしたけど窓際でもくもくつくった
隣は文具も一緒に打ってたり、出来合いのインクを変えたりする店が併設
インクのレシピとサンプルとかがおしゃれに展示してあって最高のお店

人生初の救急車で搬送

命に別状はなかったことだけを先に書いておく(はずかしいので)
原因としては18歳くらいからずっと痛めてる腰で、痛みには結構波があって1年の中で痛い時期とそうでない時期みたいなのが交互にやってきたりするんだけども、ある日突然うごけなくなって救急搬送されざるを得なくなった。命に別状はなかったので救急車呼ぶの恥ずかしかったけどしかたなかった……。

痛み止めを点滴している様子
入院はしなかったんだけど、搬送、搬送先の病院の面白エピソードがあるのでそのうち出したい

パスポート更新

ちょうど時期の年だったのと、Google I/Oに応募していたのであたったら残期間がギリギリだったので更新。前回は18歳だったので5年の赤パスポードだったけど今回は10年黒パスポート。5年も長かったけど次の10年後は想像できない。
結局今年は海外に行かなかったけど来年は余ってるマイルでヨーロッパあたりに行こうと思ってる。

びっくりするくらい5年で顔が太ってて泣いた

6月

Mac miniを買った

自分の持っているマシンはWindows(ほぼゲーム用)とMBP(Late2014とかで古め)だけだったけど流石にMBPがきつくなってきたので開発マシンとしてのリプレース。外で開発しなくなったのでMac miniの運用。

自作の冷却台とともに設置されるMac mini

8月

久しぶりに帰省

実家が山形で今までは関西から帰るのがめちゃくちゃ面倒(飛行機で帰ってたけど大阪から京都に引っ越したことで更に面倒に)で帰ってなかったけど東京に引っ越して新幹線1本なので帰った。

山形新幹線から見える一面の緑 帰ってきた感がすごい
実家のいっぬ
実家に帰ったら絶対行く温泉
最高なんだけど残念ながらそろそろ営業終了でいけなくなってしまう
その温泉の休憩所
今年の夏はここの休憩所でゴロゴロしながら甲子園みて最高の夏になった

P5R完成披露プレミアに行った

友人のちゃちゃさんがあたって2人までなので呼ばれてついていった。東京ミッドタウンにあるビルボードでプレミア披露会。そもそも呼ばれてる人数も少なかったから世界最速先行プレイを1時間半とかすごい贅沢だった。もう贅沢すぎて0円のイベントなのが意味わからない。ミニライブもあって最前列(というかもはや目の前)で人生で1番充実してたイベントになってしまった……。

入り口
ベルベットルーム感出てる
このために用意されたっぽいビルボードロゴ入りのアート
なんか本当にこんなオタクが来てしまってすいやせん……みたいな会場だった
ドリンクチケットいっぱいもらってオリジナルカクテル飲めた
(ドリンクチケットは使い切れなかった)

9月

iOSDC JAPAN 2019に参戦

参戦した感想も書いた
https://blog.yagi2.dev/2019/09/06/iosdc2019-day0/
https://blog.yagi2.dev/2019/09/06/iosdc2019-day1/
https://blog.yagi2.dev/2019/09/08/iosdc2019-day2/
AndroidアプリエンジニアだけどやっぱりiOS界隈の技術や事情も知りたくて東京に住んでるしと参戦。会社からチケット代出た上に土曜日分は休日出勤計上になったので完全に嬉しい。

DroidKaigiとはまた違った雰囲気の文化をもってるなあとおもった

技術書典にサークル参加

さっき4月にスタッフ参加した直後2回目の参加がサークル参加。永遠に一般参加することがないのかもしれない……。
AndroidとかJavaとかKotlinの知見などなどをまとめた合同誌を出版。
pixiv BOOTHでも販売中 -> https://torinosasami.booth.pm/items/1566359

当日のブースの様子(映ってるのは僕ではなくて他のメンバー)

クロスバイク購入

今年1番大きい買い物かもしれない。運動不足解消のためにクロスバイクを購入。BianchiのROMA3。ヘルメットやらなんやらの初期費用合わせて100k弱くらいかかってしまった。結構今でもコンスタントに乗っていていい感じに体力ついてきたのを感じる。

納車直後 我が家は1Rなので狭い
東京駅の八重洲口 東京駅周りが好きなのと家から丁度いい距離なのでよく行く
東京駅の周りその2 ばえてる
スカイツリーいくぞ!って退勤後に行ってるときの写真
イルミネーションがいい感じ あと奥の金のうんこ

11月

東京モーターショーにいった

これも東京に住んでたから気軽に来れたパターン。車もバイクも欲しくなってしまった。ZX25Rはかっこよかった……。

オンラインチケット買おうとしたら全滅してて新橋で買った様子
Z H2とZX25R
ZX25Rは250のくせに隣に並んでる1000ccと遜色ない雰囲気出してるのよすぎる

12月

社会人実業団バドミントンをみた

自分は中高大とバドミントンしてたけどなんだかんだ生観戦は初めてだった。見てると自分でもやりたくなるので人を集めてやろうかとおもったんだけど、都内で体育館を借りるハードルがめちゃくちゃ高いことに気づいて保留中……。

日本トップレベルの選手がゴロゴロいるのをみれた

まとめ

やっぱり東京に住んでいると言うだけで利点がおおかった。気軽にいろいろなイベントに行けるフットワークの軽さが持てる。

来年はもっと書けるように更にフットワークを軽くしていきたい。

今年買ってよかったものとか今年やってよかったものみたいなトピック主語の2019年まとめは別記事でまとめるぞ。

技術書典7にサークル「鳥のささみ」として出展しました。

技術書典7お疲れ様でした!直前のポストでも告知していたように、サークル「鳥のささみ」としてサークル出展を行ってきました。

このポストでは今回のサークル出展での反省点と次回以降出展を考えている方のための知見を吐き出しておこうと思います。

売り上げ

今回、頒布分を全部で42部を会場へ持ち込みましたが終了15分前(16時45分)に42部すべて売り切ることができました。

売れ残ってしまった場合、pixiv BOOTHさんで出品してレターパックなどで発送を考えていたのでそれがなくなっただけでだいぶ楽になりました。

最終的な被サークルチェック数は100でした。

単純に被サークルチェック数から考えるともう少し売れてもいいかなとは思いましたが、それも難しかったと思う(後述します)ので次回の改善点です。

現金とかんたん後払いの2種類の決済手段を用意していましたが、かんたん後払いは最終的に18件、残りはすべて現金決済でした。

かかった費用

サークル参加費:7,000円
印刷代:51,741円

これはもう見て明らかなのですが、実は今回印刷代が販売価格を上回っていました。
とはいえ1,500円で頒布するようなものでもないので本当は500円で販売したいものの1,000円にて頒布させていただきました。

印刷代だけみても売上が42部で42,000円で印刷代が51,741円だったので単純に1万弱円赤字でした。

加えてサークルテーブルで使っていたポスター立てなどはありますが、次回以降使い回せるので今回費用としては計上していません。

印刷代

印刷はキンコーズさんを使わせていただいてくるみ製本(無線綴じ製本)を行いました。

明らかにこれが今回のユースケースとはマッチしていなくて、キンコーズの方にも「もし時間が許すのであれば今から印刷所のほうが良いと思います」と言われました(時間は許してくれませんでした)。

表紙厚紙カラー印刷、50P、45部の発注で1部辺り1,150円の印刷代でした。

主な要因としてはリサーチ不足とスケジュール管理のミスです。最後の三連休最終日の16日に締め切りを設けました。
最初は日光企画さんを利用させていただく予定だったのですが、結局手軽さなどでキンコーズさんにて印刷をしました(手軽さのトレードオフがここまでデカイとは思っていませんでしたが……)。

次回はもっと余裕を持ったスケジュールにしてしっかり印刷所入稿で参加したいと思います。

一般的には半分売り上げてトントンになるくらいの価格設定が良いと言われていますが、価格設定は好みだと思います。

参加して初めてわかったこと

通りすがりの方へのアピール

サークルチェックをして頂いてた方はすっと来て見本誌パラ見(もしくは見ずに)買われていったのですが、そうでない方への訴求が難しいと感じました。

特に今回は企業からの出展ではないのにも関わらず特定の1トピックにフォーカスを当てた本ではなくて合同誌にしたので尚更難しく感じました。

個人個人の合同誌だとインパクトにかけて訴求力が下がりかつ通りすがりの方からしたら「なんだかよくわからない」という感想になってしまってコンバージョン率が悪くなってしまっていたと思います。

次回は複数人で1サークル出展するとしても1人1冊(1題材1冊)にしたほうが良いなと思いました。

合同誌というポイント

企業ではなく個人数人をあつめて合同誌にして1冊で出すというポイントも弱かったかなと思います。

結構見本誌を読んでいただけていたのですが、そこから購入につながるケースが少なく中身のインパクトが合同誌になっている影響ですべてで弱かったのかなという感想です。今回は物理本で50P、4人なので1人辺り平均して10Pちょっと。「合同誌の中の○○に興味がある」みたいな方だと「うーん気になってるトピックが10Pくらいしかないのに1,000円はなあ」みたいな気持ちになるのも頷けるな……みたいな感じです。(1つ1つのトピックはすごく面白くて読み応えはあるのですが)

まとめ

  • しっかり下調べして頒布価格より印刷代が上回ることがないようにしよう
  • 個人の合同誌はポイントとして弱い
  • でも本を作る良い経験ができるので技術書典は良いイベント
  • 次に向けて地道に書いていきます

さいごに

今回の技術書典で頒布した本の電子版をpixiv BOOTHさんにて販売しております。こちらはページカットしていない68ページのフル版をPDFとePubにて販売しております。

もし会場に来られなかった、買いそびれた方でご興味のある方はぜひお買い上げいただけると嬉しいです!

【電子版】鳥のささみ合同誌 Vol.1 – Android, Kotlin, Java に寄り添う – | 鳥のささみ
https://booth.pm/ja/items/1566359

技術書典7にサークル「鳥のささみ」として参加します

こんにちは!やぎにいです。今回は私が主催する技術書執筆サークル「鳥のささみ」が9月22日(日)に開催される技術書典7へ参加させていただくので宣伝記事です!

技術書典7

https://techbookfest.org/event/tbf07

鳥のささみはAndroid, Kotlin, Java周りの知見やTipsなどをまとめた本を執筆する技術書執筆サークルです。メンバーは私を含めて4名います。

今回、鳥のささみは い09C にて頒布させていただきます!
https://techbookfest.org/event/tbf07/circle/5686371737927680

頒布情報

今回頒布するのは1冊です。

タイトル「鳥のささみ合同誌 Vol.1 – Android, Kotlin, Java に寄り添う –」という本を頒布させていただきます。

物理本+電子版での販売となります。

内容

私はマルチプラットフォームアプリケーション開発の夢をみるか?

筆者は普段Androidアプリ開発をしており、iOS開発もやってみたいとおもいました。しかし、立ちはだかるのはStoryboardの壁……。すべてを自分のホームグラウンドでアプリ開発をしたいと夢見ました。

そこで、Kotlin Multiplatform ProjectとJetpack ComposeとSwiftUIの3つを使って、Androidアプリエンジニア(私)が夢見るマルチプラットフォームアプリ開発を語り、実際に3つを組み合わせて簡単なアプリを作る内容です。

Firebase Android SDKを使いこなす上で知っておきたいThe Tasks APIのこと

Firebase Android SDKを使っているとしばしば登場するaddOnSuccessListener、addOnFailureListener。使用する際はほとんど意識しませんが、非同期処理の実態が丁寧にラップされています。
その正体について、深く理解していきます。

基礎から始めるディジタル署名

本章はディジタル署名の基礎知識についてまとめます。

ディジタル署名は現代のインターネット通信に必要不可欠な技術であり、また昨今話題のブロックチェーン技術でもコアとして使われる技術であります。

ここではディジタル署名の簡易な実装をしながら、その考え方・ディジタル署名を支える数学について学びます。

Deep dive into ConstraintHelper

みなさん、ConstraintLayoutは使っていますか?
ConstraintLayoutは複雑なレイアウトをネストを深くせずに組むことができる上、パフォーマンスの向上にもつながるため幅広く使われるようになって来たのではないかと思います。

そのConstraintLayoutですが、2016年の登場からすでに3年が経ちバージョンも2.0になるにあたりさまざまな便利な機能が実装されてきました。追加された機能の中でもGroupやBarrierなどのHelperと呼ばれる機能は、ConstraintLayout単体では実現が難しかった動きを簡単に実装できるようにしてくれています。

しかし、この便利なConstraintHelperですが、2019年8月30日現在ドキュメントが公開されておらずソースコードを追う必要があり、あまり活用されていません。

そこで本章ではこれらのHelperを実現するConstraintHelperの実装を参考に自分で独自のHelperを実装することで、みなさんがより楽にレイアウトを組む助けになれば幸いです。

お値段

お値段は1部500円 1,000円(印刷費用が思ったより嵩んでしまったので価格を改定しております)、電子版を付属してお付けします(ダウンロードURLとパスワードを冊子内に掲載)

支払い方法

今回は現金と技術書典公式の「かんたん後払いシステム 」を使用した2種類のお支払い方法からお選びいただけます。

お釣りの用意はありますが、潤沢ではないのでかんたん後払いをご使用いただくことをオススメします。アプリをいれるだけですが、初回登録時にSMS認証が必要なので会場に訪れる前に行っておくことをおすすめします!https://blog.techbookfest.org/2019/09/18/payment/

当日技術書典7にお越しの際はぜひ「い09C」にお立ち寄りください!どうぞよろしくお願いいたします!

iOSDC JAPAN 2019 Day2 参加してきた

Day2(実質3日目)(最終日)の参加記です。
昨日まででめちゃくちゃセッション詰め込んで聞いてしまったので今日はスポンサーブースにも行くぞという心構え。

そういえば参加記とDay1のときも書いていたけど、セッションを聞きながらメモを取りつつ感想を書いていたりするのでご了承ください。

kenmazさんの「モバイル決済アプリの作り方 」

自分自身がキャッシュレス、モバイル決済に興味がある(キャッシュレス生活2018 in 京都 | やぎ小屋)ので選択。メルペイの方だった。

自分自身普段の生活ではかなりキャッシュレスに寄っていて上記にあるとおりApple Payは使い倒してるし、現金を下ろすためにATMはここ数ヶ月行ったことない感じ。Apple Payの仕組み周りも聞ける(merpayのiD決済)めちゃくちゃ貴重なセッションだと思う。

資金決済法周り、わかる。ハードルも高いしキャッシュアウトで口座振込(現金引き出し)ができない企業・サービス(資金移動業)が多いのも仕方ないよね……って気分になる。AML観点とか犯収法とかの観点でしかたないししかたないんだけどスマートになってほしいなあという気持ちはある。

KYCも郵便によるKYCが現状ほとんどで、やっぱり受け取りコストが高いのわかる〜〜って感じ。銀行系の仮想通貨交換業の企業は自社グループの銀行口座の接続でKYC完了ってのも凄い楽だけど、例えば楽天ウォレットだと楽天銀行の講座がないとみたいな形になって辛い。メルペイとかはeKYCを導入していて最初のKYCの動線がすごく良かった記憶がある。

Apple Pay便利でセキュアらしい。セキュアってのがピンと来なかったけど、Apple Payへのカード登録フローとかで生のカード番号がDPANトークンになっているっぽい。決済のフローもDPANからFPANにはトークンプロバイダーが初めて行うので実際のカード番号データのやり取りがなくセキュアということだった。

Apple Payを実現するにはApple Pay In-App Provisioningという技術があって、これを使ってメルペイの残高をiD払い(Apple Pay)できるように実現しているらしい。

コード決済、CPM(利用者がQRを出して店の人がスキャン)、MPM(利用者がQRをスキャンする)。前者は大きい店が導入する傾向があって、後者は特別な機器がいらないので中小企業が導入する傾向にある。たしかにPayPayとかは飲食店ではMPMになっているところが多い印象(コンビニとかのPayPayはCPMだけど)。

JPQRの話、各事業者での統一しようで1つのQRコードで複数の決済サービスを利用できる。まだ始まったばかりで東京にもほとんどないらしい。探してみたい。

メルペイのQRコードはEMVの仕様(IC型クレジットカードの統一規格)を使っているので海外企業との連携をやろうとしたときのハードルを低くなるようにつくってあるっぽい。すごい。

iOS13からはQRCodeGeneratorというクラスがあって、OS標準でQRコードを出力できる。凄い。AndroidだとZXingとかのライブラリを使うか自力で頑張るかみたいな形になっているのだ……。

統一店舗識別コード、国で定まっているコードらしいんだけど居酒屋で言うところのテーブル1つ1つのレベルの細かさまで振るっぽくてすごい。

MPMでの決済の偽造を防ぐ技術とかめちゃくちゃ聞きたい。正直PayPay使ってるとアプリ開発者からするとちょっと頑張ればあの画面偽造できそうな気がしてならないんだけどどうなんだろう。実際店舗の人って音が鳴るかと金額を入れてるところしか見てなくない?っていう気持ち。

既存アプリに決済機能を導入する話。LINE PayであればLINEアプリにPay機能を搭載する、メルペイならメルカリアプリにメルペイ機能を搭載していく話。
メルカリは1機能ごとにフレームワークが分かれていた(Androidでいうところもモジュールっぽい)のでスムーズに開発ができたとのこと。

基本的に各種動作確認には実機が必要らしい。Apple PayのプロビジョニングもFelicaを搭載した実機端末できしかできない。めんどうそう。

メルペイではDIでカメラモジュールのスタブ化などを行って、デバッグ時はなにかQRをスキャンしたことにするみたいなStubを作って実機じゃなくてもスムーズな開発が行えるようにしたとのこと。よさそう〜。そういえば昨日もカメラ使う系のセッションで「実機必須」って話があったけどiOSシミュレーターだとカメラ周りが大変なんだろうか。Androidのエミュレータは無駄にカメラ周りが凝っている……。

セッションを聞いてやっぱりモバイル決済系のサービスは参入ハードルがめちゃくちゃ高いなっていう気持ちになった。法律周りもそうだし、結構複雑な形(ビジネス的にも開発的にも)になってるな……っていう感想。
そうなってくると力のある大手だったり、既に金融業界に進出しているIT企業もしくは銀行系のPayが増えてくるのも凄いわかるな〜〜〜。

satoshin21さんの「iPhoneのカメラで写真撮影から現像までの技術を紐解く」

最近はめっきりカメラ持たなくなったけど昔はちょこっとだけかじっていて、もう今はスマホ(Pixel3a, iPhoneX)のカメラで撮っているのでiOSxカメラのセッションを選択してみた。

あとAndroidではカメラのAPIがCameraAPI→Camera2API→CameraXAPIという変遷をしていて非常に辛い(CameraXで内部でCamera2の辛さを吸収してくれているのでかなり良くなった)のでiOSでカメラを扱う技術に関して興味があったので。

カメラの歴史や仕組み、原理から紐解いていてすごい。カメラ・オブスクラのお話から。
色収差、ふんわりとした知識しかなかったけど講義か?!ってレベルで丁寧なお話ですごいわかりやすくて良い。

非球面レンズ、IMAGING LENS SYSTEMは2016年4月にAppleが取った特許がある。(今のiPhoneにその技術が使われているかは不明とのこと)

写真のデータ化の話。これもフィルム・銀塩カメラの時代からのお話。昔カメラをちょこちょこやってた頃はフィルムとデジタル両方持っていて、フィルムは自分で小さい暗室みたいなのやって現像したりしたのが凄い懐かしくなってしまった。

デジタルカメラでは撮像素子(イメージセンサー)がフィルムの役割をする。光を電荷に変換する光電効果で実現しているらしい。すごい。アインシュタインすごい。

iPhone Xsで使用されているイメージセンサーはSony Exmor IMX333というもの裏面照射式イメージセンサーになっているらしい。

勘違いされやすいカメラの知識(画素数=画質の良さみたいなやつ)とかシャッタースピード、F値のわかりやすく詳しい説明が入っていて、この資料普通にカメラ界隈に出ても違和感がなさそうで凄い。だいたい「F値 カメラ 意味」とかで検索すると初心者には難しかったり、たまに正しくない説明をしてるところとか普通にバチバチ出てくるので……。

冷静に考えて確かにスマホのカメラってF値を変動できる機能があるわけではなくて異なるF値のレンズをつけて、ポートレートモードではそれぞれの写真を合成していい感じに背景がぼやけてるポートレート写真が撮れるようになってるんだよな。すごい。ここらへんの技術がちょっと知りたい。

iOSでカメラ取得して、プレビューを映して写真を取る実装の簡単な流れが紹介されていたけど、流れ(デバイス取ってきて、セッションとって……)はAndroidと変わらない感じだった。コードのめんどくささもAndroidで言うところのCameraXくらいには簡単そう。
更に加えてiOSはデバイスが決まってるのでAndroidでありがちな「カメラ取得してプレビュー出したり撮影したら一部のデバイスだけで天地逆転した」みたいなことがなさそうでいいなとは思った。

シャッタースピードとかISO感度をソースコードから簡単に設定できそうな感じだった。もしかしてアプリさえ作っちゃえばバルブ撮影とかも可能なのかなという印象。柔軟性〜〜〜。

y.imajoさんの「自作して理解するリアクティブプログラミングフレームワーク」

iOS固有というよりはReactive Extensionを完全に理解するためのセッションっぽかったので選択。

Combine Framework、Reactiveの概念をSwiftのネイティブに(RxSwiftとかのライブラリではなく)導入するものらしい。WWDCで発表があったとのこと。

justからHot変換までを車輪の再発明としてやっていくと理解できる。

ライブコーディングではなくて予め用意してある動画を流しつつ、TODOをリアルタイムで潰していっていてすごくわかりやすいセッション構成になっていて感動。たしかにライブコーディングは当日吹っ飛んだりしてアクシデントになったりもするのですごく良い……。

RxSwift本家のテストをひっぱってきて、自作の車輪の再発明の方でそのテストを通すという手法めちゃくちゃ良いと思った。自分も真似したい。
既にある有名ライブラリの再発明をして実装とか仕組みを理解するというのはたまにやっていたけど、テストに困っていたのですごく為になる。

実際に実装しているところの動画のN倍速を流しながら解説→次にやることをスライドで解説→また動画……という形ですごくわかりやすかった。どうやら自作のMacアプリでスライド上にツイートを流していて面白いなという感じ。

まとめ

まさに”デベロッパーのお祭り”感が強くて本当に良かった。自分は本業としてはAndroidアプリ開発者でiOSに関する深い知識はなくて「まぁSwift読めて、読んだらある程度こういうことやっているんだなというのがわかる」程度の立場で参加したけどそれでも楽しめるセッション、そして更にその僕のiOSに関する知識を深めることのできるセッションが多くて大変有意義な時間を過ごすことができた。

今度の技術書典では深くは潜らないもののSwiftUIを使って見る試みをする部分を書いたりするので、それらが落ち着いたら本格的にiOSアプリ開発を個人でやってみようという気持ちになれてすごくテンションが高まった。(技術書典でSwiftUIを扱うからmac miniを買ったので使いましょう)。

スタッフの皆さんもありがとうございました!誰がスタッフをやっているかなんて知らずに行って知ってる顔ぶれに会えたりしてよかったです!最後の退場のハイタッチも良い雰囲気だなーと思った。

LTが結構いい感じのハードルっぽかったので技術書典にむけて現在書いているものが書き上がって、更に煮詰めることができたらそういう発表(Androidエンジニアが喋るiOSとAndroidのマルチプラットフォームアプリ開発的なやつ)もチャレンジしたいなーと思えた。頑張っていきましょう。

iOSDC JAPAN 2019 Day1 参加してきた

1日目(実質2日目)の参加記です。

オープニング

オープニング前にかかってたミュージックがよかった。朝だけど強制的にヴァイブスがアゲアゲ。会場ついたらオレンジジュースとかドーナツが配布されてて朝ごはん提供いいなーって感じ(ダイエット中なのでミネラルウォーターだけもらいました)

iOSDCは初参加で、今まではTwitter経由でいろいろな情報しか見ていなかったので、緒方恵美さんと三石琴乃さんのオープニングムービーだったりスポンサー紹介ムービーを生で見れてアニメ・声優オタクとしてはめちゃくちゃ感動してしまった。自社の名前を読み上げを聞きたい。

繰り返し「コミュニケーションの場」というところが強調されたり、企画自体もそういうところにフォーカスがあたっている形になっていて凄いいいな〜と思った。僕もこうやってブログ書いたりフィードバックしてコミュニティに対してアプローチしていくぞという気持ち。

しもとりさんの「色の難しい話に負けない体づくり60分 」

この時間帯のセッション、いくつか聞きたいのがあったけども色のセンスが絶望的(自覚して4年目)なので聞きに来た。
自分でアプリを作るときとかにもmaterial.ioのカラーツール使ってメイン色、差し色を決定してるけどメイン色のチョイスからして絶望的で泣いちゃっていたので天のセッションという感じ。

セッションの進め方がしっかりしていて、セッションの最初の方に登場していて全然わからなかったやつが後々再登場してそのときはわかる!みたいな構成でめちゃくちゃ聞いていて理解が進んだ。

錐体細胞の話とかは大学とかの講義で聞いた記憶はあって(もう頭から抜けているが)そういう話がこういうところにつながってくるのか〜という感想。

”色”と一文字で表現してもそもそも光の三原色だと表現できない色とか、人間の色に対する反応とか、色覚異常とか、健常だとしても人によって若干の色の見え方の違いが発生するとか考えることがめちゃくちゃ多いなという感じ。色を自在に操れるデザイナーさんすごい。

僕も人間に優しい色選択、UIデザインができるようになるぞ。

僕もダークモード派なので最近のダークモードに押し進んでいくAndroid/iOSの動きは嬉しい(実装するのはあんまりうれしくない)。

shizさんの「Swiftクリーンコードアドベンチャー ~日々の苦悩を乗り越え、確かな選択をするために~ 」

機会的にはSwiftのコードを読むことが多いのでコードの世界を探索する際の足がかりを得られればと思って聞くことに。

Protocolね、はいはいJavaでいうところのInterfaceみたいなやつでしょみたいな認識で聞きに行けてよかった。

現状の問題の抽出を行うときに具体的な部分での抽出をするのではなくて、ジェネリックな形で抽出するという観点は本当にそうだと思った。セッション全体としてそのままAndroid/Kotlin(Java)に言えるようなセッションでとても為になる。具体的なSwiftのコードがバババっと出てくると理解速度が落ちてしまったけど後でスライドもう一度見て再キャッチアップしたい。

読みやすさ、クリーンさというのはそもそもどういうことなのだろう……みたいなことをセッション中にずっと頭でぐるぐる考えてしまった。確かに共通化できるところはバシバシGenericsで汎用型にすればコードの記述量とかDRY的にすごくよくみえるけど、実際それをコードリーディングするときに読みやすいかと言われると……みたいな感じ。

日向強さんの「BLEでiOS/Android間でそこそこ大きなサイズのデータ通信を実現する (L2CAPもあるよ) 」

単純に手法にめちゃくちゃ興味があって選択。簡単にOSをまたいでデータをやり取り(モバイルデータ使わずに)したいなと思うことはままあるけどどうやって実装するかまでは考えたことがなかった。

L2CAP、存在を知ってたけどAndroidは10(Q)からしか使えないのが衝撃。そういうのってAndroidのほうが早いイメージあったけどデバイスごとに云々みたいな影響なのかな……。

サンプルのコードがiOSとAndroidを比較して出してくれたり、実装の流れもそれぞれのOSで説明してくれていてまさに僕みたいな人だとすごくわかりやすいセッションになっていた。AndroidのL2CAPのSocketはそのままJavaのSocket感がすごかった。

往々にしてこういう低レイヤーに近い部分の技術はドキュメントが宛にならなくて罠がめちゃくちゃあるんだよな……ってのを再実感させられた。そういう点でこのセッションはBLE使うのであればかなりそういう罠に落ちるのを防げるのでめちゃくちゃ良いセッションだと感じた。

このセッションだけじゃなくてiOSDCの数セッション聞いてて思ったのがAppleの公式ドキュメントって詳細書いてなかったり「No overview available.」が多すぎない?iOSアプリ開発者ってすごいんだな……。

satoshi0212さんの「クロマキー合成を使い透過動画をAR空間に表示する 」

純粋にオタク心がくすぐられて選択。1年くらい前からAR空間になにかしらを表示するっていうのが興味としてあって、3Dオブジェクトだったり……みたいなのをやったりしたのでそれの延長の興味。

リアルタイムでクロマキー合成の加工をやる形だったのでパフォーマンス的にどうなんだろうと思ってたけど全然問題ない形のデモをされていてびっくり。

AR空間にとりあえず動画を表示するだけならそこまで深い知識がなくともシュッと実装できそうなイメージ。裏側から見るとちゃんと裏側になるように出せるプロパティがあるらしく、それを使って面白いことできそうだなーと思ったりした。

WebRTC経由で映像をクロマキー合成しつつAR空間にほぼリアルタイムで出すデモをやっていてアツかった!未来館めっちゃある!!!!satoshi0212さんも仰ってたけどリモート会議で相手の人をAR空間に出すとかっていうそういうの絶対来るでしょ……最高。みたいな気持ちでいっぱい。電脳コイルだったりそういうのが好きで育ってきたので早くそういう未来を作っていきたい。

純粋に動画だけでなく、普通にAR空間にバチバチにViewを表示したりしていて未来はこういう形で広告とかが見れるのかなあみたいな気持ちになった。

まさにここらへんを想像して1人でそわそわしてたけど最後にセッションでもまさにこれが紹介されててゾワッとした。やっぱこういう世界好きなんですよね……。

LT

Aでずっと聞いてた。1番面白かったのはSwiftでファミコンエミュレータを作る話。僕もKotlinでファミコンエミュレータのHello, Worldまでやったことがあるのでめっちゃ面白かった。確かにSwitfは固定長整数型あるのでByte処理がすごく楽だな~ってのをサンプルコード見ながら思った。結構マスクして……みたいな処理を書きまくった記憶がある。またKotlinで1からやりたいなって気持ちになった。

まとめ

今日もめっちゃよかった。完全に自分の興味ドリブンでセッションを選択できて知識の海に浸れて気持ちよかった……。

DroidKaigiとかだとやっぱり結構興味よりも「いや、これちょうど今の実務で……」みたいな考えになって聞きに行くみたいなのはどうしても発生しちゃって動画公開を待つ……!みたいなのが多かったのですごく新鮮。

明日も楽しむぞ!

iOSDC JAPAN 2019 Day0 前夜祭に参加してきた

Androidアプリ開発を生業にしている僕が、iOSDCに参加してきました。Day0編。

オープニング前

  • 初めての早稲田大学
  • 西早稲田駅からどういけばいいのか1ミリもわからず迷子になった。
  • 無事ついた
  • 前夜祭でそんなに人がいないからなのかチェックインがスムーズで体験がよかった
  • もらえるバッグがめっちゃいい感じ(手持ちも肩掛けもできる)
  • セッション部屋入るか〜って思ったらアルコールの配給があった(助かる)

FromAtomさんの「スクリーン配信機能の実装が大変だったので知見をお伝えします」

Vのオタクとかやってたり自分も美少女になりたい〜〜〜って思ってるとよくMirrativとかそういうアプリ入れているとiOSの画面キャプチャボタンをForceTouchするとなんか簡単に配信できて感動していたのでどういう実装をするとこんなに簡単になるのかが興味があった。

実際セッションを聞いた限りだと、実装に関してはすごく簡単にできそう(ハマりどころはめちゃくちゃ多そう……)でiOSしゅごいな〜〜〜ってなった。AndroidだとそもそもOSでスクリーンレコードをする機能みたいなのが基本的にはなくて(HuaweiだったかはカスタムされているROMでその機能が入っていたりする)録画すらめんどくさいので本当に羨ましいと思った。

僕も恩恵にのっかって美少女Vの者になりたい。

ようせいさんの「GoogleSpeechToTextを活用して音声を動画にした話 」

Radiotalkさんのアプリは日常から使っていて、テロップ動画を作る話だった。自分もGoogleのSpeech-To-Textを使ったことがあるんだけど結構すごい精度に感動したのを覚えてる。

音声のラジオを文字起こししてテロップ動画にするっていうアイデア自体が凄いいいと思っていて、Twitterとかを見てるときって音を出せない状況とかのことが多くてそういうときに文字起こしされてる動画ってかなり重宝してたりして凄いいいアプローチだな〜〜〜って思った。

GoogleのSpeech-To-Textを使ってテロップ動画にするっていう本質の部分は結構登場してくるクラスが多くてめちゃくちゃ大変そうな感じだった。Androidでも動画とか音声を扱って編集するっての簡単じゃないのでめっちゃわかる……。

本質的な話の部分もそうだったんだけど、テロップ動画編集画面のUI/UXがすっごく良さそうだった。そのUIと相まってSpeech-To-Textで文字起こしされた文字が既に入っていて修正するとか少しの操作だけで動画が完成するっていう手軽さに驚いてしまった。インスタのストーリーズとかもそうだけど、現代だととにかくユーザーのコストを減らしてアウトプットまで持っていけるかみたいなのはめっちゃ大事だな〜〜〜〜って思った。複雑だったり、面倒くさいとユーザーはすぐに離脱する。僕も大体めんどくせって思ったらその瞬間にアプリキルするし。

技術的な話も面白かったけどそういう意味でUXな部分でめちゃくちゃ感激するセッションだった。

Android版はまだ開発中らしいので完成したらめっちゃ触りたい。

まとめ

たのしかった。
表面のうっすらとした知識とかコードを読むことはできるけどプライベートでiOSアプリの開発をしてるわけでもないのでこういう場所に来るとすべてが新しい知識で凄い新鮮で楽しい。Day1もたのしみ。(Day1のオープニングを待ちながら書き上げました)

技術書典7にサークル参加します

やぎにいです。今回技術書典7に初めてサークル参加するのでそれについて書かせてください。

サークル名は「鳥のささみ」場所は「い09C」です。
https://techbookfest.org/event/tbf07/circle/5686371737927680

サークルページのジャンル詳細にあるとおり、Android/Kotlin/Javaあたりの知見、Tipsなどを数人で書いて1冊出す予定です。

執筆者は現在4人を予定していて、各々1,2トピックを書いて合同誌になる予定です。(進捗がんばります)

4人とも現状最前線でAndroidアプリ開発をしているのできっと良いものが書き上がるのではないかと思っています。

まだ全員分が揃っていないので、自分自身が書こうとしているトピックを紹介しておきます。

1. Kotlin MPP+SwiftUI+Jetpack ComposeでAndroidアプリ開発者がマルチプラットフォームアプリ開発のユートピアを夢見た話(執筆中)

Kotlin MPPを使ってiOS, Androidアプリのロジック部をKotlin Nativeで書く話を聞いてだいぶ時間が立ちましたが、今年のWWDC、Google I/OでそれぞれSwiftUI, Jetpack ComposeとStoryboardやLayout XMLではなくてSwift, KotlinでUIを組むようなものが紹介されました。

自分はAndroidアプリ開発者をやっていて、iOSアプリを見るときにStoryboardを見るのがすごく難しくて何度もXMLでConstraintLayoutとかで書きたい……と思うことがありました。

ここでSwiftUIが登場してきたので、SwiftからUIを組むのであればだいぶハードルが下がるなと思いXcodeのBeta版で触ってみたところ非常に感触が良かったです。

すべてをSwift, Kotlinにおさめてマルチプラットフォームアプリ開発を夢見たので実際に僕が考える「マルチプラットフォームアプリ開発について」から実際にKotlin MPP+SwiftUI+Jetpack Composeを使ってHello, Worldするところまで(余裕があればもっと踏み込みます)を書いていきます。

前半はちょっとポエム要素が強めで、後半は実際にソースコード等を紹介しながら実際に動かしていく流れになる予定です。

2. Go言語を使ってAndroid端末のlocalhostで動くAPIサーバーを作ってサクッとデバッグする話

これは実際に自分が仕事で行っていた話をまとめる予定です。マルチプラットフォーム話を書いて余裕があったら書く予定です。

受託などの案件をやっていると、APIの定義はあるもののStaging環境に全然デプロイされない(並行してAPI側も開発しているなど)状況が続いてアプリ開発のスピードが落ちてしまうことがあります。

もちろんここでいい感じの開発現場であればサーバー側のコードを引っ張ってきてDockerでどっかーんして自分で手を加えることもできるとは思いますが、手元にあるのはAPIの要件定義書のみ……!

そこで僕はGo言語を使ってAndroidのlocalhostで動くAPIサーバーを作って、アプリからlocalhostを参照して、静的なjsonを受け取って動作の確認を行って実際にAPIがデプロイされるまでつなぐということをしていました。

この話をちょろっとすると結構面白くてウケがいい(実用性はおいといて)のでせっかくなので本にしてみようと思っています。

僕は以上2件(進捗によっては1件)を執筆しようと思っています。

ぜひ当日は「い09C」にお越しください!
開催日直前にまた支払い方法や値段などを紹介できればと思います。

また、励みになるので興味のある方はぜひチェックリストに追加してください!
https://techbookfest.org/event/tbf07/circle/5686371737927680

よろしくおねがいします!(執筆頑張ります!)

あたらしくなりまして

生まれて初めてブログを開設したときはさくらのレンタルサーバーにWordPressを構築して数年間運用していたのを思い出しました。

その後、ちょっと踏ん張ってMiddleman+AWS+CircleCIでブログの環境を構築してMarkdownファイルを書いてGitHubにPushすればCircleCIが動いてビルドして静的なHTMLファイルがS3にアップロードされて、CloudFrontにのっかって皆様の手元にHTTPSでお届けする環境を運用していました。

そしてそれ以来となるWordPressに戻ってくることとなりました。なぜかというのを箇条書しちゃうと。

  • 自分にはメンテナンスをするコストがでかすぎた
  • すべてWeb上で完結したかった
  • Chromebookを買ったのでローカルでMiddlemanを動かしてプレビューしたりするのが大変になった

という3点が理由です。 自分が今まで使っていたMiddlemanもバージョンが古かったり、メンテするにもRubyやSlimなどの知識が薄くそこまでやるモチベーションがなかったのが大きいです。

Chromebookを最近買ったのでWeb上でブログポストをかけるというのがすごく大きく移行に踏み切りました。

ただやっぱりMarkdownで書けるのはすごい良かったし、WordPressのエディターが数年見ないうちに死ぬほど使いづらくなっているのでここはプラグインとかでよしなにしたいです。

今まで書いていたブログポストを本当は自力でこっちのブログに移そうかと思ったのですが1記事目で心折れました。

そのかわりに https://archive-blog.yagi2.devというドメインに移して残しておくことにしました。

本当はホスト名を変えるのは良くないのですが、まぁ1からやるか……みたいな気持ちが強かったので思い切ってしまいました。

というわけで、新生やぎ小屋よろしくおねがいします。 これですごく書きやすくなったのでちゃんとポストしていきたい気持ちです。

まずは技術書典7にサークル参加するのでそっちの執筆をしますが、参加記や参加する前にサークルの紹介なども書きたいですね。

fun yagi2() {
  println("はろー new やぎ小屋")
}