投稿

2018の投稿を表示しています

SambaがWindowsサーバーの代わりになる理由

こんにちは。熊本事務所の上田です。 今回はSambaについてお話ししようと思います。 まずSambaとは何か? 一言で言うと、LinuxをWindowsファイルサーバーとして利用出来るソフトウェアです。 近年では、本家のWindowsサーバーに代わって多くの企業や官公庁などで基幹サーバーとして活躍の場が広がっています。 何故Windowsサーバーの代わりになるのか?そのポイントは3点あります。 まず、導入時の初期コストが抑えられます。 クライアントマシンになると一般的にWindowsになると思いますが、 WindowsOSをファイルサーバーとした場合、接続にCAL( = Client Access License)というライセンス料が必要なのです。 LinuxでSambaを利用する場合はCALの支払いが必要ありません。 次にランニングコストが抑えられます。 Windowsサーバー系のOSだと高性能なスペックを要求に対して、Linuxを動作させる場合は低スペックな性能でも十分です。 例えばWindowsXPやWindowsVista世代のPCでも問題なく動いてくれます。 また、OSのサポートが切れてしまった際新しいOSへ入れ替える必要が出てきます。 Windowsはライセンスの購入が必要なので有料ですが、Linuxなら無料。 古いPCを再利用することでハード面でもソフト面でも費用を大きく抑えることが出来ます。 最後はセキュリティです。 セキュリティ対策はWindowsもLinuxも大きな違いはありません。 ただ、セキュリティホールなどの問題が見つかった場合、問題が解決されるまでセキュリティが無防備となってしまいます。 WindowsはMicrosoftから修正プログラムが提供されるまで時間が掛かりますが、 オープンソースであるLinuxだと、世界中のプログラマーによって修正が行われる為比較的早く提供出来ます。 但し、Linuxの有料セキュリティソフトは法人向けが殆どなので、個人で使用する場合は注意が必要です。 私もファイルのバックアップ用途として運用を始めましたが、 自宅で使う分なら特に難しい設定を必要としませんので、Linux初心者でも手軽に利用できる点は素晴らしいと思いました。 使わなくなったPCやサーバ

GO言語のgofmtの-tabオプションは、v1.2以降使えない

イメージ
こんにちは、ASD熊本の菊池です。 最近業務でGO言語を触る機会があったのですが、 インデントは必ずタブでそろえるという慣習に少し苦戦していました。 GO標準フォーマッタであるgofmtは、スペースをタブに変換してくれるのですが、 既にスペースインデントでGitに上げてしまっていた場合は比較が多少面倒...といった具合です。 gofmtにタブを使わないオプションがないか調べたところ、 「gofmtは、-tab=falseオプションを使えばスペースでインデントしてくれる」 という記事を見かけました。しかし... そんなオプションは知らんとGOに突き返されます。 まさかバグじゃないだろうなと本家のGitHubを覗いてみたところ、 バージョン1.3を境に-tabオプションが削除されていることを確認できました。 更にgofmtのコミットも確認したところ、理由とおぼしき記述が見られました。 私訳:  これらのフラグを持つことは「gofmtされたはず」のコードとして容認してもいい、と誤解させます。  組織がgofmtを内部的に異なる設定で使用したい場合、gofmtを簡単に変更することができますが、  オープンソースのコミュニティが使用する "gofmt"では、この古いスイッチをサポートすべきではありません。  -commentsフラグも削除します。  "cmd/gofmt: remove -tabwidth and -tabs flags・golang/go@014f3dc・GitHub"より引用   https://github.com/golang/go/commit/014f3dcc837cb6789076cff4fccaa3bd221f823e この修正の経緯としては、Git上で"gofmtの-tabs、-tabwidthフラグは削除されるべき" という旨のIssueが挙げられていたことから始まっていたようです。 意見のいくつかを要約すると... ・-tab,-tabwidthはGO言語の初学者を混乱させる可能性がある。 ・-tab,-tabwidthされたコードは、gofmtを通したGO標準のコードとは言い難い。 ・この機能を削除したと

LINEBOTはなぜ自動で返信できるのか?

