月別アーカイブ: 2021年3月

「@nifty @homepage」利用者だった人のための「@nifty ホームページサービス」について

【2021/05/10】
「標準モジュール」に関する記事について、認識の違いがあったので修正。

いつも「ホームページの仕様、どんなんだったっけ?」ってなるんで、備忘録。

経緯

元「@nifty @homepage」利用者は、「@nifty ホームページサービス」への移行案内の際、適切に手続きをしていれば、「@niftyホームページサービス(ミニ)」というプランで移行されている。

これは @nifty を2016年以前から契約利用し、かつ当時無料にて提供されていた「@nifty @homepage」を利用していた人向けの、言わば「救済」プラン。

プラン毎の違い

ちなみに「@nifty ホームページサービス」には、以下の3つのプランがある。

  • LaCoocan ライト(1G。CGIなど色々不可)
  • LaCoocan スタンダード(4G。CGI、DB利用可)
  • LaCoocan スタンダードプラス(10G。スタンダードの大容量版)

「ミニ」プランから「LaCookan スタンダード」「LaCookan スタンダード」のプランに変更することは可能。ただし変更後は、再度「ミニ」「ライト」プランに戻すことができない。

「@nifty ホームページサービス」既存の各種プランと違うところ

  • ディスク容量が2GB(ライトは1GB、スタンダード4GB、スタンダードプラス10GB)
  • CGI は Perl のみ利用可(ライトは利用不可)
  • CGI 定期実行が利用可(ライトは利用不可)

機能の違い

「@nifty ホームページサービス」への移行によって変わった機能

プライベートパック

アクセス制限機能(.htaccess、.htpasswd)による BASIC 認証に変わる(利用には再設定が必要)。

SSLも未提供。

URL

別物のサービスなので、URLも変わる。

FTP

サービス自体が別物扱いなので、すべて再設定が必要。
接続先ホスト名・アカウント名などが変更になる。

CGI

ホームページアドレスとCGI環境のアドレスが統合され、すべてホームページアドレス内で動作するようになった。
つまり cgi-bin ディレクトリがなくなり、すべて homepage ディレクトリ配下で、HTML ファイルと同じ場所にCGIの実行ファイルを設置し、そのファイルに実行権を与えれば動作するようになる。

「@niftyホームページサービス」では提供されなくなった機能

  • アクセスカウンター
    (自前CGIで実現可能。だが今時のコンテンツにおいてアクセスカウンターは流行らないし機能不足。解析用途であれば、Google Analytics などを導入するほうがよいと思う。)
  • サクサクかきあげ君
  • 簡単マイページ設定
  • 公開停止・再開機能(アクセス制限機能で代用可能)
  • 素材集(巷のWebコンテンツから拾えばよい)

「@nifty ホームページサービス」から提供される新機能

  • CGI 定期実行(LaCoocanライトを除く)
  • .htaccess(アクセス制限)
  • 独自ドメインの利用(ドメイン取得や維持は別料金)
  • カスタムエラーページ

LaCoocanスタンダード(プラス)にアップグレードすることで提供される新機能

  • sendmail
  • アクセスログ解析
  • 簡単インストーラー(WordPress などが導入可能、らしい)
  • データベース(MySQL、SQLite)

Perl(CGI)について

Perl 5 標準モジュールが一部欠けている

@homepage 時代と同じ。
ちなみに、perl 5.8.7(2021年3月時点)

ちなみに公式的には標準モジュールは提供しないとしているが、実際のところ、一部は利用可能。
しかしながら、例えば「DB_File」や「DateTime」モジュールが利用できない等、便利なモジュールが一部省かれている。
それに、今は使えているモジュールが今後使えなくなる可能性だってある。
なので、意味合いとしては標準モジュール提供は保証しないという形で捉えるのが妥当。

その影響により、ファイルアクセスだろうが、データアクセスだろうが、何をするにしても、原始的なレベルの作り込みが必要になる場合がある。

よって「@nifty ホームページサービス」における Perl は、かなり単純な機能のみを提供するようにしないと、開発・保守の両面からコストが発生することを念頭に置く必要あり。

自分の場合も、バックオフィスは別プロバイダで提供されている PHP と MySQL などで実装し、「@nifty ホームページサービス」はフロントエンドに徹し、Webコンテンツの稼働に必要なデータ類を、可能なかぎり構築してから転送している。

具体的には、バックオフィスにて tsv 形式のデータファイルなど、フロントエンド用のWebコンテンツ動作に必要なデータを構築・管理。
フロントエンド側では、バックエンド側からアップロードされたデータファイルなどを Perl を用いた CGI で動作させている程度に留めている。

ちなみに自分で必要な Perl モジュール(パッケージ・ライブラリなど)を設置することで「@nifty ホームページサービス」上で高度なWebコンテンツを構築することができる可能性はある。

ただ個人的には、今のご時世、小手先でゴチャゴチャ調整するのは時間がかかるし、ライブラリのアップデート時などの追従性やセキュリティ面も考えると不安。
もしそのようなコンテンツを実現したいのであれば、コスト面も踏まえると、もっと別の自由度の高いプロバイダーのサービスを使うと思う。

そもそも「@nifty ホームページサービス」が、いつまで CGI のサービス(というかホームページサービスそのもの)を提供してくれるかも不明。
(昨今ISPのホームページサービスは、契約者の利用率も右肩下がりなうえ、システムアップデートの追従やセキュリティなどの観点からコストに見合わず、提供終了されつつある。)

ここまで考えると、他のプロバイダーサービスを利用するほうが良いのではないかと。

use strict; use warnings; は役立たず。

とは言っても「外せ」という意味ではなく。

「@nifty ホームページサービス」は、(@homepage サービスの時代と同じく)ブラウザ上では全部500エラーが表示されるだけ。
また管理画面等からエラーログを確認するための手段もない。そのためエラーが発生しても、原因を掴むことは至難。

実際には、デバック文を挿入したり、変数を表示させるなどの手法で動作確認したり、ソース全体を、

eval {
  ...(CGIソース本体)...
};
if ($@) {
    print "Content-type: text/html\n\n";
    print "<title>error</title>\n";
    print "$@\n";
}

で囲い込んで、無理矢理エラーを表示させることも可能かもだが、正直微妙。

自分の場合はエラーを追跡するため「だけ」に、標準モジュールの存在しない開発・動作確認用のサーバを別途建てて、それから「@nifty ホームページサービス」にデプロイしています。

この環境を構築するのが一番面倒、という話もある。

【参考】使い道

これらサービスの制約下でも、当方では無駄なく使っている。
以下参考まで。

ちなみにいずれのコンテンツも、管理機能はWebプログラミングが可能な別サイトに構築。

期間限定の共有フォルダ

URLを知っていればアクセスできるようなファイルを置く場所。
期間超過のファイルは、「CGI定期実行」機能によって削除。

ただし前述の通りSSLが使えないため、盗聴されると可能性あり。そのため、そのリスクを負っても問題ないようなファイルしか扱えない。

画像アルバム

風景写真とか。素材写真とか。
こちらも当方(撮影・作成者)で権利関係の弊害がなさそうな画像を公開するために作った。

郵便番号⇒住所変換

文字通りのツール。
そもそも tsv 形式のデータの抽出速度がどれ位かかるのかを調べるため、実験的に作ったもの。
現実的な速度で提供できるように試行錯誤しながら提供中。

車に求めるもの

以下、あくまで個人的な意見です。
個人によって考え方には差があるはずなので、その点ご了承ください。

個人的に自車は所有せず、カーシェアとかレンタカーがライフスタイルに組み込んでいるので、様々な車種に乗ることが多いのだが、今回初めてトヨタ C-HR というコンパクト SUV なる物を運転してみたので、その感想まわりとか。

「SUV」と「コンパクト」を併せ持つのって、何だか本末転倒というか相反するというか。。

コンパクト SUV

乗用車の総合的な利便性は、コンパクトカーよりも劣る。
SUV 並みのゴツい足回りにはなってるし、外装がカッコもよくて、フロント席のラグジュアリー感も確保してるけど、逆に言えばそこに徹底してるだけ。

フロントガラスは狭いし、サイドなど車両全体が丸みを帯びているため、とにかく視認性が悪い。

後席がとにかく狭い。クーペ並みに足下が狭い。
カップルとか単身者が乗るならまだしも、ファミリーにはお勧めできない。

T-CONNECT

carrozzeria (Pioneer) に慣れてしまっている自分としては、どうにも機能不足。
直感的操作の際、違和感を感じる。

あと個々の機能についても洗練差がある。

たとえばマップ表示中にマップボタンを再度押しても、ユーザが設定した縮尺のマップにならないとか、ナビとは関係ない部分、ラジオのエリアプリセットひとつにおいても、練馬だと埼玉のプリセットが表示されたり、ワイドFM帯が表示されなかったりとか、重箱の隅的な。

クルーズコントロール

トヨタ車のコントローラーは、ウインカースイッチ(バー)の下部に、別途、コントロールバーが設置されていて、それで制御するんだけど、これがイマイチ使いにくい。

ホンダ車のように、ステアリング上にコントローラを設置してほしい。

居住感と容量

SUVにはどうも高級車のようなラグジュアリー感を求めている人がいるようで、それが各所に詰め込まれているが、個人的にはそこまでラグジュアリー感を全面に出す必要はないと思う。
それなりの居住感については確保してほしいとは思うけど。

背丈体格の違いがあっても、疲れにくい運転ポジションが確保できるとか、フロントやハンドルの位置や視認性、疲れにくいブレーキやアクセルのポジションなど、人間の五感がどうしても頼る必要が車にある以上、その部分に対しての洗練化を伸ばしてほしい。

荷室容量は、それなりに確保してほしい。

リア席を潰せば、それなりの荷室空間を確保できるのは判ったから、普通に荷室サイズを確保してほしい。

まとめると

とまぁ小型SUVの評価としては、

コンパクト SUV に乗るぐらいなら、
普通(3ナンバー車)の SUV を無理して買え。

こんなところでしょうか。

余談

個人的な会社別車両評価。

独断と偏見に満ち満ちてるので、読む方は自己責任で。
意見は求めてません。

トヨタ

ザ・大衆車。良くも悪くもスタンダード。
普段の街乗りから長距離まで一番普通に乗り回せるから、どうしてもこれが第一選択(基準点)になってしまう。

ホンダ

5ナンバー車の出来は良い。スピードの伸び・バランスが良いし、車内の広さに拘りがあるようで、居住性が上々。
個人的にはACCがステアリングに組み込まれている点がお気に入り。
ただトヨタにちょっと及ばない部分があるような。重箱の隅的な。

マツダ

コンパクトカーでも速度重視な感じ?
スピードの伸び・バランスはホンダ車以上。でも車内の広さが、どの車種も気になってしまう。

ニッサン

昔は良かった。ある意味、トヨタ以上の標準な車だったし。
今のニッサンはどこに行きたいのか、正直良くわかんない。
EV専業になるなら、それもいいんでない?
会社もゴタゴタしてるし。

スバル

多分、一度も運転したことがないので、態度保留。
最近ゲンキな会社なので、気にはなってるんですけど。

三菱

以下同上。
てか、もはや「何の車種作ってるんだっけ?」のレベル。

スズキ

全体的にアクセルがフニャフニャ感が気になる。アクセル踏んだときとスピードの「伸び」に独特な感じがするのは気のせい?
二輪も含めてスズキはスズキ。

ダイハツ

ザ、軽自動車。

フォトアルバムを設置する

こちらの記事は、今後のシステム開発で経過に応じて、随時編集・追記します。

プロバイダーのホームページ領域を有効活用するため、フォトアルバムでも設置しようかと考えている。

まぁ「フリーのCGIとかプログラムを導入すれば、いいんじゃね」というレベルの、とてもありがちなシステムをつもりなんだが、それら「吊るし」のシステムだと、自分が契約している Web サーバ領域を有効利用するためには、仕様・環境などの条件がイマイチ合致しない。

