hunachi’s diary

Android studio でお勉強してます。

Kosenconf in Tokyo 2018に参加した.

こんにちは,ふなちです!

今日(7/17)はレポートを書き上げていたら睡眠時間が1時間になってしまったので,ちょっと眠いです.(高専生の檻)

 

はじめに

今回は,

kosenconf.tokyo

に参加しました.

 

私は福岡に住んでおり,普段は高専カンファに参加できない身です(> <。)

けど今回は,「参加費支援制度」という素晴らしい制度のおかげで今回は参加することができました.

運営のみなさま,スポンサーの企業の方々,支援してくださった方々,本当にありがとうございます🙏

 

発表の感想

※私が聞いた発表のみの感想となります.

実践!イラストでわかりやすく表現する技術 by 湊川あい

docs.google.com

さすが,とても分かりやすい発表で,図解の方法を学べました.

私も昔社会の時間は暇だったので処刑されたり暗殺された人の生首を描いていたのを思い出しました!(真剣に絵を学ばなかったのもあり,絵心0ですが絵を書くのは好きだったはずです.)

図解の方法の

  1. つまづいた事をメモ
  2. 過去の自分に答えてあげる
  3. 表現する
  4. 発信する

また何かを説明する際には

  • 抽象化(つまり...)
  • 実例(こんな事...)
  • 具体化(例えば)
  • 比喩(...みたいなものだ)

を考えながら話すべきというのはとても勉強になりました.

いつも,語彙力が足りず,説明がうまくいかなかったりするのに加え,何からどう説明していいかわからなくなったりなど良くあるので,これからは参考にさせて頂きたいです.

「べき等性」についての図解?(漫画)を描いた.

f:id:hanahanahunachi:20180717155319j:plain

ちょっとだけグラフィックコーディング的な事してみた.

f:id:hanahanahunachi:20180717155316j:plain

(絵も字も汚い.)

余談ですが,あいさんの本はこの前の技術書店4で買わせていただきました.ありがとうございます.

 

ここまで書いて気づいたんですが,いつものこの調子のまま進めて行くとn日かかりそうなので ここからは簡素に感想だけ書いていきたいと思います!(申し訳ないです.)

Dive into the community by うなすけ

scrapbox.io

今の情勢は技術の習得や習熟、もしくは新しい情報の収集において、今やインターネット上の情報を集めるだけでも十分達成できるけれど,コミュニティってとても大切だ.という事を今一度確認できました.

私もdroid grilsというコミュニティに参加させていただいてるのですが,優しい人ばかりでイベントでは沢山学ばせて頂けており最高です.(まだイベント一回しか参加できてませんが,ヾ(。>д<)シ )

また,個人的には尊敬している方や同じ趣味の方と出会う事ができモチベーションが上がるので,イベントやコミュニティに参加したりしてます(?)

 

写真を半自動でアップロードしたい俺たちは by どくぴー

speakerdeck.com

いつも通り勢いのある発表で面白かったです.(寝不足なのにすごいです.)

カメラ沼,ハマると抜けなくなりそう...話変わるけどいつかプロフィール用の写真撮ってもらいたいです!

frash air + Google Photos API + Android 端末(Android Thingsだとなおgood)

だけで自動アップロードができるんですね,というかこれを一日もかからず実装してるのが凄いです...

Google Photos API は積極的に使っていきたいなぁと思いました.

Android Things ver.も見てみたいです!

Interpreting Deep Learning from a Biological Perspective by とちくじ

ディープラーニング(脳)の話でした.

 

全然知識のない分野なので詳しい感想は言えないのですが,

ディープラーニングは脳か?→NO!脳の仕組みを利用して,便利なものを作るという事をしてるだけで,脳と同じ仕組みであるかを確認する手立てがないので,脳を作ることは今後もできない.」

「今のメジャーのディープラーニングの方法はGoogleとかの大手に食いつぶされるので,今からは新しい手法について考えないとダメ!」

ということを学べました.(間違えてたら指摘お願いします.)

かなり詳しい内容にも関わらず分かりやすい発表だったので,ディープラーニングについてちょっと興味を持つことができました.

今すぐ始める社会とつながるMake by きゅんくん

KYUN_KUN Web | Robotics Fashion Creator

モデル×ファッションクリエイター×エンジニアかぁ.

しかも中学生で電子工作して,その時からの夢を叶えてるっていうのに尊敬します.

ファッションにロボット(わざと動くだけ)を取り入れるっていう発想を生み出すのも凄いです.

https://3.bp.blogspot.com/-3jE8fwqqPMM/UZmB6g0YQeI/AAAAAAAATXQ/sWpkbsdYhyU/s800/angel.png

 

 

高専ラノベのつくりかた by 藍月要

「新コーナー コウセンミミッミ」,めっちゃ面白かったです.

こんなに面白い発表見たの初めてかもしれないです.内輪ネタをどうやって使うといいか身を持って学べました.

ただ,PC使ってレポートがかけるなんて,なんて進んだ高専なんだ!!って思いました.(羨ましい)

余談:

そして私たちは東京から帰った次の日の朝提出のレポートに追われる事になる...

本当に似たような状況になって睡眠時間1時間になったのですが,笑えなかったです.(手書き回路図は書いていたのでまだ良かったけど.)

 このレポの続き+準備レポを手書きで書いた.

この後もどうやって異世界物理の本を書いたのか,楽しく知ることができた.

