今夜がλ

夜だけプログラマー

ドラクエウォークの不満点だけ述べる

ドラクエウォーク、始めてはみたものの不満点が多くなってきたためやめた。

とりあえず3章途中までクリアしたところで不満に感じた点を挙げる。

車で運転しながらの作業効率の良さ

これが第一。
ポケGOという参考があったにも関わらず、車で運転しながら効率プレイができるような仕様になっているのはどうかと思う。

ドラクエウォークでは速い(とアプリ側で検知した)移動を行なっていると『あなたはアプリの運転者ですか?』とアラートが表示される。 f:id:Tormits:20190928195205j:plain

これについては一度『はい』をタップすると継続してアプリ利用が可能となるため、車の運転をしながらでもプレイは可能となる。 モンスターとの戦闘はあまりできないが、イベントアイテムの収集はおそらく歩くよりも効率が良い。 このままでは確実に車の事故につながるので、この仕様をどうにかしてもらいたい。

例えばツボ破壊・他プレイヤーへの自宅訪問においてイベントアイテムをもらうことができないようにするべきではないだろうか。
車の運転中に行える稼ぎ作業がしけたものになれば、わざわざ車で運転しながらプレイするプレイヤーは少なくなるのではないか、と感じる。

エストを外で進めたくない

このゲームのクエストは任意の場所にクエスト発生地点を配置し、現地まで近づきイベント発生地点をタップすることでクエストが発生するのだが、必然的にクエスト発生場所は外となるので歩きながらクエストを行うか、立ち止まってままクエストを進めるかの二択となる。

歩きスマホは危険だしわざわざ数分間立ち止まるのも面倒なため、クエスト開始条件を満たせばあとから一旦落ち着いたタイミングや家に帰ってからでもクエストをプレイできるようにして欲しい。
(『じゃあ家に帰る直前にクエスト始めればいいじゃん』と言われると、「そうですね」としか言えない)

ボスモンスターについても同じ。
個人的に、一つのエリアにスマホを凝視している群衆・路駐車がわらわらしてる様子が、気持ちが悪い。 近所のお店にも迷惑がかかるので、このあたりシステムでどうにかして欲しいという印象。(そもそも根底としてプレイマナーが重要となるが、そのあたりをシステムでコントロールできるなら可能な限りしてあげた方が良いと思う)

転職システム

別の職業に転職した場合、以前の職業で覚えたスキルは使えない。
そのため、転職の旨味がほとんどない。
レベルを20、もしくは50まで上げれば転職した際にパラメータボーナスの恩恵を受けられるが、装備を強化すればまかなえる程度のボーナスしかない。

モンスターによって転職して戦略を変える、という状況も考えられるが、それはメイン職業とサブ職業にレベルの差異がない場合の話。 メイン職業に近いレベルまでサブ職業のレベルを上げるのであれば、初めからメイン職業のレベルを上げた方がよい。
(もっとも、転職したところでメイン職業のスキルは使えないので、戦略が選択できるだけで広がらないというのが辛い)

これについては、他職業でレベルを上げた場合の恩恵の増加を期待している。
- 上級職では下級職で覚えたスキルが使える
- こころコストの増加
- 継承可能スキルを一部選択(できれば全てのスキルが使えるようにして欲しいが現実的ではない)

以下、軽微なUIの話

装備画面UI

装備を一つ一つタップしないと性能が分からないのは辛い。装備ごとの特殊効果もあるので装備比較がかなりきつい。 確かに装備には「防御力」だけではなく「ガード率」のような特殊ステータスもあるので、全てのUIデザイン的に厳しいと思う。 なので、せめて全ての装備が持つ性能である「攻撃力 / 防御力」は一覧でパッと分かるようにして欲しい。

こころグレードアップ

今モンスターのこころが100個以上になったがグレードアップできるかどうか自分で確認しなければならないのが面倒に感じる。 グレードアップメニュー画面ではグレードアップが可能なこころだけ表示できるようにして欲しい。

最近のゲーム、検索しても攻略記事やアフィばかりで個人の純粋な感想記事が埋もれているのが少し寂しい。
攻略記事でも『装備しないと意味がないぜ』レベルの話ばかりで、いかにこのゲームに戦略性が不足しているかが分かる。

ドラクエと散歩は好きなので、上記改善したらまた再開したい気持ちはある。

Hyper-Vについて(2019)

Hyper-Vに関する知識が必要になったので調べてみた。

f:id:Tormits:20190925171659p:plain

Hyper-Vとは

WIndowsの一部OSに搭載されている仮想化機能。

2008年に正式発表された機能だが、当時Microsoftが仮想Windowsマシンのみをサポートしていたため、Hyper-Vを利用した仮想Linuxマシンについては制限が生じることが多かった。(機能低下・時刻同期・コンソール間のコピーペーストなど)
そういった背景からHyper-Vで仮想Linuxマシンを構築することをよしとしない意見もあった。

しかし2019年現在、仮想LinuxマシンもMicrosoftによってサポートが強化されて当時よりも使いやすくなり、ネガティブな意見は少なくなっている。 Hyper-VではLinuxのコンテナ技術を最大限利用できないという問題があるらしいが、これについてはHyper-V上でDockerを介することで対応する。

Hyper-VでLinuxを稼働させることの利点と制限 [ 5nine ] | VMware/Hyper-V(仮想化)クラウド対応ツール 技術ブログ

  1. Microsoftのサポートは、Linuxのコンテナ技術を最大限に有効利用できるレベルに達していない
    ...
    Hyper-VLinuxコンテナを活用するには、Dockerを使わなければなりません。

ちなみに、WSL2の仮想環境はこのHyper-Vで構築されている。 また、VMwareVIrtualBoxで利用している機能はHyper-Vと排他的な関係にあるため、WSL2上でそれらのソフトウェアを実行することは不可能となった。

コンテナとは

そもそもコンテナ技術とは何か。自分自身、Dockerを使い出して初めて「コンテナ」という用語を知った。

VMが「ハードウェアレベルの仮想マシン」だとすると、コンテナは「OSレベルのアプリケーション実行環境」であり、それぞれの環境に割かれるリソースや隔離レベルが異なっているため、それぞれにメリットとデメリットがある。 例えば、従来のホスト型VMではホストOSの上にゲストOS(仮想マシン)ごと構築していたため、オーバーヘッドが大きく多くのリソースが割かれてしまうという問題があるし、コンテナの実行環境についてはホストOSに依存しており、古いOS上で動かしているコンテナで新しいOSの機能を実行することはできない。

コンテナ技術についてはこちらの資料が参考になる。 employment.en-japan.com

www.slideshare.net

ホスト型VMとハイパーバイザー型VMの違い

上記コンテナの説明の中ではホスト型VMの『オーバーヘッドが大きい』という記述を入れたが、VM仮想化ではこの問題を解決するための「ハイパーバイザー型」という仮想化技術を利用したものもある。 「ハイパーバイザー」と呼ばれるソフトウェアをホストOS上で起動し、その上で複数のゲストOS(仮想マシン)を運用することが可能となる。

