投稿者「Person1」のアーカイブ

データベースを設計する仕事

WEBの仕事の投稿でも書きましたが、一般的にWEBサイトを構築する仕事をする場合データベースの知識が不要ということはありえません。みなさん必ずデータベースの勉強はしています。
ある程度の規模のプロジェクトの場合、DB設計はその担当者が行い、WEBアプリ開発者は、サーバ上で実行されるプログラムと画面上で実行されるJavaScript部、および画面の開発をします。
サーバ上で実行されるプログラムの主要部は、データベースを内容を読み込んでクライアントに送る画面内容作る処理と、クライアントから送られてきた情報をデータベースに登録する形に編集してデータベースに登録するという処理になります。
したがってWEBアプリ開発者はデータベースの操作ができることが必須の条件となわけです。

一方で、データベースのテーブルやテーブル内のカラムをどう設計するかは、特に大規模なシステムになるとなかなか難しく、高度な知識や経験がものを言います。システムの運用を始めたころはサクサク動いたが、ある程度のデータ量になってくるとシステムが重すぎるというような場合、データベースのインデックスを見直したりします。そうしたことを最初から見込んでDB設計する必要もあります。こうした高度なデータベース技術を持つデータベース設計、チューニングを主とした仕事とするデータベース技術者も存在します。
データベースを保守運用するという観点でのDBA(データベース管理者)という言葉もあります。
DBスペシャリストという意味でDBAという言葉が使われる場合もあります。

WEBサイト開発の仕事のごく大まかな分類

このブログもWEBサイト上にあるわけで、WEBサイトとはどんなものかの説明などそもそも必要ないでしょう。
WEBサイトといっても各サイト目的はさまざまで、非常に大がかりなサイトや、こじんまりした小規模なサイトもあります。

WEBサイト開発に必要な要素は以下のように分けられると思います。
まずは、WEBサイトのプログラム(ソースを書くもの)としてはこんな分類になります。
・表示される画面のデザイン
・クライアント上で動作するプログラム
・サーバ上で実行される処理

それ以外に必要な仕事だと
・データベース設計
・サイトの構築

(サイトのデザイン)
これはブラウザ上に表示される画面のレイアウト、画像などの見た目の話で、
処理に関係しない本当に見た目の部分は専門のデザイナに任せる場合があります。

(クライアント上で動作するプログラム)
特に画面が狭いスマホの場合など、ハンバーガーメニューをクリックするとメニューが展開されるもののようにクライアント上で動作する部分。JavaScriptが使われます。

(サーバ上で実行される処理)
クライアントからの要求を受け取り主としてDB内容を変更する。
DB内容を編集し、クライアントへ送る。
ここがWEBアプリの中心です。

(データベース設計)
WEBアプリが用にDBを設計します。

(サイトの構築)
サーバを準備し、WEBアプリが動作する環境と整えます。
レンタルサーバを借りたり、DBやWEBサーバをインストールしたり、SSL環境を整えたり。そんな仕事です。

小規模なWEBサイトの場合、すべてを一人で行うケースもあります。こうした場合は、その人はソフトウェアの専門家で、デザイナーでない場合が多く、デザインでけっこう時間がかかったりします。

自分には合わない仕事にあたってしまうこともある

IT業界と一口にいっても様々な分野があります。
WEBサイトの開発、スマホアプリの開発、別な観点だと、病院などの医療系のシステム、宅配などの流通系のシステム、AIBOなどのロボット、カーナビ、果ては原発や加速器など、非常に多彩なシステム開発があります。
なんとなくIT業界と思って就職、転職してみたら、非常に高度な数学的、物理的言葉が飛び交う現場で自分には合わないという結果になることもありえます。
IT会社に勤めているなら、そうそうできるはずもない仕事を任されることはないはずです。しかし、自分の仕事は高度な数学的、物理的意味がわかっていなくてもできる内容に整理された形で与えられるとしても、そうした高度な雰囲気にどうしてもなじめないということはありえます。
就職、転職する先の会社でどういう仕事をすることになるのか、可能は限り情報を集めてから、就職、転職するのがよいでしょう。なじめない雰囲気の仕事にあたってしまった場合は、ストレスで健康が損なわれてしまっては困りますが、あまり早々にそこをやめてしまうと自分の経歴としてあまる見た目がよろしくないことになるので、可能範囲でがんばり続けることが必要です。