一つ一つのシーンをどう展開していくか,考える事がどれだけ大変かが分かった.答えが見つからないかもしれない物語を考えてるのにどんどん締め切りが迫ってくるなんて...怖い!!本当に尊敬です.

ガルパンも戦車*JKもギャップが良いところ!

 確かにその通りじゃん!って感じだった.(笑った.)

〜他にも面白かったスライド等沢山あるのですが長くなるので省略です〜

すべての技術はメガネに通ず by 福野泰介

jig.jp

の会長さん!

めがね、肖像権とプライバシーの問題とかさえどうにかなれば今すぐにでも普及しそうなのでかけられる日が楽しみです!

スマホ、邪魔ですもん.

3年前まで,PCを持っていなかったし,あまり触れてもいなかったのでイチゴジャムとか欲しかったなぁ.

けど,私は触り始めた年よりもその人の今からのやる気次第で全ては決まるって信じてます!(※これは自分がプログラミングに触れ始めたのが2年前だからというのは内緒です.)

懇談会の時にAR(スマホを取り付けるだけのもの!凄い!)を貸してもらったのですが,良かったです!簡単に自分でARアプリ?が作れるとの事だったのでいつかやって見たいです.

ビッグデータディープラーニングでレコメンド by しゅーたー

リコメンドのディープラーニング はどうやってしているか?というお話.

髪が長いとか,そういった属性の特徴や,描いた人(イラストレーターさん)を学習して,リコメンドする予定らしい.(今は前者だけ?)

絵描きさんは無限といるし似たような絵を書く人だって沢山いるので書いた人を学んで書いた人を当てるのって相当難しいと思うので凄いです.

 ネタがわからなかった!w

イデアをつくる技術 by じぐそう

色々大変でもどうにかな事をっlオススメのツールとかを知ることができた発表だった.

また,kosenconfってこんなに沢山あってたって事を改めて感じることができた.

 なんども同じこというやつたまにしてしまうので気をつけたい...

最後焦ってLTを回していたけど,それでも大体の話の内容は理解できたので上手だなぁって感心してた.

 

Flutterで"""圧倒的成果"""を生み出せ by にしこりさぶろ〜

Flutter,早いし素晴らしいと思う.実際は業務でどれくらい使われてるんだろう?

Vtuberのつくりかた ~初心者がBlenderモデリング~ by 越乃いぶき

コンデンサ君,可愛かった.さすが高専生って感じの発想だ.

Vtuberになってみた! by Hunachi

パワポ何年触ってんだって感じです.ごめんなさい.タイトル詐欺です.やっぱりAndroidアプリ開発が好きな気持ちが抑えきれませんでした(?)
LTを生で見てた人は知ってると思いますが,色々あったので今度YouTubeにでもリベンジした動画をアップします.(もちろんVtuber付き.)
その時でも何か一言感想を頂けると嬉しいです!(今後に向けて参考にしたいので.)

 バーチャル美少女受肉しよう by とぐち 

Unityを使ってプレゼンという発想がなかったので,凄いとおもいました!いつか真似させて頂くかもしれないです.

高専ロボコンの開発現場に情報共有ツールを入れた話 by うに

知らなかったので今度触ってみたいです.

フィルムで写真をとってみた!〜SNS時代のフィルム撮影ワークフロー〜 by あらまきりん

写真が綺麗でした.カメラ沼といい,フィルム沼といい深そうです.

デザインの二面性 by ちげ

スライドからして素晴らしいデザイン...デザイナーと言っても一概に見た目だけを考える訳ではない.というの大事.

Ruby Hack Challenge Challenge by 五十嵐邦明

スライドとコンパイルを並行してしていたのが記憶に残ってます.LTだからこそ見れる光景って感じでした.

部内の競プロ用ジャッジの話 by gedorinku

t.co

昔の部内ジャッチから見た目,機能,セキュリティ面においてクオリティが上がっており凄い.

LTと関係ない話:実装してるのをずっと見てるけど,ここまでながく一つの開発が続けられるの凄いなぁって思います.デザイン以外,なんでもできるイメージがあるので彼はもっと認められるべきでは?みたいな事をいつも思っています.

専攻科卒業から7年でVR起業した軌跡(ショート版) by 野生の男

 凄すぎる人でした.特に,東京ゲームショウに出るために起業するというのに驚きました.
 

その他の感想

ご飯は昼も夜も美味しかった.懇談会では沢山の方に声をかけていただきお話させていただけて嬉しかったです.

f:id:hanahanahunachi:20180718003657j:plain

f:id:hanahanahunachi:20180718003654j:plain

 

LTもさせて貰え,とても楽しかったです.Twitterでの皆さんの反応をみさせていただいたのですが,「頑張って」等の声があって嬉しかったです.

またこういう機会があったら参加したいです.
 
 
余談ですが,Twitterのフォロワー&フォロー数が30人くらい増えて驚いた.人との繋がりが増えるというのはいい事だと思うので,嬉しいです. 
また今回沢山喋らせていただいて気づいたのですが,最近オタク度が増しているみたいです.自分の興味のある事だともの凄いスピードで喋り出すのにそれ以外だと別に楽しく聞いているのに「凄い」「へー」「そうなんですね」くらいしか語彙が喋れてなくて辛いです.コミュニケーション能力をもっと高めたい...,🐕
 
ここまで読んで下さった方ありがとうございました.何か間違え,感想等ありましたらTwitterにでもリプ飛ばしてくださるとありがたいです.

せっかくの誕生日なのでここ半年の振り返り!