ただし、軽量化についてはホスト型VMと比べて、という話であり、コンテナよりは遅い。 qiita.com

WSLとDockerの共存は可能か?

WSL1時代はいくつか問題が出ていたようだが、WSL2ではDocker活用を前提とした作りになっているようで、Docker側もWSL2に最適化したプラットフォーム対応を行なっている。

www.reddit.com forest.watch.impress.co.jp www.publickey1.jp

Docker for Macの動作を軽くするためにMacのスペックを上げるというのはなんとも落語感がある話なので、Windowでの開発もありかなと思い始めている。

WSL2がダメならダメでLinuxマシンを使うのも一つの手。

参考記事:
Hyper-V - Wikipedia
Hyper-VでLinuxを稼働させることの利点と制限 [ 5nine ] | VMware/Hyper-V(仮想化)クラウド対応ツール 技術ブログ
ホスト型とハイパーバイザー型の違いは何?VMware vSphere Hypervisor の概要 | Think IT(シンクイット)
ハイパーバイザ - Wikipedia

APIを呼び出す動的Next.jsアプリケーションをどこにホスティングするべきか

現在、ホスティングサービスは山ほどある。 静的なサイトであればNetlifyでいいし、動的なアプリケーションであればPaaSを利用する手もある。 いずれかのホスティングサービスとFaaSを併用してサーバーレス構成にするというのも流行っている印象を受ける。 ネット上の情報を見ると、ナクスト.js(検索よけ)アプリケーションであればNetlify + Lambdaというサーバーレス構成が多そう。

遊びでNext.jsのアプリケーションを作ってみようかと思い、どのホスティングサービスを利用するべきか調べてみた。

個人的に作りたいアプリ仕様

  • 運用費用は安く(重要)
  • Next.jsで動作
  • サーバーレス(Next.jsからAWS LambdaのAPIを呼び出す)
  • 外部からのアクセスはほぼなし(アクセスは可能)
  • 独自ドメインを利用したい

now.shについて調べる

now.shとは?

Next.jsを開発している会社(ZEIT)のPaaS。

メリット

  • 開発元なので都合が良さそう(希望的観測)
  • 無料プランでも独自ドメイン使える

    無料プラン

  • 独自ドメイン:利用可能
  • データ転送量制限:100[GB/month]
  • リクエスト制限:5000[requests/day]
  • ストレージ制限:100[GB]
  • ログ制限:1000[lines/day]
  • 関数処理時間制限:10[seconds]
  • ファイルサイズ制限:100[MB]

参考

Netlifyは候補としてどうか?

Netlify FunctionsとNext.jsとのつなぎこみがきつそう。

参考:Ginza.jsでNext.jsをNetlifyで配信するLTをしてきた - mottox2 blog

https://mottox2.com/posts/337

Netlifyで動的なNext.jsアプリをホスティングするメリットはない? 上記記事はあくまでNetlifyのPRの模様。

結論(現状)

  • now.sh:ある程度であれば無料で利用できて、スケールも楽そう。
  • Firebase:外部APIを利用すると無料枠がなくなるが、now.shなら無料で利用可能。
  • AWSのS3:最初から従量制(AWSアカウント作ったばかりの人は除く)。
  • Google Cloud Strage:Next.jsに伴う情報が少なそう。

都内の図書館に配架されているITエンジニア向け技術書ランキング

f:id:Tormits:20190818022659j:plain

世間はもっぱら夏休み。 夏休みと言えば人によっては海・花火・祭りなどがキーワードに挙がるかと思いますが、ぼっちの自分にとっては自由研究の季節です。 幼少の頃に戻って自由研究っぽいことしたいなーと思ったので、都内の図書館におけるIT技術者向けの技術書分布を調べてみることにしました。

調べること

「都内の市区町(52箇所)の図書館において、一番配架率の高い技術書」を調べます。技術書全てを対象に調査するのもきついので、別サイトを参考に、人気のある技術書を「参考図書」として選出します。選出対象となる技術書は「ITエンジニア全般」に向けたものとし、特定のプログラミング言語や業種などに収まらない内容のものを選びます。

都内の図書館で配架されているかどうかは下記横断検索のサイトを利用します。

calil.jp

各種図書館サイトの検索仕様上、キーワードに完全マッチしていないものもヒットしたりするので、一つ一つ自分の目で確かめます。(このあたりプログラムでどうにかしたかったけど思いつかなかった)

参考図書

今回参考とした「ITエンジニア向け技術書」は人気書籍と思われる以下の11点です。

選定については技術書に関する情報が挙げられている下記サイトを参考にしました。

www.techbookrank.com tsundoku.site

また、独断と偏見で、プログラミング系・マネジメント系・ライフハックの三種類に分けてます。 参考図書については私自身が読んでいないものも含んでいるので、分類は参考程度に。

注意点として、参考図書が配架されていたとしても最新の改訂版でない場合は「配架なし」とみなしています。 例えば参考図書として挙げた人月の神話は1977年版のものが配架されていたとしても、最新の2014年版が配架されていなければ「配架なし」とします。 また、東京都立図書館については個人貸出ができないという特殊性から、調査対象から除外しています。

1. プログラミング系

1.1. リーダブルコード: より良いコードを書くためのシンプルで実践的なテクニック(2012年)
1.2. プリンシプルオブプログラミング: 3年目までに身につけたい一生役立つ101の原理原則(2016年)
1.3.エリック・エヴァンスのドメイン駆動設計(2011年)
1.4. 達人プログラマー 職人から名匠への道(2016年、初版2000年)
1.5. UNIXという考え方: その設計思想と哲学(2001年)

2. マネジメント系

2.1 アジャイルサムライ――達人開発者への道(2011年)
2.2 カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで(2018年)
2.3 人月の神話―狼人間を撃つ銀の弾はない(2014年、初版1977年)

3. ライフハック

3.1 SOFT SKILLS ソフトウェア開発者の人生マニュアル(2016年)
3.2 CAREER SKILLS ソフトウェア開発者の完全キャリアガイド(2018年)
3.3 エンジニアの知的生産術(2018年)

IT技術者ならこれ読んどけ!という書籍があれば参考図書に追加したいので、コメントください。

配架されている技術書ランキング

都内の市区町(全52箇所)別に配架されているかどうかを調べました。

1位:リーダブルコード・エンジニアの知的生産術
24箇所

リーダブルコードは予想通りのトップでしたがエンジニアの知的生産術も配架数においては並んでおり、ツートップという結果になりました。 エンジニアの知的生産術は未読なのですが、インプットをいかにして血肉にするか、ということについて悩むことが多くなったため、一度読んで参考しようと思います。 (リーダブルコードは読了済ですが、普段の業務で意識せず活かす領域まで達していないのでエンジニアの知的生産術を読んだあとに読み直した方が良さげ)

3位:アジャイルサムライ
22箇所

