しょーさのブログ

不定期で何か書く。多分。

【Android】Fragment同士の遷移とActivityへの通知の実装メモ

今の仕事で作っているAndroidアプリのUIは基本的に
機能毎にActivityを作って、その上にFragmentをAttachしている。

で、その機能の範囲内で画面遷移する時はFragmentを切り替える設計になっているわけだが、
その辺りを実現するためにFragmentを操作するライブラリをベースに独自クラスと拡張関数を作っている。

ただ、自分自身はActivity・Fragment制御の根本的な仕組みを理解している訳ではなかったので、
試しにライブラリを使わずにFragment同士の遷移を書いてみた。

やったこと

  • 初期表示でFragmentをActivityにAttach
  • Fragment同士の遷移
  • Fragmentの遷移をActivityに通知

初期表示でFragmentをActivityにAttach

参考にした記事: [Android] Activity と Fragment の画面遷移

上記記事のサンプルではActivityを初期表示にボタンクリックでFragmentを表示する実装になっているが、
UIの表示ロジックはFragmentに書いて、ActivityにはToolbarのロジックなどを書く様にしたかったので、
最初からFragmentをAttachする実装にした。

具体的なコードはこんな感じ。

feat:ActivityにFragmentをAttach · syo-sa1982/ToDo4Android@b2721b7 · GitHub

因みにDataBinding使いたかったので、UIの表示方法は元の記事と若干違う。
それと、あとから気がついたけどタイポが混じっている。(誤: frammentTransaction 正: fragmentTransaction)

Fragment同士の遷移

参考にした記事:[Android] Fragment から別の Fragment に画面遷移させてみる

次はFragmentから別のFragmentへの遷移。 尚、次のFragmentに遷移してから前のFragmentに「遷移し直す」ケースは全く想定していなくて、
前のFragment(というか画面?)に「戻る」実装しかしていない。

ここまでで画面の見た目としては下記のようになっている。

遷移前 遷移後
f:id:syo-sa19820615:20190104194231p:plain f:id:syo-sa19820615:20190104194327p:plain

Fragmentの遷移をActivityに通知

参考にした記事: FragmentからActivityにコールバックする方法2017 - Qiita

ここまでToolbar(画面スクショでいうと、ヘッダーみたいな部分)には特に何も表示させていなかったが、
表示しているFragmentによってToolbarに表示させる内容を切り替えたい。

が、Toolbar自体はActivityで持っている為、FragmentのAttachや遷移をActivityに通知する必要がある。
なので、以下のような方法を取った。

  • AppCompatActivity/FragmentのBaseクラス(BaseActivity/BaseFragment)を作る
    • BaseFragmentには遷移を通知するinterfaceを定義
    • BaseActivityには前述のinterfaceをimplementして、Toolbarを書き換える処理を実装

具体的にはこんなコードになる
feat:Toolbarの表示をFragmentの遷移にあわせる · syo-sa1982/ToDo4Android@f1ac9aa · GitHub

見た目はこうなる

遷移前 遷移後
f:id:syo-sa19820615:20190105130216p:plain f:id:syo-sa19820615:20190105132219p:plain

最後に

ここまで実務で使っているライブラリを使わずになるべく最小限のクラスで実装してみたものの、
RequestCodeを送るケースや遷移のアニメーションを指定するケースなどが有るので、
Fragmentの遷移制御を担う独自クラスを作って拡張関数を作る必要はやはり出てくるなと感じた。

気が向いたら、次回以降リファクタリングしたコードを書くか、この記事に追記するなどしてみる。

明けてました

旧年中はお世話になりました。本年もよろしくお願いいたします。

年末に振り返りブログ書こうかなーとか思っていたけど、
ダラダラしているうちに年が明けてしまっていたので、今年の抱負でも書くことにする。

抱負

  • Androidアプリを最低1本リリース
  • 1ヶ月に1回くらいのペースでブログ記事を書く
  • 痩せる
  • FGOメインシナリオ追いつく

Androidアプリを最低1本リリース

今は仕事でAndroidアプリを作っていて、それまでAndroidアプリの開発は未経験だったんだけど、Kotlin書くのも楽しいし今後も続けていきたいなと思った。
で、勉強がてら実務とは別にクソアプリを作ってリリースできたらなと。

