Talk Information

Technology for reduce a mistake. Accepted #yapcasiaD Vote!

このエントリーをはてなブックマークに追加

Abstract

人間は間違える生き物である

以下の問題を解決するヒントになる話をします:

  • 既存のコードを誤って壊してしまうことがよくある
  • 作業手順が多くよくミスをしてしまう
  • 設定が正しいのかどうかよくわからないので祈りながらdeployをしている

このような問題はなにを引き起こすでしょうか? たとえば、Webアプリケーションの開発においては、誤ったデータベースの変更や決済処理を正しい状態に戻すことは難しいでしょう。 また、iOSやAndroid向けのアプリケーションの開発においては、リリースしてしまったコードを消すことはできません。 ソフトウェアにはこのようなリスクに対する安全性が求められます。

そういった意味での、安全なアプリケーションとはなんでしょうか? 一般的には、安全なアプリケーションであるために、以下のような要素が必要とされると思います。

  • クラッシュしにくい
  • オペレーションを間違えにくい
  • データを破壊しにくい
  • コードを書き換えても壊しにくい

このような安全性を担保するために、どのようなプラクティスがあるでしょうか?

そして、なぜこのような問題が起こってしまうのでしょうか? 自分が無能だから?環境が悪いから?違います。 これらの問題は本来、仕組みによって解決可能な問題です。 人間は間違える生き物です。なので、間違えることを前提に仕組みを構築する必要があります。

本セッションでは安全工学の視点を取り入れつつ、具体的なヒヤリハット事例/ヒューマンエラー事例と共に、安全なアプリケーションを構築する技術とその基本的な考え方について、僕の考えを話します。 なお、セキュリティに関連する話も安全性に大きく関わるところではありますが、本セッションでは時間の都合上扱わない予定です。

トピック:

  • ソフトウェアにおける「安全」とはなにか
    • ハインリッヒの法則
  • 安全性を担保するための考え方
    • フォルトツリー解析
    • ポカヨケ
    • etc..
  • 安全性を担保するための言語機能
    • 型制約
    • Optional
    • etc..
  • 安全性を担保するためのライブラリ
    • strict.pm/warnings.pm
    • Perl::Lint/Perl::Critic/etc..
    • DBIx::TransactionManager
    • etc..
  • 安全性を担保するためのプラクティス
    • assertion
    • defer/guard object
    • max reqs per child
    • 静的解析
    • テストカバレッジ
    • コードメトリクス
    • 継続的インテグレーション
    • etc..

in English

(write it if this talk is accepted)

Talk Details

Venue トラックD (605-606)
Starts On 2015-08-21 15:30:00
Talk Category Applications
Language Japanese
Interpretation (En→Ja) NO
Slide Subtitles English
Talk Duration 60 minutes
Material (Difficulty) Level Beginner
May we take your photo? allow
May we record your talk? allow

Video

Slide