自然言語処理におけるソフトウェアの開発と公開

岡崎(東北大学)、吉永(東京大学)、工藤(グーグル)

  1. 岡崎先生の意見:
    • 言語処理100本ノック
    • 大きなプロジェク卜は小さな(基本な)動作から構成される。
    • ソフト開発とかなり違う。(決まっている対象vsアイディア検証)
    • コードレビューが大事。
      • 誰もコーディングのクセがある。他の人のレビューのおかげでクセを治せる。
      • 賢いコード、方法を学べる。
    • 研究成果を可視化する
    • 最適化は完成してから
      • コメント:反省された。最適なアルゴリズムを考えて、実装したらいいけど、考えすぎと研究があまり進まない。
    • 道具、ツールを使え:
      • コメント:反省された。自分で実装できたらいいけど、全部実装したら時間がもったいない。
    • コードを少しずつ書く
      • コメント:結果が間違っても必ず動ける。
    • ディレクトリとファイル名を定形せよ。
    • GITなどのパージョン管理を積極に使え。
    • Make it work, make it right, make it fast. 
  2. 吉永先生の意見:
    • コードをできるだけ公開せよ。
      • 第三者は保証できる。
      • バグを見つけてくれる。
      • 再発見を逃げる
    • 実験コードとソフトウエアコードの違い:
      • わかりやすいvs汎用性がある
      • 研究者対象vs一般ユーザ
      • まず実験コードとして公開し、ソフトウェア化する
    • 実験コードの公開
    • コメント:
      • ソフトウェア化することがかなり大変なので、実験コードと説明ファイルを公開したらいいだろう。もちろん、可読性がすごく大事。
  3. 工藤さんと意見:
    • テストが大事。
    • 依存関係のデバッグ:スタブとモック
    • googletest, unit test, googlemock
    • コメント:
      • デバッグのルールという本がある。
      • デバッグは一番ストレスだ。上手くできたら、スピードアップできる。
      • コメントを積極に使え。
Comments