CyberAgentにエンジニアとして新卒入社して1年が経ちました。
僕は今、 OPENREC.tvのAndroidアプリ開発を担当しています。
この1年、kotlinを導入したり、MVCからMVVMにリアーキテクチャしたり、デザインリニューアルをリリースしたりと、非常に忙しく動き回っていました。
そして非常にありがたいことに、技術者による技術者のための社内表彰「CA BASE AWARD 2020」において、ベストルーキー賞を頂きました。
一方で、僕が何をやっていたのか、多くの人はあまり知らないと思い、また今後自分が見返すためにも、この1年間やってきたことをまとめたいともいます。
先日(2020/3/20)、リクルートのHOT PEPPER Beautyが主催するAndroidリファクタリングコンテストに参加してきました。
出されたコードを3人1チームで半日ほどリファクタリングしていくコンテストで、ありがたいことに僕たちのチームは審査委員賞を頂きました。
今回は、そこで行ったリファクタ、学んだこと等をまとめたいと思います。
複雑化するmobileアプリにおいて、アプリ内の状態をどう整合性を保って保持するかという議論は非常に重要です。
特に、画面を跨いだときにどうデータを同期するかは難しく、少し間違えば結合度が高く、メンテナンス性が低いコードになりがちです。
例えば、twitterのような一覧画面と詳細がある場合に、詳細画面で行った「いいね」を、どうツイート一覧画面に反映させるかという問題です。
いわゆる「いいねボタン問題」と呼ばれているものです。
最近では、OR MapperのRoomにて、内部の状態をLiveDataやFlowで出力することで、解消しているケースを多く見かける気がします
一方、永続化する必要がない、一部のデータのみをやり取りしたい等の理由で、この手法を採用できないケースも多々あると思います。
今回は、roomを使わず、kotlin coroutines flowをふんだん使って、柔軟に対応できる設計を紹介したいと思います。
お久しぶりです。
この1年ほどjava100%のandroidアプリをkotlin化していくというお仕事をしていました。
javaとkotlinは非常に相性が良く、段階的な移行を大きな問題なく進めることが出来ました。
一方で、一番苦労した点は肥大化したBaseActivityの移行です。
BaseActivityは様々な要因から肥大化しがちです。
今回は、実務で実際に行ったBaseAdtivityの整理方法についてまとめたいと思います。
最近流行りのreactやvueなどSPAでWebアプリを作ると、サーバサイドレンダリング(SSR)をすべきか悩みます。
Googleのクローラはjavascriptを割ときちんとレンダリングしてくれるため、あまり意識なくてもいいようになりました。
一方、titleやogpなどのmetaタグをjavascriptで書き換えている場合、twitterやslackで共有した際にカードが正しく表示されない問題は依然残されています。
metaタグだけをサーバサイドレンダリングすることも可能ですが、今回はprerender.ioを使い、クローラに向けてだけレンダリング済みのHTMLを返すようにしたいと思います。
この記事はCyberAgent 19新卒 エンジニア Advent Calendar 2018の24日目の記事です。
AndroidとiOSのアプリを両方開発するのはめんどくさいということで、react nativeやflutterといったマルチプラットフォームのフレームワークが充実してきています。
今回、flutter + MVVM + Clean Architecture + rxdart で簡単なAndroid、iOSアプリを開発したので、その際に気をつけた点等を共有しようと思います。
この記事はDigital Nature Advent Calendar 2018の23日目の記事です。
Digital Nature Groupは落合陽一准教授が率いる筑波大学の研究室です。
当然ですが、研究成果やイベント情報などを、公式Webサイトで発信しています。
このwebサイトは2017年度まで、外部の企業に依頼して管理してもらっていましたが、契約終了に基づき2018年度から学生で管理することになりました。
今回は、その移行の際に行ったことや注意した点を書いておこうと思います。
この記事はmast Another Advent Calendar 2018の22日目の記事です。
SONYでもNikonでもなく、EOS Rを選んだ理由を話します。