SHOYAN BLOG

I am a pragmatic programmer.

Gradleのjavaプラグインとは

build.gradleでよく見かけるapply plugin: ‘java'という記述について説明します。この記述をするとgradleにjavaプラグインが追加されます。プラグインはgradleの機能を拡張するためのもので、javaプラグインを追加するとjavaに関連するタスクが使えるようになります。

何もプラグインを追加していないgradleタスクは以下の通りです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$ gradle tasks

> Task :tasks

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'gs-gradle'.
components - Displays the components produced by root project 'gs-gradle'. [incubating]
dependencies - Displays all dependencies declared in root project 'gs-gradle'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gs-gradle'.
dependentComponents - Displays the dependent components of components in root project 'gs-gradle'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'gs-gradle'. [incubating]
projects - Displays the sub-projects of root project 'gs-gradle'.
properties - Displays the properties of root project 'gs-gradle'.
tasks - Displays the tasks runnable from root project 'gs-gradle'.

To see all tasks and more detail, run gradle tasks --all

To see more detail about a task, run gradle help --task <task>


BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

Javaプラグインを定義したあとのタスクは以下の通りです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
$ gradle tasks
Starting a Gradle Daemon (subsequent builds will be faster)

> Task :tasks

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
buildDependents - Assembles and tests this project and all projects that depend on it.
buildNeeded - Assembles and tests this project and all projects it depends on.
classes - Assembles main classes.
clean - Deletes the build directory.
jar - Assembles a jar archive containing the main classes.
testClasses - Assembles test classes.

Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Documentation tasks
-------------------
javadoc - Generates Javadoc API documentation for the main source code.

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'gs-gradle'.
components - Displays the components produced by root project 'gs-gradle'. [incubating]
dependencies - Displays all dependencies declared in root project 'gs-gradle'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gs-gradle'.
dependentComponents - Displays the dependent components of components in root project 'gs-gradle'. [incubating] help - Displays a help message.
model - Displays the configuration model of root project 'gs-gradle'. [incubating]
projects - Displays the sub-projects of root project 'gs-gradle'.
properties - Displays the properties of root project 'gs-gradle'.
tasks - Displays the tasks runnable from root project 'gs-gradle'.

Verification tasks
------------------
check - Runs all checks.
test - Runs the unit tests.

Rules
-----
Pattern: clean<TaskName>: Cleans the output files of a task.
Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration.
Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration.

To see all tasks and more detail, run gradle tasks --all

To see more detail about a task, run gradle help --task <task>


BUILD SUCCESSFUL in 5s
1 actionable task: 1 executed

Build tasks、Documentation tasks、Verification tasksが追加されています。

IntelliJでSpringBootのアプリケーションを作成する

SpringBootのアプリケーションを作成する方法はいくつかありますが、今回はIntelliJで作成する方法を紹介します。

IntellJを起動してメニューバーから File > New > Project...を選択します。

左メニューよりSpring Initializrを選択してNextを押します。

weather-nitify-slack

Project MetaDataはアプリケーションごとに書き換えますが、今回はデモなのでデフォルトのままです。
Gradleを使うのでTypeをGradle Project を選択してNextを押します。

weather-nitify-slack

Dependenciesでは使いたいライブラリを選択できます。
今回は特に選択せず、Nextを押します。

weather-nitify-slack

Project nameはdemoで作成します。
Project locationでファイルを作成する場所を指定します。

weather-nitify-slack

Finishを押すとSpring Bootのアプリケーションが作成されます。
作成したファイルをGitHubにアップロードしています。

https://github.com/shoyan/spring-boot-demo

わかりやすいスライドを誰でも作れるようになる方法

こんにちは、SHOYANです。この記事はプレゼン研究会 Advent Calendar 2017の21日目の投稿です。

わかりやすいスライドを誰でも作れるようになる方法

