IT保守の仕事とは何か
こんにちはYSです!
今日は僕がIT業界で、プログラマーとして働き始めて新卒一年目にやっていた保守業務について書いていきます。
エンジニアとしての経験者ではない限り、ほとんどの人は入社する会社が既に立ち上げているプロジェクトのメンバーとして入り、そのプロジェクトの中身を知るために保守業務を行うことが主になります。
保守業務とは
保守業務は言葉の意味通りでサイトの運営を守るため、保守をします。
具体的な業務は以下のようなものが多いです。
- サイトのデザイン崩れの修正
- サイトの脆弱性の修正
- 軽微なバグ修正
- プログラムのリファクタリング
- テスト
こういった業務が主になります。その他、会社によってはリリース作業を行ったり、データベースの不要データ削除だったりといった業務もあります。
サイトのデザイン崩れの修正
CSSやHTML、文言変更の修正業務です。
最近だと、スマートフォンサイトの一般的な普及から多くのWebサイトは、PCとスマホ両方でサイトを見られるようにデザインされています。(このサイトもそうです。)
PCだと画面が大きいので、横にある程度コンテンツを表示しても問題ありませんが、スマホだと横幅はかなり限られます。
そのため、スマホの画面幅に合わせたデザインになっていないと、スマホで横スクロールがされていって、非常に見にくいサイト構成になってしまいます。
大手の企業が経営するサイトのほとんどはこういった事がありませんが、一部ユーザーの流入が若干少ないページとかは崩れたままのページがあったりします。
ユーザー的には、Webサイトは見やすい方がいいので、ちょっとのデザイン崩れも修正を行います。
こういった仕事は、開発側(所謂、ゴリゴリ開発している人たち)が開発と同時に修正するといった部分もありますが、あまり触らない画面だから保守チームで直しておいて、といった面も大きいです。
最近はこういった業務は少なくなりましたがブラウザの最新のバージョンが出た時に業務対応に追われることがしばしばあります。
ブラウザの旧バージョンで頼りにしていた機能が使えなくなったり、新しい機能によって既存の機能にばが出てしまったりなど。
そのため、Google Chromeの更新情報や、iOSの更新ニュースなどは欠かさずWeb系の業務を行なっている会社はチェックしています。
(iOSにおいてはOS自体が更新されると同時に、Safariの更新があるため)
サイトの脆弱性の修正
言葉の文字通り、サイトの弱い部分を見つけて修正します。
これには、方法が色々あり
以下のようなものがあります。
- SQLインジェクション
- クロスサイトスクリプティング(XSS)
- OSコマンドインジェクション
- クロスサイトリクエストフォージェリ(CSRF)
- セッションの不備
SQLインジェクション
SQLインジェクションとは、 操作にSQLと呼ばれる言語を用いるタイプのデータベースを使用するアプリケーションに対し、 その入力に本来入力としては使われることが想定されていないSQL文を挿入すること(injection – インジェクション)で、 データベースに不正な操作を加える攻撃方法のことです。
クロスサイトスクリプティング
クロスサイトスクリプティングとは、ユーザのアクセス時に表示内容が生成される「動的Webページ」の脆弱性、もしくはその脆弱性を利用した攻撃方法のことです。 動的Webページの表示内容生成処理の際、Webページに任意のスクリプトが紛れ込み、Webサイトを閲覧したユーザ環境で紛れ込んだスクリプトが実行されてしまいます。
OSコマンドインジェクション
OSコマンドインジェクションは、ユーザーからデータや数値の入力を受け付けるようなWebサイトなどにおいて、プログラムに与えるパラメータにOSへの命令文を紛れ込ませて不正に操作する攻撃です。
本来想定されていない命令文を強制的に実行させてしまいます。主にWebアプリケーションがWebサーバのシェルを呼び出してコマンドを実行する動作が狙われます。
クロスサイトリクエストフォージェリ
クロスサイトリクエストフォージェリ(CSRF)とは、Webアプリケーションに存在する脆弱性、もしくはその脆弱性を利用した攻撃方法のことです。 掲示板や問い合わせフォームなどを処理するWebアプリケーションが、本来拒否すべき他サイトからのリクエストを受信し処理してしまいます。
セッションの不備
セッションに不備があると、セッションハイジャックなどの攻撃を受けます。
セッションハイジャックとは、利用者がWebアプリケーションなどにログインした際に発行される「セッションID」をネットワーク上で盗聴されたり、規則性から推測される事で、攻撃者がそれを盗み取り、利用者のようになりすます攻撃のこと。
上記の脆弱性を突いた攻撃方法はあくまで一例です。
この他にも色々情報を改ざんされたり、データを盗め取られたりと攻撃方法は色々あります。
こういった攻撃からサイトを守るのも保守の仕事の一つです。
軽微なバグ修正
Webサイトのバグ(不具合)を解消する作業
多いのは、ほとんどJSエラーなどの解消。
Webサイトを触っていると以下のような事がないでしょうか。
- なんかこのボタンタップしても反応しない
- 次の画面に遷移できない
- サイトの挙動がおかしい
こういったバグ(不具合)は、Chromeの拡張ツールのエラー検知などを入れていると検知してくれるものもあるので、エンジニアやデザイナーの人は速攻わかりますが、一般の人はそもそもエラー自体に興味はないので、なんかおかしい程度で終わると思います。
ただ、ここを直すのがエンジニアのお仕事です。
ボタンを押しても反応がないなどのバグは、ユーザーの損失に繋がります。
そのため、かなり軽微なものも発覚すれば直します。
ただ、バグには優先度が付けられていて、その優先度により、直すか放置するか決められます。
例えば、ショッピングサイトで購入確定ボタンが押せないといった事になっていたら、商品が購入されないといった売り上げに直結するなど、サービスに多大なる影響を及ぼすもの。こういったものは大障害になるため、優先度は「最高」で行われます。
対して、上に戻るボタン(スマホサイトなどでよく見られる右下、左下にありタップするとページの一番上に戻るボタンのこと)などで押しても反応がないといった障害。こういったものは、ユーザーへの不信感にはなりますが、ある程度であれば、許容できるといったものは、優先度は「普通」か「低」で行われます。(ちょっとだけ後回し)
こういった修正が多く降ってきます。意外とユーザー的には発覚していないだけで、会社側は把握しています。
プログラミングを触った事がある方なら、PHPエラーとか遷移エラー(404、500などのエラー)とかのものはないのか?といった疑問があると思いますが、基本的にはそういったものは軽い動作確認等で行われるため検知できます。もしくはテストが自動化されているなどの対処が行われており、保守があまりやることではありません。(開発の時点で気づく事がほとんどです。
プログラムのリファクタリング
所謂、プログラムをもっと効率的に見やすく直す作業。
これはユーザー観点からはどうでもいい作業かもしれませんが、実は意味のある作業だったりします。
この作業の目的は主に二つあり
- 処理能力向上
- プログラマーが見やすいようにする
があります。ほとんどは「処理能力向上」がメインです。
「処理能力向上」は、プログラムを効率的に書き、画面描写を速くしたりする事です。
プログラムが動くことは動くけど、ちょっと時間を計ってみたら遅いとか。こういった部分を改善していきます。
本当に、「ミリ秒」の世界なのですが、ユーザーがちょっとでも遅いと感じないように改善の仕事をします。
「プログラマーが見やすいようにする」というのは可読性の問題です。
エンジニアたちのエゴといえばエゴなのですが、どんな処理をしているのか分かりにくかったり、処理を無理に一つにまとめたり、逆にバラバラすぎたり、などソースコードが汚いと見る側がめちゃくちゃ苦労します。
IT業界あるあるなのですが、そのプログラム担当者がすでに離職されていたりすると、なぜこの部分を書いたのか。なんの意味があるのか。などの事がよくあります。そういった事を解消すべく、誰が見ても意図や意味が分かるように、修正するといった作業があります。
会社的には、見やすさ重視で直す作業に給料を払いたくないのか、却下されがちな部分ではありますが、エンジニア観点から長い目で見るとソースコードのリファクタリングはかなり重要です。(バグも見つけやすくなるし、可読性が上がるので、作業効率が上がるなど)
いかがだったでしょうか。
保守は開発業務に比べて、地味な作業が多く、時には保守ドキュメントのみの作成といった、もはやソースコードを触りもしない作業も少なくありません。
エンジニアから見ても、開発のような花形ではない部分が多いかもしれません。
ですが、サイトの保守は、ユーザーやエンジニアの目線に立ち、どういった部分を改善すればいいか。より便利に使ってもらうにはどうしたらいいか。などの部分を考えるようになります。
全く保守をした事がない人と、保守をした事がある人では、後者の方が圧倒的に広い視野を持って仕事ができるので、この部分は非常に重要だと思います。
今、現在保守業務がつまらないと思っている方も、その作業は決して無駄にはなりません。
何より、最後の砦は保守なので、仕事に誇りを持っていいと思います。(体験談)
どんな軽微なものでも、自分の力になっていると信じて頑張っていきましょう。