狠狠撸

狠狠撸Share a Scribd company logo
プログラマのための
   作?文?入?門

        伊藤敬彦

株式会社プリファードインフラストラクチャー ?

      2012年年 ?5?月 ?24?日 ?
?自?己紹介

l??   奈奈良良先端?大情報科学研究課博?士後期過程修了了
l??   ファストサーチ社で?言語処理理コンポーネントを開発
l??   ミクシィで?大規模データマイニング技術の調査、
      開発を?行行う
l??   Twitter ?アカウント:takahi_?i
l??   そろそろ ?34 ?歳




                  2
準備:プログラマも?文書を書く

l??   プログラマは?自然?言語を執筆(作?文)する機会が多い

l??   プログラマが書く?文書の種類
      ?? 感想?文、?小説
      ?? 技術?文書(マニュアル、FAQ、?口答発表)

l??   作?文は重要:コミュニティを?大きくする、ユーザ獲得




                    3
準備:プログラムを取り巻く状況

l??   プログラムの品質向上への取り組みは美徳とされて
      いる。
      l?? 具体的な取り組み:ペアプログラミング、コード
          レビュー、コードのシェアリング、コードインスペ
          クションツール

l??   規約(守ることが望ましいルール)が存在する:
      l?? 変数の命名
      l?? 関数の??長さ
      l?? 変数のスコープ
      l?? インデント
      l?? …

                   4
準備:技術?文書を取り巻く状況

l??   プログラムと違って?文書の品質については議論論され
      ない。
      l?? ?文の善し悪しに関する具体的な指針の共有が無い。




l??   読みやすさが向上しない。
l??   技術、知識識の伝搬が阻害される。
      l?? 例例:
           l?? 翻訳された本が理理解できず結局原著を読む。

           l?? マニュアルが理理解できずハマる。


                     5
本発表のテーマ

l??   悪い?文のグループ化と各グループへの解決策を考える。
l??   悪い?文となってしまうポイントをプログラミングの規
      約から考察する (こじつけてみる)。

      文書            プログラム
      マニュアル、論論?文、仕様書、実?行行ファイル、フレームワー
      技術ブログ          ク
      章             ライブラリ
      節             クラス
      パラグラフ
      ?文            メソッド
      単語            演算?子、変数、シンボル

                      6
悪い?文の種類

?自然?言語           プログラムの視点では
??長い?文           ??長い関数

代名詞の多?用          ?一時変数の多?用
新単語が直後に利利?用されな   変数のスコープが??長い
い
専?門?用語のフォローがない   引数の意味が記述されていな
                 い
助詞の曖昧性           変数名


??   以下、各悪い?文の紹介と解決?方法について述べてゆく。
                 7
問題:?文の??長さに起因する可読性の悪化

?文が??長くなると. . .
   l?? 可読性が損なわれる
        l?? プログラムにおける??長い関数と同じ

   l?? 意図が理理解できない?文になりやすい
   l?? 検証 (レビュー) に時間がかかる




                   8
问题例例:??长い?文




   原?文:サポートベクタマシンはパーセプトロ
   ンやロジステッィク回帰アルゴリズムのよう
   な、?二値分類器であるが、性能はそれらに対
   して?高いといわれているだけでなくさらに
   カーネル法を利利?用することで?非線形の問題に
   対応できるという利利点をもつ。




               9
解決:?文を分ける

サポートベクタマシンは?二値分類器である。


?二値分類器にはパーセプトロンやロジスティク回帰が有名であ
る。


ロジステッィック回帰などの?二値分類器にくらべ、サポートベ
クタマシンは?高い精度度をほこる。


さらにサポートベクタマシンは、カーネル法を利利?用することで
?非線形問題を処理理できる。
               10
??長?文が発?生する状況

l??   複数のトピックを?一つの?文で記述する
l??   不不要な単語(句句)を追加する




                   11
問題:代名詞の多?用による曖昧性