最近までアジャイルってウォーターフォールの逆(要件定義をしながら開発をしていく)という認識だったのですが、細かい定義があることを知らず恥をかいたりしました。自分の場合は大きなプロジェクトよりも小さなプロジェクトの開発をゴリゴリ回していくことが多いため、一度アジャイルの考え方について学んでおこうと思います。

4位:CAREER SKILLS
15箇所

個人的に今一番興味のある一冊です。 大ヒットしたSOFT SKILLSの続編なのですが、続編の方が配架されているのは面白いですね。 「CAREEA SKILLS、近所の図書館にないかなー」と探したのが本記事のきっかけでもあります。発売されてまだ1年ちょっとしか経過していませんが、都内の1/3の地域で利用されています。

5位:プリンシプルオブプログラミング・人月の神話
14箇所

プリンシプルオブプログラミングはリーダブルコードに並ぶかと思いましたが、大きく差がつきました。確かにリーダブルコードと比べて抽象的な話が多く、「初心者」よりも「脱初心者」レベルの内容となるため、リーダブルコードと比べると読者層は少なくなるのかもしれません。 人月の神話は古い版のみを配架している図書館も多かったので、それを加味するとかなり人気の高い一冊と言えます。古い本ってとっつきづらそうなんですが、このように改訂され続ける本というのは読んでおい損はないと思います。

以下、

7位:カイゼン・ジャーニー・達人プログラマー
13箇所
9位:SOFT SKILLS
11箇所
10位:UNIXという考え方
8箇所
11位:エリック・エヴァンスのドメイン駆動設計
2箇所

という結果となりました。 全体結果は以下表にまとめています。

1.1
リー...
1.2
プリ...
1.3
エリ...
1.4
達人...
1.5
UN...
2.1
アジャ...
2.2
カイ...
2.3
人月...
3.1
SO...
3.2
CA...
3.3
エン...
荒川区
新宿区
文京区
港区
大田区
江東区
品川区
墨田区
調布市
足立区
江戸川区
葛飾
北区
武蔵野市
西東京市
目黒区
板橋区
杉並区
中野区
東大和市
渋谷区
千代田区
豊島区
練馬区
八王子市
町田市
国分寺市
世田谷
立川市
多摩市
日野市
府中市
三鷹市
小平市
台東区
中央区
東久留米市
武蔵村山市

IT技術書が配架されている市区町別の図書館ランキング

ついでに、市区町別の図書館ごとに参考図書が配架されているランキングも算出しました。

1位:荒川区・新宿区・文京区・港区
8種

参考図書が一番多い図書館は以上の4箇所という結果になりました。

上記全ての図書館でリーダブルコードプリンシプルオブプログラミングアジャイルサムライエンジニアの知的生産術が配架されており、 なかでもリーダブルコードアジャイルサムライエンジニアの知的生産術は他図書館の多くに配架されており、人気の一冊と言えます。

ちなみにエリック・エヴァンスのドメイン駆動設計は上記したいずれの図書館にも置いていませんでした。 全体として配架数が少なく、都内で置いている地域は都立図書館を除いた町田市中野区の2箇所のみです。 個人的にはアジャイルサムライと比べて大きな差が出たのが意外な結果となりました。

2位:大田区江東区・品川区・墨田区調布市
7種

ここで市から初めて調布市がランクインです。 調布市立中央図書館東京都内公立図書館 図書所蔵数ランキング(2017年版)で4位となっており、所蔵数の多さがランクインにつながったものと思われます。 ただ参考図書において言えば、所蔵数2位の府中市立中央図書館3位の八王子市中央図書館を抑えてのランクインとなりますので、IT系の技術書に比較的力を入れていることが読み取れます。

また興味深いのが、江東区ではプログラミングに直結する書籍 * リーダブルコード * プリンシプルオブプログラミング * エリック・エヴァンスのドメイン駆動設計 * 達人プログラマー が配架されていないことです。 江東区ではプログラミング系よりもマネジメント系・自己啓発系が多いのかも?

3位:足立区・江戸川区葛飾区・北区・武蔵野市
6種

ここでもアジャイルサムライが全ての地域で配架されています。 リーダブルコードについては足立区で配架されていないようです。 大きな特徴はありませんが、このあたりから配架される本の分類がばらけ出すので、参考図書を増やせば新たな特徴が見えてくるかもしれません。

以下、

4位:西東京市・目黒区
5種
5位:板橋区・杉並区・中野区・東大和市
4種
6位:渋谷区・千代田区・豊島区・練馬区・八王子市・町田市
3種
7位:国分寺市・世田谷区・立川市・多摩市・日野市・府中市三鷹市
2種
8位:小平市台東区中央区東久留米市武蔵村山市
1種
9位:昭島市あきる野市稲城市青梅市奥多摩町清瀬市国立市小金井市・狛江市・羽村市東村山市・日の出町・福生市・瑞穂町
0種

という結果になりました。

まとめ

今回の結果から、図書館の配架数という観点においてはリーダブルコードエンジニアの知的生産術アジャイルサムライが人気だということが分かりました。 参考図書を増やしてランキングを算出すればもっと面白いかもしれませんが、各種図書館の検索結果がファジー過ぎて人力確認地獄になるのでやめておきます。

ツアーなしでノルウェー旅行したときの知見をまとめる

無職なので7月に一人でノルウェー旅行に行ってきました。 今回は、同じくノルウェー(もしくは一人で海外旅行)に行きたいけど不安に思っている方のために、本旅行の行動ログをまとめて公開します。 少しでもお役に立てれば幸いです。

ちなみにAmazonアフィリエイトの審査が通らなかったので、商品リンクはアフィリエイトではありません。

ツアーなしのメリット

ツアーの場合、基本的には決められた場所にしか行けません。 メジャーな観光地だけ行ければいい、ということであれば話は別ですが、マイナーな観光地も回りたい場合はツアーなしの方がスケジュールが立てやすいです。 また、せっかく旅行に行っても一番楽しみにしていた景勝地では天気に恵まれず、綺麗に見られなかったというパターンもあり得ますが、ツアーなしで組んだ場合はある程度タイミングを操作することができます。 例えば「明後日以降は天気が悪くなるから先にメインの景勝地を見に行く」というように、柔軟なプランを組み立てることが可能です。 ノルウェーは曇りが多いので、ツアーなしに抵抗がない場合は天気を見ながら現地でプランを決める方法をオススメします。 (ただし予定を決める時間がかかり過ぎるとホテルで休む暇がなくなるため、予めある程度予定を決めておいた方が良いでしょう)

ツアーなしのデメリット

当たり前ですが現地語が使えないとトラブルの元になります。 ノルウェーの場合は基本的に英語が通用しますが、現地語が全く分からないという場合にはツアーを選ぶべきです。 また、初めて乗る公共交通期間の利用方法が分からないと緊張して結構なストレスになります。私の場合は一本でもバスを逃すと野宿コースとなるようなプランを立てていたので、バスの到着が遅れるたびに胃が破れそうでした。 (バスは結構な頻度で遅れます)