特に問題となるのがこれ。

@nifty ホームページサービス ミニプラン

そう。
公開ページの設置を予定しているこのWeb領域が、曲者。
もともとは、老舗の「@nifty @homepege」の後継で、先代で提供されていた機能を、最低限継承した代物。

なので、Perl は使えたりするものの、5.8.7 と古かったりとか、一部の標準モジュールが使えなかったりする。
PHP も、このプランでは使えない。

別の記事でも書いたが、上位プランに変更することにより、PHP やデータベースが利用できるようになるのだが、料金や自由度を考えると、別会社のプランを検討する。

確かに巷の Perl CGI を探してきて、それを改造して無理矢理動かすというのも一案。
しかしながら、それだと楽しくないし、そもそも巷の Perl CGI も、かなり前に作られたものが多く、レガシーな作り物が多い。

そんなこんなの理由で、昨今のスタンダードな Web システムの実装とレガシーなサーバ環境の共存を研究する目的で、フルスクラッチしてみることにした。

システム構成

ありがちな「公開系」と「管理系」の2構成。

フロントエンド(公開系)

サーバは「@nifty ホームページサービス」
Web コンテンツは「Perl (CGI) + Vue.js (CDN)」で実装。

こちらは「見せるだけ」の機能に特化して、複雑な処理は走らせない。
というか、制限付き CGI (Perl 旧バージョン+標準モジュール一部欠け)をゴリゴリ開発する気は、更々ない。

Vue.js を利用するものの、フレームワークというよりは、結果セットのフィルタリングやソート時のエフェクト用途で利用する感じ。
ほぼ「受け身」のシステムなので、この程度の簡単な環境で構築。

バックオフィス(管理系)

サーバは「さくらの VPS」
Web コンテンツは「Laravel (PHP) + Vue.js(Laravel のUI として利用)」

こちらは管理機能を実装するため、Web システムとしてはガチ。
とはいえ、昨今の Web システムでは、割とスタンダードな環境。

ちなみに Laravel が Ver.5.x までであれば、Vue.js は内包されていたため、「さくらのレンタルサーバ」でも構築できた。

しかしながら Laravel Ver.6 以降、Vue.js はコマンドで追加インストールするようなスタイルになった。
しかもこのコマンド、中で npm を使用するのだが、この npm が「さくらのレンタルサーバ」がインストールされていない。

調べた限りでは「さくらのレンタルサーバ」に npm を力業でインストールするような猛者もいたようだが、当然ながらトリッキーなため、この時点で「さくらのレンタルサーバ」も採用外とし、「さくらのVPS」への実装とした。

個人的には、今後のシステム開発において「さくらのレンタルサーバ」は、パッケージ不足等で、いよいよ「使えない」という時代がやってきた事を感じてしまった瞬間であった。

公開系と管理系、「さくらの VPS」で構築すれば楽じゃね?

確かにそうなんだけども。
でも、元々「さくらの VPS」は、非公開系のサーバとして運用しているという個人的な事情と、公開系と管理系を同居させることによるセキュリティ面の配慮で分けた次第。
また「レガシーな Web 領域(=@nifty ホームページサービス)を有効利用する」という命題に応えるため、このような環境にした次第。

重要な考慮すべき部分

バックオフィス⇒フロントエンドの同期

データの追加・更新・削除の都度、キューを作成し、それを非同期バッチにて処理する事によってデータの内容をフロント側に反映することで同期する。

クラッシュ対策(バックアップ)

システム基盤(プログラムソース)については、別途バックアップする(というか、Git に保管しておく)のが前提。
ここで言うのは、データの話。

ちなみに、この Git リポジトリ。PostHook で別サーバに Fetch してるので、リポジトリ自体も複数保存している。

公開系

もともとデータはすべて「管理系」に保持していて、そこから抽出・アップロードされるため、クラッシュしても、データは「管理系」のほうから再度抽出することでリカバリ可能とする。

管理系

データについては、日毎のバックアップをバッチ処理し、バックアップサーバ(ストレージ)に転送する。

考えていること

データ連携

