膝を痛めて分かった3つのこと

気温が0℃をを示すある早朝未明、自宅から3kmほど離れたアスファルトの上をランニングしていると、ふと左膝に痛みを感じるようになりました。

足を止めると痛みは治ります。歩き出しても特に異常は感じません。ところが、走り始めて左足が地面に触れると、途端に膝の内側を刺すような痛みが生じてきます。

ようやく肩関節脱臼の固定具から解放されて自由に動けるようになったところに何とも歯痒いばかりですが、このまま継続すると本格的に膝を痛める予感がしたので、走り込みを打ち切って歩いて引き返すことに決めました。

膝の痛みが厄介なものになりそうな事を予感していた私は、しかし、その時はまだ気が付いていませんでした。

本当の危機はその後に訪れることに…




分かったこと 1 : 痛みは後からやってくる

膝の痛みを感じた私は、3kmほどの距離を歩いて自宅まで帰ってきました。

シャワーを浴びてウェアを手洗いし、いつもより少し遅めの朝食をとってから再び歩いて仕事に出掛けます。

この時は膝に違和感を感じる程度で、特に問題なく歩道も階段も歩けました。

痛みを感じるようになってから6時間後の昼時になると、椅子から立ち上がったり、真っ直ぐに立っている事ができない程の痛みを感じるようになりました。

痛みは神経に触るような鋭いもので、主に膝の皿の下の内側の部分に生じます。

膝を曲げたり、患部を手で押して圧力を掛けても大丈夫ですが、足を真っ直ぐに伸ばしたり体重をかける事が全くできなくなってしまいました。

分かったこと 2 : サポーターは万能にあらず

知り合いのタナ障害を間近で見てきた経験から、膝が痛むときにはサポーターを付けて固定すると良いという思い込みが私の中にありました。

帰り掛けに薬局で購入し、ズボンをめくって膝にサポーターを取り付けてみると、しっかりと膝を支えてくれて安心感を覚えました。

しかしながら、そのまま歩き出してみると膝の痛みはマシになるどころか悪化してしまい、何もせずに立っているだけでも骨折のような継続的な強い痛みが生じて、立ち止まる事すらできずに蹲み込んでしまう結果に至りました。

後から聞いたところによると、タナ障害は膝を曲げると痛みを感じるらしいのですが、私の場合は対照的に足を伸ばした際に問題が生じるので、そのままの位置で膝を固定してしまうと不適切な様です。

わずか数時間のうちに歩行はおろか直立まで困難になるという事態の急変に、Amazonプライム会員の特権を利用して杖を取り寄せる事に決めました

分かったこと 3 : 回復を焦ってはならない

安静時には無痛で、椅子に座ったままの姿勢での膝の曲げ伸ばしには何の支障もない事から、当初は長くても1週間ほどで完治するものとばかり思っていました。

実際には日を追う毎に水膨れができたり、無事な方の右膝にも負荷が蓄積して痛みが生じてくるようになりました。

椅子から立ち上がった直後は何の問題もなく思えるのですが、長く立っていればいるほど違和感が強くなり、しまいには直立していられなくなってしまいます。

脚の内側に体重を乗せないように足裏の外反に重心を置くように意識したり、ローラー台を回して体重を乗せる位置と痛みの生じ具合の関連を確認したりと試行錯誤を繰り返したのですが、他の人に合わせて普通の速度で歩いたり、階段を降りたりする度に膝下が痛むのだけは、どうしようもありません。

台湾人の友人からは、この痛みを忘れずに怪我を予防するように注意されましたが、久しぶりに味わう不自由さと回復した時に感じる健康の有り難さはよく覚えておこうと思います。

冬場の朝練のジレンマ

ロードバイクで気持ちよく走るためには信号と混雑を避け、車を追い抜いたり、追い抜かれたりする頻度を極力下げる努力をする事が肝要です。

そのためライドにとって理想的な時間と言えるのは早朝を置いて他にありません。

道路のまだ空いている早朝に家を出て、通勤ラッシュの混雑が始まるよりも前に帰宅するように時間を調整できれば、最高の気分で一日のスタートを切れる事は保証されたようなものです。

しかし、日の出の遅い冬場に自転車に乗るのに十分な明るさを待っていては、道路が混み始めて快適とは言い難い状況に変わってしまう事が問題です。

快適に走ることを考えるのであれば、道路が混み始める6時過ぎぐらいには朝練を終えて帰宅途中であるぐらいが望ましいのですが、12月の東京では早朝6時以前に路面状況が見通せるぐらいの明るさを期待する事はできません。

ただでさえ工事による継ぎ接ぎで舗装状況が悪く、落葉や凍結の危険に加えて路上駐車や飛び出しの危険もある都内では前照灯2本でも心細いので、自然と自転車を屋外に持ち出す頻度が下がってしまいます。とは言え、せっかく積雪もなく晴天が続くにも関わらず、屋内でローラー台を回しているばかりでも気が滅入ります。

そこで私は朝練のライドをランニングに置き換えて外を走る頻度を増やす事を選択しました。

思い立ったところで夏場向けの薄着しか持っていなかったので、冬季用のウェアを揃えるところから始めました。

デザインで選んでいた夏季とは異なり、冬季は体力の消耗が激しいので保温性と機能性を重視して候補を絞り込んでから、試着時点で最も自分の体型に合致したNIKE スウェットパンツ THERMA-FIT を最終的に選択しました。

0℃から7℃ぐらいの外気温で何度か使用していますが、動きやすい上に寒すぎず暑すぎずで重宝しています。