もちろん一本以上可能な限り作れたらなと思っている。

あと、余談だけど2月の頭にDroidKaigi行きます。

1ヶ月に1回くらいのペースでブログ記事を書く

そろそろこのインターネット上の廃墟みたいなブログもどうにかしたいなと。 しょうもないことから技術的な学習記録まで、独り言みたいなノリで書いていきたい。

痩せる

去年の春に京都の会社を辞めて転職して夏頃から在宅勤務メインになったのだけど、
通勤してない分運動してないわけで、ものの見事に体重が増加してしまった…。

なので、最近は昼飯食ったあとに散歩したり筋トレしたりしている。 筋トレは毎日やらないと意味がないと思うので、なるべく毎日続けたい。

FGOメインシナリオ追いつく

今までFGOを割とダラダラとやったりやらなかったりしていたが、
メインシナリオ放置しすぎたせいかイベントの参加条件を満たせず参加できない事が多くなってきたので、メインシナリオをなるべく進めていこうかなと。

できれば第2部までは進めたい…。尚、現在は第1部6章。

ってなかんじで、改めて今年もよろしくおねがいします。

カレーのレシピ

前置き

今年の春くらいからカレー作りにはまりだして、2〜3週間に1回のペースでカレー作ってはインスタに投稿してSNSのタイムラインを汚しまくってる。

今週のカレー

今週のカレー

で、Facebookとかでたまに「食べてみたい」みたいな感じのとコメントが付いて嬉しく思う反面、自分と嫁の為にしか作る気にならない人類なので、すまねぇなと思いつつ「じゃあ、せめてレシピを共有しよう。そのほうが世の中のためだ。」などという主語のでかい考えに至り、ブログ記事にしてみることにした。

基本レシピ

まず、僕がよく作ってるカレーは水野仁輔さんという方が書いた「いちばんおいしい家カレーをつくる」という本に載っている、ファイナルカレーのレシピをベースに自分と嫁の口に合うようにアレンジして作っている。

そしてこのエントリでは、アレンジしてる点のみを書くことにする。

なので、まずはこの本を買いましょう。

いちばんおいしい家カレーをつくる

いちばんおいしい家カレーをつくる

余談だけど、ファイナルカレーについて初めて知った記事

negineesan.hatenablog.com

アレンジしてる箇所

アレンジしてる点は以下の通り。

  • スパイス
  • 隠し味

肉は最初レシピ通りに豚肉を使ってたんだけど、試しに鶏もも肉を使って見たら嫁の好みに合ったので、それ以来鶏胸肉を料理酒で漬け込んだものを使っている。

でもまぁ、豚肉使った場合もまだ改良の余地があるし、何なら牛肉も使ってみたいなぁとか思ってる。

スパイス

スパイスはレシピだと4種類混ぜるのだけど、辛さを調節するためにレッドペッパーだけレシピの分量より半分の量にして、もう半分をパプリカパウダーに変えてる。

ちなみにスパイスは投入してから炒める工程が要るので、他の調味料と違って後から調整するのが難しい点に注意。

隠し味

隠し味はつい最近までレシピ通りに入れていたが、ある時試しにすりおろしたリンゴを1/4個分入れてみたら美味かった。

なので、隠し味も色々試してみようと思う。

…と、だいたいこんな感じでアレンジを加えている。

おまけ

ちなみにこのレシピでカレーを作ってると、野菜などの材料が余って困ることがあった。 「じゃあ、分量をその分増やせば良いじゃん」ってなると思うが、そうすると大抵失敗することが多かったのでレシピ通りの材料を買っている。

で余った材料は結局どうしているのかというと、ひき肉を追加で買ってミートソースにしたり、トマトソース系の料理にしたりすることが多い。

この辺のレシピは気が向いたら書く。

明けてました2017

あけましておめでとうございます。

年明け早々、FF15クリアして結末に暗い気分になったり、Laravelの環境構築にハマって1人で公式のチュートリに対して憤慨していたりしていました。

さて、そんな僕ですが、今年は珍しく振り返りと抱負を書いてみるなど。

振り返り