こんにちは、熊本事業所の清島と萓嶋です。私たちはLINEBOTについて説明したいと思います。 BOTとは人間の代わりに作業を行ってくれる自動化プログラムの総称です。 BOTにも様々な種類がありますが、LINEBOTはLINE上でユーザーの発言に対して自動返信を行う、チャットボットに分類されます。 皆さんはLINEBOTと聞いて何を思い浮かべましたか? 企業が定期的にプロモーションを行うBOTや、発言を他の言語に素早く変換してくれる翻訳BOT、AIを用いて自然な会話を行えるBOTなど、一度は利用したことがあるのではないでしょうか? 今回はLINEBOTの自動返信の仕組みについて解説していきたいと思います。 まず、ユーザーがLINEBOTへメッセージを送信します。 送信されたメッセージはLINEサーバを通り、BOTはそれをイベントとして取得します。 イベントにはユーザーの名前やID、リプライトークンが含まれており、 それを取得したBOTは返信プログラムを実行します。 リプライトークンは、特定のユーザーに返信するために使用されます。 取得したユーザーの名前を使うと、BOTが名前で呼びかけるような返信もできますね。 更に、BOTはメッセージだけでなく、 ユーザーが起こした動き(BOTと友達になる、グループに招待する、など)もイベントとして受け取ることができます。 皆さんも公式アカウントを友達登録した際、「登録ありがとうございます」という内容のメッセージを受け取ったことがあると思います。 これは、友達登録イベントを受け取ったBOTが、返信プログラムを実行しているからです。 ここまでBOTがイベントを取得する、と説明してきましたが、そのために必要なのがAPIです。 APIとはApplication Programming Interfaceの略で、プログラムを構築するために必要な機能を呼び出すものです。 また、APIはwebhookを用いてBOTへ中継しており、メッセージのリアルタイム受信を可能にしています。 APIを使うことで、テキスト形式での返信はもちろん、ユーザーに選択してもらうボタンを出現させたり、 画像とテキストを同時に表示したりできます。 また、最近のバージョンアップにより、クイックリプライ機能という、画

SQLServerのインデックスを使用したパフォーマンスチューニングについて

こんにちは。福岡事務所の大迫です。 ソフトウェア開発においてデータベースは非常に重要な役割を果たします。 多くのソフトウェア、アプリケーションには何らかの形でデータベースが使用されており、データベースに対する実行命令であるSQLがプログラムに組み込まれています。 作成したアプリケーションの動作速度に問題が生じた際にSQLが原因となる場合も多く、データベースの設計、SQLの記述には細心の注意が必要です。 データベースの種類(Oracle,SQLServer,MySQL等)によって考え方が若干異なることがあり、幅広い知識が必要とされます。 実際にSQLの実行速度に問題があった場合、どのように対処するのが効率的かを普段業務で使用しているSQLServerの例を簡単に説明したいと思います。 SQLのチューニングには様々な手法がありますが、最も影響が大きいのはインデックスを使用する方法です。 インデックスとはその名の通りデータがどの場所にあるかを示す索引です。 辞書の索引をイメージするとわかりやすいと思います。 例えば辞書で「パフォーマンス」の意味を調べる場合は「索引を開く」→「ハ行を探す」→「目的のページを開く」という手順を踏むと思います。 索引が適切に掲載されていれば辞書の厚さ(データ量)がどれほど多くても検索に掛かる手間(処理時間)は変わりません。 インデックスを適切に設定、利用することはSQLのパフォーマンスを向上させる上で欠かせません。 SQLServerのインデックスには「クラスター化インデックス」と「非クラスター化インデックス」があります。 クラスター化インデックスはテーブルに対して1つしか設定できませんがデータが並び替えられて格納されるため高速に検索することができます。 特に指定していなければプライマリーキーはクラスター化インデックスで作成されます。 非クラスター化インデックスはテーブルに対して複数設定できますが、並び替えは行われない為、クラスター化インデックスに対して検索速度が遅くなります。 特に指定していなければユニークキーは非クラスター化インデックスで作成されます。 作成したインデックスの使用状況を知るためには、SQLServerで管理ツールの実行計画を使用します。 実行計画に表示される情報で特に注意すべ

DNSフェイルオーバー

