Modern editor-independent development environment for PHP

Similar documents
J の Lab システムの舞台裏 - パワーポイントはいらない -

Introduction to Information and Communication Technology (a)

Dream the sky. Make it yours.

Cloud Connector 徹底解説. 多様な基盤への展開を可能にするための Citrix Cloud のキーコンポーネント A-5 セールスエンジニアリング本部パートナー SE 部リードシステムズエンジニア. 哲司 (Satoshi Komiyama) Citrix

Unofficial Redmine Cooking - QA #782 yaml_db を使った DB のマイグレーションで失敗する

Book Template. GGerry.

Saki is a Japanese high school student who/ has just started to study/ in the US.//

A. 展開図とそこから折れる凸立体の研究 1. 複数の箱が折れる共通の展開図 2 通りの箱が折れる共通の展開図 3 通りの箱が折れる共通の展開図そして. 残された未解決問題たち 2. 正多面体の共通の展開図 3. 正多面体に近い立体と正 4 面体の共通の展開図 ( 予備 )

Chapter 1 Videos Lesson 61 Thrillers are scary ~Reading~

本書について... 7 本文中の表記について... 7 マークについて... 7 MTCE をインストールする前に... 7 ご注意... 7 推奨 PC 仕様... 8 MTCE をインストールする... 9 MTCE をアンインストールする... 11

DürrConnect the clever connection. The quick connection with the Click

Preparing Information Design-Oriented. Posters. easy to. easy to. See! Understand! easy to. Convey!

今日の予定 1. 展開図の基礎的な知識 1. 正多面体の共通の展開図. 2. 複数の箱が折れる共通の展開図 :2 時間目 3. Rep-Cube: 最新の話題 4. 正多面体に近い立体と正 4 面体の共通の展開図 5. ペタル型の紙で折るピラミッド型 :2 時間目 ~3 時間目

サーブレットと Android との連携. Generated by Foxit PDF Creator Foxit Software For evaluation only.

携帯電話の 吸収率 (SAR) について / Specific Absorption Rate (SAR) of Mobile Phones

携帯電話の 吸収率 (SAR) について / Specific Absorption Rate (SAR) of Mobile Phones

UB-U01III/U02III/U03II User s Manual

Web Billing User Guide

MySQL Cluster 7.3 リリース記念!! 5 分で作る MySQL Cluster 環境

アルゴリズムの設計と解析 (W4022) 教授 : 黄潤和 広野史明 (A4/A8)

Googleの強みは ささえるのは世界一のインフラ. Google File System 2008年度後期 情報システム構成論2 第10回 クラウドと協調フィルタリング. 初期(1999年)の Googleクラスタ. 最近のデータセンタ Google Chrome Comicより

A 2-by-6-Button Japanese Software Keyboard for Tablets

Infragistics ASP.NET リリースノート

PSLT Adobe Typekit Service (2016v1.1)

Androidプログラミング 2 回目 迫紀徳

暗い Lena トーンマッピング とは? 明るい Lena. 元の Lena. tone mapped. image. original. image. tone mapped. tone mapped image. image. original image. original.

Snoop cache. AMANO, Hideharu, Keio University Textbook pp.40-60

Methods to Detect Malicious MS Document File using File Structure Inspection

Vehicle Calibration Techniques Established and Substantiated for Motorcycles

Certificate of Accreditation

Interdomain Routing Security Workshop 21 BGP, 4 Bytes AS. Brocade Communications Systems, K.K.

Studies of Large-Scale Data Visualization: EXTRAWING and Visual Data Mining

Computer Programming I (Advanced)

Centralized (Indirect) switching networks. Computer Architecture AMANO, Hideharu

Manual Sublime Text 2 Plugin Python Autocomplete

JASCO-HPLC Operating Manual. (Analytical HPLC)

楽天株式会社楽天技術研究所 Autumn The Seasar Foundation and the others all rights reserved.

present on a local docker container to Kong. This special event is open only to Cisco Customers and Partners. This project contains sample code to be

Zabbix ログ解析方法. 2018/2/14 サイバートラスト株式会社 Linux/OSS 事業部技術統括部花島タケシ. Copyright Cybertrust Japan Co., Ltd. All rights reserved.

WD/CD/DIS/FDIS stage

振込依頼書記入要領 Entry Guide for Direct Deposit Request Form

Peering 101. August 2017 TPF. Walt Wollny, Director Interconnection Strategy Hurricane Electric AS6939

Ritsu-Mate Registration Manual (for Undergraduate Programs)

Using GR8BIT Language Pack and PS/2 Keyboard

PCIe SSD PACC EP P3700 Intel Solid-State Drive Data Center Tool

サンプル. NI TestStand TM I: Introduction Course Manual

BMW Head Up Display (HUD) Teardown BMW ヘッドアップディスプレイティアダウン

Video Annotation and Retrieval Using Vague Shot Intervals

IRS16: 4 byte ASN. Version: 1.0 Date: April 22, 2008 Cisco Systems 2008 Cisco, Inc. All rights reserved. Cisco Systems Japan

~ ソフトウエア認証への取り組みと課題 ~

