とある科学の備忘録

とある科学の備忘録

CやPythonのプログラミング、Arduino等を使った電子工作をメインに書いています。また、木製CNCやドローンの自作製作記も更新中です。たまに機械学習とかもやってます。

【登山】つるつる温泉→日の出山→御岳山→御嶽駅

東京都西多摩にある日の出山と御岳山に登ってきました。紅葉のベストタイミングは逃しましたが、それでも絶景を見ることができました。

f:id:pythonjacascript:20211128223258j:plain
日の出山山頂

コース情報

  • 日の出町のホームぺージに日出山の登山路が乗っているのでそちらを参照
  • 日の出山山頂、御岳山の山頂にある武蔵御嶽神社の鳥居左側に下画像のようなマップがあった
    • f:id:pythonjacascript:20211128221740j:plain
  • 平均的な所要時間
    • f:id:pythonjacascript:20211128222214j:plain
  • みちのり : 7kmくらい?
  • 高低差:562m(つるつる温泉367m~御岳山929m)


実際に縦走した時間は以下のようになりました:

  • 08:10 : 武蔵五日駅着
  • 09:07 : 武蔵夷塚駅→つるつる温泉行のバスに乗車
  • 09:20 : つるつる温泉
  • 09:30 : 登山開始
  • 10:00 : 見晴台
  • 10:20 : 日の出山山頂
  • 10:35 : 山頂で15分ほど休憩後、御岳山に向けて出発
  • 11:00 : 山楽荘
  • ??:?? : 御岳山山頂(武蔵御嶽神社)着
  • 12:39 : 山頂付近の表参道を歩き回り、下山開始
  • 12:56 : 大塚山 山頂
  • 13:50 : 下山!
  • 14:10 : JR川井駅

