信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    新人プログラマーが仕事を振られた時にやった方がいいと思うこと =前編=

    新人プログラマーが仕事を振られた時にやった方がいいと思うこと =前編=こんにちわ。パグと申します。最初に、簡単に自己紹介をすると、私は新人PGではありません。SIerに出向して5年ほどはスタンドアロン型のシステム開発をしていました。WEB未経験から、WEBサイト制作をメインとしているコアテックに転職して、7年経過するSEです。そんな私は、最近新人PGの進捗管理をする機会が多いのですが、手が止まってしまう新人が多いのを目撃して、また、自分も同じように新人の頃、手が止まることが多かったので、あの時、こうしてれば・・・と思ったことを前半後半に分けて書いてみました。仕事って一言で言っても様々で、ツールの講習会開いて欲しいとか、システム(サイト)作って欲しいとかSQL書いて欲しいとか、社内環境整備して欲しいとか様々なのですが、今回は、WEBサイト制作に関して、自分の中でルーティン化しているものをまとめます。(事前準備)案件アサイン前に、その企業(チーム)の環境などを展開されると思います。私の場合はどの現場(チーム)に行く場合も大体その現場の言語やツール関連の本を2〜3冊、知らないフレームワークの場合はマニュアルをざっくりと読んでから、そのチームに参画していました。1、まずは改修、新規作成のスコープをはっきりさせる今渡されている作業が、細分化されているものの一部なのか、この案件の全てなのか、つまり、これを作ったら案件完了なのか、自分が作っても他の人が終わってなければ完了にならないかを認識します。初めての現場でドキュメントや引き継ぎ事項に「納品物」がはっきりと書いてない場合は、直接関係者に聞いておきましょう。これは会社によっても会社内のチームによっても異なるからです。(納品物の例)・ソースだけで良い→ソース管理ツールにPUSHしたら終わり→物理的にファイルが欲しい→サーバーにアップして欲しいなど・テスト仕様書も欲しい→Excelで欲しい→特定のフォーマットで欲しい→スクリプトが欲しい・テスト仕様書にエビデンスも欲しい→同上など、納品物も案件によって異なります。2、自分の担当部分のスケジュールをはっきりさせましょう渡された期日が、コーディング完了日なのか、テスト完了日なのか、リリース日なのか、顧客引き渡し日なのかは出向先やチームによって異なりますが、勝手にスケジュールを引いて間に合わないとなると困るので、自分の作業を完了し、渡す日がいつなのかって部分を、PM、PLまたは顧客ときちんとネゴって文章に起こしておくといいと思います。文章に起こすっていうのはチャットでもメールでもいいんですけど、口頭でやり取りした場合言った言わない問題が発生しないようにするため、口頭で話をした後に関係者をCCに入れたメールなどで再確認した方がいいです。それは相手を信頼していないからではありません。自分自身で期日が間違えていないかを再認識するためでもあります。期日を入れる例は以下のとおり。——X月X日X時 コーディング、単体テスト完了X月X日X時 受入テストX月X日X時 リリース日——3、大枠の作業の洗い出しをしますすごいざっくりとした作業工程の洗い出しをします。今回はWEBサイト制作のPGのフェーズなので、簡単に以下のような行程に分かれるかと思います。・詳細設計・CD→作成する機能の大枠を考える・単体テスト・結合テスト4、現行システムを把握するお見積もりを作るような立場の人だと、現行システムを把握するのは、スケジュールを切る前にやりますがPGでしたら、案件開始前に把握できれば良いかと思います。運用案件の場合、渡された仕様書以外に修正が必要な点がないかを把握することが大事です。それによりスケジュールの達成可否が大きく変わるためです。・現行システム全体を把握→このフェーズでは全体像をざっくり捉えるのが大事です。→インフラ構成だとか→全体画面数だとか→TBL構成だとか・機能追加部分の現行ソースを読む→コード規約だとか→命名ルールだとか・案件進行ルールを把握しておきます5、終わるのか終わらないかを考えてみる。ここまでで、X月X日までに何を作らないといけないかってところが割と具体的になっています。スケジュールが鬼のようにきつい案件も勿論たくさんあります。その場合は、「できない」っていう勇気が大事です。私が経験した企業は10社あるかないか(上場企業から20名程度の小さな会社まで規模は様々)ですが、どの企業様でも、仕事なんだからできないっていうな、とか体育会系的なことを言われることはありませんでした。伝える際には、・ここまでなら終わる・X日あれば終わる・なぜ無理なのかを具体的に伝えてください。ただ「こんなんおわんないっす〜」では伝わらないのでダメです。これとこれは終わりますが、この部分だけ、後出しにしてくださいなどの提案がないと、PL(PM)もじゃあどれくらいやってもらえるのかな?というのを想像できないためです。ちなみにこの工程は、残業時間を含めない状態で考えた方がいいです。残業すれば終わる工数というのは、すでにスケジュールに無理があるからです。————————最後にプロジェクトのリーダーは作業をふるときに通常、作業が終わらないことを想定して、保険をかけながらスケジュール作成しますので、自分で無理かもしれないと思ったときには、正直に伝えてもらったほうが予定を組みやすいです。仮に、できる!と思って作業を始めても、終わらないと思った時点で、速やかに伝えることが大事です。渡された仕事が仮に全て終わらなかったとしても、自分でそれを伝えられていれば、あなたの評価が下がることはありません。周りの人が巻き取ったとしても、それはあなたの責任ではありません。新人のうちは、他者と協力しながらでも良いので、自分でできることを、できる限り順番にこなしていく、というのを意識して仕事をします。もちろん、そんなに優しくない企業もシチュエーションも沢山あると思いますので、思い通りにいかないことも理不尽なことも沢山ありますが、誠意を持って対応することで、理解してくれる上司や同僚は、多いと思います。次回は具体的にコーディングや設計に入るところを記載していきます。ではまた・・・。
  • テクログ

    IT業界で長年やってるのに、なんなのか答えられない単語について語る2

    こんにちわ。パグです。今日もモヤモヤ理解してるけど説明できない内容について語ります。1はこちら→プロトコルについてhttps://core-tech.jp/blog/article445/今日は「セッション」についてです。OSI参照モデルのセッションではなく、HTTPのセッションです。はい、じゃあ説明していきます。セッションってなんなの?って聞かれた時になんて答えますか?セッションとはとかで調べたり、先輩に聞いたりして、・通信に先立って、2台のホスト間で必要なデータをやり取りすること・WEBページを開いて離脱するまでの1連の流れのこと(参考リンク)https://www.seohacks.net/basic/terms/session/https://wa3.i-3-i.info/word1791.htmlこういった説明をよくされるのではないでしょうか。この二つは、実は同じ話をしているのですが、内容を理解していないと全然異なるものに感じます。そのためセッションという言葉の意味が曖昧になります。セッションを理解する前に、WEBブラウザが表示されるまでの仕組みについて説明します。WEBサイト、というのは、ユーザー(のPCやスマホ)からどこかのWEBサーバーにリクエストを投げます。WEBサーバーからはこのリクエスに応じたページを返信して終了します。例えば、私が、どこかのサイトで買い物をしたいとします。ブラウザにURLを入れるか検索サイトでアクセスすると、このサイトのトップページが表示されます。そこで買い物をする場合にどういったやり取りがなされるかというとーーーーーーSTARTーーーーーー私:トップページが見たいサーバー:ほらよ(トップページ返す)ーーーーーー私:これ買いたいサーバー:ほらよ(カート画面返す)ーーーーーー私:クレカはこれねサーバー:ほらよ(決済画面返す)ーーーーーー私:購入できたから、画面閉じるーーーーーーENDーーーーーーWEBは通常このような流れで、サーバーからは「ほらよ」と画面が返された時点で一回毎のやり取りは終了します。ここに今どういった状態であるかを保存する機構を持たないためです。でも上記のような買い物をしたい、のような動作の場合、トップページからカート画面へ遷移する時に、どの商品を持って遷移したか、とか、決済画面に行く時に、どのユーザーであるのか、などをサーバー側がわかっていないと、適切な画面を返すことができません。ですが、HTTPの通信には、このような情報を保持する箇所がありません(※1)。じゃあ現在の技術ではどのようにして現状の状態を保持しているのかというと、ここでやっと「セッション」がでてきます。「セッション」とは一連のやり取りの中で、今の状態を維持したまま相互に通信されている状態のこと、と理解しましょう。例えば、STARTからENDまでの流れを「1つのセッション」として説明すると、STARTからENDまで私がログインしていて、この商品を買って、このカードで買うという現状状態を保持した状態で、サーバーと私が通信している、この現状状態を保持した状態での通信が1つのセッションです。たまに、セッションをクッキーのようなものやキャッシュのようなものと誤解されている方がいますが、それはクッキーであり、キャッシュであって、セッションは保存するところの名称ではありません(※2)。通信に必要な情報を保持したまま通信を行なっている状態の方をセッションと呼びます。このセッション中に、どこに情報を保存するかというと、通常はクッキー+何か(RDSやKVSやmemchacedなど)またはクッキーに直接本体を突っ込む。または、ファイルで持っている。など色々と種類があります。いずれも、暗号化された状態で、たとえその実体を盗まれたとしても、中身が見えないようにした状態で保存している必要があります。最初に出てきた・通信に先立って、2台のホスト間で必要なデータをやり取りすること・WEBページを開いて離脱するまでの1連の流れのこととはつまり同じことを指していて、どちらの言葉も使って説明すると・・・「WEBページを開いて離脱するまでの1連の流れの中で、通信に先立って、2台のホスト間で必要なデータをやり取りすること」→これが完璧なセッションの説明となります。新人に聞かれた際にはドヤ顔で答えてあげてください。クッキーやキャッシュと混同して混乱している新人さんがいたら、「それはセッションの保存領域のことでセッションのことじゃないからぁ(ドヤァ)」と説明してあげてください。———(※1)ログイン情報とかでない場合は、POST、GETでいけるんちゃうかって考える人もいると思うんですが、今回はあくまで「セッション」の説明だということに注目してください。(※2)今回はsessionStorageの説明ではありません———以上になります。いずれ。また。
  • テクログ

    IT業界で長年やってるのに、なんなのか答えられない単語について語る

    こんにちわ。パグです。私はスタンドアロン型のシステムのSEを7年。WEBシステムで7年。ほぼ15年IT業界にいるわけなんですけど、探究心がほんとないんですよね。でも、IT業界って探究心がなくても意外と仕事ができちゃったりするんですよ。でも結局は表面上の理解しかしてないわけなので、設計する時にめちゃくちゃ考えるんですよ。なので、今回は、ねえ、それってなんのこと?って聞かれた時に、ドヤ顔で答えられるほど自分で理解したことについて書きます。今日は「プロトコル」についてです。プロトコルってわかりますか?IPとTCPとかFTPとかPOPとか色々種類があるあれですよ。じゃあさ、プロトコルってなに?って言えますか?プロトコルってなんですか?って新人に聞かれた時に、最もわかりやすいな、と私が思った回答はこれです。プロトコルとは、規約のこと。規約とは、なんの規約なのか。コンピュータ同士が通信を行うための規約のこと。なんでそれが必要なのか?例えば、コンピューターって、出たての頃は、各メーカーで規約が異なったわけなんですよ。すると、送信元と受信先で同じ端末を持ってないと、通信できないじゃないですか。それじゃ不便だよねってなって、世界的に標準的な規約が決まりました。これがRFCという形式で技術仕様が公開されていて、その通りに製品を作ると異なるメーカー同士でのやり取りが可能になるわけです。RFC準拠しないとどうなるか?別に怒られたりはしません。RFCに準拠しない場合、通信ができなくなります。名指しするとあれなので、わかるように最近困ったRFC準拠してない事例を挙げるととある携帯キャリアがメールアドレスの作成仕様をRFC準拠してない形で許可していました。これはすごく昔、もう10年以上とか前に独自で出していたもので、キャリアメールとは、機種変更をしても大抵引き継がれるので、このせいで、この頃にRFC準拠してない形式で作られたメールアドレスに対して送信ができないという事象が発生しました。メールサーバー側で、RFC準拠してないメールアドレスをリジェクトしていたためです。この時、対策としては、メールアドレスの前後にクオートを入れて、文字列として認識させることで、送信できるようになったのですが、エンドユーザーに、そのメールアドレス変えてよ。なんてなかなか言えないので大変に困ったのを覚えています。ね。RFC守らないと困るでしょ。なので、現在のコンピュータ、ミドルウェア、ソフトウェアのほとんどがこの規約を遵守して作られています。さて、最初の話に戻ります。つまりプロトコルとは、ルールのことです。こういう風に送ってね。こういう風に解析してね。というルールのこと。ちなみにHTTPもWEBのプロトコルになります。プロトコルは、単語じゃなくて略称なので、全て語尾にPがついています。HTTP(HyperText Transfer Protocol)FTP(File Transfer Protocol)IP(Internet Protocol )SMTP(Simple Mail Transfer Protocol)はい。今日はここまでです。バイバイ〜
  • 画像:ブログサムネイル

    テクログ

    PC画面を見すぎて疲れたのでディスプレイをグレイスケールに設定してみる

    どーも、ひなっちです。最近本で読んで、比較的手軽に目の疲れとか、集中できなくなってきたから、気分転換したいなーと思ったときにできるので良いなーと思ったのでシェアします!#はじめに長時間、ディスプレイを見続けていると、集中力が切れるし、目が痛くなってくることがあったのでグレイスケールを使ってみると目の負担が軽くなって、集中もしやすくなってよかったのでシェアします!#Maccommand + space-key > アクセシビリティ > ディスプレイ > グレイスケールを使用にチェックをいれればOKです。#Win10設定 > かんたん操作 > カラーフィルター > カラーフィルターオンwindowsキー + Ctrl + Cでもできます!*自分は普段Macユーザなので、win用のスクショはないんです。。#iPhone一般 > アクセシビリティ > ディスプレイ調整 > カラーフィルタ > グレイスケール#Android機種によって設定方法が異なります。僕が普段使っている、Fujitsuさんのarrows-M04-premiumを例にして設定を書きます。(他機種の方は調べて!)設定 > ユーザ > ユーザ補助 > 色反転やってみましたが、グレースケールというよりは、普段の眩しい、白い画面から、黒い画面に変更ができるという感じみたいです。。。#さいごに人間はいろいろな色が複数ある画面を長時間見てると疲れてくるし、集中力が散漫になるようなので、グレイスケールにして1色画面にすると気分の切り替えにもなるようです。目が疲れたな〜ってときの切り替え方法の1つとして、よければお試しください!
  • テクログ

    windows10 再セットアップ 復習

    先日windows10の再インストールを行った時の事です。windowsが起動している状態だったので普通にメニューから「このPCを初期状態に戻す」を選択したのですが、終わった後に初期セットアップに進むはずですが、エラーが出て一向に先に進みません。このエラーと言うのが、LANに繋いで更新すれば先に進むという感じでしたがLANケーブルを挿しても全く変わらず。何度再起動しても同じエラーがでて先に進む事ができませんでした。この時の失敗したかなと思ったポイントとしては1 更新とセキュリティから再インストールを選択していなかった※shiftを押しながら再起動から再インストールを選択した2 全てのドライブを選択していなかったリカバリ領域まで削除されると思いwindowsがインストールされているドライブのみを選択した1に関してはおそらく問題がないと思われます。各メーカーさんのHPでもその手順を紹介している物もあるのでどちらから入っても問題がないと思われます。2に関しては全てのドライブを削除するので時間がかかると思い選択しなかったので、問題があるとすればコチラかなと思う所です。結局ディスクから再インストールを行い無事に起動しました。起動後に次は別の手順でやり直してみた所問題なくインストールが完了しました。楽なのはHDDリカバリですが、メディアを使ったやり方に慣れている人ならば慣れている分失敗しにくいのではないかと思います。※各メーカーによって若干表記等が違う場合があります。
  • テクログ

    素敵だら! Linux コマンド ~基本編 その2~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。今回は前回に引き続き「~基本編 その2~」です。echocatrm■echo言わずと知れた文字列出力コマンド `echo` です。`echo` の後に続いて文字列を入力することで、その文字列をそのまま出力してくれます。だから echo(やまびこ)というわけですね。`echo` 自体は多機能ということはありませんが、なくてはならない存在です。主にメッセージの表示に使用され、変数も展開して表示することができるのでスクリプト内で多用されます。知っておくべきオプションとしては `e` オプションで、エスケープシーケンスを解釈して出力してくれます。echo -e 'hogehoge\npuyopuyo' ※クォーテーションで文字列を囲まない場合は「hoge\\npuyo」のようにエスケープシーケンスにバックスラッシュ「\」を2つ付けますそのほかしばしば利用されるのが、ファイルに文字列を上書きまたは追加で書き込みたい時です。リダイレクトの `>` または `>>` を使用して `echo` による画面への出力(標準出力といいます)をファイルへの出力に変換します。・上書き(または新規作成)echo hogehoge > file ・追加echo hogehoge >> file もちろん `e` オプションを使用して文字の途中に改行を入れることもできます。■cat`cat` は concatenate (連結)のことで、ファイルとファイルを連結した結果を標準出力します。`echo` と同様にリダイレクトを使用することで、連結した結果をファイルに出力することもできます。指定するファイルは1つでもよく、その場合ファイル内容が出力されるだけになるので、ファイルの閲覧にもしばしば使用されます。結合してファイルに出力※指定するファイルはいくつでもよいcat hoge.txt piyo.txt > file.txt hoge.txt の内容を出力して閲覧cat hoge.txt またヒアドキュメントを用いることで、`echo` ではできなかった複数行の文字列を出力することもできます。・ヒアドキュメントで標準出力cat << EOS hogehgoe piyopiyo EOS ・ヒアドキュメントでファイル出力cat << EOS > file.txt hogehgoe piyopiyo EOS ■rm`rm` はファイルとディレクトリの削除コマンドです。rm file.txt のようにすることで指定したファイルを削除することができます。ディレクトリを削除するときは `r` オプションをつけて再帰的に(recursive)削除する必要があります。その時にはディレクトリ内のファイルも併せて削除されます。rm -r dir 削除したいファイルが複数ある場合、一つずつ指定することもできますが、ワイルドカードを使用することで一気に削除することができます。例えばディレクトリ test にファイル hoge1, hoge2, piyo3 が存在し、ファイルのみ全て削除したいときにはrm test/* hoge とファイル名のついたファイルのみ全て削除したいときはrm test/hoge* とすることで実現できます。`rm` によってファイルを削除するとき、環境にもよりますが、誤った削除を避けるためファイルを削除する毎に確認のプロンプトが表示され、y キーと Enter キーを押下することで削除が実行されます。しかし削除対象のファイルが多数ある場合、一つ一つ削除するごとに確認するのは骨が折れます。そのようなときには強制的に削除するオプション `f` が利用できます。使用には注意が必要で、バックアップを取っていない環境やレビューを通っていない作業である場合、基本的にやってはいけません。組織によっては、禁止していたり規則を設けているところもあるかもしれません。ひとつパスやファイル名を間違えただけで、削除してはいけないファイルが抹消され、大規模な障害となることもあります。なかでも `r` オプションと組み合わせた強制再帰的削除はとても危険です。以前私の勤めていた会社の同僚が開発環境で以下のコマンドをroot ユーザーで実行してしまいました。rm -rf / これは Linux のシステムを含めまるごと削除してしまうコマンドです。ひとつの開発環境が消え去り、大きな損害を生むことになりました。上記コマンドを実行した動画がネットに投稿されていますので、興味のある方は探してみてください。または個人の仮想環境で試してみるのも良いと思います。以上、`echo`, 'cat', 'rm' のご紹介でした。