本記事ではプレゼンを観る人に理解しやすいスライドを作る方法を紹介します。その方法はとても簡単です。スライドはモバイル端末で作成する。たったこれだけです。モバイル端末で作成することで誰でも文字が少ない簡潔なスライドが作成できるようになります。

文字が多いスライドは聴衆の観る気を無くさせる

文字数が少なくなると必要な情報が伝えられなくなるじゃないかという声が聞こえてきそうです。しかし、観る側の立場となって考えてみましょう。文字がたくさんあるスライドを瞬時に理解できますか?多くの人にとって理解できないはずです。というのも、人間の脳は一度に多くの情報を処理するのは得意ではないからです。脳が処理できない情報過多のスライドが連続するとどういう現象が起こるでしょうか。聴衆はプレゼンを聴く気を無くします。

人間の脳が理解しやすいのはイメージ

人間の脳が理解しやすいのはイメージです。イメージを多くして文字の情報を減らすことで理解しやすくなります。モバイル端末を使うとイメージを使いやすいメリットがあります。大抵のモバイル端末にはカメラ機能があるので、写真を簡単に設定することができるからです。

モバイル端末で作成することで必然的に文字が少なくなります。なぜかといいますと、PCのように多くの文字を打つのは大変なため、必然的に文字が少なくなるからです。さらに、文字を打つのが面倒なので何とか写真を使えないだろうかと考えるようになります。あえて文字が打ちにくいという制約をつけることで発想を転換することができます。

少ない情報でこちらの意図を伝えるためには情報の取捨選択をせざるを得ません。それによって情報の純度の高いスライドを作ることができます。

iPhoneのkeynoteを使う

私はiPhoneのkeynoteを使用しています。まず、iPhoneのkeynoteでスライドのアウトラインを作ります。これで大体7割くらい完成しています。ファイルはiCouldで共有します。理由はPCで最後の仕上げをするからです。最後にPCのkeynoteで全体の調整や必要な情報を盛り込みます。ここで情報を盛り込み過ぎないように注意してください。

スライドの作成手順

まとめると、スライドの作成手順は次のようになります。

  1. iPhoneでアウトラインを作成
  2. PCで仕上げる

ぜひこの方法を試してみてください。PCで作成するよりもスライドが作りやすいと感じるはずです。また、モバイル端末なのでどこでもスライドが作成できます。ちょっとした隙間時間にスライドを作ることができます。スライドの作成が捗ることを実感いただけると思います。

2017年のPHPについて数値をまとめてみました

この記事はPHP Advent Calendar 2017 14日目の記事です。

こんにちは、SHOYANです。2017年ももうすぐ終わりということで、2017年のPHPをふりかえってみるのはいかがでしょうか。この記事ではPHPに関係する情報を集め、数値としてまとめました。

2017年にPHPについて書かれた記事ってどれくらい?

まずは、PHPについて書かれた記事からいってみましょう。
インターネット上の全ての記事を探してくるのは膨大な時間がかかるので、Qiitaで書かれた記事を対象としました。

2017年は2,528件の記事が書かれました。

最もいいねのついた記事は@higtyさんの書いた世界で通用するエンジニアになるための高度な技術記事(英語)でした。PHPのタグがついていますが、この記事はあまりPHPっぽくないですね?ストックの多い記事でピュアなPHPの記事は少ないという印象でした。

2017年にPHPで書かれたコードってどれくらい?

2017年に世界でどれくらいの量のPHPのコードが書かれたか興味がありませんか?
コードの量というのを定量的に表すのは難しいので、ここではGitHubで2017年に作成されたリポジトリの数を紹介します。

2017年にGitHub作成されたリポジトリの数は458,187でした。さすが、ユーザーの多いPHPといった数字です。

その中で最もスターを集めたのはjupeter/clean-code-php でした。

PHPerって世界に何人くらいいるの?

世界中にどれくらいのPHPerがいるでしょうか?
GitHubからPHPerの数を調べてみました。

GitHubのPHPerの数は569,735人です。

PHPのアップデートってどれくらい行われた?