旅行を楽しむことに専念したい場合はツアーを選んだ方が良いです。

準備

データローミング

普段、日本使っているSIMが海外で利用できるのか、海外で利用する場合どのような料金体系になるのかという情報を調べてみましたが、詳しい内容は「サポートセンターに問い合わせてください」と書かれてありました。 サポートセンターで間違った案内をされるのが怖かったので、海外で利用するためのプリペイドカードを購入しました。

また、後から知ったんですがチャージもできるらしいです。ただし手続きページの言語は英語・タイ語のみ。 チャージできることを知らず、予備としてもう一つ買ってしまいました。 まぁ現地でチャージがうまくできなかったら怖いので心配な人は買っていってもいいと思います。 (ちなみに私が乗り継ぎを行なったドバイでは未対応だったため、空港に備え付けの無料Wi-Fiを利用しました)

上記プリペイドSIMは日本でも利用できるため、一度日本で試すことをオススメします。 現地で接触不良が発生し使えない、使い方が分からない、というトラブルを避けることができます。 (ただし利用開始してから15日間しか使えないので、試すタイミングは注意してください)

また、今回私は電話は使わないだろうと思ってデータ通信のみのタイプを購入したのですが、ホテルへの緊急連絡用に通話のできるタイプを利用する方がオススメです。

変換器

ノルウェーのコンセント形状はBタイプかCタイプが一般的です。 これらのいずれかに会う変換プラグを持っていく必要があります。 私はCタイプの変換プラグを買って行きましたが、問題なく利用できました。

また、変圧器は基本的に必要ありません。 ただし、例えばドライヤーのような熱を発生させる機器を日本から持ち込む場合は変圧器が必要になることが多いと思います。日本から持ち込む場合は必要です。

ノルウェー語の入門書

これは実際に用意した訳ではないのですが、羽田空港の出国後エリアでは売ってませんでした。 もし必要であれば、あらかじめ購入した方が良いでしょう。

予約

予約はエクスペディアで行いました。普通に日本語対応しています。 ただ、日本語ページの場合は「性->名」という順序のフォームとなっているのですが、英語脳のまま「名->性」と逆で入力して予約をしてしまいました。 間違いに気づいてすぐにエクスペディアへ電話確認したところ、予約取り消しを受け付けてもらえました。

連絡するのが数時間遅ければキャンセル料金(6万円)が発生していたらしいので、間違いに気づいたらすぐに問い合わせをした方が良いです。 (日本時間の22時前でも電話受付できました) 姓名を逆にしてしまうだけでも現地で入国拒否される場合もあるらしいので気をつけましょう。

宿泊

エクスペディアで航空券を購入すると、同じくエクスペディアにおいて一部宿泊施設を安く利用できるようになります。 宿泊施設を決める前に航空券を予約してからセットで安くなるホテルを一度確認しましょう。 (ただし、直接ホテルから予約した方が安い場合もあります)

ホテルによってはタオルやボディソープ、歯ブラシなどのアメニティが置いていないこともあるので必要なものは持っていくか、現地で調達しましょう。 (私が泊まったホテルでは歯ブラシはどこも置いてませんでした) ホテルによっては謎液体石鹸がシャワー室に備え付けてありますが、体を洗うものかシャンプーなのか両方兼用なのかよくわかりませんでした。 このあたり詳しい方がいらっしゃれば教えていただけると嬉しいです。

荷物の仕分け

国際線では液体類の持ち込み制限があります。 受託手荷物としてチェックイン時に預けてしまえば基本的に問題ないので、手荷物検査をスムーズに行えるように、機内に持ち込む液体類はあらかじめ仕分けしておきましょう。 私は「携帯用歯ブラシセット」と「コンタクトレンズ/保存液」を持ち込みました。 医療用薬品は条件によってOKらしいです。 日本と経由地のドバイで問題なかったですがオスロ空港では止められたので、面倒を避けるために受託手荷物に分けておいた方がいいかもしれません。

ネット上の記事を見ると『透明の四方何cm以内のビニール袋に入れる必要がある』といった内容が書かれていましたが、コンビニの袋に入れた状態で問題ありませんでした。 液体の入った荷物だけ箱を分けてX線を通す形にすると良いでしょう。

また、ペットボトルのような容量の大きい液体は通常持ち込めません。 飲み物を持ち込みたい場合は手荷物検査を終えたあとのターミナルで購入しましょう。

前情報

飲料水

ノルウェーで売られている水はほとんど炭酸入りです。 自分ははじめにたまたまIMSDALという炭酸の入っていない水を購入できましたが、その後購入したミネラルウォーターは全て炭酸水でした。 また、ノルウェーは基本的に水道水が飲めるので、抵抗のない方はホテルの水道水をペットボトルに入れて携帯することをオススメします。 バスルームの水道水も問題ないという意見もありましたので、私はバスルームの洗面台から水を補給してガンガン飲んでいました。

ネット上の記事では牧場経由の水や氷河から流れ出した水は飲み水に適してない場合があるので注意する必要がある、と書かれていたのですが、どう注意すべきかは分かりませんでした。 ちなみに途中、Loen(ローエン)という小さな村のホテルに泊まった際、水道水を飲んでも大丈夫かどうかフロントの方に訪ねたところ問題ないとのことだったので、田舎だからどうこう、ということはなさそうです。

LoenのSkåla(スクォラ)という山中で激しい流れの川から水を掬って飲みましたが、これもおいしく問題ありませんでした。 ただし湖のような流れがない場所の水を飲むのはやめておいた方が無難だと思います。

f:id:Tormits:20190813163520j:plain
炭酸水(左)とnot炭酸水(右)

長距離バス

私が利用した高速バス(Nettbuss AB・NOR-WAY bussexpress)ではカード払いが可能でした。 支払いはネット予約をするか、乗車時に運転手さんへ行き先を告げて支払いを行う形になります。 ただ、ネット予約の場合は停留所の名前がGoogleマップ上の情報と一部異なっていて分かりづらいので、心配であれば直接運転手さんへ行き先を告げる方法が確実です。

また、バスのトランクは無料で使わせてもらえるので、旅行鞄はトランクに入れるのが良いです。 (荷物を運転手さんに見せればトランクを開けてくれます) ただし、2個以上の荷物や25kg以上の荷物をトランクに入れる場合は追加料金がかかる場合もあります。 利用バス会社によって規定が違うため、重たい荷物を運ぶ場合はあらかじめ確認しましょう。 www.nettbuss.com

私が見た限りでは、どの乗客がトランクを利用しているか、という情報は管理してなさそうなので、降車の際に「荷物あるからトランク開けて」と一言伝えるのが良いと思います。

スーパー

商品パッケージは基本的に全てノルウェー語です。 どれが生で食べれるかが分からなかったため、サンドイッチやサラダしか買えませんでした。 私が利用したスーパーはいずれもカード払いOKでした。 サンドイッチは日本のコンビニで売っているようなサイズのもので、大体40〜50NOK(5,600円)程度で買えます。