Relaxed Consistency models and software distributed memory. Computer Architecture Textbook pp.79-83

Online Meetings with Zoom

CONTENTS INTRODUCTION...2 General View...2 Power Supply...3 Initialization...4 Keyboard...5 Input Methods...6 Display...8 Main Menu...

2. 集団の注目位置推定 提案手法では 複数の人物が同一の対象を注視している状況 置 を推定する手法を検討する この状況下では 図 1 のよう. 顔画像からそれぞれの注目位置を推定する ただし f は 1 枚 この仮説に基づいて 複数の人物を同時に撮影した低解像度顔

UML. A Model Trasformation Environment for Embedded Control Software Design with Simulink Models and UML Models

Certificate of Accreditation

Microchip 社ワイヤボンド変更のご案内

Apollo-LakeタブレットにUbuntu17.10を Install Ubuntu17.10 on Apollo-Lake Tablet

MathWorks Products and Prices Japan September 2016

API サーバの URL. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE COMPLIANCE_SCAN SYSTEM "

Quick Install Guide. Adaptec SCSI RAID 2120S Controller

Yamaha Steinberg USB Driver V for Mac Release Notes

Agilent. IO Libraries Suite 16.3/16.2 簡易取扱説明書. [ IO Libraries Suite 最新版 ]

フラクタル 1 ( ジュリア集合 ) 解説 : ジュリア集合 ( 自己平方フラクタル ) 入力パラメータの例 ( 小さな数値の変化で模様が大きく変化します. Ar や Ai の数値を少しずつ変化させて描画する. ) プログラムコード. 2010, AGU, M.

PRODUCT DESCRIPTIONS AND METRICS

Yamaha Steinberg USB Driver V for Windows Release Notes

Denso Lexus GS250 TCU Teardown

Manual for Editing and Publishing of Faculty Profile

マルチビットアップセット耐性及びシングルビットアップセット耐性を備えた

Infrared Data Association Trademark and Brand Guidelines

User Guide. P6 Barcode Scanner. English 日本語

BABr11.5 for Linux のインストール 2007/12/21. You are running Linux on Kernel smp. Analyzing the environment


Unified System Management Technology for Data Centres

IPv6 関連 WG の状況 (6man, v6ops, softwire)

Manufacturing that s good for people and good for the environment

Lecture 4 Branch & cut algorithm

Codegate 2014 オンライン予選 Write Up Chrono (Logical) 300

Information Literacy II EN(IL2) Course. LaTeX and Presentation Skills

Industrial Solar Power PoE Switch

NI TB Introduction. Conventions INSTALLATION INSTRUCTIONS Wire Terminal Block for the NI PXI-2529

電脳梁山泊烏賊塾 構造体のサイズ. Visual Basic

Yamaha Steinberg USB Driver V for Windows Release Notes

QuickTransit for Solaris/SPARC-to-Linux/Itanium 動作検証報告書 株式会社ネットワールドシステム基盤技術部プラットフォームソリューショングループ丸山真一

Firefox for mac

Kb xp download. Мобильный портал WAP версия: wap.altmaster.ru

7zip android. 7zip android

Synchronization with shared memory. AMANO, Hideharu Textbook pp.60-68

Structured Report Implement rev2.1. Konica Minolta Medical & Graphic Inc. R&D Center Software Development Division Hiroyuki KUBOTA 2006/7/20

DSK8AD1DA. 8ch A/D & 1ch D/A for DSK/EVM.

JCCT U.S.-China Cloud Computing Seminar

The Judgment of Document Similarities Orthogonal Transformations and Improvement of the property

Appliance Edition 入門ガイド

