読者です 読者をやめる 読者になる 読者になる

万年筆 その2

tateisu496.hatenablog.com

前回の3色では飽き足らず、色彩雫を買い足した。
f:id:tateisu496:20170522220650j:plain:w300

山栗

元々竹炭を買おうと思っていたのだが、山栗を試し書きしてみて、少し茶色がかった色の方が面白いかと思って購入。
黒の代わりとして使えるのではないかと思うくらい色が濃く、使いやすい。

紫陽花

深海はブルーブラックに近いので、一つ明るい青を試してみたいと思って選んだ。
色味は非常に良いのだが、インクが非常に薄いのが気になる。

夕焼け

名前通りの綺麗なオレンジ。
明るい色だが、紫陽花のように薄さを感じることもなく、満足。

f:id:tateisu496:20170522215430j:plain:w300
前回と同様、紙に書いてみた。
ペン字の練習を始めた変化は感じられるが、まだまだ綺麗な字とは言えない。

感想

現在はkakunoに月夜か山栗、Cavalierにそれ以外の4色を順番に入れて使っている。
また、1本安いペンを買い足してブルーブラックのカートリッジを入れた。

まだまだ使ってみたい色はあるのだが、あまり買いすぎても使い切れないので、次は1,2色なくなるくらいまで我慢するつもりである。
ペン字の練習帳が終わり、PILOTのペン字講座を申し込んだので、時間があるときにそれについても書こうと思う。

万年筆

先月万年筆を頂いて以来、ここ1ヶ月万年筆にハマっている。

持っている万年筆

現在持っている万年筆はこの2つ。
f:id:tateisu496:20170429123027j:plain:w300
上がPILOTのCavalierの細字。
大学の卒業記念に貰ったもので、キャップに名前が入っている。

下も同じくPILOTのkakunoの細字。
色を使い分けたいと思い購入した。
ブルーブラック系のインクを入れようと思ったのでキャップは青。

インク

万年筆といえばインク吸入。ということで、コンバータとインクを購入した。
f:id:tateisu496:20170429123231j:plain:w300
インクはPILOTの色彩雫
万年筆インクでは割と有名どころらしい。
初めてのインクということで、青系の多い色彩雫の中で色調の違う3色をチョイス。
400円のコンバータを2つ、インクが2,100円で地味にお金がかかっている。
この高級感がまた良いのだが。

深海

名前から惹かれ、色味も好みだったので購入。
書き始めはPILOTのブルーブラックと同じくらい青が強いのだが、時間がたつとグレーに近づいて落ち着いた色になる。

山葡萄

名前の通り、ブドウのような赤みがかった紫色。非常に秋っぽい。
一つ暖色が欲しいと思いこれを選んだ。

深緑

少し暗い緑色。試し書きしたとき、一番好みの緑色に近いと思ってこれにした。
深海の色の変化に魅せられた今では、青から緑に変わる松露も気になる。

f:id:tateisu496:20170429123251j:plain:w300
字が下手なのだが、3色で紙に書いてみた。
どれも色彩豊かなのだが、落ち着いた色で使いやすい。

感想

今はkakunoに月夜、Cavalierに新緑を入れているのだが、
色の美しさと書き心地の良さで、ついつい文字を書きたくなってしまう。
万年筆を使うために日記をつけ始めたり、ペン字の練習を始めたりしてしまうくらいだ。
ペン字練習については、買った本が一冊終わったら感想を書きたい。

ポケモンY

ポケモン新作が出て安くなっていたため、ポケモンYを購入してプレイしてみました。
私は金銀からBW2まで(ほぼ)現役でプレイしていたのですが、XYでドット絵から3Dにシフトした点など気に入らない点が多かったこと、発売当時は3DSを持っていなかったことから今までプレイしていませんでした。

感想など

出てくるポケモンの種類が多い

プレイして最初に思ったこと。BWでは序盤の選択肢が狭すぎてつまらなかったので、これは良いことだと感じました。

その割に新ポケがなかなか出てこない

XYの新ポケは少なめなので仕方ないとは思うんですが、新ポケだけで進めたいと思っていたのでこの点は残念に感じました。いつも連れていきたいのに泣く泣く手持ちから外すってことが起こるのに、今回はそれがないどころか、一応連れていくか、くらいのポケモンがずっと手持ちにいたりしました。

昔の世代のポケモンがたくさん出てくる

上の二つの言い換えですね。ポケモン復帰勢にとっては懐かしのポケモンが出てくる、小学生にとっては昔のポケモンでも新鮮ってことで良い試みだと思います。

冒険感が薄い

BWでも感じましたが、XYではそれ以上だったと思います。BW同様に一本道で、秘伝技を使って道を切り拓くという感じが全くないのが残念。秘伝技で足止めをしていない分、イベントを無視して先に進もうとするといちいちNPCに止められるのが嫌ですね。特に今作では「そらをとぶ」を使わなくてもクリアできるんじゃないかと思うくらい一度訪れた街に戻る展開が無くて味気なかった気がします。そういえば最後まで「いわくだき」が使えないままだったんだけど、どこで手に入るんだろう。

ボリュームはあった

特に前半はジムとジムの間が長かったような気がします。いつもの感じだとレベル50前後で殿堂入りかと思っていたので、殿堂入り前にレベル70を超えるとは思いませんでした。手持ちを増やさなければ100レベ達してもおかしくないんじゃないか、という域ですね。
とはいえ殿堂入りまで24時間だったので、時間的には普段通りかもしれません。取りこぼしたアイテムを回収したらもう少しのびそうですが。

トーリーが謎

べつに前々からストーリーに期待したりしていないんですが、今回はお友達とお出かけ→唐突に世界を救う展開って感じだったのでついていけなかったです。たびたびフレア団の悪事を止めてはいたものの、突然「最終兵器」が出てきたときは意味が分からなくて笑ってしまいました。ストーリーを半分読み飛ばしていたせいかもしれません。

敵AIの進化

前まではこちらが交代しても交代先に抜群な技を出してきたりしてたけど、今作では交代先を知らずに技を出す感じになっていました。セコくなくなったという印象ですね。勝ち抜き方式で遊んでいたので、相手の技を読んで半減・無効タイプに交代できるのが対人戦に近くて良かったです。

殿堂入りメンバー

なんとなく、殿堂入りメンバーを載せておきます。
タイプ被りがない割にバランスが悪く、特に地面・電気・鋼タイプに苦労しました。オーロットを入れたかった…(通信進化のため断念)

ゴロンダ (格闘/悪) Lv.57

グロウパンチ/かみくだく/シザークロス/アームハンマー @たつじんのおび
秘伝要因だったが、四天王に挑む際に技を一新。でも殆ど活躍しなかった。フェアリー4倍はつらい。

ビビヨン (虫/飛行) Lv.67

ちょうのまい/むしのさざめき/しびれごな/ぼうふう @おうじゃのしるし
いつか解雇しようと思ってたのに代わりがいないまま最終メンバーに。しびれごなはポケモン捕獲用。

ニダンギル (鋼/ゴースト) Lv.68

かげうち/アイアンヘッド/ボディパージ/せいなるつるぎしんかのきせき
ギルガルドよりこっちの方が見た目的に好み。ボディパージとかげうちのシナジーが悪かった。

メレシー (岩/フェアリー) Lv.70

ムーンフォース/パワージェム/ひかりのかべ/ステルスロック @かたいいし
攻撃が貧弱な特殊受け。不意に飛んでくる鋼技にやられることが多かった。ひかりのねんどが欲しい。

トリミアン (ノーマル) Lv.70

ずつき/とんぼがえり/コットンガード/どくどく @ゴツゴツメット
物理を受けてゴツメで削る。最悪どくどく&道具で回復ゲーするつもりだったが使用機会はなかった。

ドラミドロ (毒/ドラゴン) Lv.73

ヘドロばくだん/りゅうのはどう/10まんボルト/ねっとう @くろいヘドロ
一番のお気に入り。こいつのためだけにYを選んだ。技範囲とくろいヘドロの回復で使い勝手が良かった。

最後に

全体的に、殿堂入りまでを楽しみたい私にとっては微妙でした。通信対戦の環境(育成も含めて)はXY・サンムーンで良くなっているという噂なので、そっちの需要を意識しているのだと思います。技の威力変更やフェアリーの追加でバランス調整してるし。難易度も昔よりだいぶ易しくなっている気がするし、時代の流れですかね。
もう少し安くなったら、オメガルビーアルファサファイアもプレイしてみようかと思います。そういえば、結局ルカリオイベントでしかメガシンカ使わなかったな…

正規表現で日付抽出

正規表現で日付抽出をするために書いたphpのコードです。
dateExtraction関数の引数に文字列を入れると、
文字列の先頭に日付情報があればそれが "Y-m-d" の形式で返されます。
「今日」、「先週の金曜日」、「○日前」、「○回後の○曜日」などの形式にも
対応しています。

<?php
function str_Y($nmb){
    return date("Y年",strtotime("".$nmb." year"));
}
function str_m($nmb){
    return date("Y年m月",strtotime("".$nmb." month"));
}
function str_d($nmb){
    return date("Y年m月d日",strtotime("".$nmb." day"));
}
//日付テキストの修正
function date_fix($text){
    $text=mb_convert_kana($text,"a");
    //ひらがなを漢字になど
    $ptn1=array("/おととし/", "/きょねん/", "/さくねん/", "/ことし/", "/さらいねん/", "/らいねん/", "/よくねん/", "/せんせんげつ/", "/せんげつ/", "/ぜんげつ/", "/こんげつ/", "/さらいげつ/", "/らいげつ/", "/じげつ/", "/おととい/", "/きのう/", "/ぜんじつ/", "/きょう/", "/あさって/", "/あした/", "/よくじつ/", "/さきおととい/", "/しあさって/", "/カ月/", "/か月/", "/ヵ月/", "/ケ月/");
    $rpc1=array("一昨年", "/去年", "/昨年", "今年", "再来年", "来年", "翌年", "先々月", "/先月", "/前月", "今月", "再来月", "来月", "次月", "一昨日", "昨日", "前日", "今日", "明後日", "明日", "翌日", "一昨々日", "明々後日", "ヶ月", "ヶ月", "ヶ月", "ヶ月");
    $text=preg_replace($ptn1,$rpc1,$text);
    //今から起算して系
    if(preg_match("/^(?P<nmb>[0-9]+)年(?P<f>前|後)(の)?/",$text,$m)==1){
        $rpc=str_Y(($m["f"]=="" ? "-" : "+").$m["nmb"]);
        $text=preg_replace("/([0-9]+)年(前|後)(の)?/",$rpc,$text);
    }
    if(preg_match("/^(?P<nmb>[0-9]+)ヶ月(?P<f>前|後)(の)?/",$text,$m)==1){
        $rpc=str_m(($m["f"]=="" ? "-" : "+").$m["nmb"]);
        $text=preg_replace("/([0-9]+)ヶ月(前|後)(の)?/",$rpc,$text);
    }
    if(preg_match("/^(?P<nmb>[0-9]+)日(?P<f>前|後)(の)?/",$text,$m)==1){
        $rpc=str_d(($m["f"]=="" ? "-" : "+").$m["nmb"]);
        $text=preg_replace("/([0-9]+)日(前|後)(の)?/",$rpc,$text);
    }
    //曜日系
    $weektext=array("","","","","","","");
    if(preg_match("/^(?P<next>(次の)+)(?P<week>.*)曜/",$text,$m)==1 && ($w2=array_search($m["week"],$weektext))!==false){
        $text=preg_replace("/^".$m[0]."/",str_d(($w2>=($w1=date("w")) ? $w2-$w1 : $w2-$w1+7)+(mb_substr_count($m["next"],"次の")-1)*7),$text);
    }
    if(preg_match("/^(?P<prev>(前の)+)(?P<week>.*)曜/",$text,$m)==1 && ($w2=array_search($m["week"],$weektext))!==false){
        $text=preg_replace("/^".$m[0]."/",str_d(($w2>=($w1=date("w")) ? $w2-$w1-7 : $w2-$w1)-(mb_substr_count($m["prev"],"前の")-1)*7),$text);
    }
    if(preg_match("/^(?P<nmb>[0-9]+)(回|週|つ|こ|個)(次|後|先)の(?P<week>.*)曜/",$text,$m)==1 && ($w2=array_search($m["week"],$weektext))!==false){
        $text=preg_replace("/^".$m[0]."/",str_d(($w2>=($w1=date("w")) ? $w2-$w1 : $w2-$w1+7)+($m["nmb"]-1)*7),$text);
    }
    if(preg_match("/^(?P<nmb>[0-9]+)(回|週|つ|こ|個)前の(?P<week>.*)曜/",$text,$m)==1 && ($w2=array_search($m["week"],$weektext))!==false){
        $text=preg_replace("/^".$m[0]."/",str_d(($w2>=($w1=date("w")) ? $w2-$w1-7 : $w2-$w1)-($m["nmb"]-1)*7),$text);
    }
    //週関連
    if(preg_match("/^(?P<next>(次の)+)週の(?P<week>.*)曜/",$text,$m)==1 && ($w2=array_search($m["week"],$weektext))!==false){
        $text=preg_replace("/^".$m[0]."/",str_d(($w2-date("w")+7)+(mb_substr_count($m["next"],"次の")-1)*7),$text);
    }
    if(preg_match("/^(?P<prev>(前の)+)週の(?P<week>.*)曜/",$text,$m)==1 && ($w2=array_search($m["week"],$weektext))!==false){
        $text=preg_replace("/^".$m[0]."/",str_d(($w2-date("w")-7)-(mb_substr_count($m["prev"],"前の")-1)*7),$text);
    }
    $ptn_week=array(-2=>"先々週",-1=>"先週",0=>"今週",1=>"来週",2=>"再来週");
    foreach($ptn_week as $nmb => $ptn){
        if(preg_match("/^".$ptn."の(?P<week>.*)曜/",$text,$m)==1 && ($w2=array_search($m["week"],$weektext))!==false){
            $text=preg_replace("/^".$m[0]."/",str_d($w2-date("w")+$nmb*7),$text);
        }
    }
    
    //実際の月に変換
    $ptn2=array("/^一昨年(の)?/", "/^去年(の)?/", "/^昨年(の)?/", "/~今年(の)?/", "/^再来年(の)?/", "/^来年(の)?/", "/^翌年(の)?/", "/^先々月(の)?/", "/^先月(の)?/", "/^前月(の)?/", "/今月(の)?/", "/^再来月(の)?/", "/^来月(の)?/", "/^次月(の)?/", "/^一昨日(の)?/", "/^昨日(の)?/", "/^前日(の)?/", "/今日(の)?/", "/^明後日(の)?/", "/^明日(の)?/", "/^翌日(の)?/", "/^一昨々日(の)?/", "/^一昨昨日(の)?/", "/^明々後日(の)?/", "/^明明後日(の)?/");
    $rpc2=array(str_Y("-2"), str_Y("-1"), str_Y("-1"), date("Y年"), str_Y("+2"), str_Y("+1"), str_Y("+1"), str_m("-2"), str_m("-1"), str_m("-1"), date("m月"), str_m("+2"), str_m("+1"), str_m("+1"), str_d("-2"), str_d("-1"), str_d("-1"), date("d日"), str_d("+2"), str_d("+1"), str_d("+1"), str_d("-3"), str_d("-3"), str_d("+3"), str_d("+3"));
    $text=preg_replace($ptn2,$rpc2,$text);
    return $text;
}

