PowerPoint プレゼンテーション

Similar documents
PowerPoint プレゼンテーション

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Si 知識情報処理

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

スーパー英語アカデミック版Ver.2

<4D F736F F D208AC888D B836A F C91808DEC837D836A B81698AC7979D8ED A E646F6

JavaプログラミングⅠ

このルールをそのまま正規表現として書くと 下記のようになります ^A[0-9]{2}00[0-9]{3}([0-9]{2})?$ ちょっと難しく見えるかもしれませんが 下記のような対応になっています 最初 固定 年度 固定 通番 ( 枝番 ) 最後 ルール "A" 数字 2 桁 0 を 2 桁 数字

JavaScriptで プログラミング

C言語入門

推奨 web ブラウザについて スマートフォンやタブレットには様々な web ブラウザがあります Android 端末には 標準ブラウザ ios 端末には Safari どちらでも使用できる Y ブラウザ FireFox Google Chrome などの web ブラウザがあります ビット web

Microsoft Word - CygwinでPython.docx

PowerPoint プレゼンテーション

平成21年10月1日

<4D F736F F F696E74202D A81408ED089EF906C8AEE916297CD C C596CD8E8E91808DEC837D836A

◎phpapi.indd

Microsoft PowerPoint - A1-2_株式会社ネクスト_藤澤正通_S _005.pptx

JavaプログラミングⅠ

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

マウス操作だけで本格プログラミングを - 世界のナベアツをコンピュータで - プログラムというと普通は英語みたいな言葉で作ることになりますが 今回はマウスの操作だけで作ってみます Baltie, SGP System 操作説明ビデオなどは 高校 情

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

XAMPP で CMS のお手軽 テスト環境を手に入れよう 2011/5/21 上村崇 1

スライド 1

ガイダンス

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

の手引き Chapter 1 manaba へようこそ Chapter 2 ログイン方法 マイページについて Chapter 3 リマインダ設定 Chapter 4 コース登録 ( 自己登録 ) Chapter 5 manaba の機能紹介 Chapter 6 respon アプリ Chapter

manaba course 出席機能 操作マニュアル

設定をクリックしてください 初期設定をクリックします

PowerPoint プレゼンテーション

ExcelVBA 実技 問題集