コンビニ

セブンイレブンがあります。 基本的に食べ物が売っていて、日本のコンビニの様に日用品が置いてある訳ではないです。

f:id:Tormits:20190812235640j:plain
セブンイレブン

ネット上の記事を見ると、水辺が多いため虫が多いという記事を見ましたが私が通った場所ではほとんど虫を見ませんでした。 もちろん、山の中では虫がいましたが日本の夏森よりもはるかに少なかったです。 ただ、虫の発生報告が上がっている以上は場所や季節によるものだと思いますので、かゆみ止めくらいはもっていった方が良いかもしれません。(日本のが効くかどうか分かりませんが)

f:id:Tormits:20190813185323j:plain
田舎の河原でも虫は出ず

髭剃り

髭剃りがどこにも見つからず、旅行中は髭が伸びっぱなしになっていました。 男性の方は髭剃りを持っていった方が良さそうです。(もちろん受託手荷物に入れる必要があります) 詳しい方がいらっしゃれば、ぜひノルウェーで髭剃りを売っている場所を教えてください。 スーパーでも薬局でもコンビニでも見つからなかった......

1日目(移動)

今回の旅行では羽田空港からベルゲン空港まで20時間程かかります。 早いものだと13時間程で着くルートもあるのですが、到着時刻が夜遅かったり値段が3倍くらい違ったりしたので、

羽田(00:30)->ドバイ(06:00)->オスロ(11:15)->ベルゲン(15:15)

というルートを選びました。 (括弧内の時間は全て到着場所のタイムゾーンで表しています)

羽田空港〜ドバイ空港

外貨両替

全部クレジットカードで対応できれば良いのですが、海外の場合そうもいきません。 MIZUHOの外貨両替所で100,000円をNOK(ノルウェークローネ)に変えたところ、6700NOKでした。 その時点では1NOK=12.74JPYだったので、 12.74 * 6700 = 85,358 となり、支払額の約15%を失った形となります。

後から知ったんですが、外貨両替所は複数ありそれぞれレートが異なるようなので、できるだけ損を少なくしたい人は一度各両替所のレートを確認した方がいいかもしれません。(受付カウンターの前まで行かないとレートが分からないので面倒ではありますが) また、ネット上で外貨両替をする手段もあるようで、そちらの方がよりお得なレートになるらしいので時間のある人は事前にそちらで外貨両替を行うのも良さそうです。

実際のところノルウェーではほとんどクレジットカードで済むので、今回の旅では現金0円でも問題ありませんでした。 (緊急用にある程度現金を持っておいた方が良いと思います)

チェックイン

チェックインカウンターに並んで、機内に持ち込まない手荷物を預けます。 私が今回利用するエミレーツ航空(エコノミークラス)では20kgまで預かってくれそうでした。 (色々プランがあって自分がどれに該当するのかよく分からなかったです)

その後同カウンターでチケットを貰えます。 そこでベルゲン行きまでのチケット3枚を発行して貰えたので、ドバイやオスロでチケットを都度発行する必要はありませんでした。

出国審査

チェックインが終わればあとはターミナルに入ります。 審査は手荷物検査とパスポートの顔写真チェックのみです。 特に問題ありませんでした。

機内(ドバイ行き)

エコノミークラスなのでまぁまぁ狭いです。高速バスよりも足元が少し広いくらいでした。 運良く隣に人がいなかったので足を伸ばせましたが、それでも足が痺れてなかなか寝付けませんでした。

また、機内食が提供されるということはわかっていたのですが、何時から出るという情報が見つからなかったので、しばらく寝たあとのタイミングで来るだろうと思っていたら、日本時間の夜中1時半頃にディナーが届きました。この辺のルールよく分からない。 ちなみにドバイ時間の朝4時頃には朝食も出ました。

空調が効きすぎてTシャツ2枚+パーカー+機内備え付けのブランケットでも寒かったので、冷房に弱い人は夏でも厚着をしていくことをオススメします。

ドバイ空港〜オスロ空港

乗り継ぎ

今回、乗り継ぎ時間が1時間10分とかなり短いスケジュールとなりました。 とはいえ、乗り継ぎに関しては同じ航空会社のため、受託手荷物を再度預ける必要はなく、持ち込み手荷物の検査・入国審査を行うだけでした。

ドバイ空港に着いて飛行機から降りると、二つバスが停車しており、行き先に応じて正しいバスを選ぶ必要があります。 案内の人が「〜〜行きはこっちのバス」と書かれた看板を持っていたのですが、「OSLO(オスロ)」の文字が見当たらなかったので、「オスロオスロ、ウィッチバス!?」と聞くと適切なバスを教えてくれました。

結果的には道に迷わなかったですが、それでも締め切り10分前にチェックインすることになったのでギリギリでした。 乗り継ぎが心配な人はドバイの空港内でしばらく待つようなスケジュールにした方が良いと思います。 (自分の場合はちゃんと間に合うか不安でストレスがやばかったです)

手荷物検査

要領は羽田と同じだから余裕......と思ったらそういう訳にもいかず、ベルトのバックルが金属探知機に引っかかってしまいました。 日本国内の金属探知機ではここ十年、ベルトで止められたことはなかったんですが、どうやらドバイ(および他の国々)の金属探知機ではベルトもX線検査を通す必要があるようです。

入国・出国審査

何言ってるか全然分かりませんでしたが笑顔で「サイトシーイング」って言っておけばOKでした。 個人的にはめちゃめちゃ強面なガードマンが無愛想に対応するイメージだったんですが、とてもにこやかに話しかけてくれて、自分の前に並んでいた人とは談笑したりしていてとても和やかムードでした。

機内(オスロ行き)

出発時点でオスロ内時間が午前7時過ぎ。 ここで寝ると時差ボケにつながるので、電子書籍を読んだり前座席についているモニターで映画をみたりしていました。 日本語対応の映画(邦画・洋画含む)も7,80本程あり、2010年以降の作品をメインで揃えているようでした。 子供向けのディズニー・PIXARの映画も10本程ありました。 また、日本のアニメ映画は「ドラえもん(新版)」・「未来のミライ」・「ラブライブ」・「僕のヒーローアカデミア」となかなか興味深いラインナップとなっていました。

オスロ空港〜ベルゲン空港

入国審査

手荷物を受け取る前に入国審査がありました。 並んでいる人が多く、ここで15分程使いました。 ここではなんとか英語を聞き取ることができ、 ・滞在期間 ・何人できたか ・目的 を聞かれ、それに答えると「OK, アリガト〜」と送り出してくれました。

受託多荷物

ここからは航空会社がエミレーツ航空からスカンディナビア航空に変わるため、預けた荷物を一度引き取ってから預け直す必要があります。

チェックイン

羽田で既にチケットは発行していたため、チケットを見せて荷物を渡せばすぐに手続きは終わりました。