おやすみなさい,ふなちです!

 注意:これは私が将来,このころの自分がしたことを忘れてしまった時用に書いています. 

ああああ永遠の17歳のはずが,何故か19歳になってしまいました.

かといって友達みたいに車の免許持ってるわけでもないし,お酒もまだ飲めないし,なんかなぁ〜って感じです.

ただ,JKの年齢ではなくなったので前より一人でうろちょろできるようになりました!(まあ17歳でロンドン一人でフラフラ歩いてたのであまり進化してない感じがしますが.)

あと最近,好き勝手にしすぎたせいか親が出資はしてくれるものの完全に見放してくれるようになりました.感謝しかないです.

というわけで,とりあえず,ここまで生きて来られた事に感謝しながら色々あった半年間の振り返りをしたいと思います!

はじめに

12月までの振り返りは,

hanahanahunachi.hatenablog.com

にあるので書かないです.

 

全体的な感想から言うと,なんか年を取るに連れて時間が短く感じるようになってきました...多分自分のしたい事をするようになったからだと思いますが.

振り返り

1月

部内ハッカソンを開催してみる.参加人数は少なかったものの,面白いものを作って

きてくれた人が多くて感激だった.私は,Google Homeで頭おかしいもの作った.

hanahanahunachi.hatenablog.com

 

あとは確か,この頃に応募したチームラボさんのインターンの合格通知がきて凄いはしゃいだ記憶がある.

こんな私を受からせてくれたことに感謝しかない.

2月

何もブログ書いてないから思い出せないところだった.

確か,2月は期末試験中にも関わらず,

GitHub - Hunachi/GitHunaClient: スパケッティコードなので,読まない方がお得です.

を書いてた気がする.

kodein入門をしたつもりだったけど,実際のところComponentとか上手く使えてないしlifecycle持っているものまでinjectするものだと思ってたし理解できてないなぁ.

あとは,DroidKaigiに行けないのが悲しすぎてTwitterのTLが見れない時期があった.(精神年齢3歳)  

学校では無事進級ができる事が決まった.

3月

インターンに行って色んなイベントに参加して色んな事を学んだ.

hanahanahunachi.hatenablog.com

hanahanahunachi.hatenablog.com

hanahanahunachi.hatenablog.com

4月

3月に行けなかったdroid girlsのリベンジもかねて平凡な金土日に東京に向かって飛び立った.(金曜の授業すっぽかしたけど中間試験で席次1位だったので免除案件.)

この旅行を企画できたのはnamikiさん(droid girlsの中の方)が早めに開催日を告知してくれたからです.しかも社内見学やランチにまで誘って頂いて感謝しかないです!お陰で人生でまたとないだろう,いい経験ができました.

hanahanahunachi.hatenablog.com

hanahanahunachi.hatenablog.com

↑ 4月にした事に関するブログ.

他にも,CAさんのプロの方々とランチさせて頂いたり(緊張で頭回らず死にそうになったけど楽しかったです!),オフィス見学をさせて貰ったり,BCU30に参加したり...後は,一番の目的であったdroid girlsに参加させて頂いたりしました.

droidgirls.connpass.com

以前potetotipsでどくぴー先輩が話していた内容をもっと詳しく学べて良かった.実際に手を動かしながら分からなかったらプロの方々に聞けるという体験は凄く良かった.

尊敬している,あんざいさんとお話できてめっちゃ嬉しかった.

 

他に福岡に帰ってきてから,

mercari.connpass.com

に参加した.初めて地元での勉強会に参加した.効率化,自動化の話が多かったのでiOSの人の話もある程度理解する事ができて楽しめたし,お勉強になった.

mhidakaさんと沢山お話する事ができて,楽しかった.行動力のある人にはとても憧れる.

 

余談(不快と感じる人が多かったら消去します.):被害妄想かもしれないけど,この頃から特に分野は違えど私より出来る人達から「社会性があっていいな」とか,「承認欲求を満たしたいだけでしょ.」とか言われるようになって,その度に「だったら君も勉強会に行けばいいよ!楽しいし自分のやってることにメリハリがつくしやる気も出るよ!」的な返事をしてたけど「自分は社会性ないし無理」と言われちゃったりして自分にとっては、承認される程の実力なんてあるわけないし,ただやりたい事行きたい所に行ったりしてちょっとでも成長しようとしてるだけだったので,よく分からないけど何か悪い事をしているような気持ちになって悲しくなる事がちょっとあった.

 

月末に疲れによるものか分からないけど熱風邪を引いた.

5月

風邪でゴールデンウィーク中ずっと倒れてた.
復活してからは本を読んだり,まだ積み本の量は減ってないけど(不真面目)
↓を作った.
 

インターン先が決まったのは5月後半だったかな,色々わがまま言って人事さん達には迷惑をおかけしました.ごめんなさい.

夏休みは6週間しかなかったので,結局4週間CyberAgentさんに,2週間Wantedly社さんにお世話になることが決まった.

6月

定期試験最終日を終え,hakata.apk でpaging の話をさせてもらった.

https://speakerdeck.com/hunachi/paging-libraryhabian-li-dazo?slide=2

色んな方に支えられてdemoを成功させる事が出来て嬉しかった.

話し下手なの治したいです.

 

その後はVtuber 作ったり,初めてのコード書くバイトさせてもらった以外何もしてない気がする.

↓色々絵を書いたりした.(コンテンツ力がない&声が可愛くない&色々時間があまりないのでVtuberにはなれてないけど)

 