1 Word2007 を立ち上げて 表を作って内容を入力し 体裁を整える 1 時間の関係で あらかじめ下記のような簡単な文書を作成して デスクトップにファイル 旅行案内操作前 1 を置いてありますからこのファイルをダブルクリックして開いて下さい (* 時間のある方は末尾に表の挿入方法などを参考に書い

改版履歴 版数 日付 内容 担当 V /2/25 初版発行 STS V //9 サポート環境の追加 STS 2

出力ログ管理ソリューションカタログ

Outlook2010 の メール 連絡先 に関連する内容を解説します 注意 :Outlook2007 と Outlook2010 では 基本操作 基本画面が違うため この資料では Outlook2010 のみで参考にしてください Outlook2010 の画面構成について... 2 メールについて

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

アカウント管理 アカウント管理 利用者のメールアカウントの追加 編集ができます また パスワード ( 管理者 利用者 ) の変更も可能です アカウント管理画面を表示する 利用者のメールアカウントを登録するための画面は 以下の方法で表示します 1 管理者メニューを表示し アカウント管理 をクリックしま

Arduino をドリトルから 制御する教材の試行 鈴木裕貴 1

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

GSLetterNeo vol 年 7 月 形式手法コトハジメ TLA + Toolbox を使って (2)- 熊澤努 sra.co.jp はじめに GSLetterNeo Vol.130 で TLA + Toolbox を紹介しました 今回からより詳しく T

スライド 1

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

eラーニング「事前学習」終了後受講者アンケート

SULMS簡単操作マニュアル

1.はじめに

<4D F736F F D2093C C6791D D F82C68C6791D D834F82C589D282AE95FB96402E646F63>

JUnit 概要 2015/4/16 版今泉俊幸 2015 bbreak Systems 1

Intel MPI Library Linux

1. 開発ツールの概要 1.1 OSS の開発ツール本書では OSS( オープンソースソフトウェア ) の開発ツールを使用します 一般に OSS は営利企業ではない特定のグループが開発するソフトウェアで ソースコードが公開されており無償で使用できます OSS は誰でも開発に参加できますが 大規模な

管理者マニュアル

kiso2-03.key

はじめに Microsoft Forms( 以下フォーム ) は 九州産業大学の学生及び教職員が利用できる Office365 の機能の一つです アンケートやクイズ ( テスト ) を簡単な操作で作成することができます 作成したアンケートやクイズは マルチデバイスでの回答が可能で 回答は即時集計され

9 WEB監視

PowerPoint Presentation

============================== < 第 6 章 > 高校生 大学生 社会人の反応 ============================== 本調査研究では 高校生が社会に出ていく上での実効性のある資質 能力の重要性が感じられ また 調査問題そのものについての興味 関

manaba course 2.91   バージョンアップ

学習者用クイックスタートガイド

MVP for VB が語る C# 入門

SOC Report

PowerPoint プレゼンテーション

Transcription:

コーディング力向上施策 湯川敦

自己紹介 項目 氏名 説明 湯川敦 役職特になし ( 名前だけの取締役 ) 入社 2003 年 9 月 ( 契約社員時代含む ) 前職 ゲーム会社 ( ぷよぷよを作った広島の会社 1997 年倒産 2001 年会社再建断念 ) の Web サイト制作 Perl での CGI スクリプト制作 Java ミニゲーム制作など 1

はじめに (3P) 1 紹介したいテーマその1(5P) 2 紹介したいテーマその2(7P) 3 紹介したいテーマその3(7P) 4 おわりに (3P) 5 2

はじめに 以前の帰社日で紹介された評価シート中で 1~2 年目の目標として 年間 1 万ステップのコーディングとあった ( と記憶 ) 私の現場に配属された新人技術者に対しては かなりの間 コーディングの機会を与えられなかった 3

はじめに 新人技術者に関しては 最初の頃はテスト担当となることが多く いきなりコーディングの機会を与えられることは少ないと思われる 研修で色んな知識を覚えた後 仕事でコーディングさせてもらえるまでに 時間が空いてしまうと コーディングの感覚を忘れてしまうかもしれない 4

はじめに 発表の目的 ある程度楽しみつつ コーディング力をつけられるようなサイトなどを紹介したいと思います 対象者 コーディング力を向上させたい人 そういう人を教育する立場の人 強い奴を探している人 ( コーディング的に ) 5

はじめに (3P) 1 オンライン実行環境 (5P) 2 紹介したいテーマその2(7P) 3 紹介したいテーマその3(7P) 4 おわりに (3P) 5 6

オンライン実行環境 オンライン実行環境とは? ブラウザ上で プログラムソースをコンパイルして実行することができるサイトがあります おススメ理由 書いたコード動かすまでの労力 ( コスト 手間 ) が圧倒的に低いです 色んな機能的制約はありますが 標準入力 標準出力は使えるので プログラミング言語の初歩的な学習にはかなり向いています 7

オンライン実行環境 オンラインの実行環境の紹介 IDEONE 有名 ( 後で紹介します ) http://ideone.com Paiza けっこう機能はいいが 転職サイト http://paiza.jp/ Wandbox API の制約が緩いのでいろいろカスタマイズできそう http://melpon.org/wandbox/ Wandbox API https://github.com/melpon/wandbox/blob/master/kennel2/api.rst 8

オンライン実行環境 こぼれ話 IDEONE をどこで区切るかで みんな迷っている? ideone で検索すると第二検索ワードに 読み方 が出てくる IDE と ONE で切って アイディーイーワン が正解らしい http://b.hatena.ne.jp/entry/242177283/comment/sh19910711 9

オンライン実行環境 IDEONE の機能紹介 ここにソースコードを入力 言語が選択できる ( めっちゃ多い ) ここに標準入力として与えられる文字列を入力 実行ボタン コンパイルして実行 標準出力の結果が表示される 10

オンライン実行環境 IDEONE で利用可能な言語 popular Bash C (gcc-5.1) C# C++ 5.1 (gcc-5.1) C++14 (gcc-5.1) Haskell Java Java7 Objective-C (gcc-5.1) Pascal (fpc) Pascal (gpc) PHP Python Python 3 Ruby SQL VB.NET others Ada Assembler (gcc-5.1) Assembler (nasm-2.11.05) AWK (gawk) AWK (mawk) bc Brainf**k C (clang3.7) C++ (clang3.7) C++ (gcc4.3.2) C99 strict (gcc-5.1) CLIPS Cloujure COBOL COBOL 85 CoffeeScript Common Lisp D (ldc 0.14) D (gdc 5.1) D(dmd) Elixir Erlang F# Factor Falcon Fantom Forth Fortran Go Groovy Icon Intercal JavaScript (rhino) JavaScript (spidermonkey 24.2) Lua Nemerle Nice Nim Node.js Objective-C (clang 3.7) Ocaml Octave Oz Perl 6 PicoLisp Pike Prolog (gnu) Prolog (swi) Python (Pypy) R Rust Scala Scheme (chicken) Scheme (guile) Smalltalk Tcl Text Unlambda Whitespace 11

はじめに (3P) 1 オンライン実行環境 (5P) 2 オンラインジャッジサイト (7P) 3 紹介したいテーマその3(7P) 4 おわりに (3P) 5 12

オンラインジャッジサイト オンラインジャッジサイトとは? サイト上で プログラミングに関する問題が出題され 回答として プログラミング言語を提出し 評価を受ける形式のサイト 初歩的な学習向けの問題から 高度なアルゴリズムを駆使する問題まで 様々なレベルのものがある おススメ理由 初心者は学習用として 経験者は腕試しとして 色んなスキルの技術者にとって使えます スポーツでいうと 筋トレみたいなもの? 13

オンラインジャッジサイト オンラインジャッジサイトの紹介 AIZU ONLINE JUDGE( 日本で有名 )( 後で紹介します ) http://judge.u-aizu.ac.jp/onlinejudge/ PKU ONLINE JUDGE( 北京大学 )( 世界的に有名 ) http://poj.org/ Code-IQ 転職サイトなのであまり https://codeiq.jp/ Paiza 転職サイトなのであまり http://paiza.jp/ yukicoder http://yukicoder.me/ 14

オンラインジャッジサイト Aizu Online Judge の機能紹介 会津大学で開発されたオンラインジャッジシステム 色んな書籍で取り上げられており 日本では一番の有名どころ 無料ユーザ登録のうえ ログインが必要です 問題セット あらかじめ用意された問題に解答していくことができます ランキング ユーザの回答数ランキングが閲覧できます ステータス ログインすれば他の方の投稿状況 ソースコードが見れます コンテスト 定期的にプログラミングコンテストも開催されているようです コース コース別の問題がまとめられています こちらから始めるのが吉 15

オンラインジャッジサイト 問題の例 1( 初心者向けの最初の問題 ) http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=itp1_1_a 問題文 ( 前略 ) "Hello World" と標準出力にプリントするプログラムを作成してください ( 後略 ) 入力この問題に入力はありません 出力 "Hello World" と一行に出力してください 時間制限 :1 秒 メモリ制限 :65536KB 16

オンラインジャッジサイト 問題の例 2( 初歩的な問題から抜粋 ) http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=itp1_4_a 問題文 2 つの整数 a と b を読み込んで 以下の値を計算するプログラムを作成して下さい : a b : d ( 整数 ) a b の余り : r ( 整数 ) a b : f ( 浮動小数点数 ) 入力 1 行に 2 つの整数 a, b が与えられます 出力 d, r, f を 1 つの空白で区切って 1 行に出力して下さい f については 0.00001 以下の誤差があってもよいものとします 制約 1 a, b 10 9 入力例 3 2 出力例 1 1 1.50000 時間制限 :1 秒 メモリ制限 :65536KB 17

オンラインジャッジサイト 問題の例 3( パソコン甲子園 2003 より ) http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0009&lang=jp 問題文 6 桁以下の正の整数 n を入力し n 以下の素数がいくつあるかを出力するプログラムを作成して下さい ただし 素数とは 1 と自分自身でしか割り切れない正の整数のうち 1 をのぞいたものをいいます 例えば 10 以下の素数は 2, 3, 5, 7 です 入力複数のデータセットが与えられます 各データセットに n (1 n 999,999) が 1 行に与えられます 入力の最後まで処理して下さい データセットの数は 30 を越えません 出力各データセットごとに n 以下の素数の個数を 1 行に出力して下さい 入力例 10 3 11 出力例 4 2 5 時間制限 :1 秒 メモリ制限 :65536KB 18

オンラインジャッジサイト その他 先に紹介した Paiza では ゲームコンテンツもあります ゲームの傾向にやや偏りがありますが 興味のある方はどうぞ プログラミングで彼女をつくる ( オンラインジャッジ中級クラスの問題まであるようなので それなりに手ごたえはありそうです ) https://paiza.jp/poh/ando 恋するハッカソン ( やってないからわからないけど プログラミングで彼女を作る に近い感覚のようです ) https://paiza.jp/poh/hatsukoi コードガールズコレクション ( 簡単すぎてあまり役に立たなさそう ) https://paiza.jp/cgc 19

はじめに (3P) 1 オンライン実行環境 (5P) 2 オンラインジャッジサイト (7P) 3 プログラミングコンテスト (7P) 4 おわりに (3P) 5 20

プログラミングコンテスト プログラミングコンテストとは? オンラインジャッジサイトと同様の形式で数問出題され 問題ごとの配点と トータルの時間制限がつく形が一般的です 競技プログラミングと呼ばれ 一つのジャンルを形成しています 上級者向けすぎるようにも思うかもしれませんが 易しいレベルのコンテストもあります 21

プログラミングコンテスト おススメ理由 スポーツでいうと 文字通り 競技会 大会のようなもの レーティングなど実績が数値化されるので スポーツのような感覚で楽しめる上 自身の成長が実感しやすい 制限時間内に問題を解くことが プレッシャーのある中で冷静かつ迅速に最適な方法を考える訓練になり 障害対応力や問題解決力の向上に役立つ 高度なものになると アルゴリズムの専門知識や計算量を意識することが必要で こんなの業務で使うことあるのか? というほど難易度が高くなるが コーディング力向上の訓練としては非常に役立つ 22

プログラミングコンテスト プログラミングコンテストサイトの紹介 TOPCODER ( 英語 ) https://www.topcoder.com/ 参加者は成績をもとに 6 段階に格付けされる Wihite Gray Green Blue Yellow Red 最高位の RedCoder の称号は全会員の上位 0.1% 日本人 RedCoder は 10 人程度 ほぼ東大らしい 回答後に 他人のコードのバグを指摘すると得点がもらえるというフェーズがあり ユニークだが緊張感がある CODEFORCES( 英語 ) http://codeforces.com/ AtCoder( 日本語 ) ( 後で紹介します ) https://atcoder.jp/ 日本語なので参加しやすいと思います 23

プログラミングコンテスト AtCoder の紹介 日本語なので 入りやすいと思います 平均週に 1 回 ( 外部主催を含め ) なんらかのコンテストが開催されています AtCoder 主催のコンテストは 3 種類 1. AtCoder Beginner Contest 1 2 問目は初級者にも十分解ける 3 4 問目は中級向け 問題によっては手ごわい 2. AtCoder Regular Contest 中 ~ 上級向け 十分時間があれば解けそうだが 限られた時間で全問解答するには 傾向と対策が万全でないと無理 3. AtCoder Grand Contest エキスパート向け 高度なアルゴリズムの知識が必須 Web 業界の業務レベルでは太刀打ち不可 腕に覚えのある人が本気で取り組まないと無理 24

プログラミングコンテスト 問題の例 1(AtCoder Beginner Contest 046 の 1 問目 ) http://abc046.contest.atcoder.jp/tasks/abc046_a 問題文シカの AtCodeer くんは ペンキをこれまでに 3 つ買いました おととい買ったペンキの色は a, 昨日買ったペンキの色は b, 今日買ったペンキの色は c です 各ペンキの色は 1 以上 100 以下の整数で表されます AtCodeer くんはわすれんぼうなため 同じ色のペンキを買ってしまっていることがあります AtCodeer くんが買ったペンキの色の種類の個数を教えてあげてください 入力入力は以下の形式で標準入力から与えられる a b c 出力 AtCodeer くんが買ったペンキの色の種類の個数を出力せよ 入力例 1 3 1 4 出力例 1 3 入力例 2 3 3 33 出力例 2 2 制約 1 a, b, c 100 時間制限 :2 秒 メモリ制限 :256MB 25

プログラミングコンテスト 問題の例 2(AtCoder Grand Contest 007 の 6 問目 ) http://agc007.contest.atcoder.jp/tasks/agc007_f 問題文シックの仕事はコピー取りです ある日 シックは上司から英小文字からなる長さ N の文字列 S 0 を受け取りました ( この日を 0 日目とします ) これ以降 i 日目の仕事は 文字列 S i 1 を S i にコピーすることです 以下 S i の j 番目の文字を S i [j] と表します シックはまだこの仕事に慣れていません 毎日 文字列を先頭の文字から順に書き写していくのですが 正しい文字の代わりに誤って直前に書いた文字と同じ文字を書いてしまうことがあります すなわち S i [j] は S i 1 [j] または S i [j 1] のどちらかと等しくなります ( ただし 文字列の先頭の文字を書き間違えることはありません すなわち S i [1] は必ず S i 1 [1] と等しくなります ) 二つの文字列 S 0 と T が与えられます S i が T と等しくなる可能性があるような最小の整数 i を求めてください もしそのような i が存在しなければ 代わりに -1 と答えてください 26

プログラミングコンテスト 前ページのつづき 制約 1 N 1,000,000 S 0 と T の長さはともに N である S 0 と T の長さはともに英小文字のみからなる入力入力は以下の形式で標準入力から与えられる N S 0 T 出力 S i が T と等しくなる可能性のあるような i が存在するならば そのような i のうち最小のものを出力せよ そのような i が存在しなければ 代わりに '-1' と出力せよ 入力例 1 5 abcde aaacc 出力例 1 2 S0=abcde, S1=aaccc, S2=aaacc のように S2=T となる可能性が存在します 入力例 2 5 abcde abcde 出力例 2 0 湯川補足 : 最初から一致している 入力例 3 5 acaa aaca 出力例 3 2 湯川補足 : S 0 =acaa S 1 =acca S 2 =aaca 時間制限 :2 秒メモリ制限 :256MB 27

プログラミングコンテスト 参加する場合のポイント ( 初級 ) コーディング自体に慣れるため たくさんの問題をやってみましょう ( 中級 ) 要求を解釈してコーディング内容に落とし込む訓練になります ( 上級 ) アルゴリズム 計算量も踏まえた最適コーディングを素早く見つける戦いになります 腕に覚えのある人は挑んでみましょう ( きっと上には上がいることが自覚できるでしょう ) 共通のポイント 現場でのコーディングルール ( 適切なコメントや可読性 ) をなるべく外さないよう意識しましょう 時間制限に引っ張られて汚いコードを書くのでなく 時間制限があるからこそ 整理してコードを組むことが重要です なお トップクラスの人たちのソースコードは とてもきれいです 28

はじめに (3P) 1 オンライン実行環境 (5P) 2 オンラインジャッジサイト (7P) 3 プログラミングコンテスト (7P) 4 おわりに (3P) 5 29

おわりに ( 総括 ) ここに挙げたサイト以外にも いろんな類似のサイトで面白そうなものもあるようなので 興味のある人はいろいろ探してみるのもいいかと思います いろいろ見て オンラインジャッジや 競技プログラミングは 大学生が中心層なのかな という印象を受けました ただ Code-IQ や Paiza など 転職系サイトでもこの仕組みを利用したものがありますし 社会人向けとしても学習 スキルアップ等で活用できる余地がありそうに思います 個人的実感では 私の前職ゲーム会社のプログラマはシステム屋の比にならない程コーディング力が高いと感じます それは 書くコード量 あとはいかに楽しみながらやれるかがポイントなのかな? と思います 30

おわりに ( 個人的妄想 ) Wandbox API などを使えば 独自の簡易オンラインジャッジサイトを作れそう? Web 系 SE 向けに特化したオンラインジャッジサイト作ると面白いかも? ( すでにあったらごめんなさい ) 問題例 1: 与えられた入力 ( 英文字列 ) を URL エンコードして出力せよ 問題例 2: 与えられた入力 ( 英文字列 ) がメールアドレスとして正しいければ True そうでなければ False と出力せよ メールアドレスの妥当性は RFC-822 に沿って判定せよ 31

おわりに ( 個人的妄想のつづき ) 前ページの仕組みを社内向けのサイトとして作れないだろうか? 社員 研修生は誰でも問題投稿 回答 ( ソース ) 提出 および他者の回答の閲覧およびレビューが可能な 技術交流サイトっぽくできないか? 汎用的に業務で使えそうな処理を問題化して社員にソースコードを競わせて 一番早くて見やすいソースを全社員が共有 流用できると技術者にも会社にも有益? 現場のソースコードのコピペ等 機密情報の漏洩のリスクを考えると 現実的には現場の技術者が回答者として参画するのは危険か? 回答は研修生のみ 現場の技術者は問題考案とレビューのみ という形なら 研修生にとっては 現場の技術者のレビューが受けられるサイトとしていいかも 32

ご清聴ありがとうございました 33