振り返りと言っても、去年そこまで抱負を書き残してないので、ただの時系列順 。

  • 1月から3月:筋トレやってた。
    • トータルで10キロ近く痩せる。
  • 4月:彼女が出来る。仕事で濁る。
  • 4~9月:遠距離恋愛
    • この間、Goでサーバーサイドを書いた社内用のサービスをリリースするもパッとせず。
    • KUG2の活動も疎かに。
    • 9月に引っ越し準備したりとか。
  • 10月:同棲開始。仕事で濁る。
  • 11月:水面下で色々と。
  • 12月:賛否両論だらけのFF15に思いの外ハマったり、PHP再入門したり。
    • あと、詳細はまだ書けないけど、仕事的な部分でも大きな動きが

…てなかんじで、私生活は結構充実してたけど、それ以外では色々と反省点や思うところあったなという感じ。
でも、諸々トータルすると良かったんじゃないかなと思ってる。 正に激動の2016年。

抱負

ざっと書き連ねていくとこんな感じ。

  1. 積み本を消化していく
  2. しょうもないクソゲーを一本公開
  3. 引き続き減量
  4. 2月からの新天地で頑張る
  5. KUG2の活動にコミットしていく
  6. 将来の為の貯金

1.積み本を消化していく

毎年言ってるような気がする。
でも個人的に読みたい専門書が多いので、優先度付けて消化していかないとなと。 今のところ読んでる途中のor読みたい本はこんな感じ(優先度順)。

直近で必要そうなので読んでる

  1. パーフェクトPHP
  2. 実践ドメイン駆動設計

Unityの勉強もしていきたいので上記読み終わった頃に

  1. 24時間で学ぶ! Unity 5 基本操作と開発のコツ
  2. オンラインゲームのしくみ Unityで覚えるネットワークプログラミング

まだ途中だけど、余裕あったら読みたい

  1. マイクロサービスアーキテクチャ
  2. エリック・エヴァンスのドメイン駆動設計

2.しょうもないクソゲーを一本公開

この辺は恥ずかしい話、「個人でゲーム作りたい」とかほざきつつGitHubに草生やしたりしてたんだけど、 やりたいことを盛りすぎたためにリリース出来た試しが無いので、自分の中で思いっきりハードルを下げてしょうもないブラウザベースのゲームをUnityで作れたらなと。

3.引き続き減量

去年は10Kg近く減量出来たものの、まだ目標体重には達してないので、引き続き身体鍛えて行きたいなと。
てか、引っ越してから近所に手頃なジムがないのがつらいので、筋トレ用のベンチを買おうかと検討中。

4.2月からの新天地で頑張る

詳細はまだ言えないけど、仕事面で大きな動きがあったので、それを軌道に乗せれるように頑張りたい。
具体的に今何しているかって言うと久々にPHP再入門したり、Laravelの勉強をし始めたり。
後はまだやってないけど、Cocos2d-JSも勉強していかないといけないと予想している。

5.KUG2の活動にコミットしていく

関西Golang勉強会(KUG2) っていうGoのコミュニティを友人達とやっているのだけど、申し訳ないことに去年の後半くらいから放置気味だったのと、勉強会自体もあまりやってないような感じだった。
でも個人的にGolangは好きな言語だし、あわよくば仕事でも使えたらと思ってるので、今年は自分なりに積極的に動いて再度盛り上げていきたい。

6.将来の為の貯金

俺の中で、ここが今一番大事な所。 2016年に積み上げてきた私生活面での良い事を大切にするためにも2017年は将来に向けて貯金していきたい。

てな感じで色々書いたけど、今年は趣味の面でも買いたいゲームがそこそこ有るので、色々忙しい一年になりそうですね。
去年は激動の2016年だったので、今年はそれをいい感じに昇華させていきたい。

それでは。

エンジニア同士で付き合っている話

これは カノジョできてるエンジニア Advent Calendar 2016 - Qiita の18日目の記事だよ!

基本的にポエムと惚気しか書いてないから、そういうの苦手な人は読まないほうがいいよ!!
技術ネタとかも特に無いです。あと、長い。

著者(俺)と彼女のスペック

著者(俺)

年齢:アラフォー1歩手前の三十路
仕事:ソシャゲの会社に勤めてる。
エンジニア歴9年くらい