ランニングを取り入れて最初の週は、走り始めの5kmぐらいから気持ちよくなり過ぎ、後先を考えずに2日で30km以上も走った挙句、筋肉痛で階段も降りられなくなりました。

ローラー台をゆっくりと回しながら筋肉痛を解して行ったところ、その2日後にはまた走れるぐらいにまで回復したので、今後はローラー台練習と交互に取り入れながら無理なく長く続けられる方向性を模索していきます。

はじめてのAndroidプログラミング

私にとってモバイルや通信は全くの専門外ですが、勉強も兼ねてボランティアで日本語学習者を対象とした Android OS 向けの辞書アプリを作成しています。その際に利用した最初かつ唯一の入門書が本書になります。


超初心者でも大丈夫! はじめてのAndroidプログラミング Android Studio 2対応

取り敢えずのJavaの基礎さえあれば、これ一冊で導入から短期間でアプリケーションの開発ができてしまうのですから驚きという他にありません。

もちろん、私自身は全くの初心者という訳ではなく、学部生の時分にはアルバイトで分散リアルタイム解析を行っていたぐらいのJavaの知識はあります。

冒頭の写真にある参考書の内容ぐらいは把握していますので、その程度の知識と経験を持った上での感想である事をご了承ください。



本書の構成は章ごとに独立したアプリケーションの作成を通して新しい内容を学ぶ事に一貫されており、まずは開発環境のAndroid Studioの導入と設定に始まり、画面の作成、画面の遷移、ダイアログ表示やカレンダー、センサーの利用と進み、最終的に OR Mapper や外部の Web API を用いたアプリケーション開発までの範囲を網羅しています。

これだけ幅広い内容を取り扱いながら、文字コードの設定 (日本語入力に必須) やエディタの行数表示などの細かい部分にまで気が配られている事に好感を覚えます。

『はじめに』に記述されている「プログラミングの初心者でもつまづかないよう」にとの配慮でしょうが、それだけにエラーメッセージについての項目がなく「ツールウィンドウがある」という表記に留まっているのが少し気に掛かりました。

詳しくは後述しますが、プログラミングでつまづいた際に解決する手掛かりとなるのがエラーメッセージなので、ググり方を知らない本当の初心者だけでなく「ある程度の経験がある」読者のためにもあっても良いのではないかと思われました (私は最初の頃はエラーで苦労しました)。

それというのも本書のコードを見ながらメソッドを穴埋めしていくとビルドに失敗したり、クラッシュしたりする事が何度かあったのです。

そこでエラーメッセージを見直してみると次のような警告がなされていたりします。

error: no suitable method found for show(android.app.FragmentManager,String) method

このエラーが出る原因は android.app.DialogFragment を読み込むべきところに自動インポートで android.support.v4.app.DialogFragment を読み込んでいる事にあります。

本文の説明やサンプルコードには android.app.DialogFragment をインポートするとしっかり書いてありますが、(自動インポートだけに) コード解説部分では省略されているので気が付かないと何処が間違っているのか分からずに立ち往生します (インポート部分だけはサンプルコードからコピー&ペーストした方が確実です)。



さらに困った事には、現行の Android Studio 2.2.2 でボタンの OnClick 動作を行うとプログラムが落ちてしまう事があります。

これは Android Studio のバグかもしれません が、Android入門者には何が起こっているのか見当もつきません。

Javaの開発経験で養った勘を活かして次のようなエラーメッセージを確認する事で、初めて何が起こっているのかを把握する事ができます。

java.lang.IllegalStateException: Could not find method methodName (MainActivity)(View) in a parent or ancestor Context for android:onClick attribute...

これを見るとメソッドを見つける事ができない事が原因となっているので、activity_main.xml を編集して手動でメソッド名を追加してしまえば何とかなるのではないかと対処方法を考える事ができるようになります※。

換言すれば、若干、不足気味と感じられたのは問題発生時の対処程度であり、入門書で扱う範囲については過不足なくまとめられている良書であると思われました。

さすがにGradleによるビルド等には触れられていませんが、この一冊だけでAndroidアプリケーションの構成からGUIとイベント処理、ミドルウェアの取り扱いについて不安がなくなった事は事実です。

章ごとに独立したプロジェクトを立ち上げるのでアプリケーションが乱立気味にはなりますが、その分、繰り返す事により後半に進むに連れて展開が予想できる程にAndroid開発に慣れてきます。

この章ごとに独立した構成から最初の4章までを除いて、以降は興味のある内容を扱った章のみを摘み食いしても差し支える事はおそらくありません。

総評すると最初の一冊としての選択として間違いのない内容であったと思われました。




※ この問題については Layout の編集において”Text”タブをクリックし、

android:onClick="methodName (MainActivity)"

上の部分を次のように書き換えると無事に参照できるようになります。専門外なので原因は分かりません。

    android:onClick="methodName"

余談

プログラミング初心者の方の為に追記しますが、第2章のレイアウトXML編集 (レイアウトエディタ) では本書で紹介されている LargeText が存在しない為、自己判断で Plain Text で代用しました。

変数の参照さえ合っていれば、部品は何を使っていてもプログラムとしては問題ありません。

同じく第4章では、ボタンクリック後の遷移先の画面に空の (画像を指定しない) ImageViewを作成できなかったので Drawable の中の適当な画像を選択して my_hand_image を作成しています。

プログラムの構造上、この変数は遷移前の画面で指定された画像に置き換わる事は自明なので、本書と同じように空の ImageView が作成できないという理由で立ち止まらず、変数だけ作成してしまって先に進んだ方が賢明です。

関連記事: