Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
技術力向上のためのコードレビューのススメ/#hiraba-tech-night-201805
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Masatoshi Moritsuka
May 25, 2018
Programming
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
技術力向上のためのコードレビューのススメ/#hiraba-tech-night-201805
Masatoshi Moritsuka
May 25, 2018
More Decks by Masatoshi Moritsuka
See All by Masatoshi Moritsuka
拙者、『型は欲しいが型は書きたくない』者たちとの和睦を結び、るびぃにおける型の領地安堵を実現せんと欲す者也 #sekigahara01/sekigahara01
sanfrecce_osaka
4
2.6k
Rails の CLI ツールの書き方/writing-rails-cli-tool
sanfrecce_osaka
0
86
Time.zone.parse('dark')/time-zone-parse-dark
sanfrecce_osaka
0
140
外部APIが絡むテストをちょっといい感じに書く/a-little-nice-writing-external-api-testing
sanfrecce_osaka
0
38
gem_rbs_collection へのコントリビュートから始める Ruby の型の世界/contributing-gem-rbs-collection
sanfrecce_osaka
0
650
Rails と人魚の話/rails-and-mermaid
sanfrecce_osaka
0
500
パターンマッチ使ってるかい?(kyobashi.rb)/use-ruby-s-pattern-matching-on-kyobashi-rb
sanfrecce_osaka
0
300
ApplicationController の継承を分割してエラーを減らした話/dividing-application-controller
sanfrecce_osaka
1
430
Input object ではじめる入力値検証/input-value-validation-using-input-object
sanfrecce_osaka
0
620
Other Decks in Programming
See All in Programming
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
620
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
160
Foundry Localでエージェント開発
seosoft
0
190
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
0
260
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
120
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
180
Java 27新機能 / Java 27 new features
kishida
2
120
スマート反転とウェブアクセシビリティ
camiha
0
200
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
340
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
250
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
270
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
200
Featured
See All Featured
How to make the Groovebox
asonas
2
2.4k
The agentic SEO stack - context over prompts
schlessera
0
930
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
830
Discover your Explorer Soul
emna__ayadi
2
1.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Building an army of robots
kneath
306
46k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Six Lessons from altMBA
skipperchong
29
4.5k
Transcript
ٕज़ྗ্ͷͨΊͷ ίʔυϨϏϡʔͷεεϝ ௩ ਅ
ࣗݾհ ➤ ௩ ਅ ➤ RailsϓϩάϥϚʢ༧ఆʣ ➤ ࠷ۙͷؔ৺ࣄ ➤ ϑϩϯτΤϯυ
➤ React ➤ Vue ➤ ϞόΠϧΞϓϦ ➤ React Native ➤ Twitterɿ@sanfrecce_osaka
ϓϩάϥϛϯάͷษڧ๏ ➤ ࣄ ➤ ֶशαʔϏε ➤ εΫʔϧܥ ➤ WebαʔϏεܥ ➤
νϡʔτϦΞϧ ➤ ٕज़ॻɾυΩϡϝϯτ ➤ ษڧձɾίϛϡχςΟͷࢀՃ ➤ ίʔυϨϏϡʔΛड͚Δ
ίʔυϨϏϡʔͷར ➤ ٕज़ྗΛ্͛ΔҰ൪ޮ͕͍͍ษڧ๏ ➤ ίʔυ͕͖Ε͍ʹͳΔ ➤ Βͳ͔ͬͨΠσΟΦϜϝιουΛΔ͜ͱ͕Ͱ͖Δ ➤ ໋໊͍͍๏͕ΕΔ ➤
ྑ͍ίʔυͷॻ͖ํ͓࡞๏͕Θ͔Δ ➤ ࣮ܦݧະܦݧͷਓֶੜͰܦݧͰ͖Δ
۩ମྫʢίʔυϨϏϡʔલʣ 1 | # frozen_string_literal: true 2 | 3 |
require 'rake/clean' 4 | 5 | namespace :rubocop do 6 | desc 'ରϑΝΠϧͷจࣈྻΛΠϛϡʔλϒϧʹ͢Δ' 7 | task :add_frozen_string do 8 | LIST_NAME = 'target_list.txt' 9 | CLEAN.include(LIST_NAME) 10 | sh %(bundle exec rubocop | grep "Missing frozen string" | cut -d: -f 1 > #{LIST_NAME}) 11 | File.open(LIST_NAME, 'r+') do |list| 12 | list.each_line do |file_path| 13 | File.open(file_path.chomp, 'r+') do |target| 14 | lines = target.readlines 15 | inserted = "# frozen_string_literal: true\n\n" 16 | if %r{!/usr/bin/env ruby}.match?(lines.first) 17 | lines.insert(1, inserted) 18 | else 19 | lines.unshift(inserted) 20 | end 21 | target.rewind 22 | lines.each { |line| target.write(line) } 23 | end 24 | end 25 | end 26 | Rake::Task['clean'].execute 27 | end 28 | end
۩ମྫʢίʔυϨϏϡʔޙʣ 1 | # frozen_string_literal: true 2 | 3 |
namespace :rubocop do 4 | desc 'ରϑΝΠϧͷจࣈྻΛΠϛϡʔλϒϧʹ͢Δ' 5 | task :add_frozen_string do 6 | file_path_list = `bundle exec rubocop | grep "Missing magic comment" | cut -d: -f 1`.chomp.split('\n') 7 | ADDITIONAL_LINE = "# frozen_string_literal: true\n\n" 8 | file_path_list.each do |file_path| 9 | lines = File.readlines(file_path) 10 | if %r{#!/usr/bin/env ruby}.match?(lines.first) 11 | lines.insert(1, ADDITIONAL_LINE) 12 | else 13 | lines.unshift(ADDITIONAL_LINE) 14 | end 15 | File.write(file_path, lines.join('')) 16 | end 17 | end 18 | end
ϨϏϡʔΛड͚ΔΛ࡞Δ ➤ ΠϕϯτΛاը͢Δ ➤ ίϛϡχςΟΛ࡞Δ ➤ ϨϏϡʔΠ͚ͩͰͳ͘ϨϏϡΞʔܦݧͰ͖ΔΑ͏ʹͨ͠ ͍ ➤ αʔϏεΛ࡞Δ
➤ @jnchito͞Μͷtrain-ticketͷΑ͏ͳ͓ΛूΊͨαʔϏε ➤ ϨϏϡʔड͚͍ͨਓͱϨϏϡʔͯ͘͠ΕΔਓΛ݁ͼ͚ͭΔ ϚονϯάαΠτ
͝ਗ਼ௌ ͋Γ͕ͱ͏ ͍͟͝·ͨ͠