f:id:hanahanahunachi:20180703225657p:plain

f:id:hanahanahunachi:20180703225703p:plain

 

 7月 

 夏風邪を引いて学校を休んだ.

吐き気に襲われて飲み物が一切飲めず(胃も空になっていた為),寮で一人寝込んでいたら,深夜に脱水症状?で魘されて起きて死ぬかと思いました.この時,全身が痺れて重くてこれ以上何も飲まなかったらここで死ぬかもしれない.と思い必死の覚悟でお茶とポカリをちょっとずつ飲んでまた気を失いました.

その朝目が覚めて,少し元気になっていたので病院に行って点滴受けて薬貰って帰ってきて事なきを得ましたが,超きつかったので皆さんどうか夏風邪にはお気をつけて下さい.

これから

インターンと,大学に向けての勉強頑張るぞい!

後は今更すぎるけど,Kotlin in Actionをちゃんと読めてないので読みたい.

 

余談

お誕生日のメッセージを送って下さった方や,プレゼント送ってくれたり手渡ししてくれる方,ありがとうございます!未来の自分に投資してくれているという気持ちを忘れずに,これからも自分なりに頑張ります.

「大きめのAndroidアプリでの設計について考えてみる ~pocket~」を読んだ.

はじめに 

こんにちは,ふなちです!

 

1週間以上前になるんですが,技術書店で入手した

「大きめのAndroidアプリでの設計について考えてみる ~pocket~」

を完走させていただきました.

 

booth.pm

 

頭が悪いのにも関わらず,設計のお話は好きなので,楽しかったですし,とても勉強になりました.

ありがとうございます!

あと,この本の土台となっているリポジトリのコード

github.com

も何度も読ませて頂き,参考にさせて頂きました.(実はDroidKaigiの釘宮さんのセッションの影響もあって,本を買わせていただく前からこのリポジトリは何度か拝見させて頂いてました)

 

これ以降技術的に間違えた内容があるかもしれないです.

間違えの指摘,アドバイス等はhttps://twitter.com/_hunachiにお願いします:bow:

 

※ これ以降は,「大きめのAndroidアプリでの設計について考えてみる ~pocket~」の事を「本」と表現しています.かなり大雑把で失礼になっている気がしますが語彙力不足です.すいません.

 

感想

表紙

女の子とピンクドロイド君が可愛い,可愛すぎてやばたにえん.彼女にしたい.

視点が白板側っていうのも好きです.

 

技術的な感想

 先週,個人的な事情で小さいアプリを作っていたんですが,それはこの本で学ばせて頂いた事を取り入れながら書いたので,基本的には実際に取り入れてみた感想を書いていきたいと思います.

 ※ 本の感想と,取り入れてみた感想を分けて両方書こうとするとやばい量になる気がしたので,取り入れてみた感想をメインで書く事にしましたご了承下さい:bow:.

 

ちなみに今回作成したアプリはこちらです.

github.com

(色々あってミラー版です)

 

また,小さなアプリには不向きですって書いてあるのにごめんなさい,小さなアプリなのにも関わらず参考にさせて頂きました.module分けに関しては,規模の関係もあり好き勝手にしてしまっていて,なにを勉強したんだって感じかもしれないコードになってしまったのですが,ドメイン部分の書き方などを参考にさせていただいたりして,コードの品質が以前より改善したと思います.

 

マルチモジュールについて

DroidKaigi 2018 - マルチモジュールのすヽめ / kgmyshin [JA] - YouTubeで以前学ばせて頂いていたのと,インターン先でもmodule分けを体験していたので多少なりともmodule分けの知識あ持っていたのですが,module分けのメリットなどをより詳しく知ることができました.

コンテキスト毎で分けるのは分かるのですがレイヤー毎にmodule分けするというのは驚きました.確かに,強力なレイヤー化アーキテクチャに!(。 ・ω・))フムフム.

 

実際に大きなアプリでなくてもmodule分けを取り入れる事で,infraの部分は他のモジュール(View)からでは基本repository以外見えない状態にでき,コードの品質がよくなりました.

 

先日のGoogle I/Oで「Dynamic feature modules」の発表があった事もありmodule化の流れが (((o(*゚▽゚*)o))).

 

ちなみに,個人的に以下の記事が分かりやすかったです.

tomoima525.hatenablog.com

 

レイヤー化アーキテクチャについて

今までレイヤー化アーキテクチャを実践しようと思ったことはありましたが,綺麗な分け方がいまいち理解できておらず,迷走し中途半端なレイヤー化アーキテクチャをしたことしかありませんでした.

 

しかし,本で詳しく説明していただいていたので,今までのモヤモヤがほぼなくなり,以前よりもだいぶ綺麗なレイヤー化アーキテクチャを実現する事ができました.

 

そのおかげで,レイヤー化アーキテクチャの恩恵をたくさん受けられました.

特に,domainレイヤーの大切さは実際に実装する中でも実感できました.

コードがぐちゃぐちゃにならずに済みますし,自分がどういうコードを書きたいのかというのをきちんと決めておかないと手が進まないというのも大切だと思いました.(とりあえずコードを書くという悪い癖が治りました.)

またコードがより整理され可読性もかなり上がりましたし,後々のコードの管理がとても楽になりそうです!

 

去年の秋に,知識が乏しい中かなり大きなアプリを作った際の苦しみを思い出しつつ,大きなアプリでレイヤー化アーキテクチャ使わない手はないのでは?と思えました.もっと早く知っときたかった(> <。)

 