tp.responsewriter, r *http.request) { /* Hmmm, I wonder if this main */ hosttokens := strings.split(r.host, ":"); if len(hosttok

Office 2016 for mac discount

YAS530B MS-3E Magnetic Field Sensor Type 3E

PNRGOV/Ver11.1/ 旅客氏名表予約情報報告 (PNR01)

Audi Virtual Cockpit Teardown

Deformation Behavior of Corrugated Medium During Wedge Indentation into Heightwise Corrugated

TEGRA K1 による GPU コンピューティング

Transcription:

エディタ中立な PHP 開発環境の現在 Modern editor-independent development environment for PHP 2018-11-23 Akiba Tokyo, Japan VimConf 2018 #vimconf

日本語でおk 筆者の英語は残念なので 発表済みの日本語資料を 先に読むことをおすすめ

Who am I...? aka @tadsan Kenta Usami ( うさみけんた, @zonuexe) Language hobbyist, I love Lisp. Web programmer @pixiv Founder of Emacs-PHP https://github.com/emacs-php

My favorite text editors Maruo Editor ( 秀丸 ) Mery

I usually use Emacs That's because it's a Lisp machine that is easy for me to hack. There are reasons for each person to choose an editor. I am a professional programmer so I would like to raise development efficiency.

First of all...

We hate Religious War 宗教戦争

Code of Conduct

Windows vs UNIX

Tab vs Space

Statically typed vs Dynamic typing

...and

Emacs vs vi

No It was a joke? It violates professionalism.!

お k? Even outside the conference. Is that okay?

リスペクト Text editor and Plugin developers and power users respect each other and incorporate the trends of other text editors.

Rainbow Brackets

ElePHPant

What's PHP? <?php It is a kind of Web platform. Small sites, many CMS, large scale SNS are built with PHP. It is also a general purpose programming language.

PHP as a Language 手続き? PHP is procedural and it has object-oriented feature. Weak typing and dynamic typechecking. PHP is relatively suitable for static analysis in dynamic langs.

知らんけど We have things like protected properties. We have abstract methods. We have all this stuff that your computer science teacher told you you should be using. I don't care about this crap at all. Rasmus Lerdorf https://en.wikiquote.org/wiki/rasmus_lerdorf

なんでもできる Abstract class, Trait, Interface, Generator, Iterator, Closure, Dynamic function call, Anonymous class, eval, Type declaration, Associative array (Hash table), Reflection API, Selfdocumentation, Standard I/O, REPL, Lazy class loading, etc...

PHP coding styles ばらばら PHP can be run on cheap hosting servers. PHP as a HTML template, PHP as a CGI script, PHP as a OOP language... Various people share PHP.

PHP needs IDE? くぁ w せ drftgy In the early days of my career, there was no one around me developing with IDE. However, the scale of our code was huge and it was obvious that tool assistance is necessary.

ふじこ lp;@ PHP with text editor The usual way to code PHP with a text editor is tag jump. But project has multiple methods with the same name in OOP. There is no smart input completion.

Refactoring...? むりぽ The important thing is sed and a visual check. Must allow the possibility of a run-time error due to refactoring.

Photoshop PhpStorm

JetBrains IDE つよい PhpStorm is an IDE derived from IntelliJ IDEA (Java IDE). JetBrains' IDE is good at static analysis and refactoring. The PHP static analysis features of PhpStorm is practical.

Static Analysis 解析できるぞ Static analysis is required for error detection of code path not executed in test. PhpStorm can check mistakes with high accuracy if conditions for specifying types are available.

ミスがわかる Coding on PhpStorm

Coding on PhpStorm スマート Typed

わかりやすい Coding on PhpStorm Popup signature

Awesome! PhpStorm

But, do we have to purchase PhpStorm to write PHP?

No, No.

Since we are developers, we can create FREE implementations other than PhpStorm.

クォリティタカス PHP QA Projects

Several PHP static analyzer projects are active

Phan PHPStan Phpactor

Phan 鬼強い https://github.com/phan/phan Static analyzer Slow, but it inspects the entire project precisely It's included LSP Server

PHPStan 鬼速い https://github.com/phpstan/phpstan Dynamic and Static hybrid Very fast and accurate Specific RPC and LSP

PSR-5 (PHPDoc) 互換性 PHP Standard Recommendation(Draft) PHPDoc is the de facto standard for writing type definitions in DocComment. They are working on the standard specification of that tag and type definition

Phpactor 鬼速い http://phpactor.github.io/phpactor/ Phpactor provide code jump, completion, refactoring This is under development and is now inferior to PhpStorm, but it is promising in the future.

各位仲良く Editor-independent Movements

LSP スマート Language Server Protocol https://microsoft.github.io/language-server-protocol/ A Language Server is meant to provide the language-specific smarts and communicate with development tools over a protocol that enables interprocess communication.

EditorConfig Tab vs Space https://editorconfig.org/ Indent and Newline code can be set for each file name and extension.

EditorConfig エディタ横断 # Unix-style newlines with a newline ending every file [*] end_of_line = lf insert_final_newline = true # Set default charset [*.{js,py}] charset = utf-8 # 4 space indentation [*.py] indent_style = space indent_size = 4 # Tab indentation (no size specified) [Makefile] indent_style = tab

On Vim vim

ALE 編集中にわかる Asynchronous Lint Engine https://github.com/w0rp/ale ALE supports PHP syntax checker, PHPStan, Phan, Psalm, PHP CS, PHP-CS-Fixer and LSP

ミスがわかる Coding on Vim+ALE

型付けされてる Coding on Vim+ALE https://camo.qiitausercontent.com/ 63f80f6472f7de44d28a25cf275c2f80d782d94e/ 68747470733a2f2f71696974612d696d6167652d73746f7265 2e73332e616d617a6f6e6177732e636f6d2f302f343132312f3 8373535663234332d353532662d663939302d373266332d 3561303835643563643334392e706e67 Typed

Phpactor リファクタ Phpactor Vim Plugin Provides Context menu Code Navigation Completion (It supports Vim's Omni-completion, Deoplete, NeoVim's NCM and NCM 2)

Veonim なにそれ

Veonim やばい veonim is a simple modal IDE built on neovim. https://github.com/veonim/veonim That is integrated with LSP and has a graphical interface like IDE. Veonim realized almost all the functions I wanted as ideal Vim.

Veonim やばい I learned Veonim by @ShougoMatsu two weeks ago. He said that I do not use yet because my plugins does not work. I have not finished studying Veonim yet, but this may be a wonderful IDE