イメージ
Markdown to HTML 初めまして、ASD堤です。 今回はAWSの DNSフェイルオーバー機能 を利用して、サーバレスなSorryページの構築を紹介したいと思います。 Sorryページとは、Webサイトなどが障害やメンテナンスなどで停止している際に、アクセスしてきた利用者にその旨を告げるページのことです。 DNSフェイルオーバーとは? そもそも、 DNSフェイルオーバー とは何なのかを軽く説明します。 DNSは、たとえば example.com = XXX.XXX.XXX.XXX (IPアドレス) のように、「ドメイン名」と「サーバのIPアドレス等」を紐付けています。 この時に、XXX.XXX.XXX.XXX(Webサーバ)に何らかの障害が発生し、 サービスを継続できない状態に陥った場合に、 example.com = ZZZ.ZZZ.ZZZ.ZZZ (別のIPアドレス) に自動で変更する仕組みを DNSフェイルオーバー といいます。 つまり、あるドメインへのリクエストを受けたサーバに何らかの障害が発生していた場合に、ドメイン名を変更せずにそのドメインへのリクエストの受け先を変更する仕組みのことです。 ※ Route53が返却するIPアドレス 正常時: Primary ServerのIPアドレス 異常時: Secondary ServerのIPアドレス サーバレスなSorryページの構築 以下のような構成で構築していきましょう。 Route53がELBのヘルスチェックのステータスを確認し、ELBがhealthy(正常)ならばELB側のレコードを、ELBがunhealthy(異常)ならばCloudFront側のレコードをアクセス元に返すようになっています。 構築手順 ELB または EC2 ELBやEC2インスタンス等の特別な設定はありません。 S3 S3では以下の対応を行います。 Sorryページ用のBucketの作成 (Bucket名はドメイン名と同様) SorryページのHTMLをBucket直下に配置してアクセス権限をパブリックに変更 CloudFront CloudFrontでは以

ソフトウェア長期保守のための仮想化環境について

こんにちは。福岡事務所の石橋です。 ソフトウェア開発では、OSのサポート期限が切れても長期保守が求められる場合があります。 (業務用ソフトウェアが想定よりはるかに長い期間使われるのは、よくある事です) このような場合、例えばWindows XPやWindows 7(2020年1月にサポート期限が切れます)の開発環境を残しておく必要が出てきますが、サポート期限の切れたOSはセキュリティパッチが提供されなくなるため、インターネットに接続するのは危険です。また、古いPCを開発環境として残しておいても、故障などでそれが失われてしまうリスクがあります。 そこで重宝するのが、仮想化環境です。 仮想化環境とは、簡単に説明すると「ホストOS上で(仮想的な)別のゲストOSを動作させる」ものです。 例えば、Windows 10(ホストOS)上でWindows 7やWindows XP(ゲストOS)を動かすことができます。 Windows 7(Professional版以上のみ)では、「Windows XP Mode」という仮想化環境が無償で提供されていました。これはWindows XPのライセンスを含んでいて、初めからXPインストール済みの状態で利用できます。 一方、Windows 8/8.1/10(Pro版以上のみ)については、「Hyper-V」という仮想化環境が無償で提供されていますが、ゲストOS及びそのライセンスは同梱されていません。ゲストOSのライセンスと、OSインストール作業が別途必要です。 また、PCに付属のWindows(OEMライセンス)は他のPCで使うことができません。 古いWindowsは入手が難しくなるため、あらかじめ確保しておくことが大切です。 ソフトウェア開発は、リリースや検収までで完了ではなく、その後には保守があります。 保守契約が有効な間は開発環境も残っているものですが、お客様の要望により、保守期間満了後も改修や不具合対応が必要になるパターンが意外と発生します。 あらかじめ仮想化環境を活用して備えておくことで、こういった場合に困らない体制を作ることが可能です。 皆さまもこの機会に、仮想化環境の構築を試してみてはいかがでしょうか?

Raspberry PiでIoTをはじめてみませんか?

こんにちは。 熊本事務所の庄村です。 さて、このブログをご覧の皆さん、IoTという言葉はご存知でしょうか? ネットやテレビなどのメディアを通じて、一度は見聞きしたことがあるかもしれません。 昨年2017年はIoT元年ともいわれており、 IT系界隈ではこの分野での動きが大変盛んになっています。 今回は、このIoTについて簡単にご紹介した上で、 IoTの自作がしやすいと注目されている超小型のコンピュータ 「Raspberry Pi」について、特にご紹介したいと思います。 <IoTとは?> IoTは「Internet of Things」の略で、「モノのインターネット」とも呼ばれています。 "アイオーティ"と読みます。 IoTの一例を挙げますと、 外出先から部屋の状況(温度、湿度)などを確認出来るIoT温度計などがあります。 上記の場合、センサーが検出した情報をサーバーに送信・蓄積、 サーバーデータを利用者の端末上で表示しています。 尚、上記の例は、IoTのほんのごく一部であり、実際にはもっと多種多様な活用例があります。 興味をお持ちの方は、IoT 活用 事例などのキーワードでWeb検索してみてください。 <Raspberry Piとは?> 前述のIoT説明では、センサーが検出した情報をサーバーに送信~、としておりましたが、 そこで、センサーとサーバー間の仲立ちの役割を果たすのがRaspberry Piになります。 Raspberry Piは、ラズベリーパイと読み、 英国のRaspberry Pi財団が開発したシングルボードコンピュータのことです。 日本では、ラズパイの愛称で親しまれています。 大きな特徴として超小型で低価格、標準でLANも搭載しており、 各種センサーなどを直接繋ぐことが出来る汎用I/Oポート(GPIO)を搭載している点があります。 このため、Raspberry PiはIoTの自作がしやすいとされています。 尚、Raspberry Piについては、少しWeb検索してみただけでもたくさんの使用例・活用例が出てきます。 また、Raspberry Piはその汎用性の高さから、IoTに限らずホビー目的で利用されている方もたくさんおられます。