レイヤー化アーキテクチャを適用した際の実装順について

また,実装順に関しても参考にさせて頂きました.

本によると,

 

              > ui -> usecase 

domain

             ┗ > infra

 

でした.私は今回

 

domain  ->  ui  ->  infra

 

という順で書いていきました.(小さなアプリだったのでusecaseは使わなかった.)

 

またここに詳しいことは書かないのですが,本にはこれらのレイヤー中での実装順も丁寧に説明されており分かりやすく,凄く参考になりました.

実装例が充実していたのには感謝しかないです:pray:

 

余談なのですが,以前は,部内の開発スピードが早い人に普段,どの順番で書いてるか聞いたりしてどうにか効率の良い開発順を知りたかったのですが,同じ分野をしている人がいないというのもあり,迷走して逆に開発スピードがダウンするという事をしていました.

その結果最近は,一人で開発してるんだし書きたいところから〜とか適当に書いていき後に混乱を招くというバカな事をしていました.

しかし,この本のおかげもあり,今回はスピーディーにモヤモヤもなく開発をすることができました.ありがとうございます!

 

その他で学んだ事
  • MVPについて.

今までほとんどMVVMでの実装をしかしたことがないのですが,この本を通じて,MVPの良さも知ることができました.

PresenterとViewとがContract(intarface)で繋がっている?ため役割を明確にContract定義でき可読性がかなり上がるという点と,機能が多いアプリでMVVMを使うとViewModelが肥大化してしまう問題に直面しかねないが,MVPだとBindingModelを別に作れるので,肥大化が起こりずらいという点でメリットを感じました(。 ・ω・))フムフム

 

今回作ったアプリでは色々考えた結果,DataBindingのBindingAdapterを乱用できたのでそこまでViewModelが肥大化しなかった&Viewへの依存関係は完全に断ち切りたかったのもあり,MVVMを採用しました.

 ※ Contractを使ってViewとViewModelを繋いで可読性をあげてもよかったのかなぁって思いもしました.(迷走タイム)

 

  • ScreenTransitionについて.

先日のGoogle I/OJetPackのNavigationの発表があったので今更この話をって感じかもしれないですが,印象に残ったので書かせて下さい.

これは実質,Navigatorクラスが必要かどうか問題についてなのですが,Navigatorクラス(全ての画面遷移を管理するクラス)は採用せずに,ScreenTransition(interface)を作り,画面遷移の実装はActivityにするという方法について知ることができました.

 

今回作ったアプリではFragmentが存在しなかったので,以前インターンで出会って感動したActivityにもFragmentのnewInstanceを作るという形をとりましたが,Fragmentが存在して,Fragmentの切り替えも一緒に実装するとなると,ScreenTransitionを作る方法が個人的に最適だと思いました!

 

また,Navigationクラスを使うデメリットについてのコラムはとても共感できる内容でした.DroidKaigiアプリでもNavigatorクラスは存在してましたし,他の方のコードにもNavigatorクラスが存在することが多かったので,Navigatorクラスって便利なのかぁって思い試した事があったものの,ごちゃっとなってしまったりして何かモヤモヤしてたのですが,そのモヤモヤを全て言語化してくれてる感じで,スッキリしました୧(๑•̀ㅁ•́๑)૭

 

アプリを作ってみたけど,まだ修正が必要かもと思う部分について

注:この章は,ほぼ本の感想じゃないです!

アプリを作ってみたけど,私の頭が足りておらず,まだ修正が必要かもと思う部分が2つあります.

 

1つ目は,ドメインとインフラは他のコンテキスト(モジュール)から見えないようにすべきという事をしないといけないのにも関わらず,モデル(データクラス)をドメインに書いてしまい,しかもそれを他のモジュールから使えるような形(not internal)にせざるおえない事になってしまった事です.小さなアプリだったので,色々な部分で使うためのデータクラスだけをもつモジュールを作るべきだったのかな?と思いました.

 

2つ目は,infraがデータを提供してくれるRepositoryも,インターフェースだけをpublicにして,それを実装したクラスはintarnalにすべきだったと思うんですが,DIを下手に使った関係でその実装したクラスまでもpublicにせざるおえなくなってしまいました.もうちょっとmodule間で上手にDIを使う方法を考えていきたいです.また釘宮さんのコードも参考にしてもうちょっと勉強していきたいです.

 

 最後に

これを機にアプリの設計についてもっと考えていって,いつか社会に出たりして大きなプロジェクトの設計を考えるとなる機会が訪れるなんてことがあった場合に最適解により近い設計ができるといいです.

 

釘宮さんありがとうございました.

社会人になって自分でお金を稼ぐことができるようになったら恩返しできたらいいです.あわよくば,自分も本を出したりして社会に貢献できるようになりたいです.(厳しい道!)

 

P.S.

技術書店でGETした他の本の感想等に関しても

技術書店4に行った. - hanahanahunachi’s diary

にList化していくつもりなのでよろしくお願いします(> <。). 

「The Book od SobaCha ~Androidアプリ技術解説書~」を読んだ.

こんばんは,ふなちです!

はじめに

先日(だいぶ前かもだけど),技術書店*1

で入手した,

「The Book od SobaCha ~Androidアプリ技術解説書~」わかめそば著

を読ませていただきました.

自分の為にも,感想を残しておきたいと思います.

感想

表紙が可愛い

お腹がいい.

f:id:hanahanahunachi:20180506223644j:plain

 