感想

  • 日の出山
    • 武蔵五日駅~登山口のバスが一時間に一本とかだし、平日の八時台は運航していないので、事前に時間を調べたほうが良い
    • 登りやすい。最後500mの階段を除けば勾配がきつい場所はないし、道が整備されているので迷ったり滑落したリ滑ったりすることもない。登山というかハイキング?
    • 基本的には土+小石の道が多い
    • 景色は最高。都心も観ることができるし、奥多摩の山脈も見ることができる。ほぼ360度パノラマ。
    • 富士山もちょっと見える(富士山が見たいなら陣馬山とかの方がきれいに見えるけどね)
    • つるつる温泉と山頂付近にトイレがあるのも良き
  • 日の出山~御岳山(関東ふれあいの道
    • 道が緩やか。全く息が切れない。楽
  • 御岳山
    • 御岳平からの景色は良かったけど、日出山ほどではない。山頂でも見晴らしが良いところはあるらしいが見つけられなかった。
    • 神社があるので歴史好きとかだったら好きそう。
    • ケーブルカーで山頂まで来れるので、山頂周辺の宿泊施設/売店の集落は人が多い。犬連れの観光客の割合が高い

登山開始まで

11/25の午前8:10, JR東日本 武蔵五日駅に着きました。ここから登山口まではバスで移動します。一時間に一本くらいしか出ていないので事前に時間を調べておくと良さそう

f:id:pythonjacascript:20211128223446j:plain
8:10 武蔵五日駅

20分ほどバスに乗ると、終点の「つるつる温泉」につきます。肌が「つるつる」になることから「つるつる温泉」と名付けられたらしい(1)。三時間800円で第三火曜日以外は営業中の様です。
www.tsurutsuru-onsen.com

f:id:pythonjacascript:20211128224007j:plain
9:20 つるつる温泉
f:id:pythonjacascript:20211128224027j:plain
つるつる温泉(外から)。少し紅葉が残っています

ここから日の出山の登山口までは10分ほど(350m)下ります。逆に、「日の出山登山口」のバス停から来た場合は150mほど登ると登山口にたどり着きます。

f:id:pythonjacascript:20211128224237j:plain
登山口へ(写真左側が至登山口)

途中、滝本庵がありました。

f:id:pythonjacascript:20211128224356j:plainf:id:pythonjacascript:20211128224359j:plain
11:25 滝本庵

で、コンクリート舗装された道路をさらに進んでいくと登山口にたどり着きます。

f:id:pythonjacascript:20211128224508j:plain
9:38 日の出山 登山口

登山口 ~日出山

登山口に「日の出山ハイキングコース」と書かれている通り、山頂への道は登山というよりハイキングコースです。道幅も広く両側が舗装されているため迷う心配もほとんどなく、土の地面なので浮石もないし滑る心配もほとんどない、とても上りやすい初心者向けのコースだと思います。

f:id:pythonjacascript:20211128224804j:plainf:id:pythonjacascript:20211128224823j:plain

登山開始から30分後(走行距離2.2km)、突然左右の木が無くなり見晴らしがよくなります。ベンチが1つあるので休憩、、、。

f:id:pythonjacascript:20211128225300j:plain
10:00 見晴らし台で小休憩

見晴台を過ぎると周囲の木の密度が減って、登山道も少し明るめになります。木々の間から青空がちょっと見えるようになってきます。
f:id:pythonjacascript:20211128225417j:plain
f:id:pythonjacascript:20211128225636j:plain

山頂までの最後の500mは階段です。左側の絶景で疲れを吹き飛ばしながら登っていきます。
f:id:pythonjacascript:20211128225649j:plain

日出山 山頂

そして、ついに山頂です!!
東京都心を見下ろすことが出き、空気が澄んでいる場合にはスカイツリーも見えるんだとか。元旦に初日の出を見るための登山者が集まることとしても有名で、山名の由来もここからきているらしい(2)
f:id:pythonjacascript:20211128223258j:plain

f:id:pythonjacascript:20211128225752j:plain
10:20 日の出山 山頂

↑画像のさらに右側には奥多摩の山々が広がっています。
f:id:pythonjacascript:20211128230324j:plain


そして、大岳山からの馬頭刈尾根の富士見台(多分)の右に少しだけ富士山を見ることができます(↓画像の赤矢印)(もう山頂部分は雪が積もっていますね、、、)。その右側の一回り高い山が目標地点の御岳山です(緑矢印)。

f:id:pythonjacascript:20211128230553j:plain
日出山山頂から見える富士山(赤矢印)と御岳山(緑矢印)

日出山→御岳山 (関東ふれあいの道)

来た道とは反対方向に下ります(下画像の道)
f:id:pythonjacascript:20211128231147j:plain

数分歩くと東雲山荘がありました。

f:id:pythonjacascript:20211128231626j:plain
10:37 東雲山荘

公式HPによると3000円で宿泊できるようですね(事前予約必須)!

東雲山荘の玄関に温度計があったので見てみましたが、現在9.5℃でした。。。。
f:id:pythonjacascript:20211128231849j:plain

日出山~御岳山間の道を「関東ふれあいの道」というらしいです。登山者は2人しか会いませんでしたが、緩やかな尾根上を歩いているので気分爽快です。

f:id:pythonjacascript:20211128232654j:plainf:id:pythonjacascript:20211128231933j:plain
10:40 関東ふれあいの道

日出山山頂から0.8km歩いた地点(御岳山まであと1.5km)に御岳神社の(4)鳥居がありました。ここが上養沢バス停、金毘羅山への分岐点となっています。

f:id:pythonjacascript:20211128232615j:plain
10:48 鳥居


ここからさらに20分ほど歩くと、御岳山周辺にたくさんある宿泊施設の一つ、「山楽荘」につきます。いい雰囲気~

f:id:pythonjacascript:20211128232910j:plain
10:59 山楽荘

f:id:pythonjacascript:20211128233021j:plain
.
ここからはコンクリートの通りになり、道の左右が宿泊施設や売店だらけになります。道の至るところに地図があるのでそれを頼りに武蔵御嶽神社を目指します。
f:id:pythonjacascript:20211128234212j:plain
f:id:pythonjacascript:20211128233150j:plain

武蔵御嶽神社

目標到着です!武蔵御嶽神社につきました!

f:id:pythonjacascript:20211128234327j:plain
11:11 武蔵御嶽神社に到着!

一部が改修工事中でしたが(工事期間:令和3年11/15~12/15らしい)、迂回することで社殿に入ることができます。
f:id:pythonjacascript:20211128234440j:plain
↑の様な階段を昇ると社殿です。
f:id:pythonjacascript:20211128234548j:plain

ケーブルカーでここまで来ることができるので、登山客よりも観光客が多いです。中でも犬を連れている人が多いので疑問に思ったのですが、調べてみると御岳山には「おいぬ様(ニホンオオカミ)」という守り神がいるという信仰があるようです(5)

その信仰にのっかってか、御嶽神社では、わんちゃんの御祈祷も行っており(↓URLがwanchanって可愛らしいですね)(御嶽神社が祀っているのは日本武尊だけど)、そのため犬と一緒に訪れている観光客が多いようです。
musashimitakejinja.jp

f:id:pythonjacascript:20211128234624j:plain


御岳山は社殿のある場所が山頂の様です(6)
御岳山に到着して一時間近く地図と標識をにらめっこしながら山頂を探し回っていましたが、ググったら一発で出てきました()。


御岳平

社殿を早々に下りて、次はケーブルカーの乗降口でもある御岳平へ向かいました。

道中、天然記念物に指定されている「御岳の神代欅(ケヤキ)」があります。

f:id:pythonjacascript:20211128235503j:plainf:id:pythonjacascript:20211128235505j:plain
神代ケヤキ

で、紅葉している道を10分ほど進むと、、、
f:id:pythonjacascript:20211128235918j:plain


標高831m, 御岳平に到着します。良い眺めです(説明が雑)!

f:id:pythonjacascript:20211128235651j:plain
御岳平

f:id:pythonjacascript:20211128235654j:plain
(※↑の画像は御岳平から少し上ったところから撮影したもの)

下山~川井駅

では、下山します。

安産杉と産安社のツーショットを撮り(↓画像)、
f:id:pythonjacascript:20211128235959j:plain

ベンチ一個しかなくて特に景色が良いわけでもない大塚山の山頂を素通りして、
f:id:pythonjacascript:20211129000121j:plain

そのまま山道を駆け下ります。
f:id:pythonjacascript:20211129000238j:plain

途中、木々の間から富士山が少し見える地点がありました。

最後の方は再び林の中に入ります。伐採された後がありました。
f:id:pythonjacascript:20211129000331j:plain

そして、↓のイノシシよけの柵を通ったら下山完了です!
f:id:pythonjacascript:20211129000448j:plain
f:id:pythonjacascript:20211129000446j:plain


御岳山登山口から歩いて20分ほどのところに川井駅があります。(最寄り駅は隣の古里駅(徒歩10分)ですが、次の電車まで時間が合ったので歩きました)
周囲を山に囲まれた集落ってなんかいいですね。

f:id:pythonjacascript:20211129000723j:plainf:id:pythonjacascript:20211129000726j:plain


以上!

C# 基礎編 - その1

バイトでC#を勉強しているのでまとめ用に書く

工事中&期間限定公開

プログラム以前

mainメソッド

C++等で最初に実行される関数を表すmain()関数は、C#ではクラス内のメソッドとして定義される

// 最小構成のプログラム
class Test {
    static void Main() {
         Console.WriteLine("Hello, World");
    }
}


コメント

/*コメント~~~*/
/*  
スラッシュとスターに囲まれた部分は、
複数行でも
コメントになります。
*/

int a = 0; // スラッシュを二個重ねると、それ以降の文末までがコメントになる。

標準出力

Console.WriteやConsole.WriteLine関数で行う

Console.Write(""改行なしで標準出力");  
Console.WriteLine("改行ありで標準出力");

// 変数の出力
const string str = "hoge";
const int  myint = 114;
Console.Write(str);
Console.Write("str の中身は" + str + "です");

// フォーマット
Console.WriteLine("str の中身は{0}です", str);
Console.WriteLine("str の中身は{0}で, myintの中身は{1}です", str, myint);
Console.Write($"str の中身は{str}です");




予約語

docs.microsoft.com

abstract      as     base          bool     break     byte     case     catch     char     checked     class
const     continue     decimal     default     delegate     do     double     else     enum     
event     explicit     extern     false     finally     fixed     float     for     foreach     goto
if      implicit     in     int     interface     internal     is     lock     long     namespace
new      null     object     operator     out     override     params     private     protected
public     readonly     ref     return     sbyte     sealed     short     sizeof     stackalloc
static     string     struct     switch     this     throw     true     try
typeof    uint     ulong     unchecked      unsafe
ushort  using  virtual   void   volatile  while




変数の型

ユーザー定義の型(classやenum等)を除くと以下の様なものがある(代表例)

sbyte System.SByte 符号付き8bit整数
byte System.Byte 符号なし8bit整数
short System.Int16 符号付き16bit整数
ushort System.UInt16 符号なし16bit整数
int System.Int32 符号付き32bit整数
uint System.UInt32 符号なし32bit整数
long System.Int64 符号付き64bit整数
ulong System.UInt64 符号なし64bit整数
char System.Char 文字
float System.Single 小数(単精度)
double System.Double 小数(倍精度)
bool System.Boolean ブール値(false、true)
decimal System.Decimal 10進数
string System.String 文字列
//宣言  :   型 変数名;
int seisu;

// 宣言 + 初期化    :   型 変数名 = 初期値
int seisu = 123:

ルール

  • `const` を型の前に着けると、コンパイル時に値が埋め込む定数となる
    • 宣言時に初期化しなければならない
    • またその値はコンパイル時に決定する必要がある。
  • readonlyを付けると、宣言時の初期化以降、読み取り専用の変数となる
    • 宣言時に初期化しなければならない
    • 初期化値は実行時まで分からなくても良い
  • var 変数名 = 初期化値;と書くと、型推論してくれる。

例:

string str = "文字列型";
int    seisuu = 10; // 整数型
uint   unsigned_int = 10; // 非負整数
bool   bool_value = true; // true or falseの真偽値
float  float_value = 3.14f; // 不動点単精度少数
double double_value = 3.14d; // 不動点倍精度少数
var annmoku = 10; // 暗黙的型付け

四則演算

//---------------------------四則演算---------------------------------
int hoge = 0;
hoge = 10   +   20; Console.WriteLine($"10   +   20 = {hoge}");
hoge = 10   -   20; Console.WriteLine($"10   -   20 = {hoge}");
hoge = 10   *   20; Console.WriteLine($"10   *   20 = {hoge}");
hoge = 10   /   20; Console.WriteLine($"10   /   20 = {hoge}");
double hoge2 = 10.0 / 20.0; Console.WriteLine($"10.0 / 20.0 = {hoge2}");;
hoge = 30   %    8; Console.WriteLine($"30   / 8  = {hoge}");// 余り出力

条件分岐

if文

Random r = new Random();
int RandomValue = r.Next(100); // 0 ~ 99 の乱数作成

if ( RandomValue < 30) {
    Console.WriteLine("RandomValue  < 30");
}else if(RandomValue < 50) {
    Console.WriteLine("30 <= RandomValue  < 50");
}else if(RandomValue < 70) {
    Console.WriteLine("50 <= RandomValue  < 70");
}else{
    Console.WriteLine("70 <= RandomValue ");  
}


演算子

a a はbより小さい
a>b aはbより大きい
a<=b a はb以下
a>=b aはb以上
a == b aとbは等しい
a != b aはbではない

for文

for(int i = 0; i< 10; i++){
    Console.Write(i);
}

// リストに対するfor文
var arr = new ArrayList(){"list 1", "list 2", "list 3", "list 4"};
foreach(string t in arr){
     Console.WriteLine(t);
}

// 辞書に対するfor文
var myDic = new Dictionary<string, int>(){
   {"a", 1}, {"b", 2}, {"c", 3}
};

foreach(KeyValuePair<string, int> t in myDic){
  Console.WriteLine($"key = {t.Key} => {t.Value}");
}

while

int iii= 0;
while(iii< 3){Console.Write(iii); iii++;}

switch

Random rd = new Random();
int  i= rd.Next(10);

switch(i){
    case 1: 
         Console.Write("i = 0");
        break;
    case 2: 
        Console.Write("i = 2");
        break;
    default:
         Console.Write("それ以外");
          break;
}

配列/リスト

// 書き方その1(固定長)
// 型名[] 変数名 = new 型名[] { 値1, 値2, ...};
string[] mylist = new string[4]{"hoge", "hjuga", "a", "aa"};
Console.WriteLine(mylist[0]);
// 書き方その2(可変長、要Cast)
// ArrayListはObject型としてデータを代入する ( = どんな型でも代入できる)
// なので、型判定は実行時に行われる。また、値を取り出すときにはCastする必要がある(Visual BasicではOption StrictをOnにした場合)
ArrayList mylist2 = new ArrayList(){
    "list 1", "list 2", "list 3", "list 4"
};
mylist2.RemoveAt(0);  // 0番目を削除
mylist2.Add("aaaaaaaaa"); // リストの最後尾に「aaaaaaaa」を加える
mylist2.Add(5); // 0~4番目の要素は文字列型だが、ArrayList なので数値を入れることもできる
Console.WriteLine(mylist2[0]);

string moji = mylist[0]; // コンパイルエラーになるかも?
string moji = (string)mylist[0]; // string型にキャストする必要がある
// 書き方その3(可変長、固定型)
// ArrayListは特定の型としてリストを作るので、それぞれの要素にはその型しか代入できない
// 取り出すとき等に型変換は必要ない

// string型で、mylist3 という変数名のList
List<string> mylist3 = new List<string>(){
    "a", "b", "c"
};
// mylist3.Add(5);// string型のリストにintを入れようとしているのでビルドエラー
mylist3.Add("aaaa");// これはOK


使い方
mylistという名前のArrayList またはListがあったとすると、

  • mylist[n] でmylistのn+1番目の要素にアクセスできる
    • 代入も可能

プロパティ(クラス内変数):

mylist.Capacity 確保している容量
mylist.Count 配列の長さ

メソッド(関数)の代表的なもの:

mylist.Add(object) objectをmylistの末尾に挿入
Insert(n, object) objectをmylistのn番目(n = int32型)に挿入
mylist.IndexOf(object) mylist中でobjectを検索し、最初に見つかったオブジェクトのインデックス (0 から始まる) を返す
mylist.Contains(object) mylist中にobjectがあればtrueを返し、ない場合はfalseを返す
mylist.Remove(object) mylist中にobjectがあれば、最初に出現したものを削除
mylist.RemoveAt(n) n+1番目の要素を削除
mylist.RemoveAt(a, b) aからbで指定された範囲の要素を削除
mylist.Clear() 全削除。Countは0になるがCapacityは0になるとは限らない
mylist.Sort() ソート

それ以外は↓に載っている
docs.microsoft.com

docs.microsoft.com

List / ArrayListでfor文

var arr = new ArrayList(){"list 1", "list 2", "list 3", "list 4"};
foreach(string t in arr){
    Console.WriteLine(t);
}

辞書

Dictionary<string, int> myDic = new Dictionary<string, int>(){
    {"a", 1}, {"b", 2}, {"c", 3}
};
Console.WriteLine(myDic["a"]);
myDic["a"] = 100;  // 代入
myDic["d"] = 100; // 新しく key-valueを作成して代入
myDic.Remove("b"); // {b : 2} のkey-valueを削除
Console.WriteLine(myDic["a"]);


// 因みに、辞書のなかの値を全て出力するには、

// 例1
foreach(KeyValuePair<string, int> t in myDic){
    Console.WriteLine($"key = {t.Key} => {t.Value}");
}

// 例2
foreach(string key in myDic.keys){
    Console.WriteLine($"{key}に相当する値は{mDic[key]}です");
}

その他:
docs.microsoft.com


関数

【宣伝】~ NHKロボコン2021終了 ~ RoboTech紹介PVを製作しました

先日(2021/10/10)、NHK学生ロボコン2021(ABU代表選考会)が終了しました。

official-robocon.com

関係者の皆様、お疲れ様です!!(実際にロボット製作に関わったのは一学年上の先輩なので、私はポッド認識のアノテーション手伝いくらいしかしていませんが。)
各大学、面白い機構や戦略も多く、とても勉強になる試合も多かったです。当日のライブ中継はこちら

さて、NHKロボコンでは、試合前に各大学の紹介PVを流すのですが、今回東京大学RoboTechの紹介Vを製作しました。よかったら見てください!!

www.youtube.com


自分の製作した映像や、知っている先輩のプロジェクトがテレビ電波にのると考えると感無量です。TV放送は12月上旬の予定です!

我々の代は次のNHKロボコン2022に向けて動き出しています。がんばるぞい!(弊サークルは秘密主義なのでNHK2022の話はできません、、、)

他にもいくつかRoboTechの動画等を作っています。
www.youtube.com

shizenkarasuzon.hatenablog.com

f:id:pythonjacascript:20211015212344j:plain:w1