彼女

年齢:俺より5歳下
仕事:BtoCのサービス運営会社からBtoBのサービス運営してる会社に転職
エンジニア歴7年くらい
備考:前職の同僚の学生時代の友達

最初に

ポエムだし、無駄に長くなりそうなので先に現状(惚気)だけ。 今現在、彼女とは同棲していて今月で3ヶ月目になります。

課題は無いわけじゃないけど、同棲して二人の時間も増えて楽しいし、彼女の作ってくれるごはんも美味くて健康的だしで感謝しか無い。

知り合って付き合うまで

きっかけ

今の職場に入りたての頃、東京から来た友達と飲んでた時に、前職繋がりで流行ってた(?)「生ハムツイート」なるものを真似してたら、前職の同僚の友達に纏められてた。 togetter.com

そこから何人かフォローしたのがきっかけだけど、何故か纏めた人はフォローしなかった。

付き合うまで

そこから、ちょくちょくTwitterでやり取りしてるうちに惹かれていったんだけど、何となくこのままじゃダメだと思い去年の後半位に筋トレしたりしてた。
関係ないけど、筋トレと有酸素をほぼ毎日やってたら、数ヶ月で10キロ近く減った。

んで、今年4月にUnite2016に行くのを切っ掛けに初めて会ってそこから紆余曲折あって4月23日に付き合う事になった。

付き合うまでは我ながら相当チキンだったなと。

遠距離恋愛

結論だけ先に言うと、TwitterとLINEとSkypeFF14など、 現代のIT技術と数々のサービスには感謝しか無い。
もしそれらがなかったら、付き合うことすら無かったような気がする。

付き合ってからしばらくは大阪と東京の遠距離恋愛状態で月に一回会う度に一緒にご飯食べてる時の写真撮ってはSNSに上げて爆発しろとか言われたり、一緒に色んなところ行ったりしていて楽しかった。
楽しかったけど、帰りはお互い寂しさでしんみりしてることが多かった。

因みに会う予定とか遊ぶ予定はお互いGoogle Calendarを共有したり、遊びに行ったときの写真もGooglePhotoで共有したりと、この辺はエンジニアカップルならではなのかなと思った。

会えない日は朝仕事行くまで常にSkype繋いだり、仕事の昼休みもLINEで話したりしてた。 あと、お互いFF14をやってたので、俺が同じサーバーに移転して、一緒に遊んだりしてた。

あと、毛色が違うとはいえ、お互いにエンジニアなので雑談の流れで自然に技術の話とかしてて、それも面白いなと思った。

同棲

つきあい始めて、5ヶ月位の話。

元々、彼女が関西に帰りたがっていたというのもあって、9月に本来会う日より少し前倒して部屋を見に行った。 その日に部屋と引越し日を決めて10月入った頃に引っ越ししてと、結構バタバタしてたと思う。

同棲のタイミングで彼女も東京の会社を退職したので、一緒にGolangの勉強会を開催していた @massan_77 のつてで何社か紹介してもらい、そのうちの一社に見事内定を決めていた。

同棲してからは、週末食材の買い物一緒に行ったり横に並んでFF14とか他のゲームとかやったり、夜寝る前に布団に入りながら横に並んで技術書読んだりしていて、少なくとも私生活に於いては楽しい毎日を送っている。
上にも書いたけど、おかげさまで健康的な食生活も送れてるので、非常にありがたい。

あと、元々ウサギを飼っていたのだけど、ウサギも彼女になつく様になってくれてよかった。

今後どうしたいかとか

個人的には結婚も視野に入れてるけど、その辺はさておき、
年明けからはお互い働くことになるので家庭内のタスクを上手く回せるようにしたいなと思っている次第。
後は折角引っ越して家が広くなったので、リビングとか自室とかを充実させたい。

最後に

今年は彼女が出来てから本当に楽しい一年だったなと思うと同時に、彼女との関係とか生活を大事にしていきたいなと思う。
あと、筋トレだけじゃないけど「自分にとってこの人しか居ない」と思ったなら、それ相応の努力はするべきだと身を以て実感した。

謝辞(追記 10:55)