特にお勉強になったこと

アニメーションについてのお話が特に勉強になりました.

特にスプラッシュスクリーンでのアニメーションとタイムラインの読み込みを同時にするとカクカクなる問題についての話題でUIについて考えさせられました.

実際にMateChaを使ってみても,アニメーションが終わってからのタイムライン読み込みでもそこまで遅さを感じませんでしたし,よく考えてあるなぁと思いました.

全体的な感想

少しは知っている技術について多く書いてあったので,スッと理解できました.

また,ProductFlavorのお話など,今まであまり有効活用できてなかった技術を,実際に活用されている事例を提示しながらどういう風に使ったらよりよく使えるか解説してくださっていたので,とてもお勉強になりました.

また,Android wear(現在ではWear OS)の為のアプリ開発についての内容もあり,今までそんなに興味がなかったAndroid wearに興味が湧きました.スマートウォッチすら持っていないので,お財布に余裕ができたら買ってアプリ開発してみたいです.

技術書店4に行った.

こんばんは!

ふなちです.

はじめに 

ほんと今更なんですが,

techbookfest.org

に行ってきました.

戦利品

f:id:hanahanahunachi:20180505231016j:plain

 

全体的な感想

人が多くて大変でしたが,普段絶対に会えないような方々とお会いすることができてとても嬉しかったです.

また,沢山の本を買えて大満足です!(全部読み切るまでにどれくらいかかるだろう?)

実は今回,技術書店4に行けたのは,前日に飛行機を逃してしまったからなので,技術書店5には前もって計画して行くことができたらいいです.

災い転じて福となすとはまさにこの事...?

 

 せっかく素晴らしい本をたくさん手に入れたことですし,読ませていただいた本の感想をこのブログにあげて行きたいと思います!(読むのも書くのもかなり遅いのでご了承ください.)

 

読み終わり,感想を書く予定&書いてる一覧
  • C♡U Coupling Union 
  • 「わかる!ドメイン駆動設計 ~もこちゃんの大冒険~」techBooster編著
感想一覧

 

自分用のめも#sort

 

このツイートに関する補足

https://research.preferred.jp/2011/10/tim-sort/

www.geeksforgeeks.org

 

ついでに,今日の数学で使ったレビチビタ記号について

レビチビタ記号とその性質 | 高校数学の美しい物語

 

 

potatotips #50 (iOS/Android開発Tips共有会) に参加した.

はじめに

こんにちは,ふなちです.

potatotips.connpass.com

に参加して来ました.

先月から続いて2回目のAndroidブログ枠での参加でした!

なんで九州の高専生が木曜の夜に東京にいるんだとかそう言うことは気にしないでください!実は久留米で午前中の1,2限の授業を授けてから来たんです..!

 

今回は記念すべき第50回目のpotatotipsだったのにも関わらず参加することが出来,嬉しく思います(((o(*゚▽゚*)o)))

第一回は 2013年なんですね!長い歴史だ...!

発表者の方には,今までの発表の振りえりもしている方が多く見られました.

 

※今回もただの個人の感想になってしまっているところや,スライドに書いてあるだろうことをつらつらと書いたもの多いですが,ご了承ください.

また,間違い等の発見した場合はTwitterなどで知らせてもらえると嬉しいです🙇‍♀️

 

発表

"Hello Flutter"の次におさえたいFlutterのポイントその3 by かんばらけんいち

www.slideshare.net

AppBuilder v.a 20170605-09:10

ちなみにその1とその2はこちら

Hello Flutterの次におさえたいFlutterのポイント

Hello Flutterの次におさえたいFlutterのポイントその2

Flutterのお話でした.

potatotipsでの発表は7回目!凄い!

初参加の第二回potatotipsの発表でも,クラスプラットフォームに関する発表をしていたそうです.

Androi,iOS,FirefoxOS,Tizen で動くアプリを一気に作れちゃうPhoneGap(Cordova)を使っていたそうです.

私は,後ろの2つのOSをよく知らなくて興味深かい!

FirefoxOSは2016/5に開発終了してるんですね. Tizanは実際に見たことないです.

(競技以外のプログラミング始めたのが2年弱前くらいなので許してほしい)

また,4つのOSでコードの共通化ってどれくらい出来てるんだろう?気になりました.

 

flutterで翻訳アプリを作っていて,近日公開予定らしいです.

私,英語が苦手なのでお世話になるかもしれません...!

 

今回は,UIについてのお話だそうです.

https 通信とかデータの永続化についてのお話しもいつかお聞きしたい!)

Widged Treeの構造は綺麗で分かりやすくて好きです.

Columnの中にどんどんViewの子を追加していけばいいんですね!

Conclution(Flutter向けのGUI Builder)のGoogle I/O 2018でのリリースしてくれたら嬉しいです!

www.ntt-tx.co.jp

recyclerview-selection by くぎみや

 

speakerdeck.com

 recyclerview-selectionに関するお話でした.

何週間か前に,くぎみやさんの記事を読んだ記憶が...!

recyclerview-selectionは,最近お世話になる機会が多くなってきた,android-ktxと同じ'androidx.'パッケージに含まれているそうです.

SelectionTracerを使うんですね(。 ・ω・))フムフム

いつも通りに,Listを作って,それに

  • stableId を使うように設定する.(ViewAdapterにsetHasStableId(true)と書く)
  •  SelectionTrackerのインスタンスを作る.(引数の詳しい説明はスライドとブログに書いてあるので割愛します.)
  • ( SelectionTrackerのインスタンス)で必要なItemDetailLookupを作る.

