大峰山登山の振り返りと次回に向けて

大峯登山から1週間たって、色々気づいたことを書き留めておこうと思う。

自分の場合、過去スズメバチに2度刺されていて、秋口はスズメバチが攻撃的になる時期なので単独山行はそこを避けないと万が一刺されたらヤバイことになる。そうすると秋の単独山行は気温が下がってからしかできない。かといってあまり遅い時期になると標高の高いところは気温が低くてつらいのと、日が短くなって行動できる時間が短くなるので、今回の山行は秋に行うには、ほぼピンポイントでここしかないという時期だった。

 

alasixosaka.hatenablog.com

 

服装について

今回は気温が結構下がって来ていることと、標高がかなり高いところまで行くということを考えて着るものは少し多目に持っていった。着ていったのも含めて上が4枚、インナーがバーグハウスのメリノウールロングシャツ。ミッドレイヤーはファイントラックのフロウラップ。アウターは予備としてIZASのウインブレ、着替え兼予備として、モンベルのウィックロンZEOロングスリーブジップシャツ。下が2枚。モンベルのクロスランナーパンツとRegatta のウインブレ。

使ったのは上は2枚、下は1枚でなんとかなった。しかし、山上ヶ岳の山頂付近はお天気が悪くなったこともあって結構寒かったのでこれはこれでよかったと思う。山で寒くて動けなくなるのは最悪の展開だから。少し多目がちょうど良いと思っている。

食料について

持っていったもの。おにぎり3個。一口羊羮大2個、小4個。一本満足バー2個。ジェル市販品2個、手作り1個。行動中に食べたのは、おにぎり3個、一口羊羮大1個、手作りジェルだけだった。思ったより消費しなかったと思ったが、消費カロリーと摂取カロリーのバランスで考えるとマイナスになっているので、もっと長時間の行動や2日以上の縦走など連チャンで行動するときはもう少しカロリー摂取を考えた方が良さそうだ。結局持っていった行動食兼非常食にはほとんど手がついていないのでかなり大量に余った。もちろん食料も余るくらいでないと何かあったときにそれで食いつなぐ必要があるので山を降りたらぴったりなくなっていた何て言うのは論外なので食料もこれくらいでちょうどよかったのではないかと思う。まあ、余った分のうち山を降りてから吉野駅に向かう途中でブラックサンダー2個と一本満足バーを食べたのだけど。

それと、甘いものばっかり持っていったが、ナッツ系やおかき系などのしょっぱい系の食料もあった方がよかったと思った。甘いものだけだとどうしても単調になって食べる気がなくなるので。これは反省点。ただ、しょっぱい系の食料は水も必要になるので下に書いたように水について要注意になるが。

水について

これについては多いに反省している。持っていったのはソフトフラスク2本で計1Lのスポーツドリンク。それとの飲みさしのペットボトルのお茶400mlほど。

最終的にはペットボトルのお茶が少し余ったが、かつかつの状態で山上ヶ岳手前でかなり心細くなった。気温が低めということと、実は洞辻茶屋や大峯山寺では補給ができるかもという期待もあったので、それほど大量に持っていかなかったが途中での補給が全くできず危うく水分不足で苦しむところだった。水場の事前調査は入念にしておき余分めに持っておく方が良かったと思っている。他の方も書いておられるがやはり、尾根の縦走は水の確保がポイントだと思った。

体力面

準備については風邪をひいて予定していたLSDができなかったので準備不足のまま本番を迎えることになってしまった。なので、五番関まで位しか行けないのではないかと、始める前は結構弱気に考えていた。

結果的に、最も遠くの山上ヶ岳まで行けたので以外に行けたなあというのが正直な感想。29kmという自分的には相当に長いトレイルをこなせたのはやはり30kmウォークの成果だろうか。なんせ、トレランでは20kmを超えたことはなかったので。

また、所要時間もだいたい9時間くらいを想定していたが、7時間ほどで完走できたので思ったよりもいいペースで進むことができた。

コースタイムとの比較では、トータルで見るとコースタイムの半分ほど。ただし、これははじめと終わりのロードの部分で走って稼いでいる分がかなりあるので純粋な山道だけで考えるとコースタイムの6割程度と見て良いだろう。傾斜が緩くて走れる区間はコースタイムの3-4割のタイム、傾斜がきつくなるにつれてコースタイムとの差が縮まって最もきつかった山上ヶ岳手前ではコースタイムの7割ほどになっている。

コースタイムとの比較ができたので次回以降の予定は、これを参考にして考えることにする。

次回以降に向けて

大峰山奥駈道を基本日帰りで分割していこうと考えると、次回はやはり洞川温泉スタートで山上ヶ岳から縦走して弥山、八経ヶ岳方面に向かうコースが考えられる。長距離をこなす自信がなければ、大普賢岳から和佐又山の方に降りるというコースも考えられるが、このコースだと肝心の奥駈道を通る距離があまりに短い。そうすると距離は長めになるがやはり、一周して洞川温泉方面に戻るルートがよさそうだ。

このコースはトレランで完走している人のブログがある。

 

勝手に『大峯早駈』単独走

 

このブログによると、距離は約40kmで所要時間は10時間半ほど。コースタイムとの比較で考えても約半分と相当早い。この人は100kmのトレランレースにも参加しておられるので、自分よりもかなりレベルは高い。そう考えるとこのコースを完走するのは相当にハードだ。

公共交通機関を使うことを考えると、洞川温泉に朝着が9時半頃で、帰りの最終が6時頃なので、同じタイムで走っても完全にアウトだ。それに、次次回を考えると必ずしも、弥山、八経ヶ岳に上る必要がない。それなら、行者還トンネルの西口に降りてそこから林道を走って(走れれば)帰るというのもありかなと思う。距離はあまり縮まらないので所要時間を考えるとバスを使うのはリスキーだが、車を使って早朝に出発すれば行動時間は確保できるだろう。最後は林道経由なら足場も悪くないし、最悪日が暮れてもヘッドライトをつけてトボトボ歩いて行けばなんとか帰れるだろうと思う。弥山、八経ヶ岳という関西最高峰の2座に登りたい気もあるが、それはさらに次回以降の楽しみにしておくのが良さそうだ。

