Writing Appropriately

職務経歴

複数の人によるWebシステム開発時の作業

どのような開発環境で作業されてきましたかという質問に対して何を言えば良いのかわからなかった
FTPとか…」しか言えなかったので過去に一番多く経験した環境で何を考えていたのか文章化してみた

GitもないDockerもない共有の開発サーバーのSFTP用アカウント(ログインシェルなし)だけ渡され作業を行うというよくあった環境でのコーディング

例えば作業分担が

  • A社は管理画面のフロントエンド
  • B社は管理画面のバックエンド
  • C社はユーザー画面のフロントエンド
  • こちらはユーザー画面のバックエンド

その1 共有の開発サーバーで開発する

直接サーバー上のファイルを編集ではなくローカル編集してアップロード

メリット

  • 環境構築の手間がない
  • 変更の取り込みの手間がない
  • 自分専用の環境では動くが共有の開発サーバーで動かないという事がない

デメリット

  • 自分作業が他の人へ影響を与える
    • コア部分の修正で止まらないよう気を使う
  • 他の人の変更の影響を受ける
    • コア部分を修正中などに変更を確認できなくなる
  • ファイルが先祖返りする事象の発生
    • 自分の変更分は自分で管理していれば消えないが、先祖帰りするとめんどくさい
  • これから編集するファイルがサーバーで更新されてないかチェックする必要がある
    (各種IDEでショートカット一発、Vimなら自分の書いたautouploadで即ダウンロード可能なので手間にはならない)
    (そもそもサイレント修正をした人に問題があるのでその修正を消し去っても仕方がない)

その2 自分だけの環境を自分のローカルやVPSに構築し共有の開発サーバーへ反映

メリット

  • 他人の変更の影響を受けない

デメリット

  • 環境構築の手間がかかる
    • Docker,Vagrantイメージをもらう
      • そんなものはない
    • OSのカーネルバージョンからインストール済みソフトウェアのiniファイルに至るまで全ての設定を教えてもらう
      • Docker,Vagrantイメージがない時点で「どうしてその情報が必要なんですか?開発サーバー用意してあるのでそこでお願いしますね」と厄介者扱いされるだけ
  • 共有の開発サーバーの変更の取り込みの手間がかかる
    • インフラ、基底ソフトの変更の反映
      • 毎回変更内容の詳細を教えてもらうよう依頼できるのか
    • テキストベースのファイルの反映
      • 共有のレポジトリがあったら
        • pullするだけで済むかもしれない(済んだ事ない)
      • 共有のレポジトリがない
        • 開発サーバーからダウンロード 自分開発環境がVPSなら追加でpush
          • そのダウンロードしたファイルは動くのか?コーディング中じゃないのか?
          • 数時間後も同じファイルなのか?
  • DBの変更の反映やデータ入力
    • 共有の開発サーバーのDBポートが開放されている
      • 嬉しい
    • 共有の開発サーバーのポートが開放されていない
      • 開放してと依頼する
        • 嫌がられる
      • エクスポートできる
        • 定期的にエクスポートして自分専用環境へ反映
      • エクスポートできない(珍しくない
        • エクスポートしていいデータなのか、許可されているのか
        • エクスポートできるように設定変更を依頼をする
          • 嫌がられる
        • DBの構造の変更の反映
          • テキストで変更クエリが受け取れる
            • 甘えるな
          • テキストで変更クエリが受け取れない
            • 手作業で差分DDLを作成
        • データを手作業で入力する
  • 自分だけの開発環境では動くが開発サーバーで動かない事象が発生する
    • 原因1. 共有の開発サーバーの変更の取得もれ
    • 原因2. 共有サーバーで開発していれば遭遇できた想定外のデータ
    • 原因3. 環境設定によるもの
      • 知識は付くかもしれないがその知識は役に立つのか
        • 滅多に触らない設定
        • バージョンアップによって知識が無駄になる可能性
        • 無駄な知識 -> 無駄な労力

結論

GitリモートレポジトリもDockerもなければ共有の開発サーバーで開発が楽

共有の開発サーバーでの作業方法

一括ダウンロードしローカルにGitレポジトリ作成

  • ローカルでファイルを編集し保存時即アップロードで開発
  • コミット

以上

一日一回サーバー上のファイルと同期チェック

適切にフィルターを掛けてFilleZilla転送数10で共有開発サーバーから爆速一括ダウンロード

  • 自分と関係ないファイル
    • 無視してもいいしバージョン管理下に含めても良いし(正直、無視して見ない方がいい)
  • 自分と関係のあるファイル
    • 過去に自分が変更したファイルには一切差分が出ない
      • 自分の変更したファイルは即アップロードしているため当然
    • 過去に自分が変更したファイルに差分がある
      • 先祖返りしてた
        • 何も考えず一括アップロードする人がいるという事
        • discardして戻す
        • 連絡
      • 改行コードがなぜか全てCRLF変わってた
        • WidnwosでGitのautocrlfがOnでSFTPソフトはバイナリ送信で一括アップロードする人がいるという事
        • 改行コードのみであればdiscardして戻す
        • 連絡
      • サイレント修正されていた
        • 取り込む
      • WinSCPで適切にフィルターを掛けて過去に自分が変更したファイルで差分があったものだけチェックしてアップロード


しょーもない文章を書いてしまった