タグ

ブックマーク / thinkit.co.jp (147)

  • 東京から福岡へ、サーキュレーションのCTOが語るエンジニアが福岡に集まる魅力とは?

  • AIを学ぶ前にー「空前のAIブーム」を冷静に捉えなおす

    はじめに 「空前のAIブーム」。昨今のIT業界を取り巻く空気感をあえて一言で表すならば、こんな感じであろうと思います。近頃はIT関係のお偉いさんとお話をしていて「機械学習」「AI」「ディープラーニング」という言葉が話題に挙がらないことのほうが少ないのではないか。そのくらい、昨今のこの空気感にちょっと圧倒されてしまいます。 ブームが起きると高まるのは「熱」。最近のテレビ番組や雑誌、Webメディアを見ていると、まるでAI が世界をひっくり返してしまうのではないか?それこそ、「人の仕事なんて奪い尽くしてしまうんじゃないか?」そんな錯覚に襲われることすらあります。 連載では、いま一度「世間は何に熱狂しているのか」ということを「冷静に」捉えなおしてみようと思います。「熱狂」をしすぎて「質」を見失ってしまう。そもそも、何に熱狂をしているのかを考えてみればよくわからなくなってしまう。これは少し危険な

    AIを学ぶ前にー「空前のAIブーム」を冷静に捉えなおす
  • ユニットテストをしよう

    【最新JavaScript開発~ES2017対応モダンプログラミング】 株式会社インプレスR&Dより発行された「最新JavaScript開発~ES2017対応モダンプログラミング」の立ち読みコーナー第5回です。 ユニットテストは、メソッドや関数など小さなユニット単位に絞り込んだ自動テストです。現代的なプログラミングに欠かせないものです1。 効能としてはコードの信頼性が向上するというのはもちろんですが、何より重要なことはテストのコストが下がることです。手動でテストを毎回行っていたらとても手間がかかりますが、ユニットテストならば勝手にテストをしてくれるので、コードを書き換えるたびにテストをするというような開発スタイルで効率が大幅に向上します。 副次的な効果としてより、良い設計をもたらすという点もあります。これはユニットテストをきちんと行おうとすると、設計もそれに合わせたものになるためです。自然

    ユニットテストをしよう
  • 開発者としての「テスト自動化」の基礎

    はじめに 連載は、開発を加速・効率化させるソフトウェアテストをテーマに解説を進めています。前回の解説で、読者の方々はソフトウェアテストの新たな分類やそのアプローチを知ることができたのではないでしょうか。 今回は、「開発者としての」という視点で「テスト自動化」の実践に向けた基を解説します。なお、ここではテスト自動化を下記のように定義することとします。 「ソフトウェアを使って、テストマネジメント、テスト設計、テスト実行、結果チェックなどのテスト活動の実行や支援をすること(ソフトウェアテスト標準用語集(日語版)Version 2.3.J02)」 その上で、皆さんが開発者にとってのテスト自動化を知り、テスト自動化をどのように実施するかチームで議論・決められるようになることを期待しています。 開発者にとってのテスト自動化のメリット テスト自動化とは人手で行うことをソフトウェアで実施することにな

    開発者としての「テスト自動化」の基礎
  • セキュアなWebアプリケーションについて

    はじめに 連載も、今回で最終回となります。試験番(平成30年4月15日(日))まで時間もあとわずかとなり、皆さんも最後の詰めを行っている時期かと思います。最後まで気を抜かず、知識や考え方の強化を図っていきましょう。 今回は、Webシステム、特にWebアプリケーションに関する問題について解説します。 Webシステムに関する問題 連載でも、Webシステムに関する項目を何度か扱っています。第2回では、攻撃手法の観点でWebアプリケーションの脆弱性やSSLについてまとめました。また、第4回では「Webサーバーのセキュリティ」と題して、試験で問われる傾向をまとめています。これらの解説も是非、見直してみてください。 なお、第4回でも紹介していますが、IPAの「安全なウェブサイトの作り方」 では、Webサイトを安全に維持するための方法が詳しくまとめられています。試験で問われるWebアプリケーション

    セキュアなWebアプリケーションについて
  • 平成29年度午後Ⅱ試験問1:SQL、整合性制約、トリガ、レプリケーション、テーブル設計に関する問題

  • なぜKubernetesが必要なのか?

    はじめに Kubernetesはコンテナ化されたアプリケーションの展開、スケーリング、および管理を自動化するためのプラットフォーム(コンテナオーケストレーションエンジン)です。連載では、Kubernetesを触ったことがない方でもKubernetesのコンセプトを理解し、実際にアプリケーションをコンテナ化して実行することが出来るようになることを目標としています。 ここ数年でDockerを皮切りにコンテナ技術への注目度が非常に高まり、実際にプロダクションでのコンテナ利用事例も増えてきました。プロダクション利用に耐えうるシステムを構築するにはDockerだけでは難しいため、Kubernetesに代表されるコンテナオーケストレーションエンジンとよばれるプラットフォームを利用することが一般的です。Kubernetesの他にもDocker SwarmやDC/OSなどもありますが、執筆時(2018年

    なぜKubernetesが必要なのか?
  • Chatbot開発が捗るFormFlow

    連載の5回目となる今回は、選択肢によるインターフェースを提供するFormFlowを用いて、Chatbotを拡張してみる。 連載の第3回「Chatbotのダイアログ」で紹介したダイアログは対話の分岐が可能で、単一のChatbotのインターフェースで様々なサービスを提供するための重要な機能です。ですが、ユーザーの操作を考慮した場合、必ずしも想定した流れでChatbotと対話してくれるとは限りません。時には直前の選択をやり直したり、最初に戻ってしまったり、あいまいな入力でエラーを起こしたり、複数選択をしたり…… と様々な挙動が想定されます。ダイアログだけを用いてそのすべてに対応するとなると、Chatbotが多機能であればあるほど、開発はより複雑で手間のかかるものとなります。 あらかじめ想定された流れに沿ったかたちでユーザーにChatbotを利用してもらうために、Bot Frameworkでは「F

    Chatbot開発が捗るFormFlow
  • Slackの管理設定

  • Chatbotの概要

    コミュニケーションの新しい形としてChatbotが注目されている。この連載では既存のサービスを利用してChatbotを作成してみる。 Chatbotとは? 「Chatbot」という言葉は、すでに一般的に使われるようになっているので今さらな解説となってしまいますが、この連載を始めるにあたり、復習の意味も込めて「Chatbotとは何か?」を簡単に確認しておきましょう。 ChatbotはChatとBotの造語です。「Chat」はチャット、文字によるコミュニケーション手段の一つです。手紙や電子メールとは異なり、リアルタイム性があるのが特徴です。文字だけではなく、画像、リアルタイムな動画の送信や音声によるチャットも可能です。こうなるともはやチャットというよりはテレビ電話ですね。「Bot」はロボットのことです。一口にロボットといっても定義範囲は広く、鉄腕アトムのような人型ロボットや、人の代わりに何か作

    Chatbotの概要
  • バックアップ・リストアについて知ろう

    はじめに みなさん、こんにちは。前回までの解説でインフラ入門編は終了となります。今回からは、皆さんの関心が高いと思われる技術に特化して解説をしていきたいと思います。 最初のテーマは「バックアップ・リストア」です。システム運用における大きなテーマとなるため、技術的な知識以外に運用の知識も多分に求められる分野です。 バックアップ対象のデータには様々な種類があり、バックアップ・リストア方法にも多くの選択肢があります。そこで今回はシステムにおいてよく利用されている技術を中心に紹介していきます。 バックアップ・リストアとは 1. バックアップとは データ損失に備えてデータを複製しておくことを「バックアップ」といいます。システムは24時間365日動いているため、ハードウェア障害やソフトウェアバグ、人的ミスなどデータを損失する危険性は身近に多くあります。 個人のパソコンにあるデータであれば話は簡単なので

    バックアップ・リストアについて知ろう
  • インフラエンジニアの仕事について知ろう

    はじめに みなさん、こんにちは。連載では、これまでインフラの概要と主要技術を紹介してきましたが、今回はその技術を使用していく中で「インフラエンジニアが直面する様々な問題」という切り口で解説していきたいと思います。 連載のおさらいになりますが、インフラエンジニアは様々なハードウェアやソフトウェアを組み合わせて設計や構築を行っています。この様々な製品や技術の存在がインフラエンジニアという仕事の難しさの一端を担っているのですが、実際の現場ではどのようなことが起きるのでしょうか。 読者のみなさんも耳にしたことがあるかと思いますが、1990年代までは大型汎用機(メインフレーム)が業務システムの主役でした(図1)。メインフレームは今でも大企業や官公庁を中心に使用されていますが、メインフレームメーカの中には製造を停止するところも現れ、徐々にオープン系システムに移行されているのが現状です。ただ、メインフ

    インフラエンジニアの仕事について知ろう
  • GoのWebアプリケーションフレームワーク

    はじめに ここまでGoの概要と、具体的なGoの記法についてご紹介しました。 3回目となる今回は、GoのWebアプリケーションフレームワーク(Web Application Framework、以後WAF)の中から代表的なものをいくつかご紹介し、さらにRevelというフルスタックなWAFをピックアップして、実際に動作する環境を作成します。 前回から引き続き、LinuxMacでの作業を想定して記述していますので、Windowsやその他の環境の方は適宜ご自分の環境に置き換えて実行してください。 また、紹介しているすべてのフレームワークは、GitHubでOSSとして運用されています。最新の活動状況については、各プロジェクトGitHubリポジトリをご参照ください。 GoのWAF紹介 RubyにおけるRuby on RailsPythonにおけるDjangoのようなフルスタックなWAFは、Go

    GoのWebアプリケーションフレームワーク
  • RevertとBlameを使いこなして安全性の高い開発を推進しよう

    前回の記事ではProtected Branchesの機能を使ってシンプルなGitHub Flowに権限管理の味付けをする方法を学びました。 今回はPull Request単位でのRevertやビジュアルなBlame機能について学びましょう。 GitHub Flowに従ってmasterにマージする前のコードレビューやCIを必須にした運用をしていたとしても、誤ったコミットをマージしてしまい、システムテスト時または番環境にて問題になることは、珍しい話ではありません。 そんな時に行いたいのがコミットのRevert(巻き戻し)ですが、Pull Requestをベースとした開発を行っていると、このような時にも恩恵をこうむることができます。 Revertとは Revertとはコミットの巻き戻しのことです。たとえば次のようなコードをコミットしたとします。printの出力文字を変更しています。 - pri

    RevertとBlameを使いこなして安全性の高い開発を推進しよう
  • Deep Learningの習得にはスクラッチでの実装が効果的

    多くの業界からますます注目を集める機械学習・深層学習。2012年、東京大学の松尾 豊研究室においてDeep Learningとはじめて出会った巣籠 悠輔氏は、現在、母校東大の招聘講師としてAIの未来を担う後進の育成に力を入れている。Deep Learningに関する英文による書籍執筆経験もあり、株式会社 情報医療(MICIN, Inc.)※では同社の最高技術責任者(CTO)を務める巣籠氏にお話をうかがった。 ※:機械学習・深層学習を医療分野に応用した新事業の開拓を目指して2015年11月に設立された。MICINは「マイシン」と読む。 Deep Learningとの出会い~2012年、松尾 豊研究室 私がDeep Learningを知ったのは2012年の秋、東大の修士2年で、現在では人工知能の世界で非常に著名な松尾 豊先生の研究室に在籍していました。松尾先生が「Deep Learningはす

    Deep Learningの習得にはスクラッチでの実装が効果的
  • MySQLのチューニングを戦う方へ

    連載もついに最終回となりました。 連載では、MySQLクエリーチューニングことはじめで予告した通り、「チューニング箇所の洗い出しのテクニック」について説明してきましたが、「チューニングの方法」については一切触れませんでした。 「連載ではチューニングそのものの方法については詳しく説明しません。それは見出しの通り「銀の弾丸」などはなく、MySQLのパフォーマンスチューニングは計測と改善を繰り返し行っていくべきものだからです。そのため、特定のケースにマッチする改善の手法よりも、繰り返し使われる計測の手法にフォーカスを当てて説明していきます。」 その理由としてこの一文が全てではありますが、今回は参考までに筆者が考えるチューニングの指標を紹介したいと思います。それがあなたの環境に当てはまるかどうかは、これまでに紹介してきたツールなどを利用して計測してみてください。 チューニングの基方針 基

    MySQLのチューニングを戦う方へ
  • クッキーより便利になったブラウザ標準ストレージ - Web Storage

    TIPS 034:ストレージにデータを保存する TIPS 035:ストレージのデータを取得する TIPS 036:ストレージのデータをツールから確認する TIPS 037:ストレージからすべてのデータを取り出す TIPS 038:ストレージ上のデータを削除する TIPS 039:ストレージにオブジェクトを出し入れする TIPS 040:ストレージの登録/更新/削除を監視する サンプル一式は、会員限定特典としてダウンロードできます。記事末尾をご確認ください。 ストレージは、大きくセッションストレージとローカルストレージに分類できます。両者の違いは有効範囲です。 セッションストレージ(Session Storage)は、ブラウザが起動している間だけ有効です。ブラウザを閉じたタイミングでデータは破棄されますし、異なるウィンドウ/タブ同士でもデータを共有することはできません。 一方、ローカルストレ

  • ブック・インサイド―『Python機械学習プログラミング』学び方ガイド

    記事では、書籍『Python機械学習プログラミング』を読むために必要な知識、読み方等について説明します。 『Python Machine Learning』が2015年9月に米国などで発売。「機械学習の考え方」と「Pythonプログラミングによる実践」をバランスよく解説していると評価され、米国Amazon.comでベストセラー。その日語訳はコラムや脚注、付録が追加され、2016年6月に発売されました。ここでは、書のより効果的な活用法について監訳者が解説します。 『Python機械学習プログラミング』とは 書籍『Python機械学習プログラミング』は、Sebastian Raschka氏によるPythonを用いた機械学習の入門書"Python Machine Learning"の翻訳書です。著者はミシガン州立大学の博士課程で生物統計学(計算生物学)の研究を行っており、scikit-le

    ブック・インサイド―『Python機械学習プログラミング』学び方ガイド
  • JSONBの機能強化

    今回は、PostgreSQL 9.5(以下、9.5)で機能強化されたJSONBについて、実際に動かしながら紹介します。 JSONBデータ型は、PostgreSQL 9.4(以下、9.4)で導入されたJSONデータ(JavaScript Object Notation:テキストベースのフォーマット)をバイナリ形式で格納するためのデータ型です。9.5では、このJSONBデータ型の機能が強化され、新規に関連する複数の関数や演算子等が実装されました。 以下のように定義されたempテーブルを用いて、これら新規に実装された主な関数や演算子の振る舞いを確認してみましょう。 jsonb_set関数 9.4ではUPDATE文を用いて行全体を更新できましたが、特定のメンバ(キーと値の組み合わせ)のみを更新することはできず、変更不要なメンバも含めすべて書き出してUPDATE文で更新するか、複雑なユーザ定義関数を

    JSONBの機能強化
  • 「PostgreSQL 9.5」の新機能

    PostgreSQLとは PostgreSQLはオープンソースソフトウェア(OSS)のデータベース管理システム(DBMS)です。高機能・高性能なエンジンを持ち有用な関数を多く実装するほか、様々な開発言語にも対応するため、技術者にとって扱いやすいDBMSでもあります。機能面でも性能面でも商用DBMSに見劣りしない「OSS DBMSの代表格の1つ」という位置付けです。 またPostgreSQLを利用する上で留意すべきOSSのライセンスは、BSDライセンス(Berkeley Software Distribution License)をベースとした独自の「PostgreSQLライセンス」という形態をとっています。このライセンスは商用・非商用を問わず無償で利用でき、著作権表記とライセンス全文を含めれば改変および再配布は自由となっています。さらにソースコードの公開義務もなく、商用製品への組み込みも容

    「PostgreSQL 9.5」の新機能