設計について考えてみる.(さぼった-あとがき-)
実はこの記事は
Prolab Advent Calendar 2017 - Adventar
の22日目の記事の一部として書かれています.
先日までせっせとコードを書き直してた上記の後者のほうのリポジトリのコードについてちょっと話させてください.
オブジェクト指向を心掛けました.(ん?)
しかし,きちんとした設計を学んでないので自己流意味不明コードが出来上がりました.
そこで私は設計の観点からこのコードのコードレビューしてみることにしました.
こちらを参考にしました
ついでに私がそれぞれの部分で実装した内容について書いていくので,振り分け,実装の仕方についての『突っ込みどころ』を探しながら読んでいただければ嬉しいです.
まず
presentation層(濃いオレンジ),domain層(薄いオレンジ), infra層(青)?
に分類していきました.
providerとviewModelの役割分担に不安しかないので何をさせていたか軽く説明します.
(❌Dao→⭕️DAO)
特に音楽の再生などをさせる部分というのは,presentation層とdomain層のどちらに割り当てられるのかがいまいちわかりませんでした.
※このあと他にも色々書こうと思ったのですが自分が自分の思ってた以上に設計のことを理解していなかったため書けなくなってしまいました(悲しいごめんなさい)
改善点
- DIを使っていないので柔軟性がない&テストがしずらい(これ以上大きくする予定のないアプリだったのでまだマシなのかもしれませんが)
- (皆さんからのアドバイス等を参考にし,随時追加していきたいです)
自分的に良かった点
- 昔よりActivityがすっきりした.
さぼった
この記事は
Prolab Advent Calendar 2017 - Adventar
の22日目の記事として書かれています(5日目のふなちの記事はこちら)
前日はOBのzero先輩でした.
MAについて知ることができる面白い記事でした!
せっかくなので,今年のLT会でのふなちの資料も...時間があったらどうぞ.
でついでにこれもどうぞ.
では,本編スタートです.
Q.1年間ぐーたらしてるとどれくらい人は成長するのか?
A.リンゴ一個分成長した.
ここからはふなちの成長記🐰なので技術記事以外読みたくない人は
設計について考えてみる.(さぼった-あとがき-) - hanahanahunachi’s diary
をどうぞ。
1.目標と現実のギャップ
ちなみに今年の初めに言っていた目標はこれです.
~結果発表~
△悲しいことがあってもネガティブ発言をしません -> バリバリ元気になった.
×先輩を見習います
×自分の好きなことを見つけ、それを精進させます
×TOEIC600目指します
×JMO予選参加
×溜まっている本を読みます
×線形代数と微分のプロになる
〇コンテストでプログラマとして活躍したい -> hackU, pck, superson予選, kosenハッカソンくらい?
△Javaともう一言語以上書けるようになる -> Kotlin?
〇コスプレがしたいです -> メイド服,セーラー服とかが主.
2.成長したのかな...
- プログラミング関係
(そもそも継承を理解していない,FatActivity仕様.)
↓
私Androidしか今年触ってないのにこんだけしか成長がない・・・.
あと色々なbugと遭遇しました.
一般人なら絶対に踏まないbugやerror[1] - hanahanahunachi’s diary
kotlin not configuredの解決方法 - hanahanahunachi’s diary
一般人なら絶対に踏まないbugやerror[2] - hanahanahunachi’s diary
その他主な今年遭遇したbug
gson,retrofitで@Path - hanahanahunachi’s diary
databindingのerrorで毎回詰まってる話 - hanahanahunachi’s diary
Unable to execute dex: method ID not in [0, 0xffff]: 65536 - hanahanahunachi’s diary
など.
- その他
TOIEC 500 (😢)
解析入門(小平先生) の関数のとこまで.
線形代数 第6章まで(商空間とか)+固有値と固有ベクトルあたり少し.
整数論? うぃんじー先輩から借りた本の問題の部分のみ
- 2018のふなちのふらふらした軌跡
Alone journey in London...?? - 堕人間の備忘録
SuperCon'17 to PCK'17予選 に 参加した話 - hanahanahunachi’s diary
パソコン甲子園2017を通して味わった最後の青春の味☂ - hanahanahunachi’s diary
kosenハッカソン@函館に参加した記録🐢 - hanahanahunachi’s diary
ラーメンの画像が出てくるブログ - hanahanahunachi’s diary
Unit君感謝.
- 結果を踏まえた考察
来年はコンテストにあまり出ないはずなので,人間らしい生活を心掛け,もっち有意義に知識を増やせていけたらいいです.
ぐーたらしてると1年はあっという間に過ぎていきます.
かなしいですね.(それはそう)
今年・・・は・・もっと・・成長・・・し・・・た・・い・・・です.
はい...
実はまだまだ続きます。
技術記事なのでAndroid強い人とか興味ある人は読んで,いろいろ鉞やら助言を投げてください.ふなちはかまってちゃんです.
🔗あとがき
hanahanahunachi.hatenablog.com
もうすぐクリスマス🎅
ひゃっは楽しんでやるぜ(((o(*゚▽゚*)o)))
3Sの人達は今日の数Bのテスト頑張って(私は勉強できてない)
あとどうでもいいんですが,これは
正しい羽毛布団と毛布の重ね方
です.今の季節覚えておくと便利でしょう.
おわり.
明日はとぅらん先輩です!
楽しみです☆(*ノωノ)☆
一般人なら絶対に踏まないbugやerror[2]
今回のerrorは,
実行時に∂
「No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)」
ていうのです.
あとlayoutをbindingするところでもerrorが出てました。
だから最初「ま~たdetabinding系のerrorかこの~(੭ु´・ω・`)੭ु⁾⁾」って思ってました。が、いつものようにばぐは仕込んでない...しxmlのバグじゃない...
ググりました.
すると,
stackoverflow.comプロの解答がありましたね。
そう昨日の私,sdkのversionを27にあげてました.はい.
まさかのプロジェクトに設定してるsdkバージョンが26だったんですね.
とりあえずバージョンを上げましょう.
(私の様な初心者の人用にコード貼っときます.)
compileSdkVersion 27
defaultConfig {
applicationId "com.example.ほげほげ"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
で他のdependenceに書いてるライブラリ達のversionも必要に応じて上げます.
実行します.
やったぜ.
完.
kotlin not configuredの解決方法
kotlinのplaginをinstallしてるし、configure kotlin in projectもしてるのに、今までの平穏な毎日が嘘だったかのように突如現れる
「kotlin not configured」
に対するふなち流 解決方法を書きます。
kotlin の plaginをuninstallしてください。
はい。サヨナラしましたか?
ではもう一度kotlinのplaginをinstallしなおしてください。
治ります。きっと。
※これなったの私だけと思ってたんですが違うようだったので、今更ですが解決方法書来ました。
この方法はあまりにも強引なので他の方法で解決した方がいい気がします.
Kotlin not configured - Support - Kotlin Discussions
ここら辺やくに立ちそうです(?)
一般人なら絶対に踏まないbugやerror[1]
※環境はandroid studio with kotlinです。
今回のは問題は
「android studioがめっちゃ使いずらくなった」
というものです。
下のスクリーンショットをご覧ください。
普段android studioを使っている人なら分かると思いますが、なんとなく違和感を感じないでしょうか?
上記のコード、本来は(一部コード内容が違いますが)
こんな感じで、勝手にimportしてくれますし、android.io.${class object}みたいなことならないですよ~( ◠‿◠ )
しかも、syntax errorが表示されないとか、(まあbuildしたらerrorは出るんですけどね)他にはjava classやkotlinのfile/classが作れない*1とかideaが壊れたのかと思いました。
これは失敗した方法なんですが
ideaのcachesを消したり、android studioをrestartしたり、コードをcloneしなおしたりとか、いろいろしました。全部無意味でした。
でこの問題?errorの解決方法は、
このjavaっているファイル名をkotlinにリファクタリングしてたんですけど、これをjavaに戻してたら治りました。
しかも、その後もう一度java→kotlinにリファクタリングしたんですが、正常に動いて問題は発生しませんでした。
以前問題の部分のリファクタリングをした際に何かしら失敗したのかな?(分かる方いたらご教授お願い致します。)
<結論>
す ご い ‼ 普通の人なら絶対に踏まないbugだ。
治って良かった(੭ु´・ω・`)੭ु⁾⁾
+追記+
これ、治ったと思ったらまた復活したり、不安定な状態が続いています。
何かご存知の方いましたらよろしくお願いします。
*1:
ラーメンの画像が出てくるブログ
これは
の5日目の記事として書かれています。
おはようございます。
優柔不断なので,
何を書くか迷いました。
考えた末,
ということで「今日の晩御飯」について書きたいと思います。
只今の時刻,”17:24”
なので当然夕飯はまだです。
お昼に大砲ラーメンを食べたので
夕飯はブロッコリーが食べたいです。
extra
ふっふっふ pic.twitter.com/v7MLhBnzyM
— ふなち (@_hunachi) 2017年12月1日
おわり。
って嘘です。
本当のアドベントカレンダー用の記事はこちら☟
(タイトルが違いますが気にしないで下さい)
kosenハッカソン@函館に参加した記録🐢
今回は、高専から募集がかかってたハッカソン(珍しい)の「kosenハッカソン@函館」にゲドさんと一緒に参加してきました。
この大会で1番になると
に招待されます。
zero先輩(辻先輩)から教えてもらったので参加できました。(ありがとうございます)
函館に”タダ”でいけるというわけで釣られたんですが、
一切、観光できませんでした。
山奥のホテルに閉じ込められました。
あと1つ、
パソコン甲子園2017を通して味わった最後の青春の味☂ - hanahanahunachi’s diary
から帰ってきて5日後に出発だったのが気にかかりましたが、ハッカソン好きのふなちはそんなこと気にしないことにしました。
担当教員はtnk先生にお願いしました(一生懸命な若い先生だったのでちょっと申し訳なかったです)
1日目
福岡→東京
さっき食べたお昼の情報です pic.twitter.com/944a8KbvEy
— 爆死 (@_hunachi) 2017年11月10日
乗り換えの時
悲報 :乗継WA する可能性高まる
— 爆死 (@_hunachi) 2017年11月10日
乗換失敗したっぽい (@ 羽田空港 第1旅客ターミナル in 大田区, 東京都) https://t.co/P6hUf2lTh5
— 爆死 (@_hunachi) 2017年11月10日
成功したぜ https://t.co/0vdYubO8CO
— 爆死 (@_hunachi) 2017年11月10日
車で送ってもらった
— 爆死 (@_hunachi) 2017年11月10日
東京→函館
ぶーん pic.twitter.com/4lV5wSid7x
— 爆死 (@_hunachi) 2017年11月10日
同じ飛行機✈ https://t.co/SL9Br32sYw
— 爆死 (@_hunachi) 2017年11月10日
函館駅に着いた
しまってるが😥 (@ 函館朝市 in 函館市, 北海道) https://t.co/xGftcyTMF0
— 爆死 (@_hunachi) 2017年11月10日
お土産買う暇がこの先ない事を覚悟し先にお土産を入手した。
あと初めて見るお菓子も買ってみた。
かわいい pic.twitter.com/J0wq8GnHLV
— 爆死 (@_hunachi) 2017年11月10日
— 爆死 (@_hunachi) 2017年11月10日
人見知りしそうなので駅にいる人全員高専生じゃない人と思って座ってる
— 爆死 (@_hunachi) 2017年11月10日
旅館に行くバスの中で
駅でご当地キャラメル(?)を買ったんですが、オブラートに包まれていると思って口に入れたら紙だった
— ゲ・ドリンク (@gedorinku) 2017年11月10日
I'm at 北海道 グリーンピア大沼 in 茅部郡森町, 北海道 https://t.co/n6Zx5kzhES
— 爆死 (@_hunachi) 2017年11月10日
旅館にて
和室に114514年ぶりに泊まる(今までのハッカソン1人部屋しか泊まったことないので困惑)
— 爆死 (@_hunachi) 2017年11月10日
まさかの夜からハッカソンスタート(予定詰め杉だろ...)
今回のハッカソンや 提供していただいてるAPIについての説明がありました。
うちわら氏を特定した
— 爆死 (@_hunachi) 2017年11月10日
コート着てるの私だけだ
— 爆死 (@_hunachi) 2017年11月10日
夕ご飯は豪華でした。
今日の夕飯 pic.twitter.com/UuHN16raO7
— 爆死 (@_hunachi) 2017年11月10日
その後は
アイディアソンののち、チーム発表、チームでの開発スタートといった感じでした。
アイディアソンは今までのハッカソンの経験からしてみると、いつもよりあまりぱっとしたアイディアはなかったです...(多分普段こういうことをしてる人が少ないのかな既存のものが多かった印象でした)
チーム決めのほうは、みんなの投票で決まった上位8つのアイディアに人がそれぞれ割り当てられる感じでした。(たまげた)
うちわら氏となれず
— 爆死 (@_hunachi) 2017年11月10日
私は、
「101ばんどうろ」
というアイディアのチームに割り当てられました。
ちなみに私のチームは程よく明るいくコミュ障の私でも話しやすい人たちが多かった上、8つのアイディアのなかでも一番ハッカソンらしいアイディアが割り当てられたチームだったので個人的に運が良かったです🐰
チームにHacku 東京に出てた方いて心が落ち着いた
— 爆死 (@_hunachi) 2017年11月10日
1日目は明日に向けて
アイディアの整理となんとなくの担当を決めて早め(3時に)寝た。
4時間眠れた(うん良き。)
※担当
ふなち&カブ:プログラマ
ウサミン:アプリで使用している絵の作成(手書き)
ヒラマサ:音楽のデーター作成
へーちゅー:スライド&プレゼン
2日目
朝飯AC。
自明に食べ過ぎたので寝そう pic.twitter.com/FmSSKyHW1g
— 爆死 (@_hunachi) 2017年11月10日
普段少しAndroid触ってるとか言えないくらいゆっくりとした進捗を生やした。
カブさんにGPSの部分とボタンで渋さが切り替わる部分の実装をお願いして、
私はそれ以外を担当した。
最初、共同開発をするべく, カブさんにgitをインストールしてもらったり、gitの使いかたを(私のクソみたいな知識で)教えてたりしてうまくいっているかのように見えたが、githubとgitの認証がうまくリンクされなかったのか分からないけど、悲しいことにgit導入に失敗した。
ふなち「gitの勉強しなおします」
進捗は、
gradlewが死んだので復活させる→
昼飯
— 爆死 (@_hunachi) 2017年11月11日→
カブさんのコードを合体~16:00→
二フクラ mobile backendのsdkを使って音楽をサーバーから取得するようにする→
音楽がホワイトノイズになって再生されるbugに見舞われる→
→夕飯や pic.twitter.com/7sOgGZf2Zn
— 爆死 (@_hunachi) 2017年11月11日
二フクラさんと辻先輩にデバックのアドバイスを貰ってhogehogeしたら音楽が再生されるようになる→
渋さによって音楽を変える処理とデーターベースの整理→
UIを作る→
UIを大幅に変えた関係でbug爆誕→
目の焦点が合わなくなり2時間椅子の上で倒れる~6:00→
bug fixed→
思い出リストの作成→
リストのところでbug→
bug・・・
発表する時間が来た。
うん。朝が来るのは早い。人生が険しい。
朝ごはんとオフトゥンと顔を合わせられないまま迎えた朝。
悲しいね。ほかのチームはみんな寝てたのにね。オフトゥンで寝たかったよね。
ここで夜のツイートを記念として残しておく。
おわらんが(徹夜確定か)
— 爆死 (@_hunachi) 2017年11月11日
Kotlin のエバンジェリスト×
— 爆死 (@_hunachi) 2017年11月11日
Java が上手く使えない〇
うちわら氏めっちゃ囲われてるやん(いいことかは分からない)
— 爆死 (@_hunachi) 2017年11月11日
右手の薬指がほぼいうことを聞かなくなった
— 爆死 (@_hunachi) 2017年11月11日
右手の薬指についてはコード書くたびに痛みが増してて辛かった(11/15現在、だいぶ治りました)
発表会
どこのチームもハッカソン未経験者が多いというのにもかかわらず完成させて来ててすごかった
プレゼンはへーちゅーさんが成功させてくれた。
つよひ。
他
— 爆死 (@_hunachi) 2017年11月12日
表彰式
企業賞2つももらえましたー!!ありがとうございます!
二フクラさんのsdkなどについてはすごく使いやすかったので今後のハッカソンでも使用させていただきたいです🐰
駅すぱあと賞、ニフクラ賞をいただきました
— 爆死 (@_hunachi) 2017年11月12日
#MA_2017 #KOSENハッカソン
正式名はヴァル研賞とモバイルバックエンド賞です😫
— 爆死 (@_hunachi) 2017年11月12日
【高専ハッカソン】 ヴァル研賞!
— TsujiTakuto (@TaktCrossley) 2017年11月12日
#MA_2017 #KOSENハッカソン pic.twitter.com/ULNaOWwTNE
【高専ハッカソン】 モバイルバックエンド賞!
— TsujiTakuto (@TaktCrossley) 2017年11月12日
#MA_2017 #KOSENハッカソン pic.twitter.com/I9VQ70UeLV
ゲドさんのとこも2つ企業賞もらってってすごかった(Tシャツ羨ましい。)
サイボウズ賞、NTTドコモ賞をいただきました
— ゲ・ドリンク (@gedorinku) 2017年11月12日
#MA_2017 #KOSENハッカソン
この後、すぐに解散でしたがその後話しかけてくださったガチプロの石川高専の方々ありがとうございました。
皆さんとお別れして帰り道~
空港で
— 爆死 (@_hunachi) 2017年11月12日
全体的な感想
人見知りが激しい(打ち解けあうとかいうのがそもそも苦手)な人種なのに げどさんのうしろにずっとはピッタリ張り付かなかった事が2番目に頑張ったことです。
— 爆死 (@_hunachi) 2017年11月12日
ハッカソンにいた女子たちの女子力の高杉さに感服。
— 爆死 (@_hunachi) 2017年11月12日
もう私男の子として生きていくわ・・・
— 爆死 (@_hunachi) 2017年11月12日
この頃1ヶ月以上走りっぱなしだったので休憩したいと思いますが、中間試験があります。
— 爆死 (@_hunachi) 2017年11月12日
Android 開発りゃんとできるようになりたい
— 爆死 (@_hunachi) 2017年11月12日
hack log にlogを残しました。
今度はいつものチームメンバーでハッカソンに出たいなぁ。
ありがとうございました!
またいつか会える日まで!!