肝心なことを書き忘れていた。
そもそも前々職から前職に転職してなかったらこんなことは起こり得なかったし、
@ryoxydol氏にtogatterでまとめられたり、
筋トレ始めたときに職場の同僚のアドバイス受けたり、
Unite後の飲み会で@3T_xelvis氏と@mizuno0to氏に付き合ってもらったり、
友人である@voidofglansGolang勉強会後にお互い酒でベロベロになりつつ「惚れてるなら電話しろよ」とか煽られたりと
彼女と付き合うことが出来たのはそれらすべてが重なった結果だし、

彼女が無事に転職できたのも @massan_77 のおかげなので、
この場を借りて感謝の意を述べたい。

自宅の居間

思い出深い(?)ゲームの話

この記事はクソゲーAdvent Calendar 2015の15日目の記事です。 完全書くこと自体を忘れてた(土下座

www.adventar.org

本題

最初、今までに出くわしたクソゲーについて書こうかと思ったのだが、
ガチのクソゲーは大抵記憶にすら残ってないなと思ったので、一番思い出深いゲームを挙げてみることにする。

真・女神転生 デビルサマナー

32ビット機初の女神転生シリーズにしてデビルサマナーシリーズの第一作目。 記念すべき作品の一つですね。

元々女神転生シリーズが好きだったのもあって、 中学時代にこのゲームの為に親にセガサターンをねだった事を今でも覚えています。

どこにクソゲーポイントがあったのか

前述の通り当時楽しみにしてたタイトルであり今でも名作だと思ってますが、
新しく入った好感度システムがクソだったなと。

例えば…

  • 強い悪魔を仲魔にしても好感度が少ないと、戦闘でも殆ど言うことを聞いてくれない
  • 好感度を上げるにしてもアイテムを贈呈or一緒に戦闘を重ねるかしないといけない
  • 大抵の強い悪魔は戦闘を重ねるしか無い
    • しかも命令を聞くようになった頃には大抵レベル差が開いて弱くなってる

そんな感じでそれまでの女神転生に輪をかけてマゾいシステムでした。

それでも頑張ってクリアしようとしたものの…

まあ、そんなマゾいシステムに心をへし折られそうになりながらも、 世界観とかストーリーは好きだったので、頑張ってクリアしようと進めていました。

…が、当時の僕は、何故か海外製の怪しいメモリーカートリッジ*1を使っていたばかりに 何かの拍子でセーブデータが飛んでいってしまい、そこで本当に心が折れてしまったのでした。

オチ

で、何が言いたいのかって言うとゲームがクソゲーなんじゃなくて、
怪しいメモリーカートリッジと店員の言葉を鵜呑みにした僕がクソだったというそういう話でした。

めでたしめでたし。

PSP版のデビルサマナー買おうかな。PSP持ってないけど。

*1:確かメモリ容量が2倍だと店員の言ってたことを鵜呑みにしたんだと思う

近況とかその他諸々

一昨年のカレーアドベントカレンダー以降全然書いてなかったので、久々に。
週一で書けたらいいかな(希望的観測

前回の記事から現在まで

  • 一昨年に転職した
  • 相変わらずソシャゲのwebフロントエンドやってる
  • 個人で作ろうとしてたゲームはものの見事に頓挫した

で、最近何してるの?

  • Golangを勉強し始めた。
  • UnityとGolangMySQLで何か作り始めた
  • Livecoding.tv始めました
  • 歩いて帰るのがマイブーム

Golangについて

最近、仕事してて自分のスキルって他所でも通用するのかという
漠然とした不安があったのと、
なんとなくGolangが気になってたので手を出した次第。

とりあえず、簡単なwebアプリ作れる程度にはなってきたので
上にも書いてるけどUnityと合わせて何か作ろうか的な。

UnityとGolangで作ってるもの

こんなん作ってます
GolangMySQL
github.com

Unity
github.com

リポジトリ名で察しはつくかもだけど、通信で連携させて動かします。

Livecoding.tvについて

勉強するついでに始めました。
英語力鍛えたいと思った。

歩いて帰ることについて

体重がリバウンドして80キロ代に行ってしまったのもあって、
昼休みに歩いたり帰りは歩いて帰ったりしてます。

元々不眠症なのか寝付きが悪かったんだけど、
それも改善されたような気がしなくもない。