//日付抽出
function dateExtraction($text){
    $text=date_fix($text);
    $preg_str=array('/^(?P<year>[0-9]{4})\年(?P<month>[0-9]{1,2})\月(?P<day>[0-9]{1,2})日/',  //Y年m月d日
                    '/^(?P<year>[0-9]{4})\年(?P<day>[0-9]{1,2})日/',
                    '/^(?P<month>[0-9]{1,2})\月(?P<day>[0-9]{1,2})日/',
                    '/^(?P<day>[0-9]{1,2})日/',
                    '/^(?P<year>[0-9]{4})\-(?P<month>[0-9]{1,2})\-(?P<day>[0-9]{1,2})/',     //Y-m-d
                    '/^(?P<month>[0-9]{1,2})\-(?P<day>[0-9]{1,2})/',
                    '/^(?P<year>[0-9]{4})\/(?P<month>[0-9]{1,2})\/(?P<day>[0-9]{1,2})/',     //Y/m/d
                    '/^(?P<month>[0-9]{1,2})\/(?P<day>[0-9]{1,2})/');
    foreach($preg_str as $str){
        if(preg_match($str,$text,$m)==1){
            if(!isset($m["year"]))$m["year"]=date("Y");
            if(!isset($m["month"]))$m["month"]=date("m");
            if(checkdate($m["month"],$m["day"],$m["year"]))
                return date("Y-m-d",strtotime($m["year"].'-'.$m["month"].'-'.$m["day"]));
        }
    }
    return null;
}