だけだそうです!

あとは,洗濯部分に色をつけたりなどしたい場合は,selectionTracerのインスタンスをAdapterで受け取り,よしなに実装すればいいようです.

この時,selectionTracerのインスタンスは,Adapterを生成後に設定してあげる必要があるので注意だそうです(※詳しくはブログを読むと良さそうです.)

 

いつも,くぎみやさんのブログにはお世話になっているので生でくぎみやさんの発表を聞けて嬉しかったです!

また,この発表の内容のブログ

inside.dmm.com

もとてもわかりやすく書いてあったので読むべきだと思います!

あと技術書典4にて釘宮さんの本買わせて頂きました!読むの楽しみです.

Glide 4 with Kotlin by Hiroyuki Kusu

speakerdeck.com

Glide4についてのお話でした.

私も(は)Glideにはいつもお世話になってます(感謝)

Glide4は,デフォルトでは"フェードなし"なのですね!

Glideは拡張できて,その関数を書く際には第一引数にRequestOptionを入れる事とNonNull & static であるということは守らないとダメだそうです(。 ・ω・))フムフム

そしてそれは拡張関数として書いたらいい感じになる!

DataBindingのListnerを拡張関数で書くのと同じノリなのでサクサクかけそうで良さげです!(こういう拡張関数の使い方超好きなので&折角教えて頂けたので,Glideへの拡張もやっていきたい(((o(*゚▽゚*)o))))

丸くくり抜くのcircleCrapとか,transrationは,すごく便利!

今まで私,

RequestOptions.circleCropTransform() 

って書いちゃってたんですが,4からはcircleCrap()があったんですね汗...お勉強になりました(> <。).

他に,プレースホルダーとフェードを同時に適用するとプレースホルダーが消えない問題の解決方法,助かります🙏

コードが冗長になってしまうのはしょうがないんですね.(悲しい)

DiffUtil and ListAdapter by くぼで

speakerdeck.com

DiffUtilとListAdpterを使おう!というお話でした.

DiffUtilはO(n)で差分を取ってくれて更新してくれるので最強!

ListAdpterは,RecyclerView.AdapterのDiffUtilを使ったものだそうです.

差分はbackground thread,結果の通知はmain threadで行ってくれるの強いです.

ListAdapterを使うとsubmitListするだけでいい&その時使うListはMutableListじゃないほうがいいってとこが腑に落ちてなかったんですが,Listのインスタンスが同じだったら何もしないって処理をしてたからなんですね,

スッキリしました(((o(*゚▽゚*)o)))

私自身,DiffUtil,listAdapterもだったけ...🤔インターンに行った際に社員さんから教えて頂いて使ったの思い出した&ちゃんと理解し直す良い機会になりました🙏

github.com

(用途は思いつかないが)Viewのキャプチャを撮ってみる by どくぴー

www.slideshare.net

Viewのキャプチャを撮ってみよう!というお話でした.

画面のキャプチャをとる方法には,

電源ボタン+ボリュームダウンボタンを押す,adbを叩く,AndroidStudioのLogcatを使うなどがあるそうです.

私は,最近は基本Logcatのボタンを使っています!便利!

では,画面の必要な部分だけ撮りたい,とかStatus barを除いた画面キャプチャが取りたい!などなど,Viewのキャプチャを撮りたい場合ってありますよね?と..

確かにです.私はViewのキャプチャを撮ることが出来るとは知らずに今までいちいち画像編集してました(> <。).

Viewだけのキャプチャを撮るには,View#setDrawingCacheEnavleをtrueにしてView#getDrawingCache()でViewのCashを作成(取得)し,それをBitmapに変換,(android-ktxを使っているんであれば,View#toBitmapだけで良いらしい)View#setDrawingCacheEnavleをfalseに戻すだけで良いんですね.

めっちゃ簡単だヾ(。>д<)シ 

その後,PDFとして利用したい場合は,PdfDocumentを使ってゴリゴリ実装すれば良いようです.

Canvas芸をする必要があるそう&重い(当たり前だけど非同期処理必須.)

ページを作る際には,PageInfo.Builder(ページの幅,ページの高さ,ページ番号).create()を実行する必要があるそうです.(PageInfoってのはページ情報を管理するクラス)

ちなみにページのサイズ指定時の単位はpoints(72points = 1 inch)で,ページの大きさを指定する際にはちょっと気合が必要そうです.(画面のサイズを測ったり等々)

画面の全体のキャプチャが欲しい際には,MediaProjection API(API21~)を使うといいそうです.

便利そうだしやってみたいと思ったのですが,アプリ側からViewのキャプチャを撮るというのは,どういう時に使うのでしょうか..?(パッと調べた感じだとメールに添付するとかがありましたが,もっと他の用途をしりたいです!)

Preference as a Service by izumin5210

speakerdeck.com

Preference..というお話でした.

potatotipsでの登壇は今回で8回目なんですね!凄いですオオォォォ(゚ロ゚*)

Preferenceの実装には色々な方法, SharedPreferenceや,Realm,FireBase Remote Config等を使う方法があるそうです.

私は,SharedPreferenceしか使ったことない...ヾ(。>д<)シ 

Preferenceは,サーバー側の挙動に影響しやすいものが多いので,ローカルだけで保存するというような方法を取ることは出来ない.

そこで,自前でサーバーを実装していた そうです!