それでも距離は40kmほどあるので登りが減った分だけ少し楽という程度なので次回までにもっともっと鍛えておく必要がありそうだ。とりあえず、今年は日の暮れも早くて長距離は危険なので挑戦は来年の春、日が長い5月頃になりそうだ。それまでにもうトレーニングして行動できる時間や距離を伸ばしておく必要がある。

 

 

大峯山奥駈道分割縦走その1

11/3、3連休の真ん中の日に大峯山に行ってきました。想像以上にきつかった。今までの登山の中でも最高にしんどい登山になりました。でも、達成感はありました。

 

大峯山奥駈道について

奈良の吉野から和歌山の熊野本宮まで続く大峯山奥駈道。その距離約100km 、ノンストップで駆け抜ける猛者もいるそうですが、自分にはとても無理なので、何度かに分けて走破してみようと思います。構想については以前に書きました。

 

alasixosaka.hatenablog.com

 

 

alasixosaka.hatenablog.com

 

今回は第1回目として吉野から山上ヶ岳の手前、洞辻茶屋まで、予定より早く進んで場合、あわよくば山上ヶ岳までを目指してみようと思います。逆に予定より遅かったら五番関でエスケープ。いずれも場合もゴールは洞川温泉です。

洞川温泉発の最終バスは17:58分なので、それまでに下山する必要があるので途中の時間を見てどこまで行くか決めようと思います。

準備

ザックはサロモンのADV SKIN 12。用意したのはだいたい下の写真のものたち。

f:id:alasixOsaka:20191102132249j:image

ウェアは、インナーがバーグハウスのメリノウールロングシャツ。ミッドレイヤーはファイントラックのフロウラップ。アウターは予備としてIZASのウインブレ。そしてもう1枚、着替え兼予備として、モンベルのウィックロンZEOロングスリーブジップシャツ。パンツはモンベルのクロスランナーパンツと防寒用にTrekkinn で購入したRegatta のウインブレ。靴下はTABIOのトレイル5本指。靴はOnRunning のクラウドベンチャー(写ってませんが)。帽子と手袋(サイクル用を流用)。ウェアは標高を考えてちょっと厚めにしておいた。

食料は昼食として自家製のおにぎりを用意する予定。その他は行動食として、一口羊羮大が2つ、小が2つ。一本満足バー2つ、ブラックサンダー4つ。ジェル2つとBCAA入り自家製のジェルを150cc用意する予定。水分はソフトフラスク2つで合計1L。季節がらそれほどたくさんは要らないという想定。それ以外は、常備薬として、痙攣防止に芍薬甘草湯、痛み止にロキソニン。地図とコンパス。それに熊鈴、エマージェンシーシート。といったところ。

結局水分については、ペットのお茶500ml(少し飲んでいたので残りは400mlほど)を余分に持って行ったがこれでギリギリといったところ。大峯山寺も途中のお茶屋も季節はずれで全部閉まっていたので全く補給ができず、途中でかなり心細い思いをした。ハイドレーションパックを併用してもう少し余分に持っていくべきだった。

全部をザックに詰めると結構パンパンな感じ。真冬の単独トレランだと12Lでは足りなさそう。パッキングが下手なのかな?

出発

始めは近鉄吉野駅まで行こうと思っていたが、いろいろあって結局車で行くことにした。6時過ぎに自宅を出発。電車を使うのよりも1時間ほど早い7時半ごろに吉野駅に着いた。ところが、グーグルで検索してあてにしていた駐車場は月極の駐車場で利用できず。他には駐車場が見当たらない。

困った、車で来たことを激しく後悔して、このまま帰ろうかとも思ったが、せっかくここまで来たのだから何とかしようと、うろうろして、結局吉野山の駐車場に止めることになった。駐車料金は¥1000だった(平日は料金はかからないみたい)。なんだかんだで8時を過ぎてしまい、車で来たのに電車で来るのとあまり変わらない時間になってしまった。有人の駐車場だったので、夜に閉められると困ると思って、入り口の係りのおばちゃんに聞いてみたが、いつでも車は出せるということで、安心して出発することにした。

吉野山駐車場は、吉野駅からロープウェイを登ってきたところの駅の少し山を下ったところにある。当初の予定ではロープウェイの下を歩いて登ってきてそこから吉野山に向かっていく予定だった。思いがけず、車で山を登る形になったが、最後は近鉄吉野駅に戻ってくる予定なので、いずれにしても駅からの登りは通る必要がある。しかも、疲れ切っていることが想定されるので、最後は泣きが入るんじゃないかと思ったりもする。まあ、後のことは後のことでとりあえず出発することにする。朝食のランチパックをほおばり、お茶と痙攣止めの芍薬甘草湯を飲んで、テーピングする。

吉野山まで

洞川温泉発の最終バスに乗るためには、山上ヶ岳まで行こうとするとコースタイムの6割程度のスピードで登る必要がある。とりあえず、初めはロードなのでここである程度タイムを稼いで、少し余裕をもって登山しようという作戦で臨んだ。結局のところこれはあまり良い作戦ではなかった。始めのうちに体力を使ってしまい、最後の登りはほとんど余力が残っていなかった。やっぱりコースタイムの6割でということなら基本的にはそのペースを維持しながら進むべきだったと反省している。

8:20駐車場を出発。始めのうちはお店の立ち並ぶ吉野山の観光地の中を進む。しばらく進んでお店が途切れたあたりで道の分岐に石碑があり、大峯山の文字が現れた。

f:id:alasixOsaka:20191104092655j:plain

石碑に大峯山の文字

吉野は桜の名所で山の下から順に下の千本、中の千本、上の千本、奥の千本と続いている。中の千本を過ぎると、舗装路ときどきトレイルといった感じでトレイルが現れるようになる。傾斜は思ったよりもきつく当然のことながらずーっと登りが続くので、ゆったりとしたペースで走っているつもりでも結構きつい。

上の千本を過ぎたところで、大峯山奥駈道の石碑を発見。

f:id:alasixOsaka:20191104093153j:plain

大峯山奥駈道と書かれた石碑

f:id:alasixOsaka:20191104093258j:plain

こちらは木の看板

