質問編集履歴
24
dddddddddddddd
test
CHANGED
File without changes
|
test
CHANGED
@@ -96,237 +96,13 @@
|
|
96
96
|
|
97
97
|
|
98
98
|
|
99
|
-
```
|
100
|
-
|
101
|
-
俗に言うなんでも屋の人間がよく若手のキャリアプランについて聞かれるので、
|
102
|
-
|
103
|
-
納得するための30minと自分が毎年やっていることを話す
|
104
|
-
|
105
|
-
https://zenn.dev/gama/articles/2893c2ac322152
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
ハッカソンで「強強エンジニア」が言っていた有用な情報
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
2.プログラミング力を高めるには?
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
「結局は地道に書き続けるしかない。
|
120
|
-
|
121
|
-
最初はコードの一部を書き換えたりして学ぶ。
|
122
|
-
|
123
|
-
その次は自分で考えたものを作る。
|
124
|
-
|
125
|
-
もしくは他の人のコードを真似して作る。
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
そうすることでプログラミング力は高くなると思います。」
|
130
99
|
|
131
100
|
|
132
101
|
|
133
102
|
|
134
103
|
|
135
104
|
|
136
|
-
|
137
|
-
プログラミングは結局、自分でキャッチアップしないといけないので、
|
138
|
-
|
139
|
-
やる子がやる世界
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
4.技術力が追いつかない件について
|
148
|
-
|
149
|
-
とある審査員の方が僕に投げかけた質問です。
|
150
|
-
|
151
|
-
「君は何でプログラミングを始めたの??」
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
僕「そりゃぁ、自分のアイデアを形にできて、今作りたいものがあるからです。」
|
156
|
-
|
157
|
-
Tさんはこの返答が意外だったのか、驚いた表情で、「それめっちゃエンジニア向いてるよ!!」
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
僕「いや、でもそれに対する技術力が伴わなくって、、、」
|
162
|
-
|
163
|
-
Tさん「伴わなくて当たり前なの!!今実装したい機能を勉強してやったとしても、あれを追加したい、やっぱ最新の技術に変更しようとなって、結局は技術力なんて一生追いつくことはないんだよ。」
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
僕は「技術力がないこと」を理由に開発をしない口実を作っていただけなのかもしれません。
|
168
|
-
|
169
|
-
これを聞いてからは吹っ切れて、個人開発を進めています
|
170
|
-
|
171
|
-
(まぁキャッチアップしながらなので、苦戦を強いられてはいますが笑)
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
最後に
|
182
|
-
|
183
|
-
ハッカソンは本当に勉強になります。
|
184
|
-
|
185
|
-
ビビらず、「自分なんか」なんて思わず、参加しましょう!!
|
186
|
-
|
187
|
-
困ったらメンター陣に相談すれば何とかなります。
|
188
|
-
|
189
|
-
開発経験をハッカソンで積んで強強エンジニアを目指しましょう!!
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
アドバスター
|
198
|
-
|
199
|
-
http://ad1227-game.herokuapp.com/
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
向いてるかどうか別として(ココ大事)
|
210
|
-
|
211
|
-
『育てる, 教える』<<<『仕事できる奴らとイイものマネタイズできるものを作る,学ぶ』
|
212
|
-
|
213
|
-
方が興味がある
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
前提となるコンテキスト
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
React、TypeScriptをメインでやってきたのでここではその環境を前提にします
|
224
|
-
|
225
|
-
スタートアップ~中規模くらいの組織で新規サービスをつくる場面を想定しています
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
◆Worse is Betterという考え方
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
http://chasen.org/~daiti-m/text/worse-is-better-ja.html
|
236
|
-
|
237
|
-
https://note.com/ruiu/n/n9948f0cc3ed3
|
238
|
-
|
239
|
-
自分が見てきた中でWebフロントエンドの開発効率が落ちてしまう一番の要因は、きれいで理論的には優れているアーキテクチャを構築しようとしてそれ自体がもたらす複雑性を支えきれないというパターンです。
|
240
|
-
|
241
|
-
少し前にフロントエンドにClean Architecture(以下CA、あの同心円の図を指すのは誤用に近いですがここではそれに乗ります)を導入する記事が流行ったと思いますがあんな感じです。ああいったクラスベースでDIが重要となる設計手法はサーバーサイドのJavaでSpringを使うのとは違ってReactがサポートしているものではないため、CAの実現自体に高い設計スキルが必要になると思います。もちろんつくるアプリケーションの複雑度にもよりますが、フロントエンドでCAを必要とするほど複雑なアプリケーションはそう多くはないと思います。
|
242
|
-
|
243
|
-
CAによって外部に依存しない純粋なビジネスロジックを表現したコードを手に入れることができますが、そのトレードオフとしてコード量や複雑性が増加することは無視できません。CAを諦めて、サーバーサイドのOpenAPIの型に直接依存するようにして薄く作るとコード量が少なく理解しやすいコードベースを構築できます。そうすることでCAのメリットとなるビジネスロジックの純粋性はトレードオフとして失われますが、代わりに得られたコードのシンプルさによる理解のしやすさや変更容易性を重視するというのが(自分の理解する限りでの)Worse is Better的な考え方です。
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
◆コードの品質の価値を過小評価しない
|
254
|
-
|
255
|
-
書籍Clean Architectureはあの同心円の図が独り歩きしてますが、設計以前の考え方に結構なページ数が割かれていてしかもとても参考になります。
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
序盤に出てくる刺さったフレーズを2つ雑に要約してみます。
|
262
|
-
|
263
|
-
1.汚いコードを書く方がクリーンなコードを書くより常に遅い
|
264
|
-
|
265
|
-
・スタートアップだから、開発初期だからコードが汚くていいということはない
|
266
|
-
|
267
|
-
2.ソフトウェアの構造は振る舞いと同等の価値を持つ(構造≒変更が容易であること)
|
268
|
-
|
269
|
-
・完璧に動作するけど変更ができないより、バグだらけだけど変更が容易な方が良い
|
270
|
-
|
271
|
-
特に2番目は個人的には目からウロコで、ソフトウェアのユーザーに提供する動作・振る舞いと同じくらいアーキテクチャとコード品質が適切に保たれていることが大事という視点はなかったです。同書では構造というエンジニアにしか見えない価値を守るのはエンジニアの責任であり、そのためにはPdMやセールスといったステークホルダーと「闘争」して構造を守る必要があるとまで書かれています。そして1番目にもあるようにコードの品質を高くすることが結局は開発速度を速くするのであればそこに注力するのが正しいと言えそうです。この1番目については書籍Clean Architectureにあるような設計テクニックをつぎ込んできれいで正しい「良い」アーキテクチャを目指したくなりますが、トレードオフを見てWorse is Better的な設計・コードを採用すべきだと思います。
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
コンサルタントとうまく付き合う方法(案)
|
282
|
-
|
283
|
-
https://qiita.com/kaizen_nagoya/items/499b0a16ac89c0fe3fb0
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
コンサルタントといっても、経営コンサルタントのように、数字ですぐに採否を決められるようなコンサルタントもあれば、技術コンサルタントのように10年後にしか成果がでず、10年に1回ぐらいしか呼ばれないような仕事の仕方もあります。
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
自分および自分の師匠の流派は、お客様第一で、一度呼ばれたら、次に呼ばれるのは10年後くらいだろうという想定のもと、一回でできるかぎり解決してしまおうという仕事の仕方です。
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
ある塊の仕事を、1年間に平たく伸ばして、年収を確保しようという営業的な配慮はここではしていません。
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
お客様の方で、あいつが食っていけなくなって、10年後にまた頼む時に頼めないと困ると思い、仕事を横流ししてくださるようなお客様を想定しています。
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
いかに、言い出せないことを、言いだしてもらうかに半分時間を費やしてもかまわないというのが経験則です。
|
310
|
-
|
311
|
-
経営者があなたではなく、コンサルの言うなりだったら、その会社を辞める良い機会かもしれません。
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
優秀なコンサルほど、たくさんの経験があっても、
|
316
|
-
|
317
|
-
自分の話を先にするのではなく、お客様の実情を知ろうとします。
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
105
|
```
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
106
|
|
331
107
|
# https://leetcode.com/problems/valid-parentheses/
|
332
108
|
|
@@ -367,3 +143,7 @@
|
|
367
143
|
instance = Solution()
|
368
144
|
|
369
145
|
print(instance.isValid(input()))
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
```
|
23
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -321,3 +321,49 @@
|
|
321
321
|
|
322
322
|
|
323
323
|
```
|
324
|
+
|
325
|
+
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
# https://leetcode.com/problems/valid-parentheses/
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
class Solution:
|
336
|
+
|
337
|
+
print('Hello')
|
338
|
+
|
339
|
+
def isValid(self, s: str) -> bool: #関数アノテーション 戻り値に期待する型は、引数の閉じカッコの後に、矢印->を付けて示す。
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
#[] {} () 左がきたら 対応する右を判定
|
344
|
+
|
345
|
+
# 括弧のネストのレベルを数える変数を1つ用意し、文字列の最初から1文字ずつ呼んで行って
|
346
|
+
|
347
|
+
#開き括弧があればレベル+1 閉じ括弧-1 → {[ と2連続で来たときはどうする?? 2になったらアウト 値がマイナスになったらアウト
|
348
|
+
|
349
|
+
#「レベルがどの範囲になったときか?を考える」
|
350
|
+
|
351
|
+
#どこかでレベルがマイナスの値になればエラー #括弧の入れ子を検出
|
352
|
+
|
353
|
+
#https://ja.stackoverflow.com/questions/32938/python%E3%81%A7%E6%8B%AC%E5%BC%A7%E3%81%AE%E5%85%A5%E3%82%8C%E5%AD%90%E3%82%92%E6%A4%9C%E5%87%BA
|
354
|
+
|
355
|
+
if( ){
|
356
|
+
|
357
|
+
return true
|
358
|
+
|
359
|
+
} else {
|
360
|
+
|
361
|
+
return false
|
362
|
+
|
363
|
+
}
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
instance = Solution()
|
368
|
+
|
369
|
+
print(instance.isValid(input()))
|
22
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,3 +91,233 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
```
|
100
|
+
|
101
|
+
俗に言うなんでも屋の人間がよく若手のキャリアプランについて聞かれるので、
|
102
|
+
|
103
|
+
納得するための30minと自分が毎年やっていることを話す
|
104
|
+
|
105
|
+
https://zenn.dev/gama/articles/2893c2ac322152
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
ハッカソンで「強強エンジニア」が言っていた有用な情報
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
2.プログラミング力を高めるには?
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
「結局は地道に書き続けるしかない。
|
120
|
+
|
121
|
+
最初はコードの一部を書き換えたりして学ぶ。
|
122
|
+
|
123
|
+
その次は自分で考えたものを作る。
|
124
|
+
|
125
|
+
もしくは他の人のコードを真似して作る。
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
そうすることでプログラミング力は高くなると思います。」
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
プログラミングは結局、自分でキャッチアップしないといけないので、
|
138
|
+
|
139
|
+
やる子がやる世界
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
4.技術力が追いつかない件について
|
148
|
+
|
149
|
+
とある審査員の方が僕に投げかけた質問です。
|
150
|
+
|
151
|
+
「君は何でプログラミングを始めたの??」
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
僕「そりゃぁ、自分のアイデアを形にできて、今作りたいものがあるからです。」
|
156
|
+
|
157
|
+
Tさんはこの返答が意外だったのか、驚いた表情で、「それめっちゃエンジニア向いてるよ!!」
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
僕「いや、でもそれに対する技術力が伴わなくって、、、」
|
162
|
+
|
163
|
+
Tさん「伴わなくて当たり前なの!!今実装したい機能を勉強してやったとしても、あれを追加したい、やっぱ最新の技術に変更しようとなって、結局は技術力なんて一生追いつくことはないんだよ。」
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
僕は「技術力がないこと」を理由に開発をしない口実を作っていただけなのかもしれません。
|
168
|
+
|
169
|
+
これを聞いてからは吹っ切れて、個人開発を進めています
|
170
|
+
|
171
|
+
(まぁキャッチアップしながらなので、苦戦を強いられてはいますが笑)
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
最後に
|
182
|
+
|
183
|
+
ハッカソンは本当に勉強になります。
|
184
|
+
|
185
|
+
ビビらず、「自分なんか」なんて思わず、参加しましょう!!
|
186
|
+
|
187
|
+
困ったらメンター陣に相談すれば何とかなります。
|
188
|
+
|
189
|
+
開発経験をハッカソンで積んで強強エンジニアを目指しましょう!!
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
アドバスター
|
198
|
+
|
199
|
+
http://ad1227-game.herokuapp.com/
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
向いてるかどうか別として(ココ大事)
|
210
|
+
|
211
|
+
『育てる, 教える』<<<『仕事できる奴らとイイものマネタイズできるものを作る,学ぶ』
|
212
|
+
|
213
|
+
方が興味がある
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
前提となるコンテキスト
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
React、TypeScriptをメインでやってきたのでここではその環境を前提にします
|
224
|
+
|
225
|
+
スタートアップ~中規模くらいの組織で新規サービスをつくる場面を想定しています
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
◆Worse is Betterという考え方
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
http://chasen.org/~daiti-m/text/worse-is-better-ja.html
|
236
|
+
|
237
|
+
https://note.com/ruiu/n/n9948f0cc3ed3
|
238
|
+
|
239
|
+
自分が見てきた中でWebフロントエンドの開発効率が落ちてしまう一番の要因は、きれいで理論的には優れているアーキテクチャを構築しようとしてそれ自体がもたらす複雑性を支えきれないというパターンです。
|
240
|
+
|
241
|
+
少し前にフロントエンドにClean Architecture(以下CA、あの同心円の図を指すのは誤用に近いですがここではそれに乗ります)を導入する記事が流行ったと思いますがあんな感じです。ああいったクラスベースでDIが重要となる設計手法はサーバーサイドのJavaでSpringを使うのとは違ってReactがサポートしているものではないため、CAの実現自体に高い設計スキルが必要になると思います。もちろんつくるアプリケーションの複雑度にもよりますが、フロントエンドでCAを必要とするほど複雑なアプリケーションはそう多くはないと思います。
|
242
|
+
|
243
|
+
CAによって外部に依存しない純粋なビジネスロジックを表現したコードを手に入れることができますが、そのトレードオフとしてコード量や複雑性が増加することは無視できません。CAを諦めて、サーバーサイドのOpenAPIの型に直接依存するようにして薄く作るとコード量が少なく理解しやすいコードベースを構築できます。そうすることでCAのメリットとなるビジネスロジックの純粋性はトレードオフとして失われますが、代わりに得られたコードのシンプルさによる理解のしやすさや変更容易性を重視するというのが(自分の理解する限りでの)Worse is Better的な考え方です。
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
◆コードの品質の価値を過小評価しない
|
254
|
+
|
255
|
+
書籍Clean Architectureはあの同心円の図が独り歩きしてますが、設計以前の考え方に結構なページ数が割かれていてしかもとても参考になります。
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
序盤に出てくる刺さったフレーズを2つ雑に要約してみます。
|
262
|
+
|
263
|
+
1.汚いコードを書く方がクリーンなコードを書くより常に遅い
|
264
|
+
|
265
|
+
・スタートアップだから、開発初期だからコードが汚くていいということはない
|
266
|
+
|
267
|
+
2.ソフトウェアの構造は振る舞いと同等の価値を持つ(構造≒変更が容易であること)
|
268
|
+
|
269
|
+
・完璧に動作するけど変更ができないより、バグだらけだけど変更が容易な方が良い
|
270
|
+
|
271
|
+
特に2番目は個人的には目からウロコで、ソフトウェアのユーザーに提供する動作・振る舞いと同じくらいアーキテクチャとコード品質が適切に保たれていることが大事という視点はなかったです。同書では構造というエンジニアにしか見えない価値を守るのはエンジニアの責任であり、そのためにはPdMやセールスといったステークホルダーと「闘争」して構造を守る必要があるとまで書かれています。そして1番目にもあるようにコードの品質を高くすることが結局は開発速度を速くするのであればそこに注力するのが正しいと言えそうです。この1番目については書籍Clean Architectureにあるような設計テクニックをつぎ込んできれいで正しい「良い」アーキテクチャを目指したくなりますが、トレードオフを見てWorse is Better的な設計・コードを採用すべきだと思います。
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
コンサルタントとうまく付き合う方法(案)
|
282
|
+
|
283
|
+
https://qiita.com/kaizen_nagoya/items/499b0a16ac89c0fe3fb0
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
コンサルタントといっても、経営コンサルタントのように、数字ですぐに採否を決められるようなコンサルタントもあれば、技術コンサルタントのように10年後にしか成果がでず、10年に1回ぐらいしか呼ばれないような仕事の仕方もあります。
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
自分および自分の師匠の流派は、お客様第一で、一度呼ばれたら、次に呼ばれるのは10年後くらいだろうという想定のもと、一回でできるかぎり解決してしまおうという仕事の仕方です。
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
ある塊の仕事を、1年間に平たく伸ばして、年収を確保しようという営業的な配慮はここではしていません。
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
お客様の方で、あいつが食っていけなくなって、10年後にまた頼む時に頼めないと困ると思い、仕事を横流ししてくださるようなお客様を想定しています。
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
いかに、言い出せないことを、言いだしてもらうかに半分時間を費やしてもかまわないというのが経験則です。
|
310
|
+
|
311
|
+
経営者があなたではなく、コンサルの言うなりだったら、その会社を辞める良い機会かもしれません。
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
優秀なコンサルほど、たくさんの経験があっても、
|
316
|
+
|
317
|
+
自分の話を先にするのではなく、お客様の実情を知ろうとします。
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
```
|
21
dddddddddddddd
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,261 +91,3 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
```
|
106
|
-
|
107
|
-
(感想)
|
108
|
-
|
109
|
-
私が採用側または、大手なら課す。
|
110
|
-
|
111
|
-
現職で採択するなら、
|
112
|
-
|
113
|
-
チームで使っている技術スタックの問題を選択形式で出題したい。(即戦力がほしい)
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
#◆チェックリスト & PRPoint
|
122
|
-
|
123
|
-
「実装ができる」だけは自己中な状態
|
124
|
-
|
125
|
-
→影響範囲が広くなり保守が大変(未然に防ぐ実装)
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
#◆コーディング面接・試験
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
1.1~2次面接など、選考の序盤~中盤の段階(45分)
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
>コンピュータサイエンスに関連した知識を問われる技術面接もある(codingなし)
|
140
|
-
|
141
|
-
事前課題を解き、面接官にその実装について解説をする面接(事前のコーディングに3,4時間かかるものもあり)
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
##流れ
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
1. 問題の確認
|
154
|
-
|
155
|
-
↓
|
156
|
-
|
157
|
-
2. 解法を考える
|
158
|
-
|
159
|
-
↓
|
160
|
-
|
161
|
-
3. 実際にコーディング
|
162
|
-
|
163
|
-
↓
|
164
|
-
|
165
|
-
4. 解説(工夫点)
|
166
|
-
|
167
|
-
↓
|
168
|
-
|
169
|
-
5. ディスカッション
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
- 問題の一部が変わったらどのようにコードを変えるか
|
174
|
-
|
175
|
-
- 計算量
|
176
|
-
|
177
|
-
- 更に改善できるコードがあるかどうか
|
178
|
-
|
179
|
-
- エッジケースに対応できているか
|
180
|
-
|
181
|
-
- コードを書く際に気をつけたこと(コーディング規約など)
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
##評価ポイント
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
企業により評価方法はさまざまですが、以下の項目については共通していると思ってよいでしょう。
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
1. アルゴリズムとデータ構造に関する基礎知識を持っているか
|
196
|
-
|
197
|
-
そもそも基礎知識がなければ解けない問題が出題されるので
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
2. 全てのテストケースを制限時間内に通す実装力を持っているか
|
202
|
-
|
203
|
-
→ 入出力例には出ていないエッジケースや例外ケースに気づけるか
|
204
|
-
|
205
|
-
→ 計算量を意識して効率がよく実行時間の制約を満たす実装ができるか
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
3. 変数名や関数名を適切に命名するなど、他人が読みやすいコードを書けるか
|
210
|
-
|
211
|
-
一度のコーディング試験で書く必要のあるコードの量はそう多くありません。関数自体を作らなかったり、変数もxやyなど単純なものを使う場合が多いです。
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
また、コーディング試験の形式によっては以下のようなポイントも評価されます。
|
216
|
-
|
217
|
-
・コードを書き慣れているか
|
218
|
-
|
219
|
-
オフラインで実施する場合や、コーディング中の画面をその場で映す形式の場合、コードがスラスラと書けるかを見られる場合もあります。
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
・ディスカッションの中で、自分が書いたコードを分かりやすく説明できるか
|
224
|
-
|
225
|
-
コミュニケーション能力やカルチャーフィットについては中盤以降の面接で見られるため、あくまでそれ以前の足切り的な位置づけであるコーディング試験では重要視しない企業が多いと思われます。
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
##おすすめ使用言語
|
232
|
-
|
233
|
-
よほど使い慣れている言語が無い限りは、pythonがおすすめ。
|
234
|
-
|
235
|
-
> 圧倒的に楽。
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
業務でjavaを使ってますが、効率重視であえてpythonを選択
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
#◆対策◆
|
244
|
-
|
245
|
-
コーディング試験はatcoderのビギナーコンテストくらいのレベル
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
LeetCodeは、海外で有名なコーディング試験対策サイト(高評価のeasy問題を解きまくる。)
|
250
|
-
|
251
|
-
https://leetcode.com/
|
252
|
-
|
253
|
-
※goodの比率が50%以上の問題を良問
|
254
|
-
|
255
|
-
※力づくではなく、
|
256
|
-
|
257
|
-
しっかりとアルゴリズムを理解しながら解くことをオススメします。bruteforceは、誰でもできてしまうので
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
Codilityで苦手な問題の種類を解く。
|
262
|
-
|
263
|
-
楽天などが採用しているらしいコーディング試験サイト
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
Atcoderやproject eulerなど利用してもいいかもしれません。
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
#要はセンター試験のようなもの
|
278
|
-
|
279
|
-
アルゴリズムをごりごり活用するような会社だと、勉強する価値は大いにある。
|
280
|
-
|
281
|
-
ただし、ある程度の企業規模になれば
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
> ※ただし受けた人曰く
|
288
|
-
|
289
|
-
新しく勉強したアルゴリズムを業務で使ったことは一度もないです。とのこと。
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
コーディングテストが実施される企業
|
298
|
-
|
299
|
-
僕が受けた(コーディングテストの選考があった)企業
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
↑難
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
SmartNews(競技プログラミング慣れしていないと難しい)
|
308
|
-
|
309
|
-
Recruit
|
310
|
-
|
311
|
-
BizReach
|
312
|
-
|
313
|
-
Rakuten
|
314
|
-
|
315
|
-
Wantedly
|
316
|
-
|
317
|
-
↓易
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
その他コーディングテストが実施されることを知っている企業
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
Google
|
326
|
-
|
327
|
-
Line
|
328
|
-
|
329
|
-
Yahoo
|
330
|
-
|
331
|
-
プログラミングテストでの選考も可能な企業
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
teamLab
|
336
|
-
|
337
|
-
一応僕が知っている範囲だとこんな感じです。(他に知っている方がいたら教えてください)
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
体感として、ある程度有名なWeb系の企業だと、コーディングテストが必要な割合は3、4割な気がします。
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
✖Paizaのスキルチェック
|
346
|
-
|
347
|
-
就活サービスとしては良いと思いますが、コーディング試験対策には向いていません。 なぜかというと、模範解答が無いため、復習ができないためです。
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
```
|
20
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -292,4 +292,60 @@
|
|
292
292
|
|
293
293
|
|
294
294
|
|
295
|
+
|
296
|
+
|
297
|
+
コーディングテストが実施される企業
|
298
|
+
|
299
|
+
僕が受けた(コーディングテストの選考があった)企業
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
↑難
|
304
|
+
|
305
|
+
|
306
|
+
|
307
|
+
SmartNews(競技プログラミング慣れしていないと難しい)
|
308
|
+
|
309
|
+
Recruit
|
310
|
+
|
311
|
+
BizReach
|
312
|
+
|
313
|
+
Rakuten
|
314
|
+
|
315
|
+
Wantedly
|
316
|
+
|
317
|
+
↓易
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
その他コーディングテストが実施されることを知っている企業
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
Google
|
326
|
+
|
327
|
+
Line
|
328
|
+
|
329
|
+
Yahoo
|
330
|
+
|
331
|
+
プログラミングテストでの選考も可能な企業
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
teamLab
|
336
|
+
|
337
|
+
一応僕が知っている範囲だとこんな感じです。(他に知っている方がいたら教えてください)
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
体感として、ある程度有名なWeb系の企業だと、コーディングテストが必要な割合は3、4割な気がします。
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
✖Paizaのスキルチェック
|
346
|
+
|
347
|
+
就活サービスとしては良いと思いますが、コーディング試験対策には向いていません。 なぜかというと、模範解答が無いため、復習ができないためです。
|
348
|
+
|
349
|
+
|
350
|
+
|
295
351
|
```
|
19
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,3 +91,205 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
```
|
106
|
+
|
107
|
+
(感想)
|
108
|
+
|
109
|
+
私が採用側または、大手なら課す。
|
110
|
+
|
111
|
+
現職で採択するなら、
|
112
|
+
|
113
|
+
チームで使っている技術スタックの問題を選択形式で出題したい。(即戦力がほしい)
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
#◆チェックリスト & PRPoint
|
122
|
+
|
123
|
+
「実装ができる」だけは自己中な状態
|
124
|
+
|
125
|
+
→影響範囲が広くなり保守が大変(未然に防ぐ実装)
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
#◆コーディング面接・試験
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
1.1~2次面接など、選考の序盤~中盤の段階(45分)
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
>コンピュータサイエンスに関連した知識を問われる技術面接もある(codingなし)
|
140
|
+
|
141
|
+
事前課題を解き、面接官にその実装について解説をする面接(事前のコーディングに3,4時間かかるものもあり)
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
##流れ
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
1. 問題の確認
|
154
|
+
|
155
|
+
↓
|
156
|
+
|
157
|
+
2. 解法を考える
|
158
|
+
|
159
|
+
↓
|
160
|
+
|
161
|
+
3. 実際にコーディング
|
162
|
+
|
163
|
+
↓
|
164
|
+
|
165
|
+
4. 解説(工夫点)
|
166
|
+
|
167
|
+
↓
|
168
|
+
|
169
|
+
5. ディスカッション
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
- 問題の一部が変わったらどのようにコードを変えるか
|
174
|
+
|
175
|
+
- 計算量
|
176
|
+
|
177
|
+
- 更に改善できるコードがあるかどうか
|
178
|
+
|
179
|
+
- エッジケースに対応できているか
|
180
|
+
|
181
|
+
- コードを書く際に気をつけたこと(コーディング規約など)
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
##評価ポイント
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
企業により評価方法はさまざまですが、以下の項目については共通していると思ってよいでしょう。
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
1. アルゴリズムとデータ構造に関する基礎知識を持っているか
|
196
|
+
|
197
|
+
そもそも基礎知識がなければ解けない問題が出題されるので
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
2. 全てのテストケースを制限時間内に通す実装力を持っているか
|
202
|
+
|
203
|
+
→ 入出力例には出ていないエッジケースや例外ケースに気づけるか
|
204
|
+
|
205
|
+
→ 計算量を意識して効率がよく実行時間の制約を満たす実装ができるか
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
3. 変数名や関数名を適切に命名するなど、他人が読みやすいコードを書けるか
|
210
|
+
|
211
|
+
一度のコーディング試験で書く必要のあるコードの量はそう多くありません。関数自体を作らなかったり、変数もxやyなど単純なものを使う場合が多いです。
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
また、コーディング試験の形式によっては以下のようなポイントも評価されます。
|
216
|
+
|
217
|
+
・コードを書き慣れているか
|
218
|
+
|
219
|
+
オフラインで実施する場合や、コーディング中の画面をその場で映す形式の場合、コードがスラスラと書けるかを見られる場合もあります。
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
・ディスカッションの中で、自分が書いたコードを分かりやすく説明できるか
|
224
|
+
|
225
|
+
コミュニケーション能力やカルチャーフィットについては中盤以降の面接で見られるため、あくまでそれ以前の足切り的な位置づけであるコーディング試験では重要視しない企業が多いと思われます。
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
##おすすめ使用言語
|
232
|
+
|
233
|
+
よほど使い慣れている言語が無い限りは、pythonがおすすめ。
|
234
|
+
|
235
|
+
> 圧倒的に楽。
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
業務でjavaを使ってますが、効率重視であえてpythonを選択
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
#◆対策◆
|
244
|
+
|
245
|
+
コーディング試験はatcoderのビギナーコンテストくらいのレベル
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
LeetCodeは、海外で有名なコーディング試験対策サイト(高評価のeasy問題を解きまくる。)
|
250
|
+
|
251
|
+
https://leetcode.com/
|
252
|
+
|
253
|
+
※goodの比率が50%以上の問題を良問
|
254
|
+
|
255
|
+
※力づくではなく、
|
256
|
+
|
257
|
+
しっかりとアルゴリズムを理解しながら解くことをオススメします。bruteforceは、誰でもできてしまうので
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
Codilityで苦手な問題の種類を解く。
|
262
|
+
|
263
|
+
楽天などが採用しているらしいコーディング試験サイト
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
Atcoderやproject eulerなど利用してもいいかもしれません。
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
|
276
|
+
|
277
|
+
#要はセンター試験のようなもの
|
278
|
+
|
279
|
+
アルゴリズムをごりごり活用するような会社だと、勉強する価値は大いにある。
|
280
|
+
|
281
|
+
ただし、ある程度の企業規模になれば
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
> ※ただし受けた人曰く
|
288
|
+
|
289
|
+
新しく勉強したアルゴリズムを業務で使ったことは一度もないです。とのこと。
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
```
|
18
dddddddddddddd
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,503 +91,3 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
```
|
98
|
-
|
99
|
-
前提:ポジティブシンキングなんてムダだ!(メタ分析)
|
100
|
-
|
101
|
-
→→心理対比さえ実践すればいい(1回につき15〜20分が目安)
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
▼ステップ1:願望(Wish) もっとも重要なもの1つに絞る
|
110
|
-
|
111
|
-
"仕事やプライベートに関して、自分が抱く希望や不安を詳細にいくつか書き出す(または思い描く)。健康になる!
|
112
|
-
|
113
|
-
見た目が良くなる!
|
114
|
-
|
115
|
-
モテる!
|
116
|
-
|
117
|
-
医療費が減る!
|
118
|
-
|
119
|
-
自慢できる!
|
120
|
-
|
121
|
-
ブログのネタになる!"
|
122
|
-
|
123
|
-
このとき重要なのは、「達成は難しいけど、がんばれば何とかなりそうだ:な〜」ぐらいの難易度設定にしておく:「1年で億万長者」とか「ベストセラー作家に」なんて願望を抱くと、ポジティブシンキングの罠にハマっちゃいますんでご注意ください。また、達成したい願望がいくつもある場合は、自分にとって最も重要なものだけ
|
124
|
-
|
125
|
-
▼ステップ2:成果(Outcome)
|
126
|
-
|
127
|
-
"上で考えた願望や不安に関する「ベストの成果」を思い描きます。しばし頭のなかでメリットをイメージしてみて、一番ポジティブな気分になったものを選べばOK。このとき、選んだメリットについてどんな気分になっているかまでを細かく具体的にイメージすればするほど効果が高まるっぽい。 例:願望:毎日エクササイズをする
|
128
|
-
|
129
|
-
成果:健康で最高の気分になる
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
不安:借金を返す
|
136
|
-
|
137
|
-
成果:完済!"
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
▼ステップ3:障害(Obstacle)
|
142
|
-
|
143
|
-
"いまの自分の目標を達成するために、どんなトラブルが起きるかを詳細にいくつか書き出す(または思い描く)。具体的な考え方としては、
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
どんな考え方が目標の達成をさまたげているのか?
|
148
|
-
|
149
|
-
どんな行動が目標の達成をさまたげているのか?
|
150
|
-
|
151
|
-
どんな癖や習慣が目標の達成をさまたげているのか?
|
152
|
-
|
153
|
-
どんな思い込みが目標の達成をさまたげているのか?
|
154
|
-
|
155
|
-
どんな感情が目標の達成をさまたげているのか?
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
みたいな感じ。というと、「金がない」や「親が反対してる」など、環境や外的な問題をあげる人も多そうですが、これはNGであります。そもそも、「願望(Wish)」のステップで「がんばれば何とかなりそうな〜」ってレベルの目標を選んでいるので、主な障害は自分の問題でしかありえないはずなんですね。"
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
▼ステップ4:計画(Plan)
|
164
|
-
|
165
|
-
上で考えた障害を克服する方法を考え、具体的な対策→「もしXが起きたらYをやる」
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
自分の願望や障害を可能なかぎり詳細にイメージしたうえで、図のような短い文章に落としこむのがポイント
|
170
|
-
|
171
|
-
非常にシンプルですが、これだけで目標の達成率が2倍も変わってくる
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
なぜ『心理対比』はそこまで効くのか?
|
190
|
-
|
191
|
-
1.目標を達成したイメージを細かく思い描く
|
192
|
-
|
193
|
-
2.脳がダイレクトにイメージを受け取る
|
194
|
-
|
195
|
-
3.「あれ?目標を達成できるんじゃね?」と脳が思い込む
|
196
|
-
|
197
|
-
※脳はイメージと現実の区別が苦手なので、具体的な創造については現実で達成できそうだと勝手に思う傾向がある
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
※副作用
|
202
|
-
|
203
|
-
1. ポジティブな想像に脳が満足する
|
204
|
-
|
205
|
-
2. 脳が「もういいや」と思い出す
|
206
|
-
|
207
|
-
3. やる気が失せる
|
208
|
-
|
209
|
-
基本的に脳は短期的な感情や目先の欲望に反応する働きのほうが強い
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
そこで、目標達成のプロセスで起こり得るトラブルを想定してあげると、
|
214
|
-
|
215
|
-
1. 脳が短期的なトラブルを認識
|
216
|
-
|
217
|
-
2. 「これらのトラブルを乗り越えればごほうびが手に入るんだな…」と脳が納得する
|
218
|
-
|
219
|
-
3. やる気が出る!
|
220
|
-
|
221
|
-
短期的な「トラブル」を設定することで、脳に目標へ向かうためのロードマップができあがるわけ
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
```
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
パケ構成
|
236
|
-
|
237
|
-
demo
|
238
|
-
|
239
|
-
-controller
|
240
|
-
|
241
|
-
-repository
|
242
|
-
|
243
|
-
|
|
244
|
-
|
245
|
-
-entity----MemberData
|
246
|
-
|
247
|
-
Mapper
|
248
|
-
|
249
|
-
repository
|
250
|
-
|
251
|
-
-service
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
Apllication
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
@Mapper
|
270
|
-
|
271
|
-
public interface MemberMapper {
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
@Select("SELECT * from members")
|
276
|
-
|
277
|
-
List<MemberData> findAll();
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
@Select("SELECT * FROM members where id = #{id}")
|
282
|
-
|
283
|
-
MemberData findById(@Param("id") Integer id);
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
@Insert("INSERT INTO members (name, age) VALUES (#{name}, #{age})")
|
288
|
-
|
289
|
-
void create(@Param("name") String name, @Param("age") Integer age);
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
@Update("UPDATE members " +
|
294
|
-
|
295
|
-
"SET id=#{id}," +
|
296
|
-
|
297
|
-
"name =#{name}," +
|
298
|
-
|
299
|
-
"age =#{age} " +
|
300
|
-
|
301
|
-
"WHERE id =#{id}")
|
302
|
-
|
303
|
-
void update(@Param("id") Integer id, @Param("name") String name, @Param("age") Integer age);
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
@Delete("DELETE FROM members where id = #{id}")
|
308
|
-
|
309
|
-
void deleteById(@Param("id") Integer id);
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
}
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
/**
|
318
|
-
|
319
|
-
* RESTful な URL
|
320
|
-
|
321
|
-
* https://qiita.com/mserizawa/items/b833e407d89abd21ee72#restful-%E3%81%AA-url-%E3%81%AB%E3%81%97%E3%82%88%E3%81%86
|
322
|
-
|
323
|
-
* 総コミット数:23 作成ブランチ:7
|
324
|
-
|
325
|
-
* 合計行数(+追加行数 -削除行数):799 (+727, -72)
|
326
|
-
|
327
|
-
*/
|
328
|
-
|
329
|
-
@RestController
|
330
|
-
|
331
|
-
@RequiredArgsConstructor
|
332
|
-
|
333
|
-
@RequestMapping("/members")
|
334
|
-
|
335
|
-
public class MemberController {
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
private final MemberService memberService;
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
@GetMapping
|
344
|
-
|
345
|
-
public List<MemberData> findAll() {
|
346
|
-
|
347
|
-
return memberService.findAll();
|
348
|
-
|
349
|
-
}
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
@GetMapping("/{id}")
|
354
|
-
|
355
|
-
public MemberData findById(@PathVariable int id){
|
356
|
-
|
357
|
-
return memberService.findById(id);
|
358
|
-
|
359
|
-
}
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
@PostMapping
|
364
|
-
|
365
|
-
@ResponseBody
|
366
|
-
|
367
|
-
public void create(@RequestBody List<MemberData> memberData){
|
368
|
-
|
369
|
-
memberService.create(memberData);
|
370
|
-
|
371
|
-
}
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
@PutMapping("/{id}")
|
376
|
-
|
377
|
-
@ResponseBody
|
378
|
-
|
379
|
-
//Bug: id が存在しないと updateできない → id重複なしなら新規登録したい
|
380
|
-
|
381
|
-
public void update(@PathVariable int id, @RequestBody MemberData memberData){
|
382
|
-
|
383
|
-
memberService.update(id, memberData);
|
384
|
-
|
385
|
-
}
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
@DeleteMapping("/{id}")
|
390
|
-
|
391
|
-
//Bug:id で delete すると id が欠番になる
|
392
|
-
|
393
|
-
public void deleteById(@PathVariable int id){
|
394
|
-
|
395
|
-
memberService.deleteById(id);
|
396
|
-
|
397
|
-
}
|
398
|
-
|
399
|
-
//実装手順: branch作成, PullRequest作成, 空コミット, 実装orリファクタ, マージ
|
400
|
-
|
401
|
-
//実装感想: 1.O/Rマッパー(Mybatis, Prizma, etc…)は DB操作には必須
|
402
|
-
|
403
|
-
// 3.【課題】フロント → エンドの疎通の理解が必要(Json形式のリクエスト作成方法, URL組立てBackEndに送信する方法)
|
404
|
-
|
405
|
-
// 4.【苦労予想】テスト設計, 異常系制御, 言語ごとのテストフレームワーク, エビデンス取得作業
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
}
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
```
|
420
|
-
|
421
|
-
@Repository
|
422
|
-
|
423
|
-
@RequiredArgsConstructor
|
424
|
-
|
425
|
-
public class MemberRepository{
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
private final MemberMapper mapper;
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
public List<MemberData> findAll(){
|
434
|
-
|
435
|
-
return mapper.findAll();
|
436
|
-
|
437
|
-
}
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
public MemberData findById(int id){
|
442
|
-
|
443
|
-
return mapper.findById(id);
|
444
|
-
|
445
|
-
}
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
public void create(String name, int age){
|
450
|
-
|
451
|
-
mapper.create(name, age);
|
452
|
-
|
453
|
-
}
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
public void update(int id, String name, int age){
|
458
|
-
|
459
|
-
mapper.update(id,name, age);
|
460
|
-
|
461
|
-
}
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
public void deleteById(int id){
|
466
|
-
|
467
|
-
mapper.deleteById(id);
|
468
|
-
|
469
|
-
}
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
}
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
@Service
|
486
|
-
|
487
|
-
@RequiredArgsConstructor
|
488
|
-
|
489
|
-
public class MemberService {
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
private final MemberRepository memberRepository;
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
public List<MemberData> findAll(){
|
500
|
-
|
501
|
-
return memberRepository.findAll();
|
502
|
-
|
503
|
-
}
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
public MemberData findById(int id){
|
508
|
-
|
509
|
-
return memberRepository.findById(id);
|
510
|
-
|
511
|
-
}
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
public void create(List<MemberData> memberData){
|
516
|
-
|
517
|
-
for(MemberData data: memberData){
|
518
|
-
|
519
|
-
memberRepository.create(data.getName(), data.getAge());
|
520
|
-
|
521
|
-
}
|
522
|
-
|
523
|
-
System.out.println("登録完了");
|
524
|
-
|
525
|
-
}
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
public void update(int id, MemberData memberData){
|
530
|
-
|
531
|
-
memberRepository.update(id, memberData.getName(), memberData.getAge());
|
532
|
-
|
533
|
-
System.out.println("更新完了");
|
534
|
-
|
535
|
-
}
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
public void deleteById(int id){
|
540
|
-
|
541
|
-
memberRepository.deleteById(id);
|
542
|
-
|
543
|
-
System.out.println("削除完了");
|
544
|
-
|
545
|
-
}
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
}
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
```
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
```
|
17
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -418,46 +418,176 @@
|
|
418
418
|
|
419
419
|
```
|
420
420
|
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
421
|
+
@Repository
|
422
|
+
|
423
|
+
@RequiredArgsConstructor
|
424
|
+
|
425
|
+
public class MemberRepository{
|
426
|
+
|
427
|
+
|
428
|
+
|
429
|
+
private final MemberMapper mapper;
|
430
|
+
|
431
|
+
|
432
|
+
|
433
|
+
public List<MemberData> findAll(){
|
434
|
+
|
435
|
+
return mapper.findAll();
|
436
|
+
|
437
|
+
}
|
438
|
+
|
439
|
+
|
440
|
+
|
441
|
+
public MemberData findById(int id){
|
442
|
+
|
443
|
+
return mapper.findById(id);
|
444
|
+
|
445
|
+
}
|
446
|
+
|
447
|
+
|
448
|
+
|
449
|
+
public void create(String name, int age){
|
450
|
+
|
451
|
+
mapper.create(name, age);
|
452
|
+
|
453
|
+
}
|
454
|
+
|
455
|
+
|
456
|
+
|
457
|
+
public void update(int id, String name, int age){
|
458
|
+
|
459
|
+
mapper.update(id,name, age);
|
460
|
+
|
461
|
+
}
|
462
|
+
|
463
|
+
|
464
|
+
|
465
|
+
public void deleteById(int id){
|
466
|
+
|
467
|
+
mapper.deleteById(id);
|
468
|
+
|
469
|
+
}
|
470
|
+
|
471
|
+
|
472
|
+
|
473
|
+
}
|
474
|
+
|
475
|
+
|
476
|
+
|
477
|
+
|
478
|
+
|
479
|
+
|
480
|
+
|
481
|
+
|
482
|
+
|
483
|
+
|
484
|
+
|
485
|
+
@Service
|
486
|
+
|
487
|
+
@RequiredArgsConstructor
|
488
|
+
|
489
|
+
public class MemberService {
|
490
|
+
|
491
|
+
|
492
|
+
|
493
|
+
private final MemberRepository memberRepository;
|
494
|
+
|
495
|
+
|
496
|
+
|
497
|
+
|
498
|
+
|
499
|
+
public List<MemberData> findAll(){
|
500
|
+
|
501
|
+
return memberRepository.findAll();
|
502
|
+
|
503
|
+
}
|
504
|
+
|
505
|
+
|
506
|
+
|
507
|
+
public MemberData findById(int id){
|
508
|
+
|
509
|
+
return memberRepository.findById(id);
|
510
|
+
|
511
|
+
}
|
512
|
+
|
513
|
+
|
514
|
+
|
515
|
+
public void create(List<MemberData> memberData){
|
516
|
+
|
517
|
+
for(MemberData data: memberData){
|
518
|
+
|
519
|
+
memberRepository.create(data.getName(), data.getAge());
|
520
|
+
|
521
|
+
}
|
522
|
+
|
523
|
+
System.out.println("登録完了");
|
524
|
+
|
525
|
+
}
|
526
|
+
|
527
|
+
|
528
|
+
|
529
|
+
public void update(int id, MemberData memberData){
|
530
|
+
|
531
|
+
memberRepository.update(id, memberData.getName(), memberData.getAge());
|
532
|
+
|
533
|
+
System.out.println("更新完了");
|
534
|
+
|
535
|
+
}
|
536
|
+
|
537
|
+
|
538
|
+
|
539
|
+
public void deleteById(int id){
|
540
|
+
|
541
|
+
memberRepository.deleteById(id);
|
542
|
+
|
543
|
+
System.out.println("削除完了");
|
544
|
+
|
545
|
+
}
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
}
|
550
|
+
|
551
|
+
|
552
|
+
|
553
|
+
```
|
554
|
+
|
555
|
+
|
556
|
+
|
557
|
+
|
558
|
+
|
559
|
+
|
560
|
+
|
561
|
+
|
562
|
+
|
563
|
+
|
564
|
+
|
565
|
+
|
566
|
+
|
567
|
+
|
568
|
+
|
569
|
+
|
570
|
+
|
571
|
+
|
572
|
+
|
573
|
+
|
574
|
+
|
575
|
+
|
576
|
+
|
577
|
+
|
578
|
+
|
579
|
+
|
580
|
+
|
581
|
+
|
582
|
+
|
583
|
+
|
584
|
+
|
585
|
+
|
586
|
+
|
587
|
+
|
588
|
+
|
589
|
+
|
590
|
+
|
591
|
+
|
592
|
+
|
593
|
+
```
|
16
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,3 +91,373 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
```
|
98
|
+
|
99
|
+
前提:ポジティブシンキングなんてムダだ!(メタ分析)
|
100
|
+
|
101
|
+
→→心理対比さえ実践すればいい(1回につき15〜20分が目安)
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
▼ステップ1:願望(Wish) もっとも重要なもの1つに絞る
|
110
|
+
|
111
|
+
"仕事やプライベートに関して、自分が抱く希望や不安を詳細にいくつか書き出す(または思い描く)。健康になる!
|
112
|
+
|
113
|
+
見た目が良くなる!
|
114
|
+
|
115
|
+
モテる!
|
116
|
+
|
117
|
+
医療費が減る!
|
118
|
+
|
119
|
+
自慢できる!
|
120
|
+
|
121
|
+
ブログのネタになる!"
|
122
|
+
|
123
|
+
このとき重要なのは、「達成は難しいけど、がんばれば何とかなりそうだ:な〜」ぐらいの難易度設定にしておく:「1年で億万長者」とか「ベストセラー作家に」なんて願望を抱くと、ポジティブシンキングの罠にハマっちゃいますんでご注意ください。また、達成したい願望がいくつもある場合は、自分にとって最も重要なものだけ
|
124
|
+
|
125
|
+
▼ステップ2:成果(Outcome)
|
126
|
+
|
127
|
+
"上で考えた願望や不安に関する「ベストの成果」を思い描きます。しばし頭のなかでメリットをイメージしてみて、一番ポジティブな気分になったものを選べばOK。このとき、選んだメリットについてどんな気分になっているかまでを細かく具体的にイメージすればするほど効果が高まるっぽい。 例:願望:毎日エクササイズをする
|
128
|
+
|
129
|
+
成果:健康で最高の気分になる
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
不安:借金を返す
|
136
|
+
|
137
|
+
成果:完済!"
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
▼ステップ3:障害(Obstacle)
|
142
|
+
|
143
|
+
"いまの自分の目標を達成するために、どんなトラブルが起きるかを詳細にいくつか書き出す(または思い描く)。具体的な考え方としては、
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
どんな考え方が目標の達成をさまたげているのか?
|
148
|
+
|
149
|
+
どんな行動が目標の達成をさまたげているのか?
|
150
|
+
|
151
|
+
どんな癖や習慣が目標の達成をさまたげているのか?
|
152
|
+
|
153
|
+
どんな思い込みが目標の達成をさまたげているのか?
|
154
|
+
|
155
|
+
どんな感情が目標の達成をさまたげているのか?
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
みたいな感じ。というと、「金がない」や「親が反対してる」など、環境や外的な問題をあげる人も多そうですが、これはNGであります。そもそも、「願望(Wish)」のステップで「がんばれば何とかなりそうな〜」ってレベルの目標を選んでいるので、主な障害は自分の問題でしかありえないはずなんですね。"
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
▼ステップ4:計画(Plan)
|
164
|
+
|
165
|
+
上で考えた障害を克服する方法を考え、具体的な対策→「もしXが起きたらYをやる」
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
自分の願望や障害を可能なかぎり詳細にイメージしたうえで、図のような短い文章に落としこむのがポイント
|
170
|
+
|
171
|
+
非常にシンプルですが、これだけで目標の達成率が2倍も変わってくる
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
なぜ『心理対比』はそこまで効くのか?
|
190
|
+
|
191
|
+
1.目標を達成したイメージを細かく思い描く
|
192
|
+
|
193
|
+
2.脳がダイレクトにイメージを受け取る
|
194
|
+
|
195
|
+
3.「あれ?目標を達成できるんじゃね?」と脳が思い込む
|
196
|
+
|
197
|
+
※脳はイメージと現実の区別が苦手なので、具体的な創造については現実で達成できそうだと勝手に思う傾向がある
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
※副作用
|
202
|
+
|
203
|
+
1. ポジティブな想像に脳が満足する
|
204
|
+
|
205
|
+
2. 脳が「もういいや」と思い出す
|
206
|
+
|
207
|
+
3. やる気が失せる
|
208
|
+
|
209
|
+
基本的に脳は短期的な感情や目先の欲望に反応する働きのほうが強い
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
そこで、目標達成のプロセスで起こり得るトラブルを想定してあげると、
|
214
|
+
|
215
|
+
1. 脳が短期的なトラブルを認識
|
216
|
+
|
217
|
+
2. 「これらのトラブルを乗り越えればごほうびが手に入るんだな…」と脳が納得する
|
218
|
+
|
219
|
+
3. やる気が出る!
|
220
|
+
|
221
|
+
短期的な「トラブル」を設定することで、脳に目標へ向かうためのロードマップができあがるわけ
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
```
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
パケ構成
|
236
|
+
|
237
|
+
demo
|
238
|
+
|
239
|
+
-controller
|
240
|
+
|
241
|
+
-repository
|
242
|
+
|
243
|
+
|
|
244
|
+
|
245
|
+
-entity----MemberData
|
246
|
+
|
247
|
+
Mapper
|
248
|
+
|
249
|
+
repository
|
250
|
+
|
251
|
+
-service
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
Apllication
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
@Mapper
|
270
|
+
|
271
|
+
public interface MemberMapper {
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
@Select("SELECT * from members")
|
276
|
+
|
277
|
+
List<MemberData> findAll();
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
@Select("SELECT * FROM members where id = #{id}")
|
282
|
+
|
283
|
+
MemberData findById(@Param("id") Integer id);
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
@Insert("INSERT INTO members (name, age) VALUES (#{name}, #{age})")
|
288
|
+
|
289
|
+
void create(@Param("name") String name, @Param("age") Integer age);
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
@Update("UPDATE members " +
|
294
|
+
|
295
|
+
"SET id=#{id}," +
|
296
|
+
|
297
|
+
"name =#{name}," +
|
298
|
+
|
299
|
+
"age =#{age} " +
|
300
|
+
|
301
|
+
"WHERE id =#{id}")
|
302
|
+
|
303
|
+
void update(@Param("id") Integer id, @Param("name") String name, @Param("age") Integer age);
|
304
|
+
|
305
|
+
|
306
|
+
|
307
|
+
@Delete("DELETE FROM members where id = #{id}")
|
308
|
+
|
309
|
+
void deleteById(@Param("id") Integer id);
|
310
|
+
|
311
|
+
|
312
|
+
|
313
|
+
}
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
/**
|
318
|
+
|
319
|
+
* RESTful な URL
|
320
|
+
|
321
|
+
* https://qiita.com/mserizawa/items/b833e407d89abd21ee72#restful-%E3%81%AA-url-%E3%81%AB%E3%81%97%E3%82%88%E3%81%86
|
322
|
+
|
323
|
+
* 総コミット数:23 作成ブランチ:7
|
324
|
+
|
325
|
+
* 合計行数(+追加行数 -削除行数):799 (+727, -72)
|
326
|
+
|
327
|
+
*/
|
328
|
+
|
329
|
+
@RestController
|
330
|
+
|
331
|
+
@RequiredArgsConstructor
|
332
|
+
|
333
|
+
@RequestMapping("/members")
|
334
|
+
|
335
|
+
public class MemberController {
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
private final MemberService memberService;
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
@GetMapping
|
344
|
+
|
345
|
+
public List<MemberData> findAll() {
|
346
|
+
|
347
|
+
return memberService.findAll();
|
348
|
+
|
349
|
+
}
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
@GetMapping("/{id}")
|
354
|
+
|
355
|
+
public MemberData findById(@PathVariable int id){
|
356
|
+
|
357
|
+
return memberService.findById(id);
|
358
|
+
|
359
|
+
}
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
@PostMapping
|
364
|
+
|
365
|
+
@ResponseBody
|
366
|
+
|
367
|
+
public void create(@RequestBody List<MemberData> memberData){
|
368
|
+
|
369
|
+
memberService.create(memberData);
|
370
|
+
|
371
|
+
}
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
@PutMapping("/{id}")
|
376
|
+
|
377
|
+
@ResponseBody
|
378
|
+
|
379
|
+
//Bug: id が存在しないと updateできない → id重複なしなら新規登録したい
|
380
|
+
|
381
|
+
public void update(@PathVariable int id, @RequestBody MemberData memberData){
|
382
|
+
|
383
|
+
memberService.update(id, memberData);
|
384
|
+
|
385
|
+
}
|
386
|
+
|
387
|
+
|
388
|
+
|
389
|
+
@DeleteMapping("/{id}")
|
390
|
+
|
391
|
+
//Bug:id で delete すると id が欠番になる
|
392
|
+
|
393
|
+
public void deleteById(@PathVariable int id){
|
394
|
+
|
395
|
+
memberService.deleteById(id);
|
396
|
+
|
397
|
+
}
|
398
|
+
|
399
|
+
//実装手順: branch作成, PullRequest作成, 空コミット, 実装orリファクタ, マージ
|
400
|
+
|
401
|
+
//実装感想: 1.O/Rマッパー(Mybatis, Prizma, etc…)は DB操作には必須
|
402
|
+
|
403
|
+
// 3.【課題】フロント → エンドの疎通の理解が必要(Json形式のリクエスト作成方法, URL組立てBackEndに送信する方法)
|
404
|
+
|
405
|
+
// 4.【苦労予想】テスト設計, 異常系制御, 言語ごとのテストフレームワーク, エビデンス取得作業
|
406
|
+
|
407
|
+
|
408
|
+
|
409
|
+
}
|
410
|
+
|
411
|
+
|
412
|
+
|
413
|
+
|
414
|
+
|
415
|
+
|
416
|
+
|
417
|
+
|
418
|
+
|
419
|
+
```
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
|
424
|
+
|
425
|
+
|
426
|
+
|
427
|
+
|
428
|
+
|
429
|
+
|
430
|
+
|
431
|
+
|
432
|
+
|
433
|
+
|
434
|
+
|
435
|
+
|
436
|
+
|
437
|
+
|
438
|
+
|
439
|
+
|
440
|
+
|
441
|
+
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
|
446
|
+
|
447
|
+
|
448
|
+
|
449
|
+
|
450
|
+
|
451
|
+
|
452
|
+
|
453
|
+
|
454
|
+
|
455
|
+
|
456
|
+
|
457
|
+
|
458
|
+
|
459
|
+
|
460
|
+
|
461
|
+
|
462
|
+
|
463
|
+
```
|
15
ミスがありました
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,185 +91,3 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
```
|
100
|
-
|
101
|
-
https://craftsman-software.com/posts/56
|
102
|
-
|
103
|
-
分報じゃないけど、好きなときに好きなこと(仕事上でもプライベートでもの課題や感情)を書いていい場所
|
104
|
-
|
105
|
-
書く義務もなければ読む義務もないので気軽にどぞ
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
◆フロントエンドのすべて
|
112
|
-
|
113
|
-
https://roadmap.sh/frontend
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
https://zenn.dev/kkeeth/scraps/dd30ae9d48f092
|
118
|
-
|
119
|
-
↑解説記事
|
120
|
-
|
121
|
-
× 「こんなにやらなきゃいけないことあるんだ」
|
122
|
-
|
123
|
-
○ 「ふーん、こんな広い世界なんだ」
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
開発の心得
|
130
|
-
|
131
|
-
テストがしにくい場合は、おそらく実装のクラス設計や関数の分け方がわるいです
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
本来webサーバーは『構築するもの』
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
以下はDLするだけでWebサーバを構築する必要がない
|
144
|
-
|
145
|
-
XAMPP:Apache
|
146
|
-
|
147
|
-
SpringBoot:Tomcat、Jetty、UnderTow
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
```
|
154
|
-
|
155
|
-
「XAMPP」の名称由来
|
156
|
-
|
157
|
-
・「X」←クロスプラットフォーム対応(Windows、Linux、Mac)
|
158
|
-
|
159
|
-
・「A」←Apache
|
160
|
-
|
161
|
-
・「M」←MySQL/MariaDB
|
162
|
-
|
163
|
-
・「P」←PHP
|
164
|
-
|
165
|
-
・「P」←Perl
|
166
|
-
|
167
|
-
```
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
#CakePHP Laravel 違い メリットデメリット
|
174
|
-
|
175
|
-
>前提:どちらもPHPのフレームワーク
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
CakePHP:規約が基本で爆速の開発スピードが魅力だが、基本的にはシンプルに開発を進める
|
182
|
-
|
183
|
-
Laravel :便利でとても賢いフレームワーク、比較的に最新の技術や流行に対して対応力が高い
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
##CakePHP メリット デメリット
|
190
|
-
|
191
|
-
メリット
|
192
|
-
|
193
|
-
>初心者でも理解しやすい
|
194
|
-
|
195
|
-
キャッシュ機能で表示の高速化が可能
|
196
|
-
|
197
|
-
生成されたSQLのデバッグ機能やバリデーション機能付き
|
198
|
-
|
199
|
-
活発なコミュニティがある(意見がもらいやすい)
|
200
|
-
|
201
|
-
複数人で行う開発に向いている
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
高速に一定のセキュリティが担保されたプロジェクトを、
|
206
|
-
|
207
|
-
経験のない方でも比較的手軽に開発できるのが最大のメリット
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
デメリット
|
214
|
-
|
215
|
-
>規約が厳しい=柔軟性に欠ける
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
規約が厳しいということは、誰がプログラミングしても規約通りにコーディングされるため、一貫性が出てコードの可読性も向上します。
|
220
|
-
|
221
|
-
要望が増えてくると、CakePHPだと対応に時間がかかってしまうことも。
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
##Laravel メリット デメリット
|
236
|
-
|
237
|
-
メリット
|
238
|
-
|
239
|
-
>頻繁に行われるバージョンアップ(新機能追加されやすい)
|
240
|
-
|
241
|
-
人気度の高さ故のコミュニティ
|
242
|
-
|
243
|
-
比較的簡単に習得可能
|
244
|
-
|
245
|
-
開発スピードもはやい
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
デメリット
|
250
|
-
|
251
|
-
>複数人での開発をするには注意が必要
|
252
|
-
|
253
|
-
CakePHPと比べると処理速度が遅め(気にしなくてOK)
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
Laravelの柔軟性の高さ故の問題。
|
258
|
-
|
259
|
-
人によっては同じ処理でも全然コーディングの仕方が変わることもあるため、大きめなプロジェクトの場合やコーディングに携わる人が複数人に渡る場合は、コーディング規約やルールを先に決めておくのがおきましょう。
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
#現在のPHPフレームワークでは,圧倒的にLaravelが人気
|
270
|
-
|
271
|
-
新規開発→Laravel
|
272
|
-
|
273
|
-
少し前に開発→CakePHP
|
274
|
-
|
275
|
-
```
|
14
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,3 +91,185 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
```
|
100
|
+
|
101
|
+
https://craftsman-software.com/posts/56
|
102
|
+
|
103
|
+
分報じゃないけど、好きなときに好きなこと(仕事上でもプライベートでもの課題や感情)を書いていい場所
|
104
|
+
|
105
|
+
書く義務もなければ読む義務もないので気軽にどぞ
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
◆フロントエンドのすべて
|
112
|
+
|
113
|
+
https://roadmap.sh/frontend
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
https://zenn.dev/kkeeth/scraps/dd30ae9d48f092
|
118
|
+
|
119
|
+
↑解説記事
|
120
|
+
|
121
|
+
× 「こんなにやらなきゃいけないことあるんだ」
|
122
|
+
|
123
|
+
○ 「ふーん、こんな広い世界なんだ」
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
開発の心得
|
130
|
+
|
131
|
+
テストがしにくい場合は、おそらく実装のクラス設計や関数の分け方がわるいです
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
本来webサーバーは『構築するもの』
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
以下はDLするだけでWebサーバを構築する必要がない
|
144
|
+
|
145
|
+
XAMPP:Apache
|
146
|
+
|
147
|
+
SpringBoot:Tomcat、Jetty、UnderTow
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
```
|
154
|
+
|
155
|
+
「XAMPP」の名称由来
|
156
|
+
|
157
|
+
・「X」←クロスプラットフォーム対応(Windows、Linux、Mac)
|
158
|
+
|
159
|
+
・「A」←Apache
|
160
|
+
|
161
|
+
・「M」←MySQL/MariaDB
|
162
|
+
|
163
|
+
・「P」←PHP
|
164
|
+
|
165
|
+
・「P」←Perl
|
166
|
+
|
167
|
+
```
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
#CakePHP Laravel 違い メリットデメリット
|
174
|
+
|
175
|
+
>前提:どちらもPHPのフレームワーク
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
CakePHP:規約が基本で爆速の開発スピードが魅力だが、基本的にはシンプルに開発を進める
|
182
|
+
|
183
|
+
Laravel :便利でとても賢いフレームワーク、比較的に最新の技術や流行に対して対応力が高い
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
##CakePHP メリット デメリット
|
190
|
+
|
191
|
+
メリット
|
192
|
+
|
193
|
+
>初心者でも理解しやすい
|
194
|
+
|
195
|
+
キャッシュ機能で表示の高速化が可能
|
196
|
+
|
197
|
+
生成されたSQLのデバッグ機能やバリデーション機能付き
|
198
|
+
|
199
|
+
活発なコミュニティがある(意見がもらいやすい)
|
200
|
+
|
201
|
+
複数人で行う開発に向いている
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
高速に一定のセキュリティが担保されたプロジェクトを、
|
206
|
+
|
207
|
+
経験のない方でも比較的手軽に開発できるのが最大のメリット
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
デメリット
|
214
|
+
|
215
|
+
>規約が厳しい=柔軟性に欠ける
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
規約が厳しいということは、誰がプログラミングしても規約通りにコーディングされるため、一貫性が出てコードの可読性も向上します。
|
220
|
+
|
221
|
+
要望が増えてくると、CakePHPだと対応に時間がかかってしまうことも。
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
##Laravel メリット デメリット
|
236
|
+
|
237
|
+
メリット
|
238
|
+
|
239
|
+
>頻繁に行われるバージョンアップ(新機能追加されやすい)
|
240
|
+
|
241
|
+
人気度の高さ故のコミュニティ
|
242
|
+
|
243
|
+
比較的簡単に習得可能
|
244
|
+
|
245
|
+
開発スピードもはやい
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
デメリット
|
250
|
+
|
251
|
+
>複数人での開発をするには注意が必要
|
252
|
+
|
253
|
+
CakePHPと比べると処理速度が遅め(気にしなくてOK)
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
Laravelの柔軟性の高さ故の問題。
|
258
|
+
|
259
|
+
人によっては同じ処理でも全然コーディングの仕方が変わることもあるため、大きめなプロジェクトの場合やコーディングに携わる人が複数人に渡る場合は、コーディング規約やルールを先に決めておくのがおきましょう。
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
#現在のPHPフレームワークでは,圧倒的にLaravelが人気
|
270
|
+
|
271
|
+
新規開発→Laravel
|
272
|
+
|
273
|
+
少し前に開発→CakePHP
|
274
|
+
|
275
|
+
```
|
13
dddddddddddddd
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,27 +91,3 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
```
|
98
|
-
|
99
|
-
dependencies {
|
100
|
-
|
101
|
-
implementation 'org.springframework.boot:spring-boot-starter-web'
|
102
|
-
|
103
|
-
implementation group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '2.1.4'
|
104
|
-
|
105
|
-
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
106
|
-
|
107
|
-
implementation 'org.springframework.boot:spring-boot-starter-actuator'
|
108
|
-
|
109
|
-
compileOnly 'org.projectlombok:lombok'
|
110
|
-
|
111
|
-
annotationProcessor 'org.projectlombok:lombok'
|
112
|
-
|
113
|
-
runtimeOnly 'mysql:mysql-connector-java'
|
114
|
-
|
115
|
-
}
|
116
|
-
|
117
|
-
```
|
12
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,3 +91,27 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
```
|
98
|
+
|
99
|
+
dependencies {
|
100
|
+
|
101
|
+
implementation 'org.springframework.boot:spring-boot-starter-web'
|
102
|
+
|
103
|
+
implementation group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '2.1.4'
|
104
|
+
|
105
|
+
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
106
|
+
|
107
|
+
implementation 'org.springframework.boot:spring-boot-starter-actuator'
|
108
|
+
|
109
|
+
compileOnly 'org.projectlombok:lombok'
|
110
|
+
|
111
|
+
annotationProcessor 'org.projectlombok:lombok'
|
112
|
+
|
113
|
+
runtimeOnly 'mysql:mysql-connector-java'
|
114
|
+
|
115
|
+
}
|
116
|
+
|
117
|
+
```
|
11
dddddddddddddd
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,207 +91,3 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
```
|
98
|
-
|
99
|
-
【備忘録】InteliJ便利ショートカット(Windows)
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
個人的によく使用するものを抜粋????
|
106
|
-
|
107
|
-
覚えてないものほど上に記載
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
>参考 Windows & Mac ver
|
114
|
-
|
115
|
-
https://qiita.com/yoppe/items/f7cbeb825c071691d3f2
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
Git機能もこちらから
|
120
|
-
|
121
|
-
https://qiita.com/yoppe/items/fd03607d4d4f191d32dd
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
■ ファイル横断テキスト検索(Find in Path)
|
128
|
-
|
129
|
-
ショートカットキー(Windows):Ctrl + Shift + F
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
■ なんでも検索(Search Everywhere)
|
134
|
-
|
135
|
-
ショートカットキー:Shift 2回連打
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
■ 現在開いてるファイルのプロジェクト/パッケージへジャンプ(Select In)
|
142
|
-
|
143
|
-
ショートカットキー(Windows):Alt + F1
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
■ 選択行を上下に移動(Move Line Up/Move Line Down)
|
152
|
-
|
153
|
-
ショートカットキー(Windows):Alt + Shift + ↑/↓
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
■ マルチカーソル(Add Selection for Next Occurrence)
|
162
|
-
|
163
|
-
ショートカットキー(Windows):(特定文字列を選択してから)Alt + J
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
※置換すると不要なとこまで変更してしまう
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
■ プロジェクトツールウィンドウの表示/非表示(Structure)
|
180
|
-
|
181
|
-
ショートカットキー(Windows):Alt + 1
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
■ 現在の行を複製(Duplicate Line or Selection)
|
192
|
-
|
193
|
-
ショートカットキー(Windows):Ctrl + D
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
#不要なimport文削除 :
|
200
|
-
|
201
|
-
ショートカットキー(Windows):Ctrl + Alt + O
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
# コピー履歴から貼り付け(Paste from History)
|
208
|
-
|
209
|
-
※Windowsのみ
|
210
|
-
|
211
|
-
ショートカットキー(Windows):Windowsアイコン + V
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
■ 宣言へジャンプ(Go to Declaration or Usages)
|
218
|
-
|
219
|
-
ショートカットキー(Windows):Ctrl + B
|
220
|
-
|
221
|
-
or Ctrl + クリック
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
便利そう
|
230
|
-
|
231
|
-
■ 継承関係をクラス図で表示(Show UML Popup)
|
232
|
-
|
233
|
-
ショートカットキー(Windows):Ctrl + Alt + U
|
234
|
-
|
235
|
-
```
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
```
|
242
|
-
|
243
|
-
パスパラメータ、クエリパラメータ、リクエストボディ 違いとは?
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
##パスパラメータ(Pathparameter),クエリパラメータ(queryparameter)
|
250
|
-
|
251
|
-
URIで送るものがパスパラメータとクエリパラメータです。
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
```
|
256
|
-
|
257
|
-
https://example.com/pathparameter/{pathparameter}?queryparameter1=hogehoge&queryparameter2=fugafuga
|
258
|
-
|
259
|
-
```
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
例を見て貰えばわかるのですが、
|
264
|
-
|
265
|
-
URIでドメインの後、?の前に来るものがパスパラメータです。
|
266
|
-
|
267
|
-
そして、?の後に来るのがクエリパラメータです。
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
##リクエストボディ(requestBody)
|
274
|
-
|
275
|
-
URIではなく、JSONで送るものです。
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
```
|
280
|
-
|
281
|
-
{
|
282
|
-
|
283
|
-
hoge_name: fugafuga,
|
284
|
-
|
285
|
-
description: hogefugahoge,
|
286
|
-
|
287
|
-
}
|
288
|
-
|
289
|
-
```
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
```
|
10
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -233,3 +233,65 @@
|
|
233
233
|
ショートカットキー(Windows):Ctrl + Alt + U
|
234
234
|
|
235
235
|
```
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
```
|
242
|
+
|
243
|
+
パスパラメータ、クエリパラメータ、リクエストボディ 違いとは?
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
##パスパラメータ(Pathparameter),クエリパラメータ(queryparameter)
|
250
|
+
|
251
|
+
URIで送るものがパスパラメータとクエリパラメータです。
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
```
|
256
|
+
|
257
|
+
https://example.com/pathparameter/{pathparameter}?queryparameter1=hogehoge&queryparameter2=fugafuga
|
258
|
+
|
259
|
+
```
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
例を見て貰えばわかるのですが、
|
264
|
+
|
265
|
+
URIでドメインの後、?の前に来るものがパスパラメータです。
|
266
|
+
|
267
|
+
そして、?の後に来るのがクエリパラメータです。
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
##リクエストボディ(requestBody)
|
274
|
+
|
275
|
+
URIではなく、JSONで送るものです。
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
```
|
280
|
+
|
281
|
+
{
|
282
|
+
|
283
|
+
hoge_name: fugafuga,
|
284
|
+
|
285
|
+
description: hogefugahoge,
|
286
|
+
|
287
|
+
}
|
288
|
+
|
289
|
+
```
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
```
|
9
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,3 +91,145 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
```
|
98
|
+
|
99
|
+
【備忘録】InteliJ便利ショートカット(Windows)
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
個人的によく使用するものを抜粋????
|
106
|
+
|
107
|
+
覚えてないものほど上に記載
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
>参考 Windows & Mac ver
|
114
|
+
|
115
|
+
https://qiita.com/yoppe/items/f7cbeb825c071691d3f2
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
Git機能もこちらから
|
120
|
+
|
121
|
+
https://qiita.com/yoppe/items/fd03607d4d4f191d32dd
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
■ ファイル横断テキスト検索(Find in Path)
|
128
|
+
|
129
|
+
ショートカットキー(Windows):Ctrl + Shift + F
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
■ なんでも検索(Search Everywhere)
|
134
|
+
|
135
|
+
ショートカットキー:Shift 2回連打
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
■ 現在開いてるファイルのプロジェクト/パッケージへジャンプ(Select In)
|
142
|
+
|
143
|
+
ショートカットキー(Windows):Alt + F1
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
■ 選択行を上下に移動(Move Line Up/Move Line Down)
|
152
|
+
|
153
|
+
ショートカットキー(Windows):Alt + Shift + ↑/↓
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
■ マルチカーソル(Add Selection for Next Occurrence)
|
162
|
+
|
163
|
+
ショートカットキー(Windows):(特定文字列を選択してから)Alt + J
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
※置換すると不要なとこまで変更してしまう
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
■ プロジェクトツールウィンドウの表示/非表示(Structure)
|
180
|
+
|
181
|
+
ショートカットキー(Windows):Alt + 1
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
■ 現在の行を複製(Duplicate Line or Selection)
|
192
|
+
|
193
|
+
ショートカットキー(Windows):Ctrl + D
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
#不要なimport文削除 :
|
200
|
+
|
201
|
+
ショートカットキー(Windows):Ctrl + Alt + O
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
# コピー履歴から貼り付け(Paste from History)
|
208
|
+
|
209
|
+
※Windowsのみ
|
210
|
+
|
211
|
+
ショートカットキー(Windows):Windowsアイコン + V
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
■ 宣言へジャンプ(Go to Declaration or Usages)
|
218
|
+
|
219
|
+
ショートカットキー(Windows):Ctrl + B
|
220
|
+
|
221
|
+
or Ctrl + クリック
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
便利そう
|
230
|
+
|
231
|
+
■ 継承関係をクラス図で表示(Show UML Popup)
|
232
|
+
|
233
|
+
ショートカットキー(Windows):Ctrl + Alt + U
|
234
|
+
|
235
|
+
```
|
8
dddddddddddddd
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,129 +91,3 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
```
|
102
|
-
|
103
|
-
調子がよかった理由
|
104
|
-
|
105
|
-
1.明確な道を提示 & 相談 &共感(その後も何するか明確だった)
|
106
|
-
|
107
|
-
2.作業が思ったよりも難しくない(ここなら返信作業が大変だと思った)
|
108
|
-
|
109
|
-
3.作業量が軽く(できたが多い)
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
→対策
|
116
|
-
|
117
|
-
1. 具体的な道筋(目標と努力両方に意識を切り替えながらモチベを保つ) ※今までは目標だけが先行していた
|
118
|
-
|
119
|
-
2.普段やっている作業が『それほど大変じゃない』というのを脳に刷り込む必要がある(脳トレーニング)
|
120
|
-
|
121
|
-
3.仕事とプライベートonoffをつける(以前はonのまま
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
※これらを一度に身につけないように
|
126
|
-
|
127
|
-
するといいと思う。
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
■目標の達成率が2倍に高まる『WOOP』 (本は効かなかった)
|
132
|
-
|
133
|
-
https://yuchrszk.blogspot.com/2014/11/woop-3.html
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
■ぐずぐず克服シート(エクセル使用) 日常用 / 仕事用
|
140
|
-
|
141
|
-
https://yuchrszk.blogspot.com/2014/08/blog-post_5.html
|
142
|
-
|
143
|
-
いやな気分よ、さようなら 検討
|
144
|
-
|
145
|
-
日常 仕事
|
146
|
-
|
147
|
-
スペース:
|
148
|
-
|
149
|
-
朝配信:
|
150
|
-
|
151
|
-
出勤(朝散歩):
|
152
|
-
|
153
|
-
帰宅:
|
154
|
-
|
155
|
-
即シャワー:
|
156
|
-
|
157
|
-
椅子上で
|
158
|
-
|
159
|
-
文字打ち:
|
160
|
-
|
161
|
-
ココナラ連絡:
|
162
|
-
|
163
|
-
(細分化)
|
164
|
-
|
165
|
-
担当者C
|
166
|
-
|
167
|
-
N
|
168
|
-
|
169
|
-
Nめ
|
170
|
-
|
171
|
-
動画班
|
172
|
-
|
173
|
-
動画編集カット(外注希望):
|
174
|
-
|
175
|
-
11時就寝
|
176
|
-
|
177
|
-
麻雀
|
178
|
-
|
179
|
-
ゲーム?配信 not 配信
|
180
|
-
|
181
|
-
タイピング
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
■1秒でやる気を出す心理テクニック→『背筋を伸ばして全身に力を入れつつ腕組みしながら拳を握る』
|
188
|
-
|
189
|
-
https://yuchrszk.blogspot.com/2014/06/blog-post_6497.html
|
190
|
-
|
191
|
-
20〜30秒キープ:闘争本能を刺激するポーズでアドレナリンの分泌が原因
|
192
|
-
|
193
|
-
背筋を伸ばす:(トロント大学)意思力が高まったうえに、痛みにも強くなった(パートナーと別れたときや、仕事の失敗といったような精神的な苦痛も減らせる)
|
194
|
-
|
195
|
-
腕を組む :(2007年の論文)難問題にも粘り強く取組む&成績も非常にUP(モチベ0,気分が落ちてる時も効果あり)
|
196
|
-
|
197
|
-
拳を握る :(2011年の研究)痛みに耐える力がUP&スナック<<健康食品に意識が向くように
|
198
|
-
|
199
|
-
全身に力を入れる:(2011年の研究)全身の筋肉に力を込めると、甘いモノの誘惑を避け、苦い薬でも飲むようになり、嫌なことでも率先して実行するように。長期的なメリットが非常に大きいテク」
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
便利ショートカット:
|
208
|
-
|
209
|
-
[Alt]+[Tab]キーを押すと、開いているウィンドウのイメージが表示されます。 [Alt]キーを押したまま、[Tab]キーを繰り返し押すと、順に選択できます
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
```
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
```
|
7
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -99,3 +99,121 @@
|
|
99
99
|
|
100
100
|
|
101
101
|
```
|
102
|
+
|
103
|
+
調子がよかった理由
|
104
|
+
|
105
|
+
1.明確な道を提示 & 相談 &共感(その後も何するか明確だった)
|
106
|
+
|
107
|
+
2.作業が思ったよりも難しくない(ここなら返信作業が大変だと思った)
|
108
|
+
|
109
|
+
3.作業量が軽く(できたが多い)
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
→対策
|
116
|
+
|
117
|
+
1. 具体的な道筋(目標と努力両方に意識を切り替えながらモチベを保つ) ※今までは目標だけが先行していた
|
118
|
+
|
119
|
+
2.普段やっている作業が『それほど大変じゃない』というのを脳に刷り込む必要がある(脳トレーニング)
|
120
|
+
|
121
|
+
3.仕事とプライベートonoffをつける(以前はonのまま
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
※これらを一度に身につけないように
|
126
|
+
|
127
|
+
するといいと思う。
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
■目標の達成率が2倍に高まる『WOOP』 (本は効かなかった)
|
132
|
+
|
133
|
+
https://yuchrszk.blogspot.com/2014/11/woop-3.html
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
■ぐずぐず克服シート(エクセル使用) 日常用 / 仕事用
|
140
|
+
|
141
|
+
https://yuchrszk.blogspot.com/2014/08/blog-post_5.html
|
142
|
+
|
143
|
+
いやな気分よ、さようなら 検討
|
144
|
+
|
145
|
+
日常 仕事
|
146
|
+
|
147
|
+
スペース:
|
148
|
+
|
149
|
+
朝配信:
|
150
|
+
|
151
|
+
出勤(朝散歩):
|
152
|
+
|
153
|
+
帰宅:
|
154
|
+
|
155
|
+
即シャワー:
|
156
|
+
|
157
|
+
椅子上で
|
158
|
+
|
159
|
+
文字打ち:
|
160
|
+
|
161
|
+
ココナラ連絡:
|
162
|
+
|
163
|
+
(細分化)
|
164
|
+
|
165
|
+
担当者C
|
166
|
+
|
167
|
+
N
|
168
|
+
|
169
|
+
Nめ
|
170
|
+
|
171
|
+
動画班
|
172
|
+
|
173
|
+
動画編集カット(外注希望):
|
174
|
+
|
175
|
+
11時就寝
|
176
|
+
|
177
|
+
麻雀
|
178
|
+
|
179
|
+
ゲーム?配信 not 配信
|
180
|
+
|
181
|
+
タイピング
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
■1秒でやる気を出す心理テクニック→『背筋を伸ばして全身に力を入れつつ腕組みしながら拳を握る』
|
188
|
+
|
189
|
+
https://yuchrszk.blogspot.com/2014/06/blog-post_6497.html
|
190
|
+
|
191
|
+
20〜30秒キープ:闘争本能を刺激するポーズでアドレナリンの分泌が原因
|
192
|
+
|
193
|
+
背筋を伸ばす:(トロント大学)意思力が高まったうえに、痛みにも強くなった(パートナーと別れたときや、仕事の失敗といったような精神的な苦痛も減らせる)
|
194
|
+
|
195
|
+
腕を組む :(2007年の論文)難問題にも粘り強く取組む&成績も非常にUP(モチベ0,気分が落ちてる時も効果あり)
|
196
|
+
|
197
|
+
拳を握る :(2011年の研究)痛みに耐える力がUP&スナック<<健康食品に意識が向くように
|
198
|
+
|
199
|
+
全身に力を入れる:(2011年の研究)全身の筋肉に力を込めると、甘いモノの誘惑を避け、苦い薬でも飲むようになり、嫌なことでも率先して実行するように。長期的なメリットが非常に大きいテク」
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
便利ショートカット:
|
208
|
+
|
209
|
+
[Alt]+[Tab]キーを押すと、開いているウィンドウのイメージが表示されます。 [Alt]キーを押したまま、[Tab]キーを繰り返し押すと、順に選択できます
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
```
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
```
|
6
dddddddddddddd
test
CHANGED
File without changes
|
test
CHANGED
@@ -99,167 +99,3 @@
|
|
99
99
|
|
100
100
|
|
101
101
|
```
|
102
|
-
|
103
|
-
【保存版】 ノート
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
ミスに早期に気づき、対応を迅速に行えるかが、SNS上で批判の集中砲火を受けるか回避できるかに
|
108
|
-
|
109
|
-
論調を適切に把握し、早期に対応を行うことができれば、SNS炎上から称賛に繋がり可能性
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
・炎上に対して事実の確認を早期に行うこと
|
114
|
-
|
115
|
-
・「何が批判の原因となっているのか」「批判されている内容は事実か」「誤解だとすれば、本当はどうだったのか」
|
116
|
-
|
117
|
-
・ユーザーが何に対して批判を行っているのか理解できなければ、謝罪対応も適切には行えません。逆に「本質がわかっていない」という更なる批判につながる可能性もあります。
|
118
|
-
|
119
|
-
・事実の確認と論調の把握ができ、判断材料が揃った段階で、謝罪の方法や今後の対応を検討する
|
120
|
-
|
121
|
-
・どのように信頼を回復していくのか、
|
122
|
-
|
123
|
-
・二度と同じ過ちを侵さないためにどのような対策を講じることができるのか
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
3大NG
|
128
|
-
|
129
|
-
まず1つめは「個人的な反論をしないこと」です。組織として取るべき炎上対策にブレが生じやすくなると同時に、感情に任せた反論となれば、火に油を注ぐことになります。注意したいのは、匿名の書き込みですら特定される恐れがあること。実際に、炎上している会社を擁護する反論を社員が匿名で掲示板に書き込んだところ、投稿の発信元が露呈して大炎上につながったケースもあります。
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
2つめは「苦しい言い訳をしないこと」。以前、従業員がハンバーガーのバンズの上に寝転がっている写真をTwitterに投稿して炎上しました。その際、企業の公式サイトで「発注ミスで廃棄処分だった」と釈明しましたが、これに対してネット上では、「そんな大量な廃棄が出るわけがない」、「その場しのぎの言い訳だ」などとして、炎上が長引いてしまいました。たとえそれが事実であったとしても、まずは謝意を全面に出すことが求められます。
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
3つめは、「鎮静後に気を抜かないこと」。コンビニ大手チェーンにおいて、店舗内のアイス冷凍庫に入った写真がネット上に公開され、炎上したことがあります。本社が公式に謝罪し、テレビ報道もされて一旦は沈静化しましたが、そのわずか1か月後に、別のアルバイトスタッフによる不適切なつぶやきから新たなネットリスクが発生。そのスタッフのFacebookから、学校や交友関係が明るみになり、未成年で飲酒・喫煙していることまで判明し、再炎上しました。炎上を招いた企業に対して、ネットユーザーは一定期間厳しく監視する傾向にあるため、鎮静後も気を抜いてはいけません。
|
138
|
-
|
139
|
-
なお、事態が鎮静化した後もインターネット上に炎上の記録が残り、批判的な書き込みが目に付く状態が続くこともあります。その際、「外部の専門会社に委託して検索順位を下げること」は、炎上対策としておすすめできません。恣意的に押し下げたことが表面化すると、さらなる炎上を招くからです。ホームページや公式SNSアカウントなどで地道な投稿とプロモーションを続けてネット上のコンテンツを増やし、自然と炎上に関するページの検索順位が下がる「逆SEO対策」こそ、正しい炎上対策の一環といえます。
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
① 重要な情報のやり取りをしない
|
148
|
-
|
149
|
-
守秘義務や秘密保持契約など規則に基づき漏えいさせてはいけない事柄をSNSに投稿してはいけません。
|
150
|
-
|
151
|
-
もし情報が漏えいした場合、担当者の解雇だけでなく、損害賠償に発展する可能性もあります。
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
SNSでやりとりする情報は、基本的には「すべて公になってしまう」と考えましょう。
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
② 事実かどうか不確かなものは発信しない
|
162
|
-
|
163
|
-
ウラが取れない情報を発信しないのはもちろん、
|
164
|
-
|
165
|
-
他者の利害にかかわっている場合はより一層注意が必要です。
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
事実は思った以上に不確かなものであると認識しておきましょう。
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
③ 他人のプライバシーや個人情報を発信しない
|
176
|
-
|
177
|
-
この場合の個人情報とは、人物を照合できる可能性がある情報すべてを意味します。「だれかをどこかで見た」という情報も他人のプライバシーに触れる情報になるので避けるべきです。
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
また、重要な情報を送る相手の確認も決して怠れません。たとえばDM(ダイレクトメール)など普段公開されないやりとりでの送信先のミスや、相手がなりすましアカウントである危険性も考えられるためです。
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
④ センシティブな世間の関心事に むやみに干渉しない
|
186
|
-
|
187
|
-
SNSをにぎわせる話題には触れないほうが懸命と言えます。
|
188
|
-
|
189
|
-
投稿の内容が会社のマイナスになる可能性はないか重ねて吟味しましょう。
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
企業の炎上が起きた時の 3つの心構え
|
196
|
-
|
197
|
-
焦りからひとたび判断を間違えると、一般ユーザーからますます怒りや不満を買ってしまう場合さえあるのです。
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
① なによりもまずは、落ち着く
|
202
|
-
|
203
|
-
炎上のショックで取り乱してはいけません。慌てて行った運用の判断が「その場しのぎの取りつくろい」とユーザーから判断されてしまうと、あとで正しい対処や情報がわかったとしても、そのときには事態がより複雑化している場合があります。
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
他の心構えにもつながりますが、まずは冷静になることが大切です。
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
② 「すぐ削除」が必ずしも良いとはいえない
|
214
|
-
|
215
|
-
万一アカウントで炎上が起きた場合、「問題の投稿を急いで削除しないと!」と思いがちです。
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
たしかに早めの対応は重要ですが、ほかの対応なしに投稿削除だけを先んじて行うと、
|
220
|
-
|
221
|
-
SNSユーザーは「隠ぺい・ごまかし」と捉えることがあります。
|
222
|
-
|
223
|
-
そうなると、炎上が加速する恐れがあります。
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
③ 謝罪も、全体の指針が決まってから
|
232
|
-
|
233
|
-
炎上時はすべての対応に一貫性が求められます。
|
234
|
-
|
235
|
-
というのも、対応や発言が二転三転してしまうと、
|
236
|
-
|
237
|
-
「誠実でない・信憑性がない」とユーザーの猜疑心を掻き立ててしまうためです。
|
238
|
-
|
239
|
-
担当者は不用意な謝罪を控え、炎上を事実をすばやく関係部署間で周知し、
|
240
|
-
|
241
|
-
全体で対応を考えましょう。
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
理想的な炎上対応フローの例
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
ソーシャルメディアの活動を停止する
|
254
|
-
|
255
|
-
炎上したアカウントは必要最低限な情報発信にとどめ、解決の目途が立つまで一旦停止させましょう。この場合の「停止」とはアカウントやコンテンツの「削除」ではなく、むやみな投稿をストップして様子を見ることをいいます。
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
弁明や謝罪、今後の対応策や発表は方針が決まってから
|
262
|
-
|
263
|
-
一貫した対応がユーザーの信頼につながります。
|
264
|
-
|
265
|
-
弁明や謝罪といった今後の対応策は担当者が冷静に判断し、対応しましょう。
|
5
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,3 +91,175 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
```
|
102
|
+
|
103
|
+
【保存版】 ノート
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
ミスに早期に気づき、対応を迅速に行えるかが、SNS上で批判の集中砲火を受けるか回避できるかに
|
108
|
+
|
109
|
+
論調を適切に把握し、早期に対応を行うことができれば、SNS炎上から称賛に繋がり可能性
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
・炎上に対して事実の確認を早期に行うこと
|
114
|
+
|
115
|
+
・「何が批判の原因となっているのか」「批判されている内容は事実か」「誤解だとすれば、本当はどうだったのか」
|
116
|
+
|
117
|
+
・ユーザーが何に対して批判を行っているのか理解できなければ、謝罪対応も適切には行えません。逆に「本質がわかっていない」という更なる批判につながる可能性もあります。
|
118
|
+
|
119
|
+
・事実の確認と論調の把握ができ、判断材料が揃った段階で、謝罪の方法や今後の対応を検討する
|
120
|
+
|
121
|
+
・どのように信頼を回復していくのか、
|
122
|
+
|
123
|
+
・二度と同じ過ちを侵さないためにどのような対策を講じることができるのか
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
3大NG
|
128
|
+
|
129
|
+
まず1つめは「個人的な反論をしないこと」です。組織として取るべき炎上対策にブレが生じやすくなると同時に、感情に任せた反論となれば、火に油を注ぐことになります。注意したいのは、匿名の書き込みですら特定される恐れがあること。実際に、炎上している会社を擁護する反論を社員が匿名で掲示板に書き込んだところ、投稿の発信元が露呈して大炎上につながったケースもあります。
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
2つめは「苦しい言い訳をしないこと」。以前、従業員がハンバーガーのバンズの上に寝転がっている写真をTwitterに投稿して炎上しました。その際、企業の公式サイトで「発注ミスで廃棄処分だった」と釈明しましたが、これに対してネット上では、「そんな大量な廃棄が出るわけがない」、「その場しのぎの言い訳だ」などとして、炎上が長引いてしまいました。たとえそれが事実であったとしても、まずは謝意を全面に出すことが求められます。
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
3つめは、「鎮静後に気を抜かないこと」。コンビニ大手チェーンにおいて、店舗内のアイス冷凍庫に入った写真がネット上に公開され、炎上したことがあります。本社が公式に謝罪し、テレビ報道もされて一旦は沈静化しましたが、そのわずか1か月後に、別のアルバイトスタッフによる不適切なつぶやきから新たなネットリスクが発生。そのスタッフのFacebookから、学校や交友関係が明るみになり、未成年で飲酒・喫煙していることまで判明し、再炎上しました。炎上を招いた企業に対して、ネットユーザーは一定期間厳しく監視する傾向にあるため、鎮静後も気を抜いてはいけません。
|
138
|
+
|
139
|
+
なお、事態が鎮静化した後もインターネット上に炎上の記録が残り、批判的な書き込みが目に付く状態が続くこともあります。その際、「外部の専門会社に委託して検索順位を下げること」は、炎上対策としておすすめできません。恣意的に押し下げたことが表面化すると、さらなる炎上を招くからです。ホームページや公式SNSアカウントなどで地道な投稿とプロモーションを続けてネット上のコンテンツを増やし、自然と炎上に関するページの検索順位が下がる「逆SEO対策」こそ、正しい炎上対策の一環といえます。
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
① 重要な情報のやり取りをしない
|
148
|
+
|
149
|
+
守秘義務や秘密保持契約など規則に基づき漏えいさせてはいけない事柄をSNSに投稿してはいけません。
|
150
|
+
|
151
|
+
もし情報が漏えいした場合、担当者の解雇だけでなく、損害賠償に発展する可能性もあります。
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
SNSでやりとりする情報は、基本的には「すべて公になってしまう」と考えましょう。
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
② 事実かどうか不確かなものは発信しない
|
162
|
+
|
163
|
+
ウラが取れない情報を発信しないのはもちろん、
|
164
|
+
|
165
|
+
他者の利害にかかわっている場合はより一層注意が必要です。
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
事実は思った以上に不確かなものであると認識しておきましょう。
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
③ 他人のプライバシーや個人情報を発信しない
|
176
|
+
|
177
|
+
この場合の個人情報とは、人物を照合できる可能性がある情報すべてを意味します。「だれかをどこかで見た」という情報も他人のプライバシーに触れる情報になるので避けるべきです。
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
また、重要な情報を送る相手の確認も決して怠れません。たとえばDM(ダイレクトメール)など普段公開されないやりとりでの送信先のミスや、相手がなりすましアカウントである危険性も考えられるためです。
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
④ センシティブな世間の関心事に むやみに干渉しない
|
186
|
+
|
187
|
+
SNSをにぎわせる話題には触れないほうが懸命と言えます。
|
188
|
+
|
189
|
+
投稿の内容が会社のマイナスになる可能性はないか重ねて吟味しましょう。
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
企業の炎上が起きた時の 3つの心構え
|
196
|
+
|
197
|
+
焦りからひとたび判断を間違えると、一般ユーザーからますます怒りや不満を買ってしまう場合さえあるのです。
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
① なによりもまずは、落ち着く
|
202
|
+
|
203
|
+
炎上のショックで取り乱してはいけません。慌てて行った運用の判断が「その場しのぎの取りつくろい」とユーザーから判断されてしまうと、あとで正しい対処や情報がわかったとしても、そのときには事態がより複雑化している場合があります。
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
他の心構えにもつながりますが、まずは冷静になることが大切です。
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
② 「すぐ削除」が必ずしも良いとはいえない
|
214
|
+
|
215
|
+
万一アカウントで炎上が起きた場合、「問題の投稿を急いで削除しないと!」と思いがちです。
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
たしかに早めの対応は重要ですが、ほかの対応なしに投稿削除だけを先んじて行うと、
|
220
|
+
|
221
|
+
SNSユーザーは「隠ぺい・ごまかし」と捉えることがあります。
|
222
|
+
|
223
|
+
そうなると、炎上が加速する恐れがあります。
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
③ 謝罪も、全体の指針が決まってから
|
232
|
+
|
233
|
+
炎上時はすべての対応に一貫性が求められます。
|
234
|
+
|
235
|
+
というのも、対応や発言が二転三転してしまうと、
|
236
|
+
|
237
|
+
「誠実でない・信憑性がない」とユーザーの猜疑心を掻き立ててしまうためです。
|
238
|
+
|
239
|
+
担当者は不用意な謝罪を控え、炎上を事実をすばやく関係部署間で周知し、
|
240
|
+
|
241
|
+
全体で対応を考えましょう。
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
理想的な炎上対応フローの例
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
ソーシャルメディアの活動を停止する
|
254
|
+
|
255
|
+
炎上したアカウントは必要最低限な情報発信にとどめ、解決の目途が立つまで一旦停止させましょう。この場合の「停止」とはアカウントやコンテンツの「削除」ではなく、むやみな投稿をストップして様子を見ることをいいます。
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
弁明や謝罪、今後の対応策や発表は方針が決まってから
|
262
|
+
|
263
|
+
一貫した対応がユーザーの信頼につながります。
|
264
|
+
|
265
|
+
弁明や謝罪といった今後の対応策は担当者が冷静に判断し、対応しましょう。
|
4
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,265 +91,3 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
前提:Next.jsは、JavaScriptライブラリであるReact開発におけるフレームワーク
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
作業手順(プロジェクトの作成手順)
|
108
|
-
|
109
|
-
1.npx コマンドが使えること
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
2.フォルダ作成(vscordでファイルを開く)
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
3.npx create-next-app --example with-typescript {プロジェクト名}
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
4.起動確認 プロジェクト名の階層に移動して「npm run dev」
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
5サイトの作成完了
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
6.Next.jsでSSR、SSGの方法
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
基本的にpagesディレクトリ配下に作成したページに以下の関数を追加するだけです。
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
SSGしたい場合
|
140
|
-
|
141
|
-
APIなどから取得したデータを元にページを動的に作成する場合・・・getStaticPaths + getStaticProps
|
142
|
-
|
143
|
-
動的なページ作成は不要な場合・・・getStaticPropsのみ
|
144
|
-
|
145
|
-
SSRしたい場合・・・getServerSideProps
|
146
|
-
|
147
|
-
以下はSSGのAPIなどから取得したデータを元にページを動的に作成する場合のサンプルコードです。(残りは公式ドキュメントを参考にしてください。)
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
```/pages/piyo/[id].tsx
|
158
|
-
|
159
|
-
import React from 'react';
|
160
|
-
|
161
|
-
import { GetStaticPaths, GetStaticProps } from 'next';
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
// 型定義:一覧
|
166
|
-
|
167
|
-
type Piyo = {
|
168
|
-
|
169
|
-
id: string;
|
170
|
-
|
171
|
-
};
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
// 型定義:詳細
|
176
|
-
|
177
|
-
type PiyoDetail = {
|
178
|
-
|
179
|
-
id: string;
|
180
|
-
|
181
|
-
name: string;
|
182
|
-
|
183
|
-
value: string;
|
184
|
-
|
185
|
-
};
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
// 3. あとはgetStaticPathsとgetStaticPropsで作成されたpropsを使用して画面描画する処理を記述してあげればOK
|
190
|
-
|
191
|
-
const piyoPage: React.FC<PiyoDetail> = ({ id, name, value }) => (
|
192
|
-
|
193
|
-
<div>
|
194
|
-
|
195
|
-
{`idは${id}、nameは${name}、valueは${value}です。`}
|
196
|
-
|
197
|
-
</div>
|
198
|
-
|
199
|
-
);
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
// 1. まずはここで動的に作成するページデータを取得
|
204
|
-
|
205
|
-
export const getStaticPaths: GetStaticPaths = async () => {
|
206
|
-
|
207
|
-
// API叩いて一覧データを取得と仮定
|
208
|
-
|
209
|
-
const response: Piyo[] = await fetch('https://.../piyos');
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
// paramsの中のid:はファイル名の[id]の部分と合わせること
|
214
|
-
|
215
|
-
const paths = response.map((piyo: Piyo) => (
|
216
|
-
|
217
|
-
{ params: { id: piyo.id } }
|
218
|
-
|
219
|
-
));
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
// これでgetStaticPropsでparamsが使用可能に
|
224
|
-
|
225
|
-
// fallback=falseは存在しないページは404
|
226
|
-
|
227
|
-
return { paths, fallback: false };
|
228
|
-
|
229
|
-
};
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
// 2. ここでpiyoPageでpropsとして使用するデータを取得・作成します
|
234
|
-
|
235
|
-
export const getStaticProps: GetStaticProps = async ({ params }) => {
|
236
|
-
|
237
|
-
// API叩いて詳細データを取得と仮定
|
238
|
-
|
239
|
-
const piyoDetail: PiyoDetail = await fetch(`https://.../piyos/${params.id}`);
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
// これでpiyoPageでpropsとして使用可能に
|
244
|
-
|
245
|
-
return { props: { piyoDetail } };
|
246
|
-
|
247
|
-
};
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
export default piyoPage;
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
```
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
これでawait fetch('https://.../piyos')で1〜3のidが取得できた場合、
|
260
|
-
|
261
|
-
ビルド後に
|
262
|
-
|
263
|
-
http://localhost:3000/piyo/1
|
264
|
-
|
265
|
-
http://localhost:3000/piyo/2
|
266
|
-
|
267
|
-
http://localhost:3000/piyo/3
|
268
|
-
|
269
|
-
といった感じでアクセスできるようになります。
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
7.vercelにデプロイ
|
276
|
-
|
277
|
-
https://tomosta.jp/article/nextjs-basic/#ib-toc-anchor-25
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
8.Chakra UIで遊んでみよう(✖ダークモード)
|
284
|
-
|
285
|
-
https://zenn.dev/knjname/articles/20210105tryoutchakraui
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
Next.jsにChakura導入
|
290
|
-
|
291
|
-
https://fwywd.com/tech/next-chakra-ui
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
##switch 式 最近の Java がすごい!
|
300
|
-
|
301
|
-
switch 式は Java 14 より正式に追加されたようです。
|
302
|
-
|
303
|
-
以下のように switch 式により値を返すことができるようになりました。
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
```
|
308
|
-
|
309
|
-
int numLetters = switch (day) {
|
310
|
-
|
311
|
-
case MONDAY, FRIDAY, SUNDAY -> 6;
|
312
|
-
|
313
|
-
case TUESDAY -> 7;
|
314
|
-
|
315
|
-
case THURSDAY, SATURDAY -> 8;
|
316
|
-
|
317
|
-
case WEDNESDAY -> 9;
|
318
|
-
|
319
|
-
};
|
320
|
-
|
321
|
-
```
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
また、以前の switch 文では以下のように case のブロックごとに break を書く必要がありましたが、アロー構文 -> により break を省略することができるようになりました。
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
```
|
330
|
-
|
331
|
-
switch (day) {
|
332
|
-
|
333
|
-
case MONDAY:
|
334
|
-
|
335
|
-
case TUESDAY:
|
336
|
-
|
337
|
-
int temp = ...
|
338
|
-
|
339
|
-
break;
|
340
|
-
|
341
|
-
case WEDNESDAY:
|
342
|
-
|
343
|
-
case THURSDAY:
|
344
|
-
|
345
|
-
int temp2 = ...
|
346
|
-
|
347
|
-
break;
|
348
|
-
|
349
|
-
default:
|
350
|
-
|
351
|
-
int temp3 = ...
|
352
|
-
|
353
|
-
}
|
354
|
-
|
355
|
-
```
|
3
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -289,3 +289,67 @@
|
|
289
289
|
Next.jsにChakura導入
|
290
290
|
|
291
291
|
https://fwywd.com/tech/next-chakra-ui
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
|
298
|
+
|
299
|
+
##switch 式 最近の Java がすごい!
|
300
|
+
|
301
|
+
switch 式は Java 14 より正式に追加されたようです。
|
302
|
+
|
303
|
+
以下のように switch 式により値を返すことができるようになりました。
|
304
|
+
|
305
|
+
|
306
|
+
|
307
|
+
```
|
308
|
+
|
309
|
+
int numLetters = switch (day) {
|
310
|
+
|
311
|
+
case MONDAY, FRIDAY, SUNDAY -> 6;
|
312
|
+
|
313
|
+
case TUESDAY -> 7;
|
314
|
+
|
315
|
+
case THURSDAY, SATURDAY -> 8;
|
316
|
+
|
317
|
+
case WEDNESDAY -> 9;
|
318
|
+
|
319
|
+
};
|
320
|
+
|
321
|
+
```
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
また、以前の switch 文では以下のように case のブロックごとに break を書く必要がありましたが、アロー構文 -> により break を省略することができるようになりました。
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
```
|
330
|
+
|
331
|
+
switch (day) {
|
332
|
+
|
333
|
+
case MONDAY:
|
334
|
+
|
335
|
+
case TUESDAY:
|
336
|
+
|
337
|
+
int temp = ...
|
338
|
+
|
339
|
+
break;
|
340
|
+
|
341
|
+
case WEDNESDAY:
|
342
|
+
|
343
|
+
case THURSDAY:
|
344
|
+
|
345
|
+
int temp2 = ...
|
346
|
+
|
347
|
+
break;
|
348
|
+
|
349
|
+
default:
|
350
|
+
|
351
|
+
int temp3 = ...
|
352
|
+
|
353
|
+
}
|
354
|
+
|
355
|
+
```
|
2
aaaaaaaaaaaaaaaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,3 +91,201 @@
|
|
91
91
|
5678
|
92
92
|
|
93
93
|
と二段に分かれること
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
前提:Next.jsは、JavaScriptライブラリであるReact開発におけるフレームワーク
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
作業手順(プロジェクトの作成手順)
|
108
|
+
|
109
|
+
1.npx コマンドが使えること
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
2.フォルダ作成(vscordでファイルを開く)
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
3.npx create-next-app --example with-typescript {プロジェクト名}
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
4.起動確認 プロジェクト名の階層に移動して「npm run dev」
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
5サイトの作成完了
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
6.Next.jsでSSR、SSGの方法
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
基本的にpagesディレクトリ配下に作成したページに以下の関数を追加するだけです。
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
SSGしたい場合
|
140
|
+
|
141
|
+
APIなどから取得したデータを元にページを動的に作成する場合・・・getStaticPaths + getStaticProps
|
142
|
+
|
143
|
+
動的なページ作成は不要な場合・・・getStaticPropsのみ
|
144
|
+
|
145
|
+
SSRしたい場合・・・getServerSideProps
|
146
|
+
|
147
|
+
以下はSSGのAPIなどから取得したデータを元にページを動的に作成する場合のサンプルコードです。(残りは公式ドキュメントを参考にしてください。)
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
```/pages/piyo/[id].tsx
|
158
|
+
|
159
|
+
import React from 'react';
|
160
|
+
|
161
|
+
import { GetStaticPaths, GetStaticProps } from 'next';
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
// 型定義:一覧
|
166
|
+
|
167
|
+
type Piyo = {
|
168
|
+
|
169
|
+
id: string;
|
170
|
+
|
171
|
+
};
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
// 型定義:詳細
|
176
|
+
|
177
|
+
type PiyoDetail = {
|
178
|
+
|
179
|
+
id: string;
|
180
|
+
|
181
|
+
name: string;
|
182
|
+
|
183
|
+
value: string;
|
184
|
+
|
185
|
+
};
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
// 3. あとはgetStaticPathsとgetStaticPropsで作成されたpropsを使用して画面描画する処理を記述してあげればOK
|
190
|
+
|
191
|
+
const piyoPage: React.FC<PiyoDetail> = ({ id, name, value }) => (
|
192
|
+
|
193
|
+
<div>
|
194
|
+
|
195
|
+
{`idは${id}、nameは${name}、valueは${value}です。`}
|
196
|
+
|
197
|
+
</div>
|
198
|
+
|
199
|
+
);
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
// 1. まずはここで動的に作成するページデータを取得
|
204
|
+
|
205
|
+
export const getStaticPaths: GetStaticPaths = async () => {
|
206
|
+
|
207
|
+
// API叩いて一覧データを取得と仮定
|
208
|
+
|
209
|
+
const response: Piyo[] = await fetch('https://.../piyos');
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
// paramsの中のid:はファイル名の[id]の部分と合わせること
|
214
|
+
|
215
|
+
const paths = response.map((piyo: Piyo) => (
|
216
|
+
|
217
|
+
{ params: { id: piyo.id } }
|
218
|
+
|
219
|
+
));
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
// これでgetStaticPropsでparamsが使用可能に
|
224
|
+
|
225
|
+
// fallback=falseは存在しないページは404
|
226
|
+
|
227
|
+
return { paths, fallback: false };
|
228
|
+
|
229
|
+
};
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
// 2. ここでpiyoPageでpropsとして使用するデータを取得・作成します
|
234
|
+
|
235
|
+
export const getStaticProps: GetStaticProps = async ({ params }) => {
|
236
|
+
|
237
|
+
// API叩いて詳細データを取得と仮定
|
238
|
+
|
239
|
+
const piyoDetail: PiyoDetail = await fetch(`https://.../piyos/${params.id}`);
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
// これでpiyoPageでpropsとして使用可能に
|
244
|
+
|
245
|
+
return { props: { piyoDetail } };
|
246
|
+
|
247
|
+
};
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
export default piyoPage;
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
```
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
これでawait fetch('https://.../piyos')で1〜3のidが取得できた場合、
|
260
|
+
|
261
|
+
ビルド後に
|
262
|
+
|
263
|
+
http://localhost:3000/piyo/1
|
264
|
+
|
265
|
+
http://localhost:3000/piyo/2
|
266
|
+
|
267
|
+
http://localhost:3000/piyo/3
|
268
|
+
|
269
|
+
といった感じでアクセスできるようになります。
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
7.vercelにデプロイ
|
276
|
+
|
277
|
+
https://tomosta.jp/article/nextjs-basic/#ib-toc-anchor-25
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
8.Chakra UIで遊んでみよう(✖ダークモード)
|
284
|
+
|
285
|
+
https://zenn.dev/knjname/articles/20210105tryoutchakraui
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
Next.jsにChakura導入
|
290
|
+
|
291
|
+
https://fwywd.com/tech/next-chakra-ui
|
1
実現したいことを追加。
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|