LINQを使用し、ソースコードの可読性を高める

こんにちは。福岡事務所の荒平です。 今回はソースコードの可読性を高める方法について説明していきたいと思います。 例えばC#で二つのDataTableを比べ、片方のTableにだけ存在するデータを取得したい、 というとき、皆さんはどのようにして処理を書きますか? ------------------------------------------------------- TableA TableB  果物  在庫数 果物  在庫数 リンゴ    100 リンゴ  130 ミカン  120 バナナ  120 バナナ  140 ブドウ  150 ブドウ  150 このTableAとTableBを比べ、TableAにしか存在しない果物(ミカン)のデータのみを取得したい ------------------------------------------------------- いくつか方法はありますが、このように考えた方もいるのではないのでしょうか? ・for文やforeach文などを二重にループさせ、  if文などで果物が両方に存在するかどうかを判定する しかし、この方法だと以下のようなデメリットがあります。 1. ネスト構造になるため、他の人が見た場合、可読性が低くなる 2. if文が必要になったり、あらかじめTableのレコードの並び順が決まっていないといけないなど、余計なコードが増えたり、前提条件が必要になる そこで、こういった問題を解決するために最近のC#ではLINQを使用します。 ちなみにLINQとはLanguage INtegrated Query(統合言語クエリ)の略で、 データの集合から特定のデータのみを取得したり、検索や集計などをしてくれる機能です。 ということでさっそくLINQを使用してみましょう。 -------------------------------------------------------  var Record = (from rowA in TableA.AsEnumerable()        where !((from rowB in TableB.AsEnumerable()              

CentOSとUbuntuの違い

こんにちは。熊本事業所ヘルスケア事業部の上田です。 今回は、"CentOS"と"Ubuntu"について簡単に紹介したいと思います。 そもそもこの2つはLinuxのディストリビューションと呼ばれる種類を指しています。 Linuxのディストリビューションは似ているようでも全くの別物なので、 どういった特徴があるか?どういった用途向けなのか?と気になる方もいらっしゃるのではないかと思います。 その中でも知名度が高く、昔から使われているCentOSとUbuntuをメリットデメリットに分けて解説したいと思います。 【CentOS】 CentOSはRHEL(Red Hat EnterPrise Linux)と完全互換を目指したオープンソースのLinuxディストリビューションです。 RHELは商用サポート(有償)のあるLinuxディストリビューションです。 シェアはLinux全体の約2割で、用途はRHELと同様企業のサーバーとして利用されていることが多いです。 メリットはサポート期間が最大で10年間と長い為、構築が古くなった環境でも安定して使用出来る点と、 日本語の情報量が多いのでわからない部分があっても調べやすい点です。 デメリットはコマンドによる操作がメインとなるため、知識がないと操作がしにくい点です。 【Ubuntu】 初心者向けに人気が高いLinuxディストリビューションです。 名称は南アフリカのズールー語で"他者への思いやり"を意味しています。 シェアはLinux全体の約4割で、こちらはデスクトップ用途で使われるケースが多いです。 メリットはコマンド操作がほぼ不要で、WindowsやMacと同じ感覚で使用出来る点と、 半年ごとのバージョンアップが行える為、常に最新の状態で利用出来る点です。 デメリットはCentOSと比べてサポート期間が最大でも5年間と短い為、 セキュリティ面を考慮するとバージョンアップを早めに検討しなければいけない点です。 今回紹介したLinuxは2つとも無償で提供されていますので、手軽に使用できるのも利点です。 他にも紹介していないLinuxがありますが、自分の用途に合ったLinuxを使って新しい世界へ飛び込んでみましょう。

サーバの中の魔法のランプ