でも,毎回自前でサーバーを書くのは辛く,

また他のアプリとの共有したい部分など出来た時にも困ったそうです.

そこで,Preference as a Server を作ったそうです.

やはり自前な理由は,マイクロサービスであり,内部の別のサービスからも参照したかった,データを外に出さずにすむ,設定値も簡単に追加変更ができ,自分たちが使いやすいカテゴライズ機能を付けれる.といった理由からだそうです.

他にはデバックする際にも有効活用できるらしく,素晴らしいと思いました!

今度,もし高専プログラミングコンテストの本戦出場が出来た暁にはこの方法を,試してみたいと思います!

技術力的にできるか不安ですが(> <。)

 消費型課金を導入する by もりぞー

Play Billing Library を使うと良いぞ!っていうお話でした.

課金が完了するまでの流れは,

  1. クライアント側からGoogleに課金したいよっていうのを伝える.
  2. その後,Googleからレシートを受け取る.
  3. サーバーにレシートの検証をしてもらう.ここでユーザーやアイテムの情報を送る.
  4. サーバーからGoogleに検証してもらう.
  5. その後クライアントはレシートの検証結果をもらう.
  6. 消費リクエストをクライアントからGoogleに送る.

という感じらしいです.(申し訳ないことに,うる覚えの状態で書いたので間違えてたら本当にすいません.)

色々引っかかりポイントがあるので気をつける.べきとの事でした.

課金システムのフローを丁寧に説明してくださってわかりやすかったです.

キーボードの切り替えをいい感じにしたい by わくわく

speakerdeck.com

キーボードの切替を良い感じにしたいというお話でした.

ただ単に,キーボード出ないものが表示されているかを判定してそれを表示させたり,非表示にさせたりするだけのコードだと,

バコン!ガコン!みたいになる.

これを解決する為に,Messengerを参考にしてみたそうです.

View構造のdumpをとりつつ,壊す勢いで調べたそうです!

経験不足の私は,今まで開発者モードのLayoutの境界を表示させたり等しかしたことなかったので,今度から他のアプリの良いところを盗みたいときはdumpも使っていきたいです.

結果,特別なCustom Viewなどは使っていない&裏にViewがあるようだったそうです.

そこで,キーボードを隠す際に高さが変わらないようにすれば良いのでは?という結論に至ったそうです.

そこで,ソフトウェアキーボードを隠す際にはソフトウェアキーボードの設定をWindowsManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE(キーボードと他のLayoutが被らないようにする)にし,逆に出す際には ,WindowsManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING(キーボードが出てきた際に高さを調節しないようにする)を設定すればいいそうです(。 ・ω・))フムフム

こうすることで,あのチカチカ,バコン,ガコンとしていたキーボードがチカチカ,バコン,ガコンとならずに隠れたり出てきたりするようになるんですね!

 

経験が浅いのもありキーボード周りを触ったことがなかったので,とてもお勉強になりました.

この発表を聞いた後からキーボードのチカチカが凄くきになるようになりました .

懇談会の時も凄く楽しそうに喋っていらっしゃったのが印象的でした.

adjustnothing

github.com

 

 ディープリンクを実装した by たかしぃ

speakerdeck.com

デープリンクに関するお話でした.

デープリンクを実装した流れは,

  1. 起動画面は透明のActivityにして
  2. その?Activity(schemeが追加されたもの)でURL schemeのデータを受け取る
  3. その後,データのQueryに応じて,どのActivityを表示させるかや,Activityをstuckに積むかなどの条件分岐をする.

という感じなのだそうです.

OAuth認証と同じ手順で行けば良さそうなので,デープリンクの実装はしたことがないのですがスッと理解できました.

また,Activityをstuckに積む操作をする場合の手順は,

ActivityLifecycleCallbackインターフェースを実装したクラスを作成し,他のActivityからの通知を受け取るようにして,onActivityCreatedやonDestoryを通った時点で他のActivity側から通知を送ると,現在起動しているActivity をstuckに良い感じにaddすることができる.

他に,ホーム画面をstuckに積んでから該当画面を開きたい場合はTaskStackBuilderを使えば良いようです.(※TskStuckBuilderを使う前のActivityは消去されるので注意が必要)

最後にdroid girlsの宣伝🎀

私も,参加しました!お勉強になりましたし,気軽にお話することができて楽しかったです! 

また先日,droid girlsのslackに参加させていたのですが,そこで飛び交っている様々な質問にあんざいさんや,強い人たちが丁寧に答えて下さったりしているなど,素晴らしい環境で驚きました.

最後に

 全体の感想なのですが,今回も初めて知ることなどが多くあり勉強になりました.

 

軽食もとても美味しかったです🍔🍟!(ポテトチップスが美味しそうに飾られていたのにも関わらず写真撮り忘れてしまってました.すいません(> <。))

f:id:hanahanahunachi:20180424000946j:plain

また,Wantedlyの社員さんともお話させていただいたのですが,フレンドリーで技術力も高い人が多く,凄く楽しそうでとても良い会社なんだなぁってことが伝わってきました.

 

今回の東京旅行?は,DroidGirls目的であり,せっかくなので以前楽しくお勉強させて頂いたpotatotipsにも参加しよう!という軽い気持ちで参加したのですが,実際に終わってみるととても充実したイベントとなり本当にきて良かったなぁと思えました.

 

長い長いブログですいません,お読みになって下さった方ありがとうございました!

時間があれば,DroidGirls参加記も書きたいと思います.