最初はこんな感じで考えていたのだが、もしかしたら Perl の簡易データベース(dbmopen など)が使える可能性があるので、利用可能であれば、その形式に寄せるつもり。

画像

閲覧用画像データには、コピーライトの埋め込みで、以下の候補を検討中。(TBD)

  • ウォーターマーク ⇒ ImageMagic で可能だが、簡単に消せる。
  • 電子透かし ⇒ できればこっちを考えている。
    ステガノグラフィーが主流だと思うけど、技術的に標準化されてないので、できれば標準的なのが使いたい。

談合坂SICを利用する場合、鳥沢駅側からのアプローチは危険

大月から談合坂 SIC を利用する際の話。

まぁ素直に大月 IC から中央道に入るのが正しいとは思うが、今回は猿橋寄りでの用事だったのと、真夜中だったので、このまま R20 を進んでも良いかなぁと思ったのです。

ただ、深夜の R20 をほぼ制限速度で走っていたこともあり、後ろから大型トラックに煽られてた感もある中、鳥橋駅界隈を通過したところで偶然「談合坂 SIC、←」みたいな標識を見てしまい、何も考えずに、そちらに入っていってしまった。

これが良くなかった。

地図を見ていただければ判るのですが、実は凄い山道(急勾配・ブラインドカーブ多数)を超えることになります。
こんな山道を走るのなら、上野原 IC まで R20 を普通に進んだほうが速い気もします。

集落内など一部狭路の箇所はあるものの、SIC 設置の効果か、かなりの部分が2車線(片道1車線)に拡幅されてます。
しかしながら無理矢理拡幅した感じは否めず、急カーブが連続。
普通車でもセンターラインを超えず、車線を維持するのは困難な箇所が多数。それにあまり路肩に寄り過ぎると、今度はフタのない側溝に落ちる恐れもあるような道。
しかも急カーブだけでなく急勾配も凄い。下り坂でもだと1速とかエンジンブレーキ全開にしないと、すぐスピードが上がってしまうような道でした。
正直お勧めできません。

しかも深夜はかなり真っ暗。街灯は点在してるものの、お世辞にも整備されているとは言えない状態。
さすがにこの時期(3月上旬)は遭遇しませんでしたが、暖かくなるとケモノが出そうな空間を通り抜けます。

この道(山梨県道 30 号大月上野原線、r30)は、扇山の麓付近にある旧甲州街道になぞられた道で、途中恋塚(一里塚)や犬目宿(宿場)を通過します。その旧道そのもの、または旧道に沿って整備されているため、勾配やカーブがキツいのです。

ちなみに現在の国道(R20)やJR中央本線は、もっと下にある桂川流域に沿っており、中央道はそれよりも山間部を通過するものの、トンネルと橋で通過しています。

また地図を眺めたかぎりでは「コモアしおつ」ニュータウンのある四方津駅の方、山梨県道 507 号野田尻四方津停車場線(r507)からであれば、急坂・若干の狭路(1.5 車線)ではありそうなものの、まだ利用し易い気がします。
とはいえ、四方津の方々は上野原IC・大月ICをそれぞれ利用してる気もするのですが。どうなんでしょうかね。。。

夜景
上野原市犬目(旧甲州街道犬目宿の東側)に設置された
大野展望台(見晴し台)から中央道上り線、談合坂SAの夜景

余談

この SIC、整備目的の一つとして「コモアしおつ」ニュータウンから下り線方面の利用効果を謳ってますが、正直どの程度の利用数があるのか疑問が残ります。
たしかに利用者皆無ではないとは思いますし、R20が事故や災害等で利用できない場合の効果の可能性は否定しませんが、整備をペイする程の効果があるとは、正直疑問。

しかもハーフインターチェンジではなく、フルインターチェンジ。
さらに言うと、構造上、下り線は談合坂サービスエリアは利用できないのに、上り線はわざわざ談合坂サービスエリアも利用できるよう、市道までガッツリ整備されている。

ちなみに、この周辺にはゴルフ場が3つもある。特にうち1箇所は中々のお値段。

正直、勘ぐってしまうのですが。