f:id:alasixOsaka:20191104093410j:plain

こんな立派な看板もある

奥の千本までくると、人家は全く見当たらず。いよいよ山に来たという感じになる。実は奥の千本まではバスが走っていて、ちょうどバスがやってきて観光客らしき人たちが降りてきていた。ここまで40分走って来たことを思えばバスに乗ってくればかなり楽できそう。

奥の千本を過ぎると本格的なトレイルに入る。天気予報は午前中小雨交じりの曇りということだったが、お天気が良く、景色は最高だった。

f:id:alasixOsaka:20191104094515j:plain

気持ちの良いトレイル

f:id:alasixOsaka:20191104094348j:plain

絶景の吉野山

スタートから1時間で青根ヶ峰に到着。山上ヶ岳まで行って帰る場合の想定時間はここまで1時間半だったので、予定通り吉野までのロードで30分ほど時間を稼いだ。

青根ヶ峰の山頂はルートから外れているので山頂に寄らずにパスして先を急ぐ。

大天井ヶ岳まで

青根ヶ峰を過ぎると、林道に合流。ここで、林道から再びトレイルに入るところをミスしてしまい、しばらく林道を行って、再度トレイルと合流するところまで林道を進む。この辺りはトレイルと林道が交錯していて気を付けないとミスをしがちだ。

ここで、黒滝村の標識が出てきた。黒滝村に入ったと思ったが、後で地図を見るとこの辺りは川上村と黒滝村の境を奥駈道が通っていることになっている。吉野町は青根ヶ峰のちょっと先までで終わっている。

f:id:alasixOsaka:20191104095533j:plain

黒滝村の看板

10:10頃四寸岩山に到着。でっかい岩があるのかと思ったが見当たらない。

青根ヶ峰から四寸岩山までは想定通りのペースで進んだ。

f:id:alasixOsaka:20191104095829j:plain

四寸岩山付近からの眺望

しばらく行くと足摺茶屋跡に到着。ここは、避難小屋として使えるようになっているようだ。

f:id:alasixOsaka:20191104100138j:plain

足摺宿の看板。中は土間だが一応は使えるようになっている。

更に行くと二蔵宿小屋に到着。ここでは、管理の人だろうか、巻き割りをされていた。ここで、道は2手に分かれて、巻き道で五番関に向かうルートと、大天井ヶ岳を経て五番関に向かうルート。正式な奥駈道は大天井ヶ岳経由なのだが、ここで道を間違えて巻き道の方に行きそうになる。ヤマップの地図を見て慌てて戻る。GPSがあると間違えにすぐに気づくので便利だ。

大天井ヶ岳への登りは急勾配を一気に登る急登になっていてとてもきつかった。途中で休んでおられるおじさんに声をかけられて、「頂上はこの上ですか?」と聞かれたので「たぶんそうです」と答えたが、大ウソだった。申し訳ない。急登を一気に上がると稜線に出てそこをかなり行ったところが大天井ヶ岳だった。

振り返ると吉野山が見える。遥かにここまで来たのかと思うと少し感慨深い。

f:id:alasixOsaka:20191104101210j:plain

大天井ヶ岳付近から吉野山を振り返る

大天井ヶ岳も頂上はルートから少し外れているのでパスして先を急ぐ。この区間は想定タイムより20分早く進んだ。

f:id:alasixOsaka:20191104101356j:plain

大天井ヶ岳も頂上はパス

洞辻茶屋まで

大天井ヶ岳から稜線を下ると五番関に到着。ここから先は女人禁制になる。

f:id:alasixOsaka:20191104101833j:plain

五番関の女人結界門

ここも想定タイムより大幅に縮めて到着。ちょっとコースタイムがおかしいんじゃないかと思うが、早く着く分には全然かまわないので気にしないことにする。

少しお腹が空いたので持ってきたおにぎり3つの内2つをほおばる。ここまでで持ってきたソフトフラスク2本分の内1本半くらいを消費してしまっているので、水が心細くなる。ペットのお茶を持ってきて本当に良かったと思う。

五番関からしばらくは緩やかな傾斜のトレイルが続く。

f:id:alasixOsaka:20191104102426j:plain

五番関の先のトレイル

五番関を過ぎるとすれ違う人が増えてきた。奥の千本からここまでは数人グループのハイカー(何かの下見に来ている感じだった)、2人ずれの地元の人っぽい人(一人は革ジャンを着ていたし、手ぶらだったのですっかり地元の人と思っていたが、話しぶりからするとハイカーのようでもあった??)、大天井ヶ岳の下であったおじさんとその手前で道を譲ってくれたお兄さん(彼は道を譲ってくれたが結構早くて、こっちは走れるところは走っているのにほぼ同じペースでついてきていた)。それに、反対から来られた3-4人連れの人くらいだった。

トレイルランナーにも一人すれ違った。挨拶をしたが完璧に無視された。家の近所でもハイカーの人は挨拶を返してくれるが、トレイルランナーは無視するか、むすっとしてぶっきらぼうに返事するかだいたいどちらか。どうもトレイルランナーがハイカーから嫌われるのはこういうところにも原因があるのかと思う。挨拶されたら返すのが人としての基本だと思うのだけど。人としての基本がなってないのだから嫌われるのも当然か。

緩やかなトレイルもつかの間で、激しいアップダウンを繰り返すところに出てきた。一つピークを越えるだけと思っていたのでここのアップダウンはこたえた。特に最後に鎖が出てきたときはさすがは修行の道と思った。

かなり疲労を感じながらようやく洞辻茶屋に到着。想定タイムより10分はやく着いた。時間は12:40。余裕をもって山上ヶ岳に登るためには遅くとも13:30までについておきたいと思っていたのでいいペースでこれた。

洞辻茶屋はシーズンオフなのかお店は全部閉まっていた。

f:id:alasixOsaka:20191104124717j:plain

洞辻茶屋。お店は全部閉まっていた。

f:id:alasixOsaka:20191104124750j:plain

洞辻茶屋出口の不動明王像。

ここで、最後のおにぎりを食べる。そして、最後の登りに備えてBCAA入りジェルを半分飲んだ。洞辻茶屋ではひょっとして水分補充ができるかと期待したが残念ながらこのまま進むしかない。フラスクの水分はもうほとんど残っていないので、あとはペットのお茶が半分ほど残っているだけだ。