こんにちは、熊本事務所のau48です。 サーバ構築のアレコレやLinux絡みの記事を発表していきます。 LAMPという言葉をご存知でしょうか。 あの魔法のランプと同じ綴りです。 Webサービスの開発を行う場合、まずは"環境"を構築しなければいけません。 いわゆるサーバのことなのですが、それって何でできてるの? という質問に対しての答えが"LAMP"です。 LAMPとは次のOSやミドルウェアの頭文字を取ったものです。 L...Linux OS。WindowsやMac(現macOS)が有名ですがLinuxも歴史の古いOSです。 ハードウェア含めてコンピュータの基本的な制御を行います。 A...Apache WEBサーバ。コンピュータ内のファイルを外部(インターネット)に公開したり、 外部からの要求でプログラムを実行して表示したりしてくれます。 M...MySQL データベース。ユーザーの情報やその他諸々の情報を蓄積します。 プログラムを通して中身を追加、編集することができます。 P...PHP(ほかにもPerl、Pythonなど) プログラミング言語。Webサイトにログイン機能を追加したり、 問い合わせフォームを設置したり...いろいろなことができます。 この"LAMP"というソフトウェア構成は非常に長い間採用されています。 最近ではLinuxにかぎらずWindowsやMacを使ったり、 ApacheはNginxというソフトを使うこともあるようですが、基本は同じです。 なぜこの構成かというと、これらすべてはオープンソースであり誰でも無償で利用、 また改良することができるからです。 世界中のユーザーによって日々改良、更新が行われており非常に質の高いソフトウェアなのですが、 その反面サポート窓口や保証はありません。 トラブル対応で困ったときは自分で情報を収集して解決しなければいけないという点にはご注意を。 簡単にWEBの世界に飛び込める、魔法のLAMPで願いを叶えましょう。 以上、LAMPについてのお話でした。

AWSの消し忘れ

こんにちは、熊本事務所の菊池です。 先月ほど、社内の研修でAWSは料金が怖くて手が出せないという話がありました。 しかしながら、AWSの一部サービスは毎月ある程度の時間は無料で動かせたりします。 そのため学習で軽く動かす程度ならお金は掛かりません。 そこで、私個人のアカウントでどれだけ料金がかかっていたか確認することにしました。 各機能をざっと触ったぐらいなので500円にも満たないはずです。 11月合計:$46.44 こんなはずではなかった。 明細を見ていくとEC2とRDSが課金の大半を占めていた様子。 詳細(一部抜粋)  EC2   EC2稼働(Unix) :$0.18   ロードバランサー :$17.51  RDS   MySQLインスタンス :$11.34  S3   リクエスト  :$0.02   ストレージ容量 :$0.01 ロードバランサー配下のEC2インスタンスは、お試しで使った後すぐ止めたはずでした。 が、明細に記録された利用時間は1ヶ月フル稼働の約720時間。 ちゃんと消したはずなのになぜ? 後で調べた結果、配下にEC2インスタンスがなくてもロードバランサーは単体で動いており、 アクセスが無くても稼働はしているので料金がかかるということが分かりました。 つまり、EC2インスタンスだけでなくロードバランサーも削除する必要がありました。 11ドル請求されたRDSも似たような感じで、 DBインスタンスを"停止"はさせましたが"削除"はしなかったため、 残っていたストレージの利用料金を取られています。 また、RDSインスタンスの停止は最大7日までという制約があり、知らない間に稼働していた分の請求も見られました。 色々な無駄が発覚しましたが、これらのミスが無ければ全料金が差引き4ドルに満たないことも判明。 母親が無駄に電気を使うなと言っていた理由が分かった気がしました。 AWSはお金がかかるのか?結果としてはお金がかかってしまいました。 正しく使うことができれば安価で色々できるとは思います。 皆さんも不要なAWSリソースは、こまめに消すように気を付けましょう。

ASD、ブログはじめるってよ。

はじめまして、ASD の鮫島です。 ASDでは、従来よりのWindowsアプリケーションの開発に加え、AWSを活用したシステム開発を行なっています。 ■開発実績 今までの開発経験やこれからの開発において得た知識・ノウハウを積極的にアウトプットしていくため、技術系ブログを始めることとなりました。 ブログは継続して更新していくのが難しいところもありますが(ちょっと弱気)、こまめに更新していけるよう頑張っていきたいと思うのでよろしくお願いします。 また、ASDではエンジニア を 募集 しています。 興味のある方はぜひご連絡ください。