bouzuya.hatenablog.com

ぼうずやのにっき

『 CSS フレンズ 第一回』に参加した / 『シング・ストリート』を観た

CSSフレンズ 第一回「CSS再入門」』に参加した。

「セッションではなく、そのあとがメイン」とはっきり言うのは良いと思った。初心者向けだったらしく「なんで bouzuya さんが居るの?」みたいなことを言われた。そうなのか。「ぼくはあまり気にせず参加するほうだから」と返したのだけど、ぼくは結婚してから懇親会への参加が減っているのもあるし、なんだか枠を減らしているだけの邪魔者のような気持ちで居る。発表もしないし、ね。

あと CSS フレンズと関係がないけど、「もしゃもしゃ会」がサイトを「模写」する会だとはじめて知った。てっきり平日の夜にもしゃもしゃ何かを食べる会だと思っていた。いや、食べながらやっているらしいけど。模写いいな。ぼくも個人的にやろうかな。

これまた関係ないけど、今回の会場になったサイボウズ大阪オフィスは梅田阪急ビルにあるのだけど、途中 15F のスカイロビーがきれいなんだ。いつも「いいな」って思う。すぐ近くのコンビニでおにぎりとか買って、のんびり食べたい気持ちになる。


シング・ストリート 未来へのうた』を観た。

わけあって手に入れた iTunes の 1000 円でレンタルした。

曲が良い。ダサいんだけど、まっすぐというか。そう、青春なんだよね。未来がある感じ。

良い。

2017-W15 ふりかえり

2017-W15 をふりかえる。

2017-04 の目標

2017-W15 の目標

  • ☑ bbna : blog.bouzuya.net for Android を公開する
  • スーパーマリオ ランを終える
  • ☐ 『アンダースタンディング コンピュテーション』を進める

今週の記事

つくったもの

2017-04-10/2017-04-16

bbna: blog.bouzuya.net for AndroidGoogle Play でベータ版を公開した。また、記事は書いていないけど、 blog.bouzuya.net の textlint 設定に変更を入れて 3.3.5 とした。

その他

時間配分。 bbna に多くの時間を割いている。おかげでベータ版の公開まではこぎつけた (2017-04-15) 。時間を割くはずが避けなかったのは『アンダースタンディング コンピュテーション』。先週 (2017-04-09) からの気持ちを切り替えられていない。先週の時点で言い訳を書いておいたが、そのとおりだ。

ゲームは『スーパーマリオ ラン』と『それはオレの魚だ』。

スーパーマリオ ラン』はほぼクリアした。あとは本当に空いた時間にやるくらいかな。

  • カラーコイン (ピンクコイン・パープルコイン・ブラックコイン) はほぼコンプリート
    • スペシャルコース (ブラックコイン) 」のみ未収集 (クリア済)
  • すべての建物 (キノピオ) の収集

『それはオレの魚だ』は 2017-04-12 に書いた。運要素が少なくて厳しいかもしれない。

今日の『 CSS フレンズ』および『シング・ストリート』のことは書いておきたい。

2017-W16 の水曜日には Rust の勉強会があるので、それまでにすこし触れておきたい。

2017-W16 の目標

  • ☐ 『 CSS フレンズ』のことを書く
  • ☐ 『シング・ストリート』のことを書く
  • ☐ Rust で何かをつくる
  • ☐ bbna 1.1.0 を公開する
  • ☐ 『アンダースタンディング コンピュテーション』を進める

bbna: blog.bouzuya.net for Android を Google Play で公開した

bbna: blog.bouzuya.net for Android のベータ版を Google Play で公開した。

bbna は blog.bouzuya.net のための Android アプリだ。ソースコードbouzuya/bbna にある。開発の目的は 2017-04-13 に書いた。

中途半端だが、公開した。今週の目標に含んでいるからだ。ベータ版でも公開は公開だ。これで今週の目標をひとつ達成できた。

お世辞にも良いアプリではないので、正式公開までにはいくつかの機能を修正したい。それに本来やりたかった実験もやっていくつもりだ。

使ってみて分かったことには、 blog.bouzuya.net の記事数は 1500+ でなかなかのものだ。以前にも書いた気はするが、改めて見てもなかなかの量だ。スクロールしてもなかなか最後にたどり着けない。

雑記

インターンシップ。ぼくはリードが不得意だと再認識する。

まだ LoaderManagerLoaderManagerActivityonStart のたびに onLoadFinished を呼び出している気がする。だから onLoadFinishedstartActivity すると、閉じて戻ってきた元の ActivityonStart でまた startActivity してしまうのだろう。読み込むのではなく、必要なら読み込んでデータを保証する感じ。うーん。

Android の Loader や LoaderManager を調べる