大峯山登頂

洞辻茶屋からしばらく進むと陀羅尼助茶屋があった。ここも当然閉まっている。しかし、山頂が近づくにつれてどんどんにぎやかになってくる。普通はどんどん何もなくなるものだが、さすがは修験者たちの通う道だ。そして道の分岐に出た。

f:id:alasixOsaka:20191104125305j:plain

洞辻茶屋の先にある案内看板。

ここは左に進むのが正しいルートのようだ。左のルートを進んでしばらく行くと崖の連続、その先は鎖場とまさに修行の道だ。その途中で、小学生になるかならないか位の子供を連れた親子連れとすれ違った。よくここまで登ってこれたなと感心した。

鐘掛岩まではとにかくきつい急登だった。最後の力を振り絞って登った感じ。

そしてしばらく行くと大きな建物が見えてきた。近づくとこれが宿坊だった。

f:id:alasixOsaka:20191104130553j:plain

ようやく大峯山寺らしい景色が。

しかし、よくもこんな険しい山の上にこんなでっかい建物を建てたもんだ。

しばらく行くと西の覗に到着。ここでロープでつるされる業をやるところだ。シーズンオフなので誰もいないが、ここから下をのぞくとほんとにぞっとする。写真も撮る気がしなかった。

f:id:alasixOsaka:20191104130843j:plain

西の覗。残念ながら崖からの写真は撮れませんでした。

そして本堂が近づいてきた。

f:id:alasixOsaka:20191104130959j:plain

本堂下の看板。

f:id:alasixOsaka:20191104131029j:plain

遠くから見えていた宿坊。

宿坊も当然全部閉まっている。

そして、山門をくぐると。

f:id:alasixOsaka:20191104131115j:plain

大峯山寺の山門。

ようやく本堂に到着。13:30。洞辻茶屋からはほぼ想定タイム通り。トータルでは約1時間ほど想定タイムより早く着いた。

f:id:alasixOsaka:20191104131214j:plain

大峯山寺の本堂。閉まってます。

いやあー、本当に長かったしきつかった。

下山

始めは、稲村ヶ岳山荘から法力峠を回って洞川温泉に降りようと思っていたが、地図を見るとれんげ辻から清浄大橋の方へ一気に下ったほうが早そうだったのでそちらの道をとることにした。(結果的にこれは大失敗だったが)

いずれにしても帰り道はお花畑の方に行くことになる。

f:id:alasixOsaka:20191104131905j:plain

お花畑にある、山上ヶ岳頂上の看板。

f:id:alasixOsaka:20191104132017j:plain

お花畑。というか笹畑。

頂上に近づくころからかなり雲が多くなって、風も強く寒くなってきた。やっぱり山には厚めの服装がよさそうだ。

f:id:alasixOsaka:20191104132323j:plain

下山途中の雄大な眺め。雲がかかってお天気が下り坂。

下山開始から40分でれんげ辻に到着。ここも女人結界門がある。

f:id:alasixOsaka:20191104132509j:plain

れんげ辻の女人結界門。

ここから、当初設定したルートを外れて、清浄大橋の方に下る。看板の表示は大峯大橋となっていた。

しかし、ここを通ったのは先にも書いたが大失敗。とにかく足場がガレていて、おまけに落ち葉がその上にあるもので足元もわかりにくいうえに斜面が急なので、すべる、すべる。なんどすってんころりといったことか。近いからといって安易なルート選択は命取りになりかねないことを改めて感じた。くれぐれも下調べは慎重にしておくべきだった。

れんげ辻から清浄大橋までのコースタイムは105分。実際には53分かかっている。一見するとかなり早いようだが、ガレた下りを下るのに手間取って、林道に出るまでで約40分かかっているので、この区間が相当に遅いことがわかる。道もわかりづらく、何度か目印を見失った。次はこの道は絶対に通らないだろう。

f:id:alasixOsaka:20191104133443j:plain

れんげ辻下の沢の様子。岩がゴロゴロ。登山道も石っころだらけ。

林道に出たのが14:40頃。最終バスは17:58だが、その前のバスが2時間前にあるので、頑張れば乗れると思って、ここからは走った。もう走る元気がないかと思っていたが、少しは残っていたようだ。それでも、3㎞ほど走ってちょっとした登りになったところで力尽きた。しかし、ここまでくればあと1㎞ほどでバス亭だ。時刻は15時をちょっと回ったところ。ここまでくれば余裕でバスに乗れそうだ。本当は温泉につかってゆったりとしたい気持ちもあったが、早いバスに乗れるならそのほうが良い。何といっても次のバスは2時間後だから。

温泉街で家族への土産を買って、15:15頃にバス停に到着。とにかくのどが渇いたので自販機でスポーツドリンクを買って一気に飲み干す。

バス停に着いたときは待っている人が一人しかいなかったが、やがてハイカーらしき人たちがポツンポツンと集まってきた。もっと空いているかと思ったが結構人がいるものだ。バスは、定期便以外に下市口への直行便が臨時で出るということなので、そちらに乗った。小型のバスだったが満席で出発。あとで奈良交通のHPで調べてもこの臨時バスは乗ってなかった。TV番組じゃないけど、バスの旅は行ってみないとわからないものだ。お陰で予定よりもだいぶ早く下市口に到着。ただ、車を回収するという仕事が残っている。17:04発の吉野行きに乗って17:22到着。すっかり真っ暗になっていたが、駅前の売店はまだやっていたのでここで胡麻豆腐を購入。ロープ―ウェイは17:20に最終が出てしまっているのでやっぱり歩くしかない。幸い道には街頭があるので真っ暗な道を歩かなくて済んだ。山に登るのは自分一人だったが、降りてくる人は結構いた。明日は休みということで、真っ暗になるまで観光してたのかな。坂の登りもバスと電車に乗っている間の休憩で回復したみたいでそれほど苦にならず登れた。18時前にようやく駐車場に到着。長い一日が終わった。駐車場にもまだ結構車が残っていて、ぼちぼちと帰り始めるという感じだった。最終のバスに乗って帰ってきていたらきっと閑散としてたのだろう。