ターミナル

日本の空港だと手荷物検査とチケット確認が同時に行われることが多いかと思いますが、ベルゲン空港ではチケットのバーコードをターミナル前の機械にかざして入場します。その後手荷物検査が行われる流れです。

手荷物検査

検査場前でおもむろにベルトを外したのでノープロブレムです。 コンタクトレンズの保存液に関してちょっと揉めたので、液体の荷物はできるだけ受託手荷物とするのをオススメします。

機内(ベルゲン行き)

オスロからベルゲンまでは約50分程で到着します。 f:id:Tormits:20190813002034j:plain

f:id:Tormits:20190813002111j:plain
オスロ〜ベルゲンの上空からの様子

ベルゲン空港〜ベルゲン市内

ベルゲン空港を出るとチケットを販売している機械があり、そこでベルゲン行きのチケットを買うことができます。 クレジットカードが利用できますが、逆に現金での支払い方法は分かりませんでした。 チケットを誰にも見せないまま乗車し、誰にも見せないまま降車しました。 この辺のシステムが未だによくわかっていません。 (そしてこの旅では公共機関の利用方法で毎回苦しむことになります)

f:id:Tormits:20190813002332j:plain
バス乗車券の販売機

ホテル

ベルゲン市内まではバスで行けたので、あとは徒歩で泊まる予定のホテル「CityBox」へ向かいます。 CityBoxはリーズナブルなホテルで、フロントスタッフはおらずチェックイン・アウトは全て機械で行います。 エクスペディアで予約すると、しばらく後にチェックインするための番号がメールで届くので、その番号を機械に打ち込んでチェックインとなります。 (支払いはその場でクレジットカード払いを行いました。)

日本では一般的なテレビ・冷蔵庫・ポット・タオル・歯ブラシはありませんでした。 Wi-Fiは備え付けられていましたが、誰でもパスワードなしで利用できるタイプなので、注意してください。

ノルウェー初食事

この時点で17時過ぎでしたので、ご飯を食べに行きました。 CityBoxと同じ建物の中にレストランがあったので、そこで手羽先とライスを食べました。 (肉らしきものが手羽先しか分からなかった......) ちなみにメニューは英語で、箸も出してもらえました。 メニューは文字だけで料理の写真がなかったため、あらかじめネットでメニューを調べておくのがいいかも知れません。

手羽先5本とライス一杯で大体160NOK(約1900円)ほどでした。 ノルウェーはとにかく日本と比べて物価が高いので、これでもリーズナブルな方だと思います。

2日目

Urlriken(ウルリーケン)山を登る

ノルウェー旅行最初の目的地は、ベルゲン中央部から登山口まで徒歩1時間程でアクセスできるUrlrikenです。 ウルリーケンは初心者向けの山で、短いコースであれば片道1〜2時間程で登り切ることができます。 長いコースだと3〜4時間程度です。

また登山口にはロープウェイもあり、片道125NOK(約1500円)で頂上まで連れて行ってもらえるため、非常に親しみやすい山といえます。 平日の11時頃にはロープウェイ待ちのお客さんが4,50人程行列を作っていました。

ただし、初心者向けといえどもぬかるみの激しい道や滑りやすい道もあるので、できればトレッキングシューズを履いていくことをオススメします。

f:id:Tormits:20190813003509j:plain
Urlrikenマップ
f:id:Tormits:20190813003643j:plain
Bergenの町を一望できますが残念ながら曇り

登山途中で休憩していたところスウェーデンから旅行に来たという青年に話しかけられ、一緒にお話しながら登ったため、とても楽しかったです。 彼はオスロから鉄道を使ってベルゲンまで来たようで、鉄道からの風景が素晴らしかったとのことで鉄道での移動をオススメしまくられました。 鉄道での移動は丸一日かかりますが、スケジュールに組み込める余裕があれば鉄道での移動の方が楽しいかもしれません。 次回ノルウェーに来ることがあれば鉄道を利用してみたいと思います。

また彼は「日本に行ってみたい、富士山に登ってみたい」と日本に関する話しをしており、別れ際には「サヨウナラー」と日本語で挨拶してくれましたが、私はスウェーデンの地理もスウェーデン語の挨拶も知らず、教養を身につけていなかったことをとても強く恥ずかしく感じた瞬間でもありました。 相手が日本のことをたくさん知ってくれているのに、こちらは相手の国のことを何も知らないというのはとても失礼に思い、教養というのは自分のためだけではなく、相手とコミュニケーションを取るためにも重要なのだなと感じました。学校の授業はこういうところでとても大事。

ホテルにチェックインできない

山を降りた後に二日目のホテル「Bergen Budget Hotel」をエクスペディアで予約しました。 二日目は一日目と異なるホテルにしたのですが、予約後に来るはずのチェックイン用コードを記載したメールがチェックイン可能時間を過ぎても届きませんでした。 二日目に泊まるホテルもフロントスタッフはいないため、ホテルへ問い合わせをする必要が生じたのですが、利用しているSIMカードはデータ通信専用のため電話が使えません。 どうしようかと悩んでいたところ、エクスペディアから届いたメールの中に「宿泊先にメッセージを送る」というリンクがあり、そちらから問い合わせを送ると10分後に返信が届き、なんとかチェックイン用のコードを入手することができました。

当日にホテルを予約した場合は上記のようなことが起こりうるので注意しましょう。

3日目

ベルゲン〜Loen(ローエン)

次の目的地は北方の村です。LoenへはBergen Busstationから出ているバスに乗り、Skei(シャイ)で別のバスに乗り継ぎます。 私はシャイを誤ってスケイと読んでいたので、運転手さんへ「To スケイ! To スケイ!」と連呼しても通じず焦っていると、後ろのおばさんが「もしかしてシャイじゃない?」とフォローを行なってくれたおかげでなんとか事が運びました。 (というか最初からSkeiと表示されたスマホを見せればよかったです)

また、 Skeiから乗り継ぐ際、降りたバス停と乗り継ぎを行うバス停は別になります。 降りたバス停から徒歩4分くらいのガソリンスタンドの側が乗り継ぎを行うバス停なので注意しましょう。(Googleマップの経路図ををみて確認してください)

Google Map上では思いっきり海を渡る形になっているのですが、バスごと船に乗って岸を渡るので問題ありません。 船に乗っている間はバスを降りて船からフィヨルドの景色を眺めることができるのですが、アナウンスが全てノルウェー語で私は降りて良いのかよくわからず不安だったため降りませんでした。もったいない。

BergenからSkeiまで390NOK、SkeiからLoenまで172NOKで計562NOK(約6600円)でした