LINEボット

先日LINEのchatbot APIが正式リリースされたので、ちょっと遊んでみました。

作ったのがサークルの予定を知らせるbotなので公開はできないのですが、感じたことを少し書いてみようかと。

まず、APIが全体的に使いやすいですね。
以前Twitterbotを作った時は仕様もわからずに、殆ど既存のコードのコピペで完成させたのですが、
今回はAPIの仕様を読んで理解したうえで作ることができました。
といってもjson形式のデータをPOST送信でやり取りしていることが分かった、という程度ですけど。

色々試してみた感想として、これ何でもできるんじゃないかって思うくらい、なんか感動しました。
やはり今まで使ってたアプリが自動で動かせるって衝撃ありますよね。

あんまりまとまってませんが、こんなことを感じました。
botを完成させるうえで特定の日付を意味する文字列を正規表現で抽出、書き換えする処理を書いたので、
また今度それについて書こうかと思います。

東北縦断旅行4日目その2 ~青森編~

リゾートあすなろ竜飛で青森に着いたのは午後5時過ぎ。
まずは朝と同様に散策です。

青森散策

f:id:tateisu496:20161026010941j:plain:w240f:id:tateisu496:20161026011006j:plain:w240
駅から海の方向にまっすぐ向かうと、八甲田丸があります。
時間がなかったので中まで見学はしませんでした。
f:id:tateisu496:20161026011037j:plain:w240f:id:tateisu496:20161026011102j:plain:w240
そこから東に向かうと三角の建物が。
これはアスパムという観光物産館です。入口近くで売っていたアップルパイがとても美味しかったのでおすすめ。
f:id:tateisu496:20161026011130j:plain:w240
上の階には展望室が。
f:id:tateisu496:20161026011155j:plain:w300
360度見渡せて景色も良いので必見です。室内なのでさむくないし。

夕食は「おさない食堂」というところでホタテフライをいただきました。
一見すると普通の食堂なのですが、店内には芸能人のサインがあったり、外国人が並んでたりと、流石は有名店。
新鮮なホタテをさっと揚げたフライはとても美味でした。

f:id:tateisu496:20161026010911j:plain:w240
最後に青森駅の写真を一枚。駅前から青森ベイブリッジが見えます。

最後に

青森駅から深夜バスに乗り、この旅行は終了。
軽装で行ったので寒かったですが、意外となんとかなるものですね。
今まで行ったことのなかった北東北三県に訪れることができましたが、まだまだ観光したい場所はたくさんあるので、
また時間があれば来たいと思いました。その時は大間岬から函館に渡りたいなー、なんて。