bouzuya/bbna をつくっている。 bbna は blog.bouzuya.net for AndroidAndroid のアプリで、 blog.bouzuya.net の client だ。目的は Android アプリ開発の練習だ。諸事情で Android アプリ開発ができないといけなくなったからだ。

進捗は blog.bouzuya.net の記事の一覧を表示するところまでを 2017-04-102017-04-11 で、記事の詳細を表示するところを 2017-04-12 と今日でやってきた。ひとまず記事の詳細を表示できるようになったが、まだこのつくりで良いのか迷っている。

Loader / LoaderManager でまだ迷っている。

Loader2017-04-10 でも出てきたが、 API ガイドの Loader のページ を読んで、また見方が変わってきた。名前から読み込みをするだけかと思ったのだけど、読み込んだデータの保持もするように見える。 Activity はデータを保持せず、 Loader (+ LoaderManager) 経由でデータを受け取る感じ。 Adapter にそのまま渡せばいいっぽいけど、そのあたりはまだよく分かっていない。

Activity にはひとつの LoaderManager があり、ライフサイクルに応じてよしなに Loader を管理してくれる。 LoaderCallbacks 経由で結果を受け取る。 Activity が直接それを実装すると、戻り値の型が制限されるので、独自の callback を実装して LoaderCallbacks からそれを呼ぶようにする。

LoaderManager.LoaderCallbacks<Result<List<Entry>>> callbacks =
    new LoaderManager.LoaderCallbacks<Result<List<Entry>>>() {
      @Override
      public Loader<Result<List<Entry>>> onCreateLoader(int id, Bundle args) {
        // ...
      }

      @Override
      public void onLoadFinished(
        Loader<Result<List<Entry>>> loader,
        Result<List<Entry>> data
      ) {
        MainActivity.this.onLoadEntryListFinished(data); // 独自の callback
      }

      @Override
      public void onLoaderReset(Loader<Result<List<Entry>>> loader) {
        // ...
      }
    };
LoaderManager loaderManager = getSupportLoaderManager();
loaderManager.initLoader(ENTRY_LIST_LOADER_ID, null, callbacks);

LoaderManager 経由では操作もほとんど初期化のことをできない。いつ読み込みを開始するかの制御はない。必要なら initLoaderrestartLoader で初期化し直す感じ。 Activity のライフサイクルに合わせて制御されるので任せてしまい、初期化したら取得してくれるのを待つだけという雰囲気っぽい。

課題が多い。

『それはオレの魚だ』で遊んだとか

今日は Android の WebView を試してみた。意外と簡単に表示できるので良さそうだ。……とは言え、もうすこし時間がかかるだろう。もともと、 WebView での表示を想定していない Web ページだし、もうひとつ Loader をつくらないといけなさそうだからだ。

話は変わる。

昨日の記事 (2017-04-11) に書きそびれたのだけど、『それはオレの魚だ』で遊んだので、そのことを書く。家族の 3 人で遊んだ。

『それはオレの魚だ』は、ペンギンが魚を集めるゲームだ。

ルールは簡単だ。 1 〜 3 匹の魚が描かれた氷タイルを集める。最終的に一番多くの魚を集めれば勝ちとなる。

六角形の氷タイルは 60 個あり、 878787... と並べる。これで場をつくる。場にペンギンコマを配置していく。ペンギンコマをひとつずつ順番に 1 匹の魚が描かれた氷タイルに配置する。人数にもよるが場全体に対して 8 〜 9 のペンギンコマが配置される。

全員が配置したらゲームスタート。順番にコマを移動させる。移動はペンギンコマが配置された現在の氷タイルからそれぞれの辺の方向へ進める。ただし他のコマや氷が途切れていると移動できない。

移動する前にペンギンコマが配置されていた氷タイルを入手する。全員が動けなくなったら終了。最後にペンギンコマが居た位置の氷タイルも入手できる。

目的が明確だし、移動の規則も難しくない。ただ氷タイルの初期配置とプレイの順番くらいで運の要素がほとんどないので実力差がかなり出そうだ。ルールは違うけど、囲碁ブロックスなどと同じ系統だ。難しい。長考してしまうので、タイマーを置いたほうが良いかもしれない。

名前のとおりだけど、「それはオレの魚だ」と言わんばかりに相手と奪い合う感じ。良い。

Android で JSON を parse する

昨日 (2017-04-10) に続き、bouzuya/bbna をつくっている。 bbna: blog.bouzuya.net for Android 。通信して取得した JSON を表示するところまで来た。

JSONArrayJSONObject でなんとかする感じ。

明日は WebView に手を出せるかな。今週中に公開まで行きたいので、適当に切り上げて進まないとな……。