More Related Content Similar to 2019年度未踏: 開発者が行ったソースコード修正作業を学習し代行するボット-DevReplay- (20) 2019年度未踏: 開発者が行ったソースコード修正作業を学習し代行するボット-DevReplay-6. 6
tmp = a
a = b
b = tmp
a, b = b, a
ビフォー アフター
a % b != 0 a % b
ビフォー アフター
13. 13
tmp = a
a = b
b = tmp
a, b = b, a
ビフォー アフター
ソースコードの変更履歴からルール生成
14. 14
ルールファイル
Textmate Snippet
tmp = a
a = b
b = tmp
a, b = b, a
“condition”: [
“tmp = $1”,
“$1 = $2”,
“$2 = tmp”],
”consequent”: [
“$1, $2 = $2, $1”],
ビフォー
アフター
ソースコードの変更履歴からルール生成
ビフォー アフター
15. 15
ルールファイル
Textmate Snippet
tmp = a
a = b
b = tmp
a, b = b, a
ビフォー
アフター
ソースコードの変更履歴からルール生成
ビフォー アフター
“condition”: [
“tmp = $1”,
“$1 = $2”,
“$2 = tmp”],
”consequent”: [
“$1, $2 = $2, $1”],
17. export { チョットデキルヒト }
17
プロジェクト
作成者
作成日
変更前
変更後
普及率
リンク
github.com/devreplay/devreplay-pattern-generator/blob/master/sample/matz.json
見逃し疑い
Editor's Notes それでは.「過去のプログラミングを再現する,DevReplay」と題して奈良先端大の上田が発表します.
開発,Developmentを再現ReplayでDevReplay,そのままですね.
特にプログラマの皆さんは明日もお仕事があるかともいますが,よかったらぜひお試しください. 今日来られたプログラマの皆さん,きれいにプログラムを書けていますか?
研究によるとソフトウェア開発の半分はバグ修正や機能改善のメンテナンスだと言われています.
本当はコードを書いたり,機能の設計に時間を使いたいのにもったいないですよね. ですが残念なことにプログラミングには困難がつきものです.
年号を1ヶ月で変える,新人をリーナス・トーバルズ並の即戦力にする.
使ってた技術や言語,APIが更新されてしまう,
こういったこと,誰かがもうやっていることはその誰かにやってもらえたら理想ですよね. 現実は,プログラミングって雑になりますよね,
私も動いたからいいかって思いながら普段プログラミングをしてます.
いいわけがないんですけど. 本題に戻ると今回開発したツールは誰かのgit履歴からその人の開発方法を真似ることができます.
これを使えば,例えばRubyのMatzさんとペアプログラミングをいつでも,無料でできます.
毎日一緒に作業してたらいずれは追いつく,かもしれません.
人間同士で作業するよりもトラブルになりにくいですし,
後で説明しますが,もし気に入らなければ中身を改造することもできます. こちらはVisual Studio Codeというエディタで動かしている様子です. 対応している言語や環境はこちらになります.
みなさんが使われているものもいくつかあるかと思います.
これ 既存ツールは一般的に正しい書き方を教えてくれます.
例えばこれはPythonのソートですが一般的なツールは変数名を小文字にしろとか空白を入れろと教えてくれます.
基本的にはこれで十分です
Devreplayの場合,例えばうちの会社は古いPythonを採用しているから書き直せと教えてくれたりします.転職しましょう
2つを使うことによって一般的にもいいし,個人や会社的にも良いコードを書くことができます. 既存ツールは一般的に正しい書き方を教えてくれます.
例えばこれはPythonのソートですが一般的なツールは変数名を小文字にしろとか空白を入れろと教えてくれます.
基本的にはこれで十分です
Devreplayの場合,例えばうちの会社は古いPythonを採用しているから書き直せと教えてくれたりします.転職しましょう
2つを使うことによって一般的にもいいし,個人や会社的にも良いコードを書くことができます. 既存ツールは一般的に正しい書き方を教えてくれます.
例えばこれはPythonのソートですが一般的なツールは変数名を小文字にしろとか空白を入れろと教えてくれます.
基本的にはこれで十分です
Devreplayの場合,例えばうちの会社は古いPythonを採用しているから書き直せと教えてくれたりします.転職しましょう
2つを使うことによって一般的にもいいし,個人や会社的にも良いコードを書くことができます. DevReplayの利用は4つのプロセスからなります.
とはいえ,それぞれ独立しているので面倒なところは飛ばして,便利そうだなって部分だけご利用ください.
まず,学習.開発者の作業履歴に基づいたルールを生成します.
次に修正,エディタ上でルール違反を検知します.
更にルールは拡張,編集し状況に対応できます.
最後にGitHub上でシェアすることで,知識の共有やレビューに利用できます. DevReplayの利用は4つのプロセスからなります.
とはいえ,それぞれ独立しているので面倒であれば飛ばすことも可能です.便利そうな部分だけをご利用ください.
まず,学習.開発者の作業履歴に基づいたルールを生成します.
次に修正,エディタ上でルール違反を検知します.
更にルールは拡張,編集し状況に対応できます.
最後にGitHub上でシェアすることで,知識の共有やレビューに利用できます. 2つのコード例で示します.
どちらも同じ変数AとBを置き換えるプログラムですが,左側のコードは1行に置き換えれます.
これでチーム全員メモリの心配をせずにプログラミングができます. 学習プロセスではgitで管理したコードの変更履歴を抽象化してルールファイルとして出力します.
変更前がコンディション(条件)で変更語がconsequent(結果)として保存します.
たとえばaやbという変数名,競技プログラミングをしている人以外では使わないかと思いますのでそれを何かしらの変数名として扱います. 学習プロセスではgitで管理したコードの変更履歴を抽象化してルールファイルとして出力します.
変更前がコンディション(条件)で変更語がconsequent(結果)として保存します.
たとえばaやbという変数名,競技プログラミングをしている人以外では使わないかと思いますのでそれを何かしらの変数名として扱います. こちらはそのルールの例です.
ざっくりいつ,だれが,どこのプロジェクトで,どのように変更したのか,それがプロジェクトでどの程度普及しているか,という情報が入っています.
さらに情報が知りたい場合はリンクも用意してあります こちらはそのルールの例です.
ざっくりいつ,だれが,どこのプロジェクトで,どのように変更したのか,それがプロジェクトでどの程度普及しているか,という情報が入っています.
さらに情報が知りたい場合はリンクも用意してあります DevReplayの利用は4つのプロセスからなります.
とはいえ,それぞれ独立しているので面倒であれば飛ばすことも可能です.便利そうな部分だけをご利用ください.
まず,学習.開発者の作業履歴に基づいたルールを生成します.
次に修正,エディタ上でルール違反を検知します.
更にルールは拡張,編集し状況に対応できます.
最後にGitHub上でシェアすることで,知識の共有やレビューに利用できます. エディタで修正する,ここまではいいんですが,小賢しい,賢い開発者はそもそもインストールせずにやりたい放題書いたりします.
そこで,GitHub上で人間の代わりにレビューしてもらえます.これでルールを守らない不届き者も咎めることができます. もう一度このスライド出します.言語も人気なものをサポートし
,VSCode 以外は安定していないのですが,Language Severとしても実装しています DevReplayの利用は4つのプロセスからなります.
とはいえ,それぞれ独立しているので面倒であれば飛ばすことも可能です.便利そうな部分だけをご利用ください.
まず,学習.開発者の作業履歴に基づいたルールを生成します.
次に修正,エディタ上でルール違反を検知します.
更にルールは拡張,編集し状況に対応できます.
最後にGitHub上でシェアすることで,知識の共有やレビューに利用できます. ここでは自動生成では出せない部分にも手が出せます.
例えばなぜ修正すべきか,その修正がどの程度重要かという情報です. ここでは自動生成では出せない部分にも手が出せます.
例えばなぜ修正すべきか,その修正がどの程度重要かという情報です. DevReplayの利用は4つのプロセスからなります.
とはいえ,それぞれ独立しているので面倒であれば飛ばすことも可能です.便利そうな部分だけをご利用ください.
まず,学習.開発者の作業履歴に基づいたルールを生成します.
次に修正,エディタ上でルール違反を検知します.
更にルールは拡張,編集し状況に対応できます.
最後にGitHub上でシェアすることで,知識の共有やレビューに利用できます. ただ最適なプログラミングの書き方って もう少し個人に絞ればブログ,知恵袋のようなサイト,同僚や先生に聞く方法もあります. ここまで行ってもちょっと導入の敷居高いかなと思います.
なので自動生成や手打ち作業をしなくてもサンプルルールを使えるようにご用意いたしました.
各フレームワークだったりをつかえます. これを使えば自分で書かなくともコードを修正できます.
ルールファイル全体で7業しかなくとも,Javascriptやreactのデフォルトルールに加えて,ローカルにある会社のルールも使えます. ここまででいろんなことに使えそうかなと想像できたかと思います.
ただ,理論上でなく実際に使えるのか評価実験を行いました.
主な使い方は4つ程度,授業で提出した課題を教師なしで修正する方法,(it is literally unsupervised learning)
Second is programming contest, もし正しいアルゴリズムを思いついても些細なミスで順位が上下してしまいます.
三番目はJavaのOSSを対象にします.APRツールのState of the artみんなが使っているデータがあるのでそれに従います.
これまでの3つはテストに通るかどうかで ここまででいろんなことに使えそうかなと想像できたかと思います.
ただ,理論上でなく実際に使えるのか評価実験を行いました.
主な使い方は4つ程度,授業で提出した課題を教師なしで修正する方法,(it is literally unsupervised learning)
Second is programming contest, もし正しいアルゴリズムを思いついても些細なミスで順位が上下してしまいます.
三番目はJavaのOSSを対象にします.APRツールのState of the artみんなが使っているデータがあるのでそれに従います.
これまでの3つはテストに通るかどうかで ここまででいろんなことに使えそうかなと想像できたかと思います.
ただ,理論上でなく実際に使えるのか評価実験を行いました.
主な使い方は4つ程度,授業で提出した課題を教師なしで修正する方法,(it is literally unsupervised learning)
Second is programming contest, もし正しいアルゴリズムを思いついても些細なミスで順位が上下してしまいます.
三番目はJavaのOSSを対象にします.APRツールのState of the artみんなが使っているデータがあるのでそれに従います.
これまでの3つはテストに通るかどうかで メッセージは
見える人はちょっと見てほしいんですが,一度でもコミットするとGitHubさんがContributorとして名前の横にタグを付けてくれるんですね
ほとんどTensorFlowの知識ないのに. メッセージは
見える人はちょっと見てほしいんですが,一度でもコミットするとGitHubさんがContributorとして名前の横にタグを付けてくれるんですね
ほとんどTensorFlowの知識ないのに. 今回はこちらのプロジェクト様へプルリクエストを投げてレビューいただきました.
GitHubさんが発表された持っろも人気があるプロジェクトを上から順に選びました.
知らないプロジェクトがほとんどでしたがコントリビューターになれました.
気が向いたら今度使ってみようと思います 今日来られた方には自動生成したルールに頼らずとも自分のルールがある方,
VSCodeなんて新興エディタは苦手だという方もいるかと思います.
DevReplayは,入出力の形式を自由に選べるよう各機能をバラバラに構成しています.
なぜこんな形にしたかというと各機能がまだまだ完全ではなく.
ルール自動生成アルゴリズムのように未完成の研究成果や
VS Codeのように私の趣味に依る部分が大きくそのあたりは今後置き換えていく必要があるからです.
例えば,ルール自動生成スクリプトを回すことすら面倒な場合はサンプルルール集を使えるようにしています.
これも私の基準で集めただけで,専門の人から見ると相当改善点があるかと思います.
また,出力部分も現在はVS CodeとGitHubでサポートしてますがVS Codeに実装したというのは私の趣味で他のいいエディタが発表されるかもわからないので
Language Server Protocolという複数のエディタに同一の機能を提供するシステムとして移植中です.
VS Codeサポートではルールの重要度によって警告の色を変える,ボタン一つで自動修正を行う,
ルールファイルを検索するといった機能を行わせていますが,
Language Server Protocolに移植することでAtom, Vim, Emacs, Eclipseでも同じことができるようになります.
本当は今日までに間に合わせたかったのですがもう一週間ほどお待ち下さい. アウトプット側まずはレビューだけでなく自発的にプルリクエストを投稿したり,
ディストピアっぽいですが模範的な開発者を評価をやろうと思います.
エディタや言語,まだ増やせますよね.
言語についてはC#でもlatexでもエディタ上では使えますがデフォルトルール等はまだ作ってないので作る予定です.
エディタはlanguage serverの実装だけではどうにもならないエディタに,プラグインを個別に作成する予定です. 以上で報告を終わります.最後に左の動画でDevReplayの概要をまとめます.
Npmで使えます.