いまどきのIT業界とSNS

昨今はSNSが発達しており、IT業界に就職、転職するにも既存の求人サイトだけではなく、facebookなどのSNSもさかんに使われるようになってきました。
日々の業務の中でも、各種連絡はEメールではなく、LINEなどのSNSを使うところも増えてくました。
これからIT業界を目指そうという若い世代の方は、SNSに十分慣れ親しんでいることでしょう。
PCは使いこなせるけど、SNSはねぇという中高年世代の方でも、一歩自社の外に出て、派遣先で働かなくてはならない状況になると、こうした今時のツールから逃れることはできないと考えたほうがよいでしょう。
facebookは、実名登録が原則なので、これはどうしてもやりたくないという方はあると思います。そういう方でも、ツイッター、LINE、インスタなどのSNS文化に触れておくことは、今後のIT業界を生き抜いていくために必須になっていると思います。臆せずにどんどん使っていきましょう。

IT業界と英語力

IT業界では絶対に高い英語力が必要かといえばそうではありません。
さほど英語力がない知人がIT系で開発の仕事をしていることが多くあると思います。
そうはいってもIT系の技術は主として英語圏からやってきており、飛び交う言葉は英語そのものという状態です。
英語の意味がわかっていないがゆえにやるべきことを誤解してしまうということは実際にありえます。打ち合わせしていて、互いに認識があっていると思っていても誤解することがあります。
したがって、英語力はあるべきです。
そうはいってもそんなに優れた技術者はそうそうのぞべくもなく、自分は英語力はないと思っていてもITで開発がやりたいなら、その道に進んでなんら問題ないと思います。
問題はIT系の仕事にめでたく従事できるようになった後で、日々の仕事のなか、できるだけわからない英語を調べて自分の身につけていくことです。
漫然とせずに、自分のペースで無理なく徐々に習慣として英語を調べ、拒否反応をなくしていくことです。

テスターとは

テスターとはテストする人のことです。テスト計画を立てる人ではなく、テストを行う人です。
開発者がテストする役割も兼ねることが多いです。
テスト工程には、デバッグを除くと、単体テスト、結合テスト、システムテスト、統合テストなどどいう区別があります。
単体テストレベルまでは、主に開発者みずから行う場合が多く、それ以外は、別の人がおこなうことも多いです。
結合テスト、システムテスト、統合テストなどは解釈が違う場合もあると思いますが、いづれもモジュール分割されたソフトウェアを結合し、全体としてのシステムの挙動をテストするものです。
各テストは、さらに細分化されます。
システムで行う業務を模擬してテストシナリオを用意してテストするテストはここに含まれます。
こうしたテストは、テストの場合だけアルバイトなどでテスト担当者を増員しておこなったりする場合があります。
テストを管理、計画する担当者は、こうしたアルバイトなどの開発したシステムに明るくない人にやり方を正しく伝え、管理する仕事があることになりますので、コミュニケーション能力も必要になります。

はじめての仕事

会社によっては全くの未経験でもIT技術者として採用する場合も多くあると思います。
そのような場合、開発者として育成するなら、まずはプログラマとしての仕事をすることになるでしょう。
場合によっては、テストの手伝いなどをすることもあるでしょうが、とにかくプログラムを実地で行い、できるようになったもらうことが必要となります。
プログラムができるようになるには、勉強することが第一でまずは会社で教育が行われることになります。
会社によって教育に割ける人員には限りがあるので、ある程度の説明期間ののち自習となることもあります。もちろん自習のみで放置することはなく、どの程度できるようになったかの見極めや、習熟度が進んできたら、その先について、さらに技術的な説目をされるでしょう。

こうしてある程度の技術的な研修期間が終わると、習熟度が十分でなくても、先輩について実際にプログラムを行い作業に就いていくことになります。このレベルでは、とにかく実務に慣れていきながら、技術を身に着けていくことが求められます。

 

 

ITコンサルタントとは

ITコンサルタントは、「consult」(相談)の名が示すように、相談される人です。
主としてシステムエンジニアが行う「ソフトウェアの設計」作業とは、どのようなシステムを作るのかが決まった後、そのシステムを実現できるソフトウェアの設計を行うことです。
どのようなシステムを作るのかを決めるたからには、決めた人がいます。
この「どのようシステムを作ればよいか」ということを考えることを企業から依頼されることがシステムコンサルタントの仕事の1つです。
つまり、システムのソフトウェアの設計をする以前に、企業の業務を分析し、システムを提案するのです。したがって、企業の業務にも詳しく、コンピュータシステムにも詳しいというスペックが要求されます。
これは、ソフトウェア開発の前の段階の仕事になります。

ソフトウェア開発の後段階の仕事もあり、システムが十分な成果を上げているか分析し、改造、新規システムへの置き換えの提案などを行ったります。

また、システム開発の発注、工程管理をすることもあります。

非常に高い知識、経験、能力が要求されますので、報酬が高いです。

 

プログラマーとは

ソフトウェア開発の現場で「プログラマー」といえば、その名のとおりプログラムをする人です。以降、最後の棒は略して「プログラマ」と表記します。

プログラマ(略して「PG」)という言葉は、システムエンジニア(SE)との役割を区別する局面で多く使われます。この意味で、SEは設計する人、PGは、設計された図面(設計書)に基づいて、そのとおりの内容をプログラミング言語で書く作業(コーディングという、またはこれをプログラミングと言う)を行います。
この作業が終わると、期待通りに動くのかというテストを行います。 テストといってもデバッグ、単体テスト、結合テスト、統合テストなどがあり、規模が大きいシステムではテストで専門の役割の人(テスター)が存在する場合があります。
テストについては、いずれ別の記事で書きたいと思います。

PGは設計ではなく、プログラミングする人だと書きましたが、設計にはいくつかの種類、段階があり、「詳細設計」(Detailed Design、略してDD)という設計があります。読んで字のごとく、細かな設計です。DDより前段階(上流工程)の設計をSEが行い、詳細設計はPGの仕事である場合が多いです。そういう意味では、PGは下流工程の設計をする人でもあります。

このように、プログラマの仕事としては「詳細設計」「コーディング、デバッグ」「単体テスト」が主要な仕事ということになります。単体テスト以降のテストにもかかわることはあります。

プロジェクトマネージャとプロジェクトリーダー

一般の会社では、社長、部長、課長、係長などの役職がありますよね。
ソフトウェア開発の現場では、管理する立場の人を「プロジェクトマネージャ」「プロジェクトリーダ」などど呼びます。
最後の横棒を略すかどうかは統一せず、筆者の感覚で「プロジェクトマネージャ」「プロジェクトリーダー」と表記しておきます。

プロジェクトマネージャは「PM」、プロジェクトリーダーは「PL」と略されます。
規模が大きいプロジェクトではPLの下にサブリーダーが存在する場合もあります。

PM、PLどちらも管理する役割を持つので、そういう意味ではマネージャです。なにしろPLに必要は要素は管理能力であると言われています。

厳密な定義はありませんが、PM、PL両方が存在しているプロジェクトでは、PMはPLより上の立場となるのが一般的かと思います。
そのような場合、PLは、実際にソフトウェアを作る(設計、開発(プログラミング工程)、テスト)仕事に関して管理をする人、PMは人材を集めたり、お金関係を処理したりという具体的なソフトウェア作成の外側の仕事をする、PLの管理をするといったことになるでしょう。