## ホテルに宿泊 当初は近くのコテージに泊まる予定だったのですが、前日のホテルのようにチェックインでトラブりそうな気がしたので、ちゃんとしたホテルに泊まりました。 ここで初めてフロントスタッフのいるホテルに泊まりましたが、「予約したものですが〜」という感じで話しかけるとスラスラとチェックインを進めてくれました。 名前、人数、宿泊日数を確認してもらったあと、朝食と夕食は7時から、食べる場所はあっち、貴方の部屋はそっち、という話をされ鍵を受け取りました。 日本のホテルと変わらないですね。 ただ、外出する際にルームキーはフロントで預からず、自分で外に持っていくというシステムになっていました。

ちなみにこのホテルではテレビがついていましたが、テレビをつけるとWindonws7のログイン画面が表示されました。 これも日本と異なる点の一つです。 f:id:Tormits:20190813010633j:plainf:id:Tormits:20190813010656j:plain

f:id:Tormits:20190813010532j:plain
備え付けのテレビ

4日目

Skåla(スクォラ)山を登る

本旅行のメインです。 スクォラへはホテルから徒歩20分程で登山口へいく事ができます。 登山口のすぐ近くに駐車場があるので、レンタカーで来た場合は駐車場を利用するのが良いでしょう。

登山口入り口には柵と注意書きが貼られています。 ノルウェー語で書かれていたので意味を調べていたところ後からきたブルース・ウィリスにそっくりなおじさんが『Skålaに登るんだよね?入っても大丈夫だよ』と教えてくれたので、助かりました。

f:id:Tormits:20190813163806j:plain
ホテルで見せてもらったSkålaのマップ
f:id:Tormits:20190813163851j:plain
Skåla公式マップ
f:id:Tormits:20190813163656j:plain
Skålaの入っていけなさそうで入れる入り口

おじさんは結構な山好きのようで、Skålaには何度も登ったことがあるとのことで、頂上までは3時間くらいで着ける、と教えてくれました。 また、本旅行のもう一つのメインターゲット、Romsdalseggen(ロムスダールセッゲン)山にも登ったことがあるとのことで、めちゃくちゃ(私が一人で)盛り上がりました。 普通のルートでは気がつかないような滝が見えるロケーションを教えてもらったりもしました。 f:id:Tormits:20190813185050j:plain

おじさんは色々な山に登っているようで、私と比べて非常に足が早く、休憩もなしにズンズンと進んでいきます。 1時間くらい歩いたところで私は休憩することにし、おじさんには先に行ってもらうことにしました。 また私が休憩した場所は流れの激しい川の近くで、「そこの水は飲めるから補給していくといいよ」とアドバイスを残しておじさんは去って行きました。 この時点ですでに1リットルほど水を消費してしまったので、休憩後にペットボトルを満杯にして先へ進みます。

f:id:Tormits:20190813164141j:plain
水の飲める休憩地点

この休憩地点あたりから残雪が見られるようになります。 ただ、体の発熱のせいか、照りつける太陽のせいか、寒いということはありませんでした。半袖でも全然問題ないです。 他の男性登山客は8割方上半身裸でした。 また、時折石段をヤギが駆け下りてくるので注意が必要です。

f:id:Tormits:20190813165023j:plain
颯爽と下山していくヤギ

休憩を入れながら2時間程登ると、緑が完全になくなり、岩と雪のみの幻想的な風景が見られます。 そこからもう少し先にいくと非常に大きな湖と石が積まれたオブジェがあります。 頂上か?一瞬思いましたが看板によるとまだ頂上まで3.6km程あります。 kmの値はそれほどあてになりませんが、3時間程かけて4km歩いてきたので、単純計算で大体半分まで来たことになります。 体力的にはまだまだ登れましたが、補給した2リットル程の水もほとんど尽きてしまい、水分が尽きるのは目に見えていたので途中で断念しました。 山の怖さはわかっているので、無理はしません。

残雪レベルではありますが雪が積もった山を登るのは初めてで、サングラスを忘れてきたためか、目が陽に当てられて焦点が合わなくなってきたのも少し危ないな、と感じていました。 久しぶりのちゃんとした登山だったので、次回は装備と水分をしっかりと持ってくるようにしたいと思い下山しました。 また、私と同じく湖の地点まで来て下山する人も多く、ハイキングとしては人気のコースのようです。

f:id:Tormits:20190813171038j:plain f:id:Tormits:20190813170852j:plain f:id:Tormits:20190813171550j:plain f:id:Tormits:20190813170935j:plain

f:id:Tormits:20190813171716j:plain
撤退地点

目的地周辺のホテルが取れない

下山後、ホテルに戻って明日の予定を立てていると予定していた地域でのホテルが取れないことが分かりました。 前々から調べていたときには普通に前日でも取れるような地域だったのですが、もしかするとその日の天気によってホテル利用率が大きく変わる地域だったのかも。 予定ではメジャーな観光地であるガイランゲルフィヨルドの手前の村で一泊し、翌日船に乗ってガイランゲルフィヨルドを観光する予定だったのですが、ホテルが取れない以上、予定を変更しなければなりません。

この場合、ガイランゲルフィヨルドに向かうためには朝6時前に起き、ホテルでいくらかかるか分からないタクシーを呼んでもらい、ローカルバスと船を乗り継いで当日中にガイランゲルフィヨルドまで行き、一泊4万以上するホテルに連泊する必要があります。 そして悪いことにバスと船の乗り継ぎを一本でも逃した場合は野宿です。 私としては予定外の出費だったのでそこまでお金かけるのきついな、という気持ちとタクシーや船の手続きが上手くできるだろうかという不安、Skålaを登れなかった現在の装備ではRomsdalseggen山に登るのは難しいだろうという気持ち、そして少しのホームシックがあり、ここで帰国することにしました。 予定であればあと4泊ほどする予定でしたが、もっと英語を勉強してコミュケーションに全く困らない状態で再訪した方がノルウェーをもっと楽しむことができると考えたのも理由の一つです。

Loen〜オスロ空港

帰るためのルートを調べ、その日の夜中にLoenからバスに乗ることにしました。 LoenからStryn(ストリーン)へ行き、Strynからオスロ空港まで一本で向かう高速バスに乗り、バスの中で一夜を過ごしました。 高速バスの中では皆が寝ているにも関わらず大声で電話をしている人や、"Don't Touch Me!"となにやら揉め事を起こしている人がおり、なかなかカオスでした。 Strynまでが54NOK、そこからオスロ空港まで709NOKでバス代は計763NOK(約9000円)でした。

5日目

オスロ空港〜ドバイ空港

帰りは行きと同じような手続きなので特筆することはありません。

ドバイ空港で一泊

航空会社はエミレーツ航空を利用していたのですが、エミレーツ航空では「ドバイ・コネクト」というドバイ空港でのサービスをお得に利用できる施策があります。 2019年7月現在の条件は以下のようになりますが、変更される可能性もあるため一度公式サイトを確認してください。

