雑な hinananoha

やさしいせかいをさがして三千里

C96お疲れ様でした! & 通販開始のお知らせ

C96、閉幕

コミックマーケット96、昨日で閉幕となりました。

「嬉野ネットワークサービス」まで足をお運びいただいた皆様、本当にありがとうございました。

f:id:hinananoha:20190813165648j:plain
これは当日朝の様子

残り部数が少なかった会報URESHINOはめでたく完売、入門コンピュータリテラシーも多くの方にお手にとっていただけました。
嬉しい限りでございます。コミケ参加はまだ3回目ですが、大分慣れてきたのかなぁなどと思っております。
片付けに手間取った話は秘密です

通販開始のお知らせ

というわけで、(ご要望もあったので)今回のコミケで頒布しました「入門 コンピュータリテラシー」をBOOTHで販売することとしました。

ureshino-network.booth.pm

イベント頒布価格に上乗せされている分は、宅急便コンパクトの梱包材と、その中に入れる本を保護する緩衝材付き封筒分の金額です。
是非お手にとっていただければ、と思います。

また、「会報URESHINO 創刊号」についてですが、大変申し訳ございませんがこちらは再販の予定はございません。
冬にサークル参加する予定ですが、その際に「会報URESHINO Vol.2」として、さらに内容を増やして頒布する予定ですので、そちらをお手にとっていただければ幸いです。

よろしくお願いします。

FANBOXの宣伝

しつこいって?申し訳ない。ただ、Funnel Advisorの方にご興味を持ってくださった方は、よろしければ……

www.pixiv.net

自分語りのコーナー

ここからは今回のコミケに関して私の様々を垂れ流すターンにございます。興味なければ読まなくても良いです。

今回の新刊について

今回の新刊、ご購入に至らずとも手に取って読んで下さった方が非常に多く、私としては非常に嬉しい限りでございます。一時は並んでいる4人が全員読んでいる、という状態になるほどでした。
また、「職場で新人教育をしている」「学校で教員をしていて情報を教えてる」という方や、さらには恐れ多くも「大学教員でまさにこの科目を持っている」という方までいらっしゃり、そのような方々の目の隅にでも引っかかった事を大変嬉しく思います。
中には「この本を元に教育のプログラムを組む、出典はちゃんと書きますから!」とまで言ってくださる方もおり、作って良かったなぁ、と思いました。

さらには、何人かの方とは少しお話もさせていただき、大変勉強になる一日でした。やはり、こういった初学者向けの広範な本というのは難しいんだなぁと思うと同時に、学校の教員の皆様の苦労が身に染みました。
もしこの本が皆様の授業などのわずかでも一助となるのであれば、大変嬉しく思います。

ただ、やはりいただいたお言葉として、「3000円はちょっと……」というのがありまして。やはり高かったか……という気持ちと、力不足を痛感しております。
力不足、というのは、「赤字になってでも頒布してやる」という財政状況でないこと、そして何よりも「3000円払ってでも買ってやる」という内容に出来なかった、という部分にあります。しかしながら、こういった本の需要があることはよく分かりましたので、これに関しては何かそういった方々にもお手にとっていただける方法が無いか、考えて行きたい次第でございます。

Funnel Advisorについて

こちらもかなり多くの方、特に午後以降にお越しいただいた皆様にはご興味を持っていただき、ありがとうございます。
今回、これについて解説していた「会報URESHINO」が早々に完売してしまい、大変申し訳なく思っております。

ですが、このサービス自体は無料で提供しております。冬ももちろん、提供予定ですので、是非使っていただければ、と思います。
また、冬には「会報URESHINO」の第2号を出す予定で、そちらでは、創刊号よりもさらに踏み込んでいろんな事を書いていきたい、と思っておりますので、楽しみにしていただければと思います。

南館について

南館、めっちゃ快適でした……。クーラーめっちゃ効いてて、スペースに居る間汗全くかきませんでしたね。やはり最新鋭の空調は素晴らしい。

Funnel Advisor ベータリリース & コミックマーケット96のおしらせ

※8/4 お品書きを追記しました!

Funnel Advisor、堂々公開(ベータ版)

というわけで、以前よりお話ししておりました、コミックマーケットグループ共同購入システム「Funnel Advisor」を、本日ベータリリースいたしました。
大変遅くなって申し訳ない、是非お使いください!

www.funnel-advisor.com

なお、「いや、私、グループでは動かなくて……一人でしか動かないからいらないから……」というそこのあなた。
……このツール、一人だけでも使えます。しかも、手入力とはいえ、こんな感じにですね……

f:id:hinananoha:20190801205814p:plain

買い物リスト、作れます(※この画面は開発中の物で、実際の画面は少し異なります)。

是非、使ってみてください!

ちょっと今回死ぬほど忙しかったので、大きな機能変更は出来てないんですが、来年あたりをめどにですね、「ある」すごく大きな機能を追加予定です……お楽しみに……。

一つだけお詫び

とまあ、なんかすごく何事も無ーく公開してるんですが、一個お詫びがありまして……。
OAuthに使うための、GoogleAPI、確認がまだ通って無くて……現在、「安全で無いアプリ」と表示されています。

実は、先週の日曜日には公開する予定だったのにここまでずれた理由はこれです……まだ返事が来てないのです……

そんなわけで、現在一応対処方法を載せていますが、気になってしまう方は、Twitterアカウントを使ってください……済まない……お願いします……

コミックマーケット96参加情報

webcatalog.circle.ms

サークル「嬉野ネットワークサービス」は、8月12日(月・祝) 4日目の南ヨ-31a で参加します!

f:id:hinananoha:20190804200937p:plain

今回の新刊は、「入門 コンピュータリテラシー 基礎から学び(直し)たいあなたに」です。

f:id:hinananoha:20190801211236p:plain

この本は、某大学のとある新入生向けの講習会で、その講習生に頒布したテキスト……を、一般向けに加筆修正した物です。
もともと、この講習会は、その某大学の講義を「先取り」するつもりで作ったはずが、ある年、その講義の中身が改悪され、そのテキストのひどさに怒った講習会の主催者と私が、「もういっそ新しいテキストを作ってしまえ」と阿呆なことを言ったあげく、同期だったkomekome09を巻き込み、作りました。
まあですが、結果として割と「何も知らないで情報系の大学来たけど何すれば良いっすか」という人が、今後何かに出会って取りかかる際に、その壁を取り払えるくらいの物は出来たんじゃ無いかなーと思っていたりします。

今大学1年生の方や、来年大学生になる方はもちろん、「社会人だけど体系的に勉強したくなってきた、でもやりかたが分からん、何を調べれば良いかわからん」という人も、また、恐れ多いとは思いますが、「大学や職場で教員・講師をやっててこういう事をやりたい、参考になる物は……」という物をお探しの方、是非お手にとっていただけると幸いです。

また、この本、定期的にアップデートしていこうかなと思っているので、「お前ここ間違ってるぞクソ雑魚かよ大学やり直せ」という厳しいご指摘ございましたら遠慮無くビシバシとご指摘ください。

あの、会報URESHINOは……

すいません、今回、会報URESHINOの最新号は……落としました……オトシタァー……
今すっごい忙しくて……本当に申し訳ない……

一応既刊として小数部、前回の残りを持ってきますが多分すぐ消えるので、それとは別にFunnel Advisorの宣伝のチラシくらいは持って行こうと思いますので、寄ったら貰ってやってください。

そのほか

実は、Pixiv FANBOXとやらを開設しております。

www.pixiv.net

全然動いてねぇじゃねぇかって?その通りだよ……本当に済まない……
ここでご支援いただいたお金はFunnel Advisorの運営資金の他、今後作って行くであろう様々なサービスの運営資金に使われていきますので、よろしければ是非ご支援ください。

そして、今さらっと言いましたが、実は9月あたりをめどに新サービスがもしかしたら動き出すかも……?乞うご期待っ!

C95お疲れ様でした!

平成最後のコミックマーケット、閉幕

というわけで、C95お疲れ様でした。

スペースに来てくださった皆様、本当にありがとうございます。

今回、予想していたよりもかなり多くの皆様にお立ち寄りいただき、また、新刊をお手に取っていただき本当にうれしい限りです。

おかげさまで今回の新刊「会報URESHINO 創刊号」はほぼ完売*1となりました。本当にありがとうございました。

 

感想的なやつ

前回はFA本体の方をギリギリまでやっていたことやその他諸々で、事実上の電子頒布となりましたが、今回はきちんと本という形で頒布することができて本当に良かったな、と思います。

私自身が「紙の本」が大好きなので*2、自分の書いたものが本という形になっていることに、何とも言えない感動のような感情を得ました。

 

今回は運よく誕生日席になったこともあり、ちょっとスペース作りも頑張ってみました。

 左の黒板は時間によっていろいろ書き換えたのですが、一番最後に書いてた、ちょっとした煽り文句が結構いろんな方の目を引いたようなので、やはり宣伝文句は大事なんだなぁ……と実感した次第でございました。

 

また、差し入れをお持ちくださった方もいらっしゃり、本当にありがたい限りでございます。一名ほど、お名前を言わずに去ってしまった方がいらっしゃるようで、どなたかわからないのですが、ありがとうございます。ぜひ次からは名乗ってくださるとうれしいです。

 

頂いたご意見、全部覚えてますよ

色々なお話を聞いていると、「自分のところでもこういうの内製してます」という話や、「こういう機能ないの?」というのを聞きました。全部きちんと覚えてます。本当にありがたいご意見ばかりで、今後の開発意欲が高まります。

その中でも「私グループ参加じゃないんだけどそういうのに便利なツールはないの?」というご意見を2,3名の方からいただきました。

ちょうどその数日前、私もそんなことを思い、作ろうと思っていたツールがあり、もしかしたらそのツールを早い段階で作るかもしれない、などと思っております。

今はFunnel Advisorで押しまくってますが、いろんなものを作っていきたいなと思っていますので、今後も注視していただければな、と思います。

 

FAのページ、リニューアル予定

です。今回の本にいろいろ書いたので、その内容を踏まえて説明ページなどをリニューアルする予定です。その際はTwitterで告知しますので、ぜひご覧いただき、来年の夏コミ、C96ではよろしければFAを使っていただけるとすごくうれしいです。

 

FANBOX公開

告知通り、とりあえずFANBOX公開してみました。

www.pixiv.net

Funnel Advisorや、その後に公開予定の様々なサービスは、今のところ有料で公開するつもりはありません。理由は単純で、有料にする場合に発生する様々な諸問題*3を解決する方法が現在容易に思いつかないためです。

また、広告の設置も考えましたが、近頃の不正広告*4や追従型広告等のユーザビリティを大幅に損なう可能性のあるものがコミケ本番中に出た場合、少なくとも私だったら端末を投げたくなるくらい頭に来るだろうなぁと思ったため、今のところ設置予定はありません*5

しかしサービスを動かすにはお金がかかる物、ということでこのような形とすることにしました。

現在は100円のプランのみです。また、ここにはこのブログが更新されたときや、新サービスが始まった時に告知をするほかに、FAの使い方に関することなどを書けたらなと思っています。

今後、何らかのリターンができるプランも用意する予定ですが、なんか思いつかないので、もし「こういうのがもらえるプランが欲しい」とか「そういうのいらないからとりあえず5000兆円振り込めるプランを寄越せ*6」とかありましたらお申し付けください。

 

ここからは独り言

反省的なやつ

サークル参加は2回目、前回よりはましになったとはいえいろいろと至らないところだらけでございました……。

私のような若輩者の反省が何の役に立つかわかりませんが、他の方の参考になればとちょっと書き連ねてみます。

1.  A2ポスターは意外と小さい

今回、良くあるポスターを用意しました。で、コミケで借りれるPOPスタンドがA2サイズの物だと聞き、A2のポスターを用意したのですが……これが意外と小さい。文字も小さくて、ちょっと寂しい感じになりました。

次はA1サイズのポスターを用意するとともに、POPスタンドも自前で用意しようかな、と思いました。

2. 入稿は余裕をもって

今回、直接搬入で持ち込んだのですが、本来は一度家に届けてもらって当日自分で持っていく予定でした。ところがその締切直前に身体を壊し、直接搬入しか選択肢のない期限となってしまったわけでございます……。

次からはもうちょっと余裕をもって書きたいな、と思いましたが、どうやらこれは同人作家の永遠の課題のようなので達成できるのは遥か未来かもしれません。

3. ルーターを車の中に置いてこない

前回いらっしゃった方は、デモがSurfaceが置かれて自由に触れるようになっていたのをご存知だと思うのですが、今回うっかりモバイルルーターを車に置いてきたせいで、タブレットでお見せする形となりました。いろいろ焦ってたもので……。

4. 3日目でなくても、コミケの後は疲れる。車の運転怖い

眠気との戦いだし、コーヒー飲むと帰ってから眠れなくなるしで本当に怖かった。でも車使うしかないんだよなぁ……。車運転している間は眠気が飛んで、帰ってきたらシュッって眠気が戻って来るいい方法を来年の夏コミまで募集してます。

*1:正直こんなに売れるとは思ってなかったのでかなりびっくりしてます

*2:それこそ1回のコミケで何百冊と買うくらいには

*3:特定商取引法に基づく表示に関する話などの法的な部分や、課金・非課金での差別化、適切な値段設定等

*4:ウイルスが検知されたとかが出る奴

*5:そういうのばかりではないこともわかってますが、どうにも知識不足につき、現時点では回避できなさそうという判断です

*6:5000兆円欲しい!

コミックマーケット95にサークル参加します!

コミックマーケットに帰ってきた!

みなさんこんにちは、hinananohaです。

C94で「嬉野ネットワークサービス」にお越しくださった皆様、ありがとうございました(遅い)

無事C95も当選しました。場所は 2日目 東タ-24b 「嬉野ネットワークサービス」です!

 

何出すの

今回も新刊、あります。

あります、というか前回が(時間がなさ過ぎて)電子媒体のみになってしまったので、今回はちゃんと本にしました。印刷所に頼みました。

今回は「会報URESHINO 創刊号」と題して、今度こそFunnel Advisorに関するお話を記述した本となります。

 前回より時間をかけて(?)書いたのできちんとした形になっていると思います。さらに……

Funnel Advisorについて

現在Funnel Advisorはクローズドβになってますが、来年夏のC96に合わせて、ついにオープンβサービスを稼働することにしました!

今年の冬のクローズドβで大問題が起きなければ、来年夏に向けて最後の調整を行い、実際に動かすこととなる予定です。

そんなFunnel Advisorについて(それなりに)細かく紹介した本になりますので、ぜひお手に取っていただければと思います。

お品書き

というわけで、今回のC95のお品書きは

・会報URESHINO 創刊号 ¥600

となります。

ツイッターでは¥500の予定、と申し上げましたが、ページ数が増えまして……申し訳ございません。)

但し、前回弊サークルの新刊をご購入下さった方は、内容の重複もありますので、半額の¥300で頒布します。

前回ご購入下さった方は、購入時に「この紙は大切に保管してください」と申し上げましたダウンロードカードを当日お持ち下さい。会計時に売り子、若しくは私にダウンロードカードを渡してください。

注意事項

前述の準備号購入者限定の割引販売は、ダウンロードカードをお持ちでない場合はできませんので、必ず当日お持ちください。

また、高額紙幣でのお支払いはお釣りをお返しできない可能性がございます(特に開会直後は)ので、ご理解ご協力のほどよろしくお願いいたします。

デモの公開、今回もやります!

前回スペースで公開しましたデモは今回も行います。前回同様、13時以降に準備出来次第行いますので、もしご興味がございましたら13時以降にお越しください。

また、前回同様、私自身も買い物等で開会後~13時くらいまでは売り子さんにお願いして、私はスペースにおりませんので、もし私に用事があるという奇特な方がいらっしゃいましたら、13時以降にスペースにお越しください。

余談

初・印刷所での印刷、締切を間違えるの巻

前回、即売会サークル参加が初だったわけですが、前回はデータ頒布だったので、印刷所に頼んで本を刷ってもらうのはこれが初めてとなります。

そしたら、締切カレンダーに書かれている日付はコミケの「直接搬入の」締め切りで、一旦家に届けてほしい場合はそれよりも早くなる、などというのを完全に見落としておりまして……。

これに気が付いた時はまだ家に届ける方の締切にも間に合いそうだったのですが。

修羅場中に体調をぶっ壊すの巻

大体こういうときって、何かが起きるんですね。

無事、ウイルス性胃腸炎からの風邪コンボで轟沈しました。結局、直接搬入の締切にしか(早割だと)間に合わなくて、直接搬入になります。しかも前日搬入の通行証の申し込みをしていないので、本当に当日の朝になるまでわかりません。

スペースに墓が立ってたら察してください。

 

現在は、スペースに掲示するポスターを作っていますが、体調はまだよくなってないです。これ当日大丈夫か……?

というわけで皆様、当日はぜひよろしくお願いいたします!

コミックマーケット94にサークル参加します!!!!

C94、参戦

どうも、hinananohaです。

先日のRTX1210に関する記事でさらっと流しましたが、今回サークル参加することとなりました。

場所は 1日目 西も-39b 「嬉野ネットワークサービス」です。

何出すの?

今回、「会報 URESHINO 創刊準備号」と題しまして、現在私が作っているコミケ共同購入チェックリスト共有・管理システム「Funnel Advisor」に関する紹介本を出します。1部500円の予定です。

f:id:hinananoha:20180808000824p:plain

"Funnel Advisor" って何?

Funnel Advisorはコミケで複数人での共同購入の際にチェックリストを簡単に共有・集計ができたり、そのほかにも共同購入に便利な機能を提供するWebサービスです。

現在クローズドβで運用しておりますが、C95~C96あたりから一般公開する予定で現在開発を進めております。

構想自体はC90から進めており、C91から現在までクローズド環境で運用してきました。

ただ、類似のサービスがないことや、(私の周りで聞いている限り)需要がありそうなので、オープンサービスとして動かそうと決意し、この通り今回初サークル参加するに至りました。

少しでもご興味がございましたら是非1日目 西も-39b 「嬉野ネットワークサービス」にお立ち寄りください。

デモ公開します!!!

紹介冊子があるとはいえ、やはり実際に見てみないとわからないだろうということで、周りが落ち着くであろう午後1時頃から、実際にデモをお見せする予定です。

ぜひ見てみたいという方は午後1時以降にお越しいただければと思います。

また、私自身も買い物等で開会直後~午後1時頃までは売り子の方にお願いしておりますので、もし私に用があるという奇特な方がおりましたら、そちらも午後1時以降にお越しいただければと思います。

コミケ歴6年目にして初サークル参加

一般参加はかれこれ5年、合同誌に原稿を載せていただき始めてからも早4年近くとなるのですが、自分の個人サークルとしてサークル参加するのは初めてでございます。

初めて故いろいろとご迷惑おかけすることもあるかもしれませんが生暖かい目で見守っていただけると幸いにございます。

進捗いかがですか?

(大丈夫だったらこんなに告知が遅いわけないんだよなぁ)

告知遅くない?

告知遅くなってごめんなさい、気が付いたら直前も直前でした。

いつも「お品書き出すの遅い」とか言ってたことを激しく反省しております、ええ。

2018/08/09 追記

(皆さんご存知だとは思いますが)高額紙幣でのお支払いはお釣りをお返しできない可能性がございます(特に特に開会直後は)ので、ご理解ご協力のほどよろしくお願いいたします。

YAMAHA RTX1210でv6プラス対応HGW(PR-500MI)配下でのv6プラス接続(MAP-E)に成功した話

もう夏

こんにちは皆さん、hinananohaです。

すっかり熱くなってもはや夏といっても過言ではないですね。

我が家もついに(サーバ群のために)冷房24時間稼働の時期がやってきたようです。

今のアパートのエアコンは私が来た時に新品にしてもらったおかげで設定温度28℃でもなかなか冷えるので電気代にやさしいです。

YAMAHAルータv6プラス対応

cloud.watch.impress.co.jp

今か今かと待ち続けたYAMAHAルータでのv6プラス(MAP-E)がついに正式対応となりました。v6プラス自体は自分でアドレスを手計算すれば一応使えたらしいのですが、アドレス範囲が変更になった場合再計算になるとかなんとかまあ少し不便でした。

ところがです。

v6プラス対応機能

これをよく見るとこんなことが書いてあります。

ONU直下での動作を推奨しますが、「v6プラス」に対応しておらず配下にIPv6アドレスを配布するホームゲートウェイであれば動作が可能です。「v6プラス」に対応したホームゲートウェイの配下では動作しません。

我が家の機器はPR-500MI、ばっちりv6プラスに対応したHGWです。それでもどうにかならないかと様々思考錯誤はしたのですが……

villas-windmill.blog.so-net.ne.jp

この記事の通り、うんともスントも言いませんでした。ところが、いろいろあってv6プラス対応のHGWの配下で動作する方法を見つけました。

v6プラス対応HGW配下でRTX1210でのv6プラス接続を試みる

私が行った手順は以下の通りです。

  1. v6プラスオプションをいったん解約する
  2. IPv6接続オプションも一度解約する(※解約しないとv6プラスオプションが戻せなかったため)
  3. PR-500MIを初期化する
  4. 初期化後、「初期設定」ランプがオレンジ色に点灯(=未設定状態)していることを確認し、HGWの初期設定を行う。但しこの時、パスワードのみ設定して、ISPの設定を行わない
  5. 完了、再起動後、「初期設定」ランプが消え、「登録」ランプが点灯することを確認する
  6. 設定画面に入り、「詳細設定」の「IPv6 パケットフィルタ設定 (IPoE)」を「無効」にする
  7. v6プラスオプションを再契約と同時にRTX1210にMAP-Eの設定を投入(設定内容はRAプロキシの方)
  8. しばらくして、ISP側でIPv6 IPoEの設定が完了すると「初期設定」ランプがオレンジ色に点灯するとともに「オプション」ランプが緑色に点灯(=ONU機能のみ利用可)する
  9. しばらく待つとRTX1210のMAP-Eのtunnelがupしているのが確認できる

このような感じでMAPルールが取得出来ていることが確認できます*1

# tunnel select 1
# show status tunnel
TUNNEL[1]: 
説明: nifty
  インタフェースの種類: MAP-E
  IPv6: ****:**:****:****:**:****:****:****
  トンネルインタフェースは接続されています
  開始: 2018/07/02 00:41:54
  通信時間: 2日17時間18分19秒
  受信: (IPv4) 2251499 パケット [2601399207 オクテット]
        (IPv6) 0 パケット [0 オクテット]
  送信: (IPv4) 1168271 パケット [667896650 オクテット]
        (IPv6) 0 パケット [0 オクテット]
# show nat descriptor address
NAT/IPマスカレード 動作タイプ : 2
参照NATディスクリプタ : 300, 適用インタフェース : LAN3(1)
Masqueradeテーブル
    外側アドレス: primary/192.168.0.14
    ポート範囲: 60000-64095, 49152-59999, 44096-49151   1 セッション
  -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-
      No.       内側アドレス    セッション数  ホスト毎制限数         種別
       1         192.168.2.2               1           65534         dynamic
---------------------
参照NATディスクリプタ : 1000, 適用インタフェース : TUNNEL[1](1)
Masqueradeテーブル
    外側アドレス: map-e/***.***.***.***
    ポート範囲: ****-****, ****-****, *****-*****, *****-*****, *****-*****, **
***-*****, *****-*****, *****-*****, *****-*****, *****-*****, *****-*****, ***
**-*****, *****-*****, *****-*****, *****-*****   156 セッション
  -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-
      No.       内側アドレス    セッション数  ホスト毎制限数         種別
       1     ***.***.***.***             135         65534         dynamic
       2     ***.***.***.***              11          65534         dynamic
       3     ***.***.***.***               4           65534         dynamic
       4     ***.***.***.***               2           65534         dynamic
       5     ***.***.***.***               1           65534         dynamic
       6     ***.***.***.***               1           65534         dynamic
       7     ***.***.***.***               1           65534         dynamic
       8     ***.***.***.***               1           65534         dynamic
---------------------
有効なNATディスクリプタテーブルが2個ありました

考察:どのような条件下でv6プラス対応HGW配下でも成功するか

v6プラス対応HGW配下でRTX1210等でMAP-E接続に成功させる条件は以下だと思われます。

  • 一旦「v6プラス」オプションを解約し、フレッツ・ジョイントで降ってきたソフトウェアとの接続を無効化する
  • HGWをリセットし、接続情報を削除したのちにそれを設定しない

それぞれについて見ていきます。

その1: v6プラスの解約とフレッツ・ジョイント

v6プラス対応HGWは「フレッツ・ジョイント」と呼ばれる仕組みを用いてこれを実現しています。

www.ntt-east.co.jp

どうやら前のリンクも含めて察するに、この「フレッツ・ジョイント」によってv6プラス関連ソフトウェアが入ってしまうとどうにもならなさそうということが分かります。

これはルータ部分だけの話ではなさそう、というのも、PR-500MIにはONU部分と思われる場所の背面に謎の「蓋」があり、そこを開けると内部でLANポートに上から伸びているLANケーブルが刺さっているのは皆さんご存知だと思いますが、ここから無理やりLANを引っ張って試しても成功しないためです。

通常であればルータ部分を回避しているわけですから、成功すると思うのですが……ここに関しては謎が多いです。個人的には

  • 例のソフトウェアはルータ部分だけでなくONU部分にも何らかのソフトウェア的制御が入る
  • フレッツ・ジョイントでの接続に成功するとMAPサーバへの接続が当該ソフトウェアからのみの取得以外は受け付けなくなる

あたりが理由かと推察しております。

特に後者については、v6プラス申し込み時に@niftyから送られてくるメールからもその可能性を示唆しております。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ ご利用までの流れ(v6プラス単体でお申し込みいただいたお客様)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《1:v6プラスご利用可否の確認》
  (中略)

《2:v6プラス開通のご連絡》
 v6プラスご利用開始通知メールが届きましたら、ご利用可能となります。

 [▼](※)v6プラス対象コース、詳細は以下よりご確認ください。
 http://csoption.nifty.com/ipv6/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ v6プラス対応ブロードバンドルーターでのv6プラスお申し込みについて
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 お客様ご自身で用意されたv6プラス対応ブロードバンドルーターでv6プラス
 をお申し込みいただいた場合、手続きが完了しますと「IPv6接続オプション」
 のご利用開始メールが送信されます。メールを受信されましたら、ブロード
 バンドルーターの設定をv6プラスに変更して接続を行ってください。

  [▼]サポートページ
   https://faq.nifty.com/app/answers/detail/a_id/21282/

実際、最初にv6プラスを契約したとき(=フレッツ・ジョイントで降ってきたとき)は「v6プラスご利用開始通知」が、そして今回は「IPv6接続オプション ご利用開始通知」が届きました。

これらからも、「フレッツ・ジョイントでv6プラスが有効化された場合」とそれ以外で挙動が異なる可能性は十分にあると思われます。

そのため、例えフレッツ・ジョイントの設定で停止したとしても配下の端末でMAP-EのMAPサーバへの接続ができないのでは、と思います。

その2:HGWのリセットと接続情報未設定

その1でフレッツ・ジョイントで降ってきたv6プラス関連ソフトウェアとの紐づけは解除されたのですが、再契約時にどのような挙動をするかわからないため、リセットは必要かと思われます。

但し、重要なのはそこよりも「HGWに接続情報を設定しないこと」です。

どうやらフレッツ・ジョイントでのHGWへのソフトウェアの流し込みにはIPv4 PPPoE接続によるISPとの接続が最初に必要なようです。

そのため、ここでHGWに接続情報を設定しないことでそもそもフレッツ・ジョイントのソフトウェアが入らないようにすることができるのではないかと思われます。

まとめ

というわけで、

v6プラス対応HGW配下でRTX1210等でv6プラス接続を行うには

  1. 一旦v6プラスを解約して
  2. HGWをリセット
  3. HGWには接続情報を投入せず
  4. そして再度v6プラスを再契約してHGWとのMAPサーバ接続争奪戦に勝つ

という結果が出ました。

情報募集中

もし試してみて「この作業は不要だった」若しくは「この作業も重要っぽい」、また様々に詳しい方からの「おそらく理由はこれだろう」などの情報がございましたらTwitterなりコメントなりで情報をください。

よろしくお願いいたします。

最後に:コミケに出ます

最後に宣伝をば。コミケ初サークル参加です🎉🎉🎉🎉*2

現在「大規模即売会における共同購入補助サービス」として Funnel Advisor というサービスを開発中です。

実は2年前くらいから身内向けに作ってたのですが、各所から評判が良かったので今年の冬のオープンβを目指して現在頑張っております。

それに関する解説本や与太話などをする本を出そうかなと思っておりますので、ご興味がございましたら是非1日目 西も-39bまでお越しください。

また直前になったら記事を書きます。……多分。

*1:NATディスクリプタ300はバックアップ回線の物です

*2:要出典

起動時とシャットダウン時にメールを飛ばしてくれるPowershell スクリプト

お久しぶりです

どうもお久しぶりです。こんな記事書くの久々なhinananohaです。
なんかTwitterアカウントが新しく?なりましたのでよろしくお願いします。

twitter.com

Introduction

我が家はメインサーバとしてWindows Serverを動かしているのですが、唐突に以下の機能を実装してみたくなりました。

  • シャットダウン時とスタートアップ時にメールを飛ばす
  • スタートアップ時は前回のシャットダウンに関する情報を提供する

こんな感じです。
ただメール飛ばすだけは実は簡単なのですが、後者の場合はイベントログを取得する必要があるため、まあどうしようかな、みたいな気持ちになっていました。

実際に作ってみた

作ったもの

まずさっそく結果から。この通りになります。

シャットダウン時にメールを飛ばすスクリプト

$mail = @{
    from = "";
    to = "";
    smtp_server = "";
    smtp_port = 587;
    user = "";
    password = "";
}
$date = Get-Date -Format R
$subject = "[THANATOS]System Shutdown Start."
$body ="
THANATOS System Shutdown is received.
System is shutdown at $Date .

This mail is auto-sent from Windows Server.
"

$client = New-Object Net.Mail.SmtpClient($mail["smtp_server"], $mail["smtp_port"])

# GmailはSMTP + SSLで送信する
$client.EnableSsl = $true

# SMTP Authのため、認証情報を設定する
$client.Credentials = New-Object Net.NetworkCredential($mail["user"], $mail["password"])

$msg = New-Object Net.Mail.MailMessage($mail["from"], $mail["to"], $subject, $body)

$client.Send($msg)

スタートアップ時にメールを飛ばすスクリプト

function CheckConnectivity($times) {
    $return = 0
    try{
        $Result = Get-NetConnectionProfile -IPv4Connectivity Internet -erroraction stop
    }catch [System.Management.Automation.ActionPreferenceStopException]{
        Start-Sleep -s 10
        $times = $times + 1
        if($times -eq 30){
            return 1
        }
        $return = CheckConnectivity($times)
     }
     return $return
}


function SendStartupMail {
    $check = CheckConnectivity(0)
    $startup_start_date = Get-Date -Format R ([DateTime](Get-EventLog -LogName System -InstanceId 12 -Newest 1 | Select-Object ReplacementStrings).ReplacementStrings[6])
    $startup_finish_date = Get-Date -Format R
    $last_shutdown_status = (Get-EventLog -LogName System -InstanceId 20 -Newest 1 | Select-Object ReplacementStrings).ReplacementStrings[0]
    if($last_shutdown_status -eq 'true'){
        $last_shutdown_time = Get-Date -Format R ([DateTime](Get-EventLog -LogName System -InstanceId 13 -Newest 1 | Select-Object ReplacementStrings).ReplacementStrings[0])
        $last_shutdown_info = (Get-EventLog -LogName System | Where-Object{$_.EventID -eq 1074} | Select-Object -First 1 | Select-Object ReplacementStrings).ReplacementStrings
        $reason = $last_shutdown_info[2]
        $reason_code = $last_shutdown_info[3]
        $reboot = $last_shutdown_info[4]
        $comment = $last_shutdown_info[5]

        $body ="
THANATOS System is start and connect network.
System startup start at $startup_start_date .
System startup completed at $startup_finish_date .

Last Shutdown Status: $last_shutdown_status ($reboot)
Last Shutdown Time : $last_shutdown_time
Reason : $reason ($reason_code)
Comment : $comment


This mail is auto-sent from Windows Server.
"
    } else {
                $body ="
THANATOS System is start and connect network.
System startup start at $startup_start_date .
System startup completed at $startup_finish_date .

Last Shutdown Status: $last_shutdown_status
Last Shutdown is Bad status. You must set reason.


This mail is auto-sent from Windows Server.
"
    }
    if($check -eq 0){
        $mail = @{
            from = "";
            to = "";
            smtp_server = "";
            smtp_port = 587;
            user = "";
            password = "";
        }
        $subject = "[THANATOS]System Start"

        $client = New-Object Net.Mail.SmtpClient($mail["smtp_server"], $mail["smtp_port"])

        # GmailはSMTP + SSLで送信する
        $client.EnableSsl = $true

        # SMTP Authのため、認証情報を設定する
        $client.Credentials = New-Object Net.NetworkCredential($mail["user"], $mail["password"])

        $msg = New-Object Net.Mail.MailMessage($mail["from"], $mail["to"], $subject, $body)

        $client.Send($msg)

    } else {
        Start-Sleep -s 300
        SendStartupMail
    }
}

SendStartupMail
        


コードが汚い気がしますが気のせいです
これでメールを飛ばすと、こんな感じになります。(スタートアップ時)



ではどんな感じで作ったかを書いていきます。

Powershellでメールを飛ばす

これはいろいろな需要がある関係で各所に記事が転がっています。
我が家はSMTP over SSL/TLSなので、「Gmailにメールを送りたい」と同じ奴を見ればだいたいわかります。という事でこちらの記事を参考にさせていただきました。

thinkami.hatenablog.com

この中の System.Net.Mail の方を使いました。

シャットダウン時・スタートアップ時にPowershellスクリプトを実行

グループポリシー(gpedit.msc)で設定します。
グループポリシーの コンピューターの構成 -> Windowsの設定 -> スクリプト(スタートアップ/シャットダウン) で設定できます。
わざわざPowershellスクリプトを実行する専用のタブがあるのでそちらで設定ができます。

以上です。

Powershell スクリプトでイベントを取得し、必要な情報を取得する

イベントログを取得するPowershellコマンドは Get-EventLog です。
Get-EventLog そのものの使い方や、それをわかりやすくまとめた記事は以下の通りです。

gallery.technet.microsoft.com

www.atmarkit.co.jp

これらを用いて、必要なイベントを取得します。

前回のシャットダウンに関するイベントを取得し、そこから必要な情報を取得する

これが面倒くさい(というよりはこれが理解できるまで時間がかかりました)です。
まず、前回のシャットダウンに関する情報でほしいものは以下の通りです。

  1. 前回のシャットダウンは正常だったか (STOPエラーや強制終了、電源喪失などによるものではない)
  2. もし前回のシャットダウンが正常であれば、いつシャットダウンしたか
  3. 前回のシャットダウンは「シャットダウン」だったのか、「再起動」だったのか
  4. 前回のシャットダウンの理由は何だったのか (Windows Serverはデフォルトで「シャットダウンのイベント追跡ツール」が有効になっている)

このあたりです。では、実際のイベントログを見ながら、起動時のイベントログがどういう形になっているのか見ます。

起動時に発生するイベントログの解析

( この項目はただひたすらイベントログを解析する話なのでコードを見たい方は飛ばして構いません )

今回見るイベントログはイベント ビューアーの「Windows ログ」 -> 「システム」のログです。

まず、Windowsが起動して一番最初に記録されるイベントは 「Windowsの起動開始時刻」に関するイベントです。

ログの名前 システム
ソース Kernel-General
イベントID 12
オペコード 情報

内容はこんな感じです。

オペレーティング システムはシステム時刻 2018-01-31T05:41:44.498537000Z に起動しました。

次に(場合によっては仮想化ベースのセキュリティに関するログが出ることもありますが)ブートオプションのログが出ます。(おそらくセーフモードとかに関するものだと思います)
その次にbootmgrのユーザ入力待ちに関するログ、そしてその次にお待ちかね、「前回のシャットダウンのステータス」に関するログが出ます。

ログの名前 システム
ソース Kernel-Boot
イベントID 20
オペコード 情報

内容はこんな感じです。

前回のシャットダウンの成功状態は true でした。前回のブートの成功状態は true でした。

このログが終わると、ブートの種類、ブートメニューポリシー、FWからのブートメトリックの報告が終わって、いろいろなものが起動し始めます。

さて、次にシャットダウン時の情報を取得します。

シャットダウンの情報に関するイベントログの解析

次に、シャットダウン時に関する情報を探します。

シャットダウンに関する一番最初のログは、一部の例外を除いて一番最初に記録されるのは「シャットダウンのイベント追跡ツール」によるものです。
これは、有効になってない場合も、また、Windows Updateなどによる強制的なシャットダウン|再起動の場合も適当な理由で記録されます。

ログの名前 システム
ソース User32
イベントID 1074
オペコード 情報

内容はこんな感じです。

次の理由で、プロセス C:\Windows\System32\RuntimeBroker.exe (THANATOS) は、ユーザー THANATOS\Administrator の代わりに、コンピューター THANATOS の 再起動 を始めました: アプリケーション: メンテナンス(計画済)
 理由コード: 0x84040001
 シャットダウンの種類: 再起動
 コメント: 

C:\Windows\System32\RuntimeBroker.exeはいわゆる一般的なユーザの操作によるシャットダウン・再起動を行うときに呼び出されるものです。
例えば、Windows Updateから再起動をかけるとこうなります。(※Windows Server 2016の場合)

次の理由で、プロセス C:\Windows\system32\svchost.exe (THANATOS) は、ユーザー NT AUTHORITY\SYSTEM の代わりに、コンピューター THANATOS の 再起動 を始めました: オペレーティング システム: Service pack(計画済)
 理由コード: 0x80020010
 シャットダウンの種類: 再起動
 コメント: 

他にも、デバイスドライバのインストール後に再起動を要求されたりすると、こんな感じになります。(※Windows 10 Pro build 1709の場合)

次の理由で、プロセス msiexec.exe は、ユーザー NT AUTHORITY\SYSTEM の代わりに、コンピューター FARAWAY の 再起動 を始めました: この理由のタイトルが見つかりません
 理由コード: 0x80030002
 シャットダウンの種類: 再起動
 コメント: 'Sound Blaster Z-Series' の構成を完了または続行するために、Windows インストーラーによりシステムの再起動が実行されました。

これを使えばシャットダウンの理由はわかりそうです。

さて、ここから様々シャットダウンが行われます。すべてのシャットダウンが終わり、いちばん最後に記録されるのは、シャットダウン完了に関するログです。

ログの名前 システム
ソース Kernel-General
イベントID 13
オペコード 情報

内容はこちら。

オペレーティング システムはシステム時刻 2018-01-31T19:32:45.977382500Z にシャット ダウンします。

これでログが出そろいました。次にこれをPowershell スクリプトで取得して情報を得る方法です。

Powershell スクリプトで特定のイベントの一番新しいログの中の特定の情報を取得する

まず、Powershell スクリプトで特定のイベントを取得するのに使うのは「イベントID」です。これを使ってイベントを抽出します。
この方法は2種類あります。なぜか(もしかしたら私の解釈が間違っているのかもしれない)前者の方法で取得できない時があるので、その時は後者の方法を試してください。

Get-EventLog -LogName <LogName> -InstanceId <ID> -Newest 1
Get-EventLog -LogName <LogName> | Where-Object{$_.EventID -eq <ID>} | Select-Object -First 1

< LogName > にはログの名前、 < ID > にはイベントIDを入れます。例えば、シャットダウンに関する情報を表示するログはこのように出力されます。

PS C:\Windows\system32> Get-EventLog -LogName System | Where-Object{$_.EventID -eq 1074} | Select-Object -First 1

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
    8968 2 01 04:32    Information User32                 2147484722 次の理由で、プロセス C:\Windows\system32\winlog...

さて、ではここからイベントログの中にある情報を取得します。特定のイベントログに関係する詳細な情報を出すときは、Format-List *でできます。

PS C:\Windows\system32> Get-EventLog -LogName System | Where-Object{$_.EventID -eq 1074} | Select-Object -First 1 | Format-List *


EventID            : 1074
MachineName        : FARAWAY
Data               : {}
Index              : 8968
Category           : (0)
CategoryNumber     : 0
EntryType          : Information
Message            : 次の理由で、プロセス C:\Windows\system32\winlogon.exe (FARAWAY) は、ユーザー NT AUTHORITY\SYSTEM の代わりに、コンピューター FARAWAY の 電源を切る を始めました: この理由のタイトルが見つかりません
                      理由コード: 0x500ff
                      シャットダウンの種類: 電源を切る
                      コメント:
Source             : User32
ReplacementStrings : {C:\Windows\system32\winlogon.exe (FARAWAY), FARAWAY, この理由のタイトルが見つかりません, 0x500ff...}
InstanceId         : 2147484722
TimeGenerated      : 2018/02/01 4:32:38
TimeWritten        : 2018/02/01 4:32:38
UserName           : NT AUTHORITY\SYSTEM
Site               :
Container          :

ほしいのはMessageの中ですが、ここから情報を取得するのは骨が折れます。そこで、特にシステム系のイベントの場合は、ReplacementStringsという項目を見ます。
この項目は、該当のログにおいて特に個々のイベントで置き換わりそうな情報が記されているっぽいです。試しにその情報を取得してみます。

イベントログの中から特定の項目を取り出すときはSelect-Objectを使います。

PS C:\Windows\system32> Get-EventLog -LogName System | Where-Object{$_.EventID -eq 1074} | Select-Object -First 1 | Sele
ct-Object ReplacementStrings

ReplacementStrings
  ------------------
{C:\Windows\system32\winlogon.exe (FARAWAY), FARAWAY, この理由のタイトルが見つかりません, 0x500ff...}

このように表示されます。さて、この項目なんですが、実は「PSCustomObject」と呼ばれる、その名の通り、オブジェクトです。(詳細は省きますので知りたい方はぜひ調べてみてください)
なので、このようにすると中身が出てきます。

PS C:\Windows\system32> (Get-EventLog -LogName System | Where-Object{$_.EventID -eq 1074} | Select-Object -First 1 | Sel
ect-Object ReplacementStrings).ReplacementStrings
C:\Windows\system32\winlogon.exe (FARAWAY)
FARAWAY
この理由のタイトルが見つかりません
0x500ff
電源を切る

NT AUTHORITY\SYSTEM

そして、この項目、実は配列になってます。型を取得するとSystem.String[]と出てきますので、添え字をつけて取得することができるわけでございます。

PS C:\Windows\system32> (Get-EventLog -LogName System | Where-Object{$_.EventID -eq 1074} | Select-Object -First 1 | Sel
ect-Object ReplacementStrings).ReplacementStrings[0]
C:\Windows\system32\winlogon.exe (FARAWAY)

このように。さて、これで準備はできました。あとはもうコードを書くだけです。

インターネットにつながっているか確かめる

ここまで読んだ方は「スタートアップ時にメールを飛ばす」ほうのコードによくわからん関数が入ってることに気が付くと思います。

これは、インターネットにつながっていない状態でこのスクリプトが実行されたとき、「送れなかったーすまん」って言って何もしないで終わることを防ぐためのものです。

ここでインターネットにつながっているかどうかを確認して、つながっていなかったら10秒待って再確認する……というのを30回繰り返してます。
さらに、30回繰り返しても(=5分)つながらない場合は5分間待ってもう一回SendStartupMail関数を呼び出し、接続状態を確認する……というのをこいつは延々と繰り返してます。

これに関してはGet-NetConnectionProfileで調べてみてください(投げやり)

今後やりたいこと

これで最低限のことはできるようになったのですが、いろいろ調べていくうちに、実はシャットダウン時の地点ですでにそのシャットダウンに関する情報が取得できるんじゃないかとか、電源ボタンを押すタイプのシャットダウンは挙動が違うとか、まあいろいろと見つかりまして、さらに良い感じのスクリプトを作りたいですね

久しぶりにこんなに長い記事書いた

なんかアウトプットしなければ(使命感)となったのと、この手の記事が見つからず……
ぜひ試してみてください!