代名詞は?文の曖昧性        ?一時変数を利利?用したプログラム
を?高める。            def get_results(value):
  l?? ?一時変数を多?用
                    tmp_var = value * value
      したプログラム       tmp_var = tmp_var – value
      と同じ           return tmp_var




                   12
問題例例:代名詞に起因する曖昧性


原?文:決定?木やサポートベクタマシンは分類器である。それは
カーネル法を利利?用できる利利点がある。


 問題:“それ”とは?
   l?? 決定?木、サポートベクタマシン、分類器?




                 13
解決:代名詞に起因する曖昧性


改善後:決定?木やサポートベクタマシンは分類器である。分類
器の中でもサポートベクタマシンはカーネル法を利利?用できる利利
点がある。



 解決:“それ”をサポートベクタマシンで置き換える
   l?? 冗??長になっても名詞を利利?用した?方が良良い(場合が多い)




                   14
新しいトピック(専?門?用語)が利利?用されない

l?? ?文の中に出て来た新しいトピック(専?門?用語)が即
    座に利利?用されない。
l?? プログラム的には変数のスコープが??長いという問題




               15
問題例例:新しいトピック(専?門?用語)が利利?用され
ない

原?文:サポートベクタマシン(SVM)は?非常に?大きな計算量量
で知られている。SVMの性能のよさはよく知られている。最
近になって計算量量 O(N) のアルゴリズムも提案された。



 問題点:”計算量量”というトピックが出現したが、直後の
 ?文で利利?用されない




                16
解決:新しいトピック(新単語)が利利?用されない



改善後:サポートベクタマシン(SVM)は?非常に?大きな計算
量量で知られている。最近になって計算量量 O(N) のアルゴリズム
も提案された。



  解決法:間に?入っている?文を消す




                17
問題:新トピック(新語)に解説がない

?文中で出て来た新語に解説を加えていないため。読者が
置き去りになる。
  l?? 特に?口答発表では致命的な問題




             18
問題例例:初出のトピック(専?門?用語)に解説がない



原?文: ?Localtiy Sensitive Hashing は類似するインスタンスの
ペアを抽出します。ではアルゴリズムの内容について解説しま
す。



 問題点:インスタンスという初出の単語に解説がない




                      19
解決:初出のトピック(専?門?用語)に解説がない



改善: ?Localtiy Sensitive Hashing は類似するインスタンスの
ペアを抽出します。ここでインスタンスとは…




 解決:インスタンスの解説を追加




                     20
助詞に起因する曖昧性

l??   助詞を連続で利利?用すると、接続の優先順位が問題に
      なる。
l??   意味が分からない?文ができやすい
      l?? 参考:どう書くかー理理科系のための論論?文作法 ?杉原厚
          吉




                     21
問題:助詞に起因する曖昧性




原?文:?人?工の?言語の処理理


 曖昧
   l?? ?人?工の?言語 → の →? 処理理
   l?? ?人?工? → の ?→? ?言語の処理理




                      22
解決:助詞に起因する曖昧性




解決後:?人?工?言語の処理理


 l??   結合させたい名詞間の助詞を削除する

 l??   注:助詞による曖昧性は他にも?色々ある。。。




                   23
そのほかの問題

l??   形容詞の多?用
l??   接続詞の多?用、誤?用
l??   ?口語
l??   語尾
l??   ?用語の統?一
l??   ?大きな単位の構成?方法
       l?? パラグラフ、節
       l?? ?口答発表?用スライド




                         24
現実での取り組みとあったらいいな

l??   現実
      l?? ?文書をバージョン管理理システムで管理理
      l?? ?文インスペクション(Word, ISpell)
      l?? 規約の作成


l??   夢
      l?? テスト駆動作?文 (Test Driven Writing)?
      l?? 推敲、校正中に?文書を壊さないようにするにはど
          うすれば良良いのか。。。




                        25
まとめ

l??   プログラミングの視点から作?文する際の問題を列列挙した

l??   プログラムを育てるように、?文書も育てる




                  26
最後に

プログラマの必読書
  l?? 理理科系の作?文技術




                   27

More Related Content

作文入门