東北縦断旅行4日目その1 ~竜飛岬編~

さて、長かった東北縦断旅行もいよいよ最終日。
1日かけて青森県を観光です。

f:id:tateisu496:20161026004817j:plain:w240
朝一で弘前を出て青森へ。
f:id:tateisu496:20161026004847j:plain:w300
朝食がてらのっけ丼を食べに行きました。
自由に具を乗せられて1,080円。お得です。
他にも散策したのですが、それは次回書くことにします。

リゾートあすなろ竜飛

せっかくの縦断旅行なので、北の端を目指したい。
そう思ったのですが本州最北端の大間岬はさすがに遠い。
ということで電車で行きやすい竜飛岬を目指します。
f:id:tateisu496:20161026004923j:plain:w300
リゾートあすなろ竜飛に乗りました。
乗客は私のほかに2,3組。青森駅のホームを出る時は乗らずに写真を撮る人の方が多いという事態でした。
f:id:tateisu496:20161026004959j:plain:w240
1時間ほどで三厩へ。まさに終着駅という感じで遠くに来たことを実感します。
ここから臨時便のバスで30分ほどで竜飛岬です。
運賃100円とお得なのですが、私の他に1組しか乗ってなくて採算取れないだろうと思うと複雑です。

竜飛岬

f:id:tateisu496:20161026005022j:plain:w240
最初に青函トンネル記念館に寄りました。
体験坑道に行くか迷ったのですが、滞在2時間のうち40分を使ってしまうのは勿体ないかと思ってやめました。
f:id:tateisu496:20161026005057j:plain:w240f:id:tateisu496:20161026005128j:plain:w240
記念館から歩いて少しのところにある展望台にのぼりました。
さすがは風が有名な場所、発電用の風車が並んでいます。この日も終始強風で寒かった。

f:id:tateisu496:20161026005233j:plain:w240
メインの竜飛埼灯台へ。これは登れないタイプのようですね。
高台の良い立地にあるのですが、北側の眺望は邪魔が多くて微妙です。南西方向は綺麗だったのですが。
f:id:tateisu496:20161026005431j:plain:w300
津軽海峡冬景色の歌詞が書かれた碑です。色々回りましたが、対岸の北海道を眺めるにはここが最適だと思います。

f:id:tateisu496:20161026005202j:plain:w240
上の方は大方見終わったので、いよいよ階段国道で下に降ります。 f:id:tateisu496:20161026005321j:plain:w240
と思ったのですが、まさかの途中で通行止め。ちょっと残念。下調べ不足が露見してますね(笑)
f:id:tateisu496:20161026005459j:plain:w300
それでも下に行ってみたいということで、遠回りして下まで降りました。
寄り道したせいもあって歩いて30分以上かかりました、、、
その割にそこまで見どころがあるわけでもないし、体験坑道に行けばよかったかもと若干後悔。

青森へ

竜飛漁港からバスに乗り、青森方面へ戻ります。
途中、義経寺で30分散策時間が設けられていたので散策です。 f:id:tateisu496:20161026005539j:plain:w240
義経寺。二日目の高館といい、この旅行は義経に縁がありますね。
f:id:tateisu496:20161026005608j:plain:w300
三厩の名前の由来となった厩石。詳細は忘れましたが義経関連の伝説が残っているようです。

帰りもリゾートあすなろ竜飛に乗って青森へ戻ります。
残すは青森駅周辺の観光のみとなりました。

移動ルート

弘前 8:06~8:55 青森

青森 10:44~11:49 三厩 (リゾートあすなろ竜飛1号)
三厩駅 12:00~12:34 青函トンネル記念館 (バス)

龍飛漁港 14:47~15:07 義経寺 (バス)

義経寺 15:37~15:42 三厩駅 (バス)
三厩 15:57~17:13 青森 (リゾートあすなろ竜飛2号)