見出し画像

新幹線や飛行機等、ネットが繋がらないところでも快適に開発するには?【オフラインでの開発方法】

これから夏期休暇のシーズンに入りますね。
皆さん今年の予定はいかがですか?

旅行に行かれる方や、実家に帰省される方、さまざまいらっしゃると思いますが、いずれにせよ飛行機に乗ったり、新幹線に長時間乗る、という方が多いと思います。
そしてその移動中も、『溜まっている仕事を片付けなければならない』方や『移動中の手持ち無沙汰に開発をしたい』という方がいるかもしれません。

今回は移動中だったり、ネット環境がない状況で、どのように開発ができるか、といった点を考えてみたいと思います。

なぜネットが繋がらない時でも開発するのか?

ただその前に、『今の時代、オフラインな環境なんてあるの』と思うかもしれません。
確かに、日本国内であれば99.1%の世帯には光ファイバーが通っているようです。
しかしながら、そのような環境下でも、ネットがつながらない・いっそオフラインで開発したほうがいい状況というのは存在します。

まずはオフラインでの開発が求められるケースや、必要性についてご紹介しましょう。

  • 移動のスキマ時間を有効活用

  • 誰にも邪魔されず作業に集中できる

  • ネットがつながっていないところでは、開発以外することがない

移動のスキマ時間を有効活用

これは忙しいエンジニアにありがちな話ですが、「開発以外の業務に時間を取られてしまい、実際にコードを書く時間がほとんどない」という方はいらっしゃいませんか?
そういった方は、出張や休暇中の移動時間に開発を行い、スキマ時間を活用したい、と思うかもしれません。

しかし、そういった移動中に問題になるのがネット回線です。
例えば飛行機の中では、基本的にネットを使うのは禁止されています。
ANAやJAL等の場合、高度3000フィート以上では機内Wi-Fiを使うことができますが、LCC等ではそのような設備が整っていない場合もあります。
新幹線内では普通の携帯回線が使えますが、トンネル等に入った場合は普通に接続が切れてしまうでしょう。

そのような不安定な状況でわざわざオンラインにつなぐよりも、いっそ『最初からオフラインで開発する』と決めた方が開発を行いやすいかもしれません。

誰にも邪魔されず作業に集中できる

オンラインにつないで開発を行う場合、Slackの通知や取引先からの電話・メールが視界に入ってくることでしょう。
もし休暇中であれば『無視すればいい』と思うかもしれませんが、責任ある立場ではそうもいきません。
また無視することに決めたとしても、単純に集中がそがれますし、内容によってはしばらくそのことが脳裏を占めることでしょう。

そんな時に有効なのが『ネットを切る』という手段です。
これでSlackはもちろん、電話もメールもかかってきません。『連絡が来るかもしれない』状態というのは脳のリソースを一定量使ってしまいますが、オフラインにすれば脳の100%を開発に向けることができます。

またネットがつながっていると、どうしてもSNSやyoutubeを見たくなる人もいるでしょう。
そういった場合にもオフラインにするのは有効です。
たとえネット回線が問題ないとしても、全ての回線を切り、集中して開発に励むというのは一つのテクニックなのです。
(なお、この記事も上記の理由により『ポメラ』で執筆しています。プログラミングには使えませんが、ライターの方にはお勧めです)

ネットがつながっていないところでは開発以外することがない

そして逆に『ネットに繋ぎたいけど、繋がらない』という環境もあります。
『今時そんな場所あるの?』と思うかもしれませんが、日本でも局所的には存在しますし、海外ではまったく珍しくありません。

そして、いざそういう場所に行ってみるとわかるのですが、現代の仕事は基本的にオンライン環境を想定して組まれているため、オフライン環境下ではPCがあっても本当にすることがありません。

例えばメールを送ったり資料を作成したりするのは、基本SaaS系サービスで完結していることがほとんどでしょう。GoogleWorkspaceやTeams等です。
またGithubのPRレビュー等、ワークフロー系の作業についても、ネットにつながっていることが必須条件です。

オフラインでの作業方法を整える

では上記のような理由によって、オフラインで作業することになったときのために、どのような環境を整えておけばいいでしょうか?
オンライン環境での準備方法についてご紹介します。

Dockerを利用してバックエンドを用意する

オフラインのバックエンド環境を整えるために、大変便利なのがDockerです。
Dockerを利用することで、環境の違いに左右されることなく、一貫したバックエンド環境を保持できます。

もし常日頃から備えておくのであれば、下記の組み合わせ等を用意しておくといいでしょう。

  • Laravel+MySQL

  • Ruby on Rails +MySQL

  • FastAPI+PostgreSQL

  • Django+PostgreSQL

PaaSが提供しているローカル環境を利用する

PaaSで開発をする場合、オフラインやローカル環境で開発ができない……と思っていませんか?
実は主要なPaaSでは、ローカル環境用の開発環境が提供されているため、むしろ他環境より簡単にオフラインでの開発が行えたりします。

なお、単純に『高速で開発する』『コストを抑える』といった点でも有用なツールなので、オフラインで触る必要性がなくとも身につけておいて損はないです。

開発に必要なマスターデータ、トランザクションデータを用意しておく

いざ環境が用意でき、開発を始めよう!となった際、忘れがちなのが『マスターデータ』や『トランザクションデータ』等のデータ類です。
最適限必要なデータで良いので、これらのデータはjsonやcsv形式で用意しておきましょう。

更にgitでそれらを管理するならば、効率を上げることができます。ただし、個人情報等のデータはgitに入れないよう注意してください。

マニュアルはHTMLかPDFにダウンロードしておく

またもう一つ、盲点になりがちなのが『マニュアル類』です。
何か仕様でわからない箇所がある時、もしくはトラブルがおきた際、いつもなら検索してすぐに解決出来るでしょうが、オフラインの場合はそういう訳にも行きません。

なのであらかじめHTMLかPDFで、マニュアル類をダウンロードしておきましょう。
多くのマニュアルは、git等からダウンロードすることが可能です。
例:Supabaseマニュアル

開発時のセキュリティは注意すること

そして普段と違う場所で開発する際、気をつけていただきたいのが『ショルダーハッキング』です。
オフラインだからといって、セキュリティが万全な訳ではありません。
APIキーやパスワード等、隣の座席の人から盗み見られないようにしっかり気をつける必要があります。

更に案件によっては、プロジェクト名だけでも情報漏洩になる可能性があります。
たとえ実害がなくとも信用を失う結果は生じ得るため、公共の場における開発では十分に気を使いましょう。

旅行と同じく、準備と安全にしっかり気をつけたうえで、楽しい開発を行ってください!

お問合せ&各種リンク

presented by

サポートしていただくと、筆者のやる気がガンガンアップします!