Monthly Archives: October 2017

台風一過の荒川を覆う泥と風

DSC07033

日本各地に大雨をもたらした台風21号と22号。

私の住んでいる東京都でも河川が増水して交通機関に影響が出たと聞いています。

台風の直撃を避けるような形で新潟県や静岡県への出張が重なったので、私自身は実感はしていないのですが、風に飛ばされて道路上に転がるゴミ箱の蓋などを見るたび、その風雨の強さを意識させられます。

嵐は去って増水した川の水は引いても、強風は直ぐには収まりません。

荒川の河川敷では冬の恒常的な北風よりも強い横風が突発的に吹き付けて、飛行中の小鳥が風に流されてバランスを崩す様子などが見られます。


DSC07047

DSC07062


サイクリングロードまで完全に水が引いていて、舗装路が綺麗に見えるところがほとんどなのですが、一部の区間は泥に埋まっていたり、水溜まりに浸かっていたりして自転車で走行するには危険を感じます。

特に泥濘んでいるところを避けようとしてブレーキをかけるとスリップしてハンドルを持っていかれるので、水溜まりの中では絶対にブレーキレバーを引いてはいけません。

自転車にとってはグレーチングや雪と同様に危険です。


DSC07064

DSC07157


上述の強風と路面の悪さとが相まって、通常よりもバランスを崩しやすくなっているので神経を使います。

自転車は向かい風では進みませんし、横風ではハンドルを取られますし、追い風では落車しそうになるほど急加速します。

こういう時は重心を低く落として車体を安定させます。




そうして風や路面に注意を向けて泥や水溜まりを避けながら堤防側を走行していても、泥や砂を巻き込むことは避けられません。


DSC07113

DSC07090


気づいた頃には手遅れなほどにホイールやドライブトレインが泥で汚れてしまいます。

駆動系は諦めるとしてもホイールリムのブレーキ面だけは走行に支障が出るので、定期的に側溝に溜まった水で泥を洗い流します。


DSC07107

DSC07167

DSC07172


せっかくの晴天の振替休日ですが、向かい風や横風が強くて思うように進まない割に止めどなく汚れが増えていくので、埼玉県との都県境で止む無く折り返すことを決めました。

台風一過には展望が良くなるので、その時を狙って山に登る人もいますが、倒木や飛来物や落下物 (とくに落石と枝) で道路環境が読めないこと、また土砂災害の危険性があることから、私は基本的には山には向かいません。

そこで平地の広めのサイクリングロードを訪れてみたのですが、こちらも風が止むまでは為す術もないことを体感しました。

Android 初心者がフラグメントを使う話

Android アプリ開発の入門書を手に取ると、まず画面の作成に始まり、必要な部品を追加してメソッドを実装し、他の画面への遷移へと順に進む方針で書かれていることが一般的です。

そこでは基本的にアクティビティ (Activity) というコンポーネントを使用することを前提に話が進みます。

アクティビティは私のような初心者にも直感的に理解しやすく、書籍などの情報量も多いので、当然と言えば当然なのかもしれません。

一方で現在の Android アプリ開発では、入門書の例のようにアクティビティをふんだんに用いて実装を行うのではなく、より小さなフラグメント (Fragment) というコンポーネントを利用して、個々のアクティビティの役割を少なくする考えが主流になっています。


その背景にはアクティビティの役割が増えすぎて肥大化していたことや、異なる画面の大きさを持つ多くの機器への対応などが挙げられていますが、本題ではない上に長くなるので割愛します。

重要なことは、一般的な Android アプリ開発では多用されているフラグメントについて、アプリ開発の入門段階では使い方を知る術が限られていることです。

たとえインターネット上には豊富に情報があったとしても、知らないものは調べられないのです。




フラグメントを使用するとタブの切り替えによる画面表示の変更などを簡単に実装できます。

それどころか、入門書で作成しているサンプルアプリではアクティビティほど多用な機能は必要ない場合も多いので、フラグメントのみで画面遷移を実現できる場合も少なくありません。

フラグメントの簡単な使用方法はアクティビティ同様に、Java ファイルと XML ファイルを用意してアクティビティに追加してあげることです。

例えば Java ファイルを FooFragment.java として、その内容を以下のようにしてやれば、他に必要なことは2点のみです。

1点目はコード中の R.layout.fragment_foo で参照されている XML ファイル fragment_foo.xml を作成してあげること。

もう1点目は作成したフラグメントをアクティビティに追加してあげることです。

この時、追加するフラグメントの OnFragmentInteractionListener を実装してあげないと InflateException を吐いてアプリが落ちますので、忘れずに実装してください。

InflateException は他のエラーと同様に Android Monitor の logcat から確認できます。

これでうまくビルドに成功すれば、アプリの立ち上げ画面からフラグメントのレイアウトを表示するようになります。

レイアウトを切り替えるにはフラグメントから FragmentManager を利用します。

この時に忘れてはならないのは、追加されるアクティビティ (ここでは MainActivity) に追加するフラグメント (ここでは BarFragment) の OnFragmentInteractionListener を追加実装してあげることです。

このようにアクティビティと比較するとやや煩雑になってしまいますが、入門書で作成したサンプルアプリを使ってアクティビティからフラグメントを使用した構成に自分でコードを書き換えていくと、アプリ開発についての理解が深まって良い勉強になります。

そしてあまり入門書では触れられていない、FragmentTabHost を用いたタブの切り替えも簡単に行えるようになる点も見逃せません。