PHPの公式サイトのリリース情報によると、2017年に合計で39回のアップデートが行われています。活発に開発が行われていることが伺えますね。

PHPの求人の数ってどれくらいあるの?

PHPの求人の数ってどれくらいあるのでしょうか?
マイナビ転職によると求職数は1,155件でした。

2017年に出版されたPHPの書籍は何冊?

2017年に日本で発売されたPHPの書籍は何冊か知っていますか?
14冊の書籍が発売されています。

PHPってそんなにひどい言語ではないと思う理由

ここまで読んでくださってありがとうございます。最後は私のPHPに対するポエムです。

実は最近はあまりPHPを書く機会がありません。それでも、PHPに対する思い入れは他の言語と比べても強いと思います。それは、私のエンジニア歴の中でPHPとの付き合いが1番長いからです。私がはじめて習得した言語はPHPです。

初めてプログラミングに触れる人にとってPHPはとっつきやすい言語だと思います。なぜなら、PHPは多くの人が使っているため、情報がたくさんあるからです。そのため、情報が調べやすく習得の敷居が低いのです。

環境構築のコストが低いのもメリットです。ほとんどのホスティングサービスがPHPに対応しているため、自分が作ったサイトをインターネットに公開するのも容易です。

色々ディスられることも多いPHPですが、初心者に親しみやすい言語という点に関しては他の言語より優れているのではと思います。多くの人にプログラミングを広めた功績は誰も否定できないでしょう。そんなPHPを私はこれからも応援していきたいと思います。

補足
数値は2017年12月13日のものです。

2017年のRubyについて数値をまとめてみました

この記事はRuby Advent Calendar 2017 10日目の記事です。

こんにちは、SHOYANです。2017年ももうすぐ終わりますね。みなさんにとって2017年はどのような年だったでしょうか。
おそらくこの記事を読んでいるほとんどの方がRubyを好きなのだと思います。であれば、2017年にRubyでどのようなことが起こったのか気になりませんか?そんなRubyが大好きなあなたに向けて、本記事では2017年のRubyについてまとめました。

2017年にRubyについて書かれた記事ってどれくらい?

まずは、Rubyについて書かれた記事からいってみましょう。
インターネット上の全ての記事を探してくるのは膨大な時間がかかるので、ここでの対象はQiitaで書かれた記事とします。

2017年は2,969件の記事が書かれました。

最もいいねのついた記事は@gazayasさんの書いた外国人が語る:英語でクラスやメソッド等の名付け方でした。

2017年にRubyで書かれたコードってどれくらい?

2017年に世界でどれくらいの量のRubyのコードが書かれたか興味がありませんか?
コードの量というのを定量的に表すのは難しいので、ここではGitHubで2017年に作成されたリポジトリの数を紹介します。

2017年にGitHub作成されたリポジトリの数は277,359でした。

その中で最もスターを集めたのはatech/postal でした。

Rubyistって世界に何人くらいいるの?

世界中にどれくらいのRubyistがいるでしょうか?
GitHubからRubyistの数を調べてみました。

GitHubのRubyistの数は368,282人です。

Rubyのアップデートってどれくらい行われた?

2017年はRuby2.4がリリースされました。Rubyの公式サイトのリリース情報によると、2017年に合計で6回のアップデートが行われています。

Rubyistの求人の数ってどれくらいあるの?

Rubyistの求人の数ってどれくらいあるのでしょうか?
マイナビ転職によると求職数は598件でした。

2017年に出版されたRubyの書籍は何冊?

2017年に日本で発売されたRubyの書籍は何冊か知っていますか?
14冊の書籍が発売されています。

最後に

Rubyに関する様々な指標をまとめてみましたが、いかがでしたでしょうか。どのような指標が面白かったでしょうか?感想をフィードバックしていただけると嬉しいです。2018年もたくさんのRubyのコードや記事が書かれ、たくさんの素晴らしいプロダクトが誕生することでしょう。最後まで記事を読んでくださってどうもありがとうございました。