これで、第一回目の大峯山奥駈道は終わった。思ったよりも頑張れたのでちょっと自信がついた。次回は来年の春、どこまで行けるか冬の間にゆっくり検討してみたい。

 

BCAAの効果

先々週は風邪気味で、22日にようやく良くなって来たので久しぶりにランでのトレーニングをした。走って距離は11km。11/3に吉野山行を予定しているので本当はもう少し距離を伸ばしたかったが病み上がりなので少し抑え目にしておいた。BCAAと言うものの存在を知ってからは、トレーニング後にはBCAAを摂取するようにしていた。

 

 

alasixosaka.hatenablog.com

 

が、今回は距離も短いと言うこともあってとらなかった。すると翌日はかなり筋肉痛が出てしまった。10/6の東海道浪漫歩行のあともBCAAはとらなかったがこのときは筋肉痛にならなかった。なので、因果関係がはっきりしないのだが、なんか効果が有るんじゃないの? と思っている。

昨日はチャリトレで坂道中心のトレーニング。最大心拍数が180を超えていたが、トレーニング後にBCAAを摂取したお陰か筋肉痛になっていない。もっとも最近は翌々日くらいに筋肉痛になるのでまだ油断できないが(笑)。

Misfit Shine がご臨終

普段の歩数や睡眠をトラッキングするのに使っていたMisfit Shineが壊れてしまった。
最近は腕時計型のトラッカーが主流になっているが、自分は四六時中腕につけているのが嫌なのでクリップタイプを愛用している。
初代はFitbitを使っていた。次は、UPのMove、そしてMisfit Shineとクリップ型ばかりを選んで使ってきた。
そして、Shineもついにご臨終になってしまった。かわりのものをと思ってネットを探しても、クリップタイプはほとんどなくなってしまっている。
いつの間にか、絶滅危惧種になってしまっていた。
仕方がないので、Amazonで中古のShine2を購入した。Amazonでは新品も売っていたが、1万円以上するし、さすがにそこまで出すのはなあと思って、今回は中古のものを購入した。色は他に選択肢がなかったのでブラック。まあ、色は何でもよいのであまり気にしていない。

中古だが、ちゃんと動作するし、見た目も奇麗なのでまずは良かった。古いShineと比べてみると一回り大きくなっている。しかし、それほど違いはないし、もともと軽いものなので、つけてみて特に違和感はなかった。

f:id:alasixOsaka:20191026190455j:plain
左がShine2、右がShine
これで、またしばらくはクリップ式でトラッキングができそうだ。

アルコールストーブを作ってみた

記事のタイトルから検索で来られた方には申し訳ないですが、詳しい作り方は書いていません。

他人の記事を見て作ってみましたという話です。詳しい作り方は参考にしたサイトを見て下さい。

このところ体調がいまいちで、一昨日は会社を休んだ。別に寝込むほど辛いわけでもないが、どうもこの風邪は感染力が強いらしく、職場でも家でも回りの人にうつってしまうので、出社すると迷惑がかかると思って思いきって休んだ。というわけで、時間ができたのでネットでいろいろ検索していて、思い立ったというわけ。そもそも何故アルコールストーブなのかということだが、大峯山の奥駈道を縦走しようとすると、例え何回かに分けて日帰りで決行するにしても非常事態に備えて、非常食やバーナー等は持っておいた方が良いと思って、色々調べていた。トレランの一環なので、テントやらシュラフやら色々担いで行ったらそれこそ登山になるので、どうやって荷物を減らすかも工夫が必要になってくる。まだ結論は出てないが、今のところは非常用のシェルターかViViのようなエマージェンシーシートのようなものを持っていけば何とかなるかなと思っている。

で、本題のアルコールストーブについてですが、色々な記事を参考にしたが、中でも軽量化については、下記のサイトが参考になった。

toolgear-superior.info

特にバーナーのところは、ある意味目からうろこの内容だった。固形燃料やアルコールストーブにすれば大幅に軽量化ができるということだった。

家にもキャンピングガスのバーナーがある。正直これを持ってトレランを走る気には全くならない。最近のはもっと小型軽量化されているとはいえ、やはりそれなりの重量があるし、ガスボンベが結構かさばる。それをアルコールストーブや固形燃料にすれば持って走る気になるくらい軽くなりそうだ。では、どちらを選ぶか? あくまで非常用ということを考えると、固形燃料が軽さでは上回っている。だが、汎用性という点ではアルコールストーブが良さそうだ。色々調べるとアルコールストーブは自作もできるらしい。色々なサイトで紹介記事が乗っているので、家にある材料と道具で作れそうなのを2つ作ってみた。

1号機(コーヒー缶で製作)

ここのサイトを参考にした。

swordfish109.blog116.fc2.com

家にあった、コーヒー缶で作ったらとりあえず形はうまくできた。予想以上に簡単だった。アルコールが家にないので本当に使えるかのテストはこれから。外観は結構格好いい。

f:id:alasixOsaka:20191020154336j:plain

コーヒー缶で作った1号機。初めてにしてはまずまずの出来。

2号機(失敗)

トルネード式というのが面白そうでトライしてみた。しかし結果は失敗。

参考サイトではエナジードリンクの缶で製作されていたが、ビール缶でも同じようにできるだろうと思ったが甘かった。

ksg2999.com

理由は、ビール缶は飲み口の部分の絞りが大きくなっていて、この部分の径が小さいので、参考サイトと同じように作ってしまうと缶の底の部分と合わせたとにガサガサになってうまくいかなかった。

f:id:alasixOsaka:20191020154648j:plain

失敗作の2号機。写真のようにはめ込むとガサガサで固定できない。

ビール缶でも缶の底を2つ使って作るとできそうだ。材料が無くなったので次回にトライ。

3号機(ビール缶で製作)

ビール缶で作成するタイプ。材料は空き缶が2つ。

f:id:alasixOsaka:20191020154829j:plain

3号機はビール缶2つで製作

 

pclv9161.blog84.fc2.com

ほかのサイトを検索すると空き缶1つで作る方法もあるようだ。

これは、まあまあうまくいった。