ファーストクラスとビジネスクラスのお客様で、ドバイ到着時、最初にご搭乗できる接続便までの待ち時間が6時間以上24時間以内の場合。 (その他の条件も適用されますほかにもドバイ・コネクトをご利用いただける場合がございます。 フライトが予約された日付、お支払い運賃、ご出発地点から選択されたフライト、お乗り継ぎ地点で一番早くご利用可能なフライトに応じて、その他の規則も適用される場合がございます。 ドバイ・コネクトはあらかじめ予約する必要がございます。予約は、遅くともドバイ便が出発する時間の24時間前までに行う必要がございます。 このサービスはホテルの空室状況などにより予約できない場合がございます。) エコノミークラスのお客様で、ドバイ到着時、最初にご搭乗できる接続便までの待ち時間が8時間以上24時間以内の場合。 (その他の条件も適用されますほかにもドバイ・コネクトをご利用いただける場合がございます。 フライトが予約された日付、お支払い運賃、ご出発地点から選択されたフライト、お乗り継ぎ地点で一番早くご利用可能なフライトに応じて、その他の規則も適用される場合がございます。 ドバイ・コネクトはあらかじめ予約する必要がございます。予約は、遅くともドバイ便が出発する時間の24時間前までに行う必要がございます。 このサービスはホテルの空室状況などにより予約できない場合がございます。)

ドバイ・コネクト | ドバイ国際空港 | 基本情報 | エミレーツ航空 日本

ただ、上記にあるようにドバイ・コネクトを利用する場合はドバイ便が出発する24時間前までにあらかじめ予約を行う必要があります。私はドバイ空港についてからこのサービスを知ったので利用できませんでした。残念。

まぁ普通にお金を払えば通常のサービスは受けられます。 トランジットホテル・カプセルホテル・有料ラウンジなど色々と一夜を過ごす方法はありましたが、面倒だったので椅子で寝ました。 (椅子がちゃんと寝やすい形になってるので、飛行機の中より快適でした)

f:id:Tormits:20190813181627j:plain
ドバイ空港の快適椅子

次回利用するときは前もって調べておいて、ドバイ空港の施設を満喫するつもりです。

6日目

ドバイ空港〜羽田空港

ここまで来ればあとは慣れたもので、乗客もほとんど日本人ばかり。 チェックインの際、私の目の前に私と同年代くらいの男性が立っていたのですが、小さな女の子が歩いて来て「パパ〜そっちはエコノミークラスだよ〜」と言い男性がビジネスクラス専用口へ移動していった出来事に少し精神をやられました。 (ビジネスクラスとエコノミークラスでは一人20万円ほどの差があるのです)

こうして私のノルウェー旅行は幕引きとなりました。

ノルウェーまとめ

  • アメニティは基本無い
  • 水道水飲める
  • クレジットカードだけで大体いける
  • 経由地としてドバイ空港は快適
  • 山はいいぞ

「Phoenix LiveView 勉強会: SPA 開発の新潮流」に参加してきた

Phoenix LiveViewの勉強会に参加してきました。

daimon-ex.connpass.com

Phoenix LiveViewはElixirConf2018で発表され、2019年3月にリリースされたPhoenixフレームワークのライブラリです。リアルタイムなSSR(Server Side Rendering)を行うための機能を持っており、一般的にReactやVue.jsなどのJSフレームワークで取り扱っていた仮装DOMに関する差分再構築の処理をElixirで行うことができます。 技術的にはWebSocketを利用しており、RubyのAction Cableのような形で処理を行っているものと見て取れます。

github.com

qiita.com

ここで重要なのは、差分再構築をサーバーサイドで行っているということです。通常、JSフレームワークではイベントごとに仮装DOMの差分を計算し、必要な箇所だけ再構築する処理をクライアント側で行いますが、LiveViewではサーバーサイドで行うため、セキュリティ的な意味でデータ管理がしやすいというメリットがある一方で、ネットワークに常時接続する必要がある・サーバーに負荷がかかるというデメリットもあります。デメリットについては、「一般的にクライアント側で処理するのが厳しいような激しいレンダリング処理」が生じるシーンではメリットになりそうだな、という印象です(処理の遅さをサーバーのスケールアップで解決できる)。また、予め頻繁に発生する再構築処理をキャッシュするような多少複雑な処理も実装しやすくなるのではないかと感じています。

勉強会では、複雑な仕様を持つSPAをLiveViewで開発する実例として、株式会社コアジェニック(旧商号:株式会社オイアクス)の黒田さんが開発されているWebサービス「Teamgenik(チームジェニック)」をデモアプリとして見せていただきました。

Rails + Vue.jsPhoenix + LiveViewの違いを図で示されており、普段実務でSPAを構築したことのない私でも容易に理解できました。

SPAの場合、サーバーサイドをBFF(Backend for Frontend)としてクライアントと分ける形が主流となっていますが、Phoenix LiveViewを利用することで、モノリシックなSPAを構築することが可能となります。

黒田さんのお話によると、現在はバージョン1系ということでところどころバグがあり、一部イベント(マウスオーバーやドラッグアンドドロップなど)を検知できない(JSで別途記述する必要がある)ため、プロダクションとして利用するには多少のリスクがあるようです。しかし、基本的にElixirで一貫してSPAを作り上げることができるため、開発速度の向上やサーバーサイドエンジニアとフロントエンドエンジニアのコミュニケーションコストを下げることができるのは非常に魅力的だと思います。

今までのSPAはサーバーサイドとクライアントサイドを分けたSPAJavaScriptでのモノリシックなSPAという選択肢が主流でしたが、WebSocketを利用したモノリシックなSPAという新たな選択肢に期待が膨らむ勉強会となりました。
ありがとうございました。

一人開発とチーム開発のメリット・デメリット

先日、面接で『一人で開発するのと、チームで開発するのとではどちらが好きか』という質問を受けた。

特にどちらが好き、ということを考えたことはなかったが、改めて考えるとシステムの内容によって変わってくるな、と感じた。

チーム開発を行った場合、下記のような作業が増える。 ・コード規約の作成 ・コードレビュー

それだけ考えると、一人で開発する場合は他人のコードにヤキモキすることもないし、自分のコードの正当性を主張する必要もない。

ただし、大きいシステムの場合は一人で開発すると途端に属人化する。

システムの理想形は(プログラムを読むことができる人なら)「誰でも読めて、理解できるコードで構成されていること」である。 つまり「属人化の回避」だ。

「属人化の回避」を一人でやろうとすると、システムが複雑になるにつれてとんでもなく難しくなってくる。 レベルの低い人に合わせて、出来るだけ短く書き、単純化する、ということが一人でできる人はほんの一握りなのではないだろうか。 一般的なテックリードレベルのプログラマーであれば、複数人で意識や感覚を共有し、他の人間が自分のコードを見てどのように感じるのか、ということを客観的に読み取る力が必要になる。

私の場合はそういった客観的に読み取る力が今のところないので、ある程度複雑なシステムを作る場合であれば、様々な人のコードをもとに様々な人の意見を抽出しながらチーム開発を行う方が、比較的容易に属人化を防げるのではないかなーと。

そう考えると、現在プライベートで行っているapp-guildのチーム開発は自分のためになっている気がする。