投稿

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標準のコードとは言い難い。
・この機能を削除したところで、スペース派の心が変わることもないだろう。

 "cmd/gof…

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で管理ツールの実行計画を使用します。
実行計画に表示される情報で特に注意すべき検索方法は以下の3種類です。
・Index S…

DNSフェイルオーバー

イメージ
Markdown to HTML

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

こんにちは。福岡事務所の石橋です。

ソフトウェア開発では、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に限らずホビー目的で利用されている方もたくさんおられます。
海外の例では、Raspberry Piでスターウォーズの「R2-D2」を作った…