f:id:alasixOsaka:20191020154910j:plain

3号機の外観。

ここまで作って材料が尽きたので本日はここで終了。家の山の神がたくさん消費するので家にはビール空缶在庫が普段はふんだんにあるのだが、たまたま資源ごみ回収後だったので在庫が少なくてすぐになくなってしまった。しかし、いつもの調子ならビール缶はすぐに補給されるはずですけど(笑)。

製作するにあたって気づいた点

ここまで作ってみて気づいた点を少し書いてみる。

穴をあける際は、電動式の工具が楽。

結構な数の穴をあける必要があるので、電動式が絶対楽。持ってなくて安く作りたい人は手で頑張って空けてもよいかもしれないが、何個も作ったら手がつかれる。

自分も、電動ドリルは持っていたが、1㎜の刃がなかったので、はじめは手動の穴あけを使ったが、電動用の1㎜の刃を買ってきたら作業がとてもはかどった。

それと、刃は100均でも買えるが、安物の刃はすぐダメになるので、ホームセンターなどでまっとうな刃を買ってきたほうが良いです。手動のやつはダイソーで買ってきたのですが、1号機の製作途中で刃がダメになってきて、2号機の製作でほぼ切れなくなりました。

缶を止めるときは安物のホッチキスは使えない。

3号機はアルミ缶から切り出したアルミの板を筒状にして止める工程がある。ブログの著者の方はアルミテープで固定されていたが、別のサイトではホッチキスで止める方法が紹介されていた。また、切込みを入れて固定する方法もあるそうだ。家にホッチキスがあるのでこの方法でやってみたが、家にあった100均のホッチキスでは刃が弱すぎて歯が立たなかった。家にアルミテープがなかったので、頑張って何度もトライして何とか固定できたが、素直に切込みを入れて固定すればよかったと思っている。

結局完成したのは2つで、アルコールがないのでテストがまだの状態。だが、失敗した2号機のトルネード式にも興味があるので作ってみてから、3つを比較してテストしてみようと思っている。

 

大峯山への道とルートラボの代替サービスについて

台風19号が接近中です。温暖化の影響か年々台風の被害が大きくなってきているように思う。今回の台風は今のところの予想だと、また千葉を直撃しそうな予想進路になっている。大きな被害にならないことを祈るばかりだ。

関西地方は直撃を免れそうだが、それでもすでにJRが一部で運転中止になっているなどの影響が出ている。参加を予定していた10/13の全日本オリエンテーリング大会のミドルも中止になった。翌日のロングについては開催の方向とのことだが、先週東海道浪漫歩行で30㎞歩いたので疲労を考慮して、ミドルの1日のみのエントリーとしたため今週は大会参加がなくなった。

 そんなわけで時間が空いたので、大峯山の山行についてもう少し考えてみた。

基本は日帰りで何回かに分けて行い、できるだけ泊まりを避けるように行程を組みたいと思っている。とはいえ、どのくらいのスピードでこなせるかは行ってみないと感覚がつかめないので、手始めに吉野から大峯山の入り口あたりまで行くことを考えている。

台風の影響で登山道が使えなくなるという心配があるが、冬のトレランに向けてのトレーニングを兼ねて11月の3連休のどちらかに行くことを考えている。

吉野~五番関ないし山上ヶ岳

まずは、吉野駅からのスタート。ゴールは洞川温泉として、問題はどこまで行くか?

朝一の特急で吉野駅に向かうと、吉野着は8:26。洞川温泉発のバスの最終は17:58。

行動時間は比較的多く取れて、9時間半ほど。

後の回のことを考えると、大峯山の本体である山上ヶ岳まで行きたいが、そこまで行くと、距離が29㎞とかなり長くなる。単純計算だとコースタイム通りに歩いても休憩なしならゴールまでたどり着ける計算になるがもう少し早く移動しないと日が暮れてしまう。日の暮れを考えると17時までには山を降りたいとところなので、行動時間は8時間半というところか。休憩なしでもコースタイムの0.9倍での移動が必要になる。

 

11/4追記。コースタイムの計算が間違っていました。ヤマプラによると山上ヶ岳まで行くにはコースタイムの0.6倍での移動が必要でした。

 

ちなみに、コースタイムの計算にはヤマプラがとっても便利。登山地図があるエリアでかつ、地図に載っている登山道を通るというのが前提だが、ポイントをクリックしていくだけでルートが作成でき、コースタイムも自動で計算してくれる。スタート時間を入れておけばゴールの時間も自動で計算してくれる。途中の休憩時間も入れらるし、コースタイムを半分にしたければ右上の倍率を0.5倍にするとそのように計算してくれる。

f:id:alasixOsaka:20191012093657j:plain

ヤマプラでルートを作成する

話を戻すと、じゃあどこまで行けるのかということになるのだが、先週30㎞を歩いたとはいえ、平地のみだったし、今回は総登距離が2000mを越えるかなり過酷なルートなので、コースタイムよりも体力的にこなせるかどうかが問題になる。

疲労を考慮するなら、五番関あたりでルートを外れるのが無難で、これだとルート距離は約21㎞なので、問題ないだろうと思われる。

その中間の洞辻小屋まで行くというのもルート的には考えられる。

 なるべく奥まで行っておきたいところだが、そのあたりは当日の移動時間、疲労を考えて柔軟に変更するしかないだろう。ということで、初回のコースは吉野駅を出発、当日の移動速度、疲労を考慮して、五番関でおりるか、洞辻小屋まで行くか、はたまた山上ヶ岳まで頑張るかを考えるということになった。

地図をブログに貼り付ける方法

ところで、ちょっと脱線して、地図をブログに貼り付ける件。ルートラボのサービスが来年の春に終了してしまうので、代わりのサービスを探してみた。いろいろなブログに比較が載せられているが、個人的には今のところ、Ride with GPSが一番よさそう。

ルートラボの代替サービス4選。2020年3月末以降は何を使うか | エスケープ紀行

 

GPXのインポート、エキスポートに対応し、地図も複数選べて、ルート引きもポイントをクリックするだけで自動で行ってくれる。トレランを計画するなら、地図をOSM Outdoorを選ぶとトレイルが選択できるようになるので便利だ。また、地図をブログ等に貼り付けることもできる。言語が英語なのが難点といえば難点だが、そこさえ我慢すればトレイルの計画には最も良いのではないかと思う。自分の場合は、ガーミンコネクトとこのRide with GPSを併用しようと思っている。

 そこで今回は、Ride with GPSの地図を貼ってみる。Ride with GPSは利用するのに利用登録が必要だが、そのあたりは既に済んでいるとする。

ルートを作成するにはRoute Plannerをクリックする。始めはアメリカの地図が表示されるが、右上のJump to Locationのところに日本語で構わないので検索したい地点を入れればその地点が表示される。あとは、他の地図サイトと同様にルートをポチポチとクリックして作成するだけである。GPXのインポートもできるので、ヤマプラで作成してRide with GPSに取り込むことも可能。

ルートが作成できたら左上のShareのボタンをクリックする。

f:id:alasixOsaka:20191012095938j:plain

Ride with GPSの地図を貼りつけるためには左上のShareをクリックする

クリックすると、Copy LinkとGet Custom Embedの選択画面が表示される。

Copy LinkはRide with GPSに地図を表示しているサイトをリンクするときに選択する。ブログ等に地図を貼りつけるときは、Get Custom Embedを選択する。

f:id:alasixOsaka:20191012100340j:plain

選択画面が表示されるので、Get Custom Embedを選ぶ

選択すると別画面が開いて、Embedをカスタマイズする画面が表示される。詳しいことはよくわからないが、左下のEmbed Codeと書かれた下のコードをコピーして貼り付ければブログに地図が表示される。

f:id:alasixOsaka:20191012100842j:plain

細かいとはよくわからないが、とりえあず左下のCodeをコピーする

はてなブログの場合は、編集画面でHTML編集を選択し、地図を貼りつけたい位置に先ほどコピーしたコードを貼りつける。貼りつけた結果は下記の通り。

 

これで、ルートラボのサービスが終わっても何とかなりそう。

 

GPXファイルを読み込む(アンドロイド地図アプリの開発 その13)

前回の記事でようやくGPSで現在地が表示できるようなったことを書きました。
alasixosaka.hatenablog.com


これで、一応地図アプリとしての最低限の機能はするようになった。
そこで、次のステップとして、ルートラボなどからGPX形式で書きだしたルートデータを読み込んで表示させる機能を追加してみようと思う。
ルートを表示する部分は簡単で、すでにOverlayMapViewerに経度と緯度を打ち込んで線を書くという例が載っているのでその機能を使えばよい。
GPXのデータからポイントの経度、緯度が読み込めれば問題なくルートが引けるはずだ。
問題は、GPXファイルをどうやって読むかということになる。

GPXファイルの形式はXMLと同じ

そこで、GPXファイルの形式について調べてみたが、基本的にはXMLファイルと同じ形式になっているとのこと。
試しにカシミール3Dで簡単なGPXファイルを作ってみたら次のようになっていた。

<?xml version="1.0" encoding="UTF-8"?>
<gpx
version="1.1"
creator="Kashmir3D 9.340 - http://www.kashmir3d.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.topografix.com/GPX/1/1"
xmlns:kashmir3d="http://www.kashmir3d.com/namespace/kashmir3d"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd
	http://www.kashmir3d.com/namespace/kashmir3d http://www.kashmir3d.com/namespace/kashmir3d.xsd">
<rte>
 <name>test</name>
 <number>1</number>
 <extensions>
 <kashmir3d:line_color>0000ff</kashmir3d:line_color>
 <kashmir3d:line_size>2</kashmir3d:line_size>
 <kashmir3d:line_style>1</kashmir3d:line_style>
 </extensions>
<rtept lat="34.854105" lon="135.473469">
 <ele>-0.001000</ele>
 <time>2019-09-21T07:12:51Z</time>
 <name>AA0001</name>
 <extensions>
 <kashmir3d:icon>901001</kashmir3d:icon>
 </extensions>
</rtept>
<rtept lat="34.855633" lon="135.480765">
 <ele>-0.001000</ele>
 <time>2019-09-21T07:13:01Z</time>
 <name>AA0002</name>
 <extensions>
 <kashmir3d:icon>901001</kashmir3d:icon>
 </extensions>
</rtept>
</rte>
</gpx>

ぐちゃぐちゃっといっぱい書いてあるが、肝心なのは、rteptと/rteptの間の部分。lat="xxxxx", lon="xxxxx"となっている部分が緯度と経度を表している。
ele xxxxx /eleの部分は標高を表しているが、今回はカシミール3Dの地図を無料で使える地理院地図にしたので、標高のデータがないために、ほぼ0mの値となっている。
標高については、後々考察したいと考えているが、今回はとにかく経度と緯度だけ読めればそれで問題ない。
AndorioでGPXファイルを読み込むアプリを書いた記事が見つけられなかったので、XMLファイルを読み込む記事を参考にした。
XMLファイルの読み込みはAPIがちゃんとあってそれを使えば割と簡単にできそうだ。

GPXファイルを読み込んで、緯度と経度を表示してみる。

とりあえず、参考サイトのプログラムを参考にして、GPXファイルの中身を解析してListViewに表示するプログラムを書いてみた。
MainActivityは下記のようになった。

public class MainActivity extends AppCompatActivity {

    ListView listView;

    private File file;
    private final int REQUEST_PERMISSION = 1000;

    private String AtName;
    private String AtValue;
    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        File path = getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
        String testfile = "test.gpx" ;
        file = new File(path, testfile);

        // Android 6, API 23以上でパーミッシンの確認
        if (Build.VERSION.SDK_INT >= 23) {
            checkPermission();
        } else {
            setUpReadWriteExternalStorage();
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    private void checkPermission() {
        // 既に許可している
        if (ActivityCompat.checkSelfPermission(this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
                PackageManager.PERMISSION_GRANTED){
            setUpReadWriteExternalStorage();
        }
        // 拒否していた場合
        else{
            requestLocationPermission();
        }
    }
    private void requestLocationPermission() {
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION);

        } else {
            Toast toast =
                    Toast.makeText(this, "アプリ実行に許可が必要です", Toast.LENGTH_SHORT);
            toast.show();

            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,},
                    REQUEST_PERMISSION);
        }
    }


    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    private void setUpReadWriteExternalStorage() {
        listView = (ListView) findViewById(R.id.listview);

        ArrayList<Food> list = new ArrayList<>();
        MyAdapter myAdapter = new MyAdapter(MainActivity.this);

        myAdapter.setFoodList(list);
        listView.setAdapter((ListAdapter) myAdapter);
        try {
            String listXmlPath = Environment.getExternalStorageDirectory().getPath() + "/test.gpx";
            String content = new Scanner(
                    new File(listXmlPath)).useDelimiter("\\z").next();
            //XMLファイルをまとめて読み込み
            XmlPullParser xpp = Xml.newPullParser();

            xpp.setInput(new StringReader(content));
            //解析するXMLファイルの中身を渡す
            int eventType = xpp.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                switch (eventType) {
                    case XmlPullParser.START_DOCUMENT:
                        Log.i("MainActivity", "ドキュメント開始");
                        break;
                    case XmlPullParser.START_TAG:
                        Log.i("MainActivity", xpp.getName() + "要素開始");
                        int attrCount = xpp.getAttributeCount();
                        for (int i = 0; i < attrCount; ++i) {
                            AtName = xpp.getAttributeName(i);
                            AtValue = xpp.getAttributeValue(i);
                            Log.i("MainActivity", "    " +
                                    i + "番目の属性 = " + xpp.getAttributeName(i));
                            Log.i("MainActivity","    " +
                                    i + "番目の値 = " + xpp.getAttributeValue(i));
                            if(AtName.equals("lat")||AtName.equals("lon")) {
                                Food food = new Food();
                                food.setName(xpp.getAttributeName(i));
                                food.setPrice(xpp.getAttributeValue(i));
                                list.add(food);
                                myAdapter.notifyDataSetChanged();
                            }
                        }
                        break;
                    case XmlPullParser.TEXT:
                        Log.i("MainActivity", "テキスト = " + xpp.getText());
                        break;
                    case XmlPullParser.END_TAG:
                        Log.i("MainActivity", xpp.getName() + "要素終了");
                        break;
                }
                eventType = xpp.next();
                //次のトークンに進む
            }
            Log.i("MainActivity", "ドキュメント終了");
        } catch (XmlPullParserException e) {
            Log.e("MainActivity", "XMLの解析失敗.");
        } catch (IOException e) {
            Log.e("MainActivity", "XMLファイルの読み込みに失敗.");
        }
    }
    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    public void onRequestPermissionsResult(
            int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == REQUEST_PERMISSION) {
            // 使用が許可された
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                setUpReadWriteExternalStorage();
            } else {
                // それでも拒否された時の対応
                Toast toast =
                        Toast.makeText(this, "何もできません", Toast.LENGTH_SHORT);
                toast.show();
            }
        }
    }
}

こちらも結構長いが、大半はストレージのパーミッション関係の記述で、肝心な部分はtry以下の部分。また、Logに関する記述もいっぱい書いてあるが、参考サイトをそのままコピーさせてもらったためこういう感じになっている。
String listXmlPath = Environment.getExternalStorageDirectory().getPath() + "/test.gpx"でtest.gpxというテスト用のgpxファイルを指定している。
String content = new Scanner(new File(listXmlPath)).useDelimiter("\\z").next()の部分は今一理解できていないが、後でインスタンスを発行するときに使う文字列を規定しているみたいだ。
XmlPullParser xpp = Xml.newPullParser()でインスタンスを発行し、xpp.setInput(new StringReader(content))で中身をxppに読み込んでいる。
その下のループの部分は、int eventType = xpp.getEventType()でイベントタイプを読み込んで、イベントタイプがEND_DOCUMENT、すなわちファイルの最後になるまで読み込みを続ける。
ループの中では、START_TAGというのを探して、AtName = xpp.getAttributeName(i)でAtNameにタグの名前を読み込み、値はAtValue = xpp.getAttributeValue(i)として読み込む。
名前が”lat"なら緯度、名前が”lon"なら経度なので、そのどちらかの場合、foodというアレイリストに名前と値を追記している。foodというのはアレイリストを表示させるのに参考にしたサイトのプログラムをそのまま持ってきたためで別に意味はない。値のところもpriceとなっているのは同様の理由。
Foodの処理に関しては、Food.javaというクラスを別に作成している。

public class Food {
    long id;
    private String name;
    private String price;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name=name;
    }

    public String getPrice(){
        return price;
    }

    public void setPrice(String price){
        this.price=price;
    }
}

アレイリストに追記したらアダプターに渡して、ListView表示をしている。
アダプターについても別クラスを作っておく。

public class MyAdapter extends BaseAdapter {
    Context context;
    LayoutInflater layoutInflater = null;
    ArrayList<Food> foodList;

    public MyAdapter(Context context) {
        this.context = context;
        this.layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public void setFoodList(ArrayList<Food> foodList) {
        this.foodList = foodList;
    }

    @Override
    public int getCount() {
        return foodList.size();
    }

    @Override
    public Object getItem(int position) {
        return foodList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return foodList.get(position).getId();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = layoutInflater.inflate(R.layout.foodrow,parent,false);

        ((TextView)convertView.findViewById(R.id.name)).setText(foodList.get(position).getName());
        ((TextView)convertView.findViewById(R.id.price)).setText(String.valueOf(foodList.get(position).getPrice()));

        return convertView;
    }

}

レイアウトファイルも2つあって、Activity_Main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listview"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

foodrow.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/name"
            android:textSize="20dp"
            android:layout_weight="2" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/price"
            android:textSize="20dp"
            android:layout_weight="1" />
    </LinearLayout>

</LinearLayout>

実際に表示させてみるとこんな感じ。
f:id:alasixOsaka:20190923150940p:plain

参考にしたサイト
http://android-note.open-memo.net/sub/system__parse_xml_file.html
AndroidアプリのXMLの読み込み方法 | mucchinのAndroid戦記
Android開発でList Viewを使おう! - Qiita
[Android] 外部ストレージにファイルを保存する WRITE_EXTERNAL_STORAGE