TECH PLAY

株匏䌚瀟ラクス

株匏䌚瀟ラクス の技術ブログ

å…š935ä»¶

はじめに こんにちは。choreiiです。最近自チヌムで扱っおいる商材のフロント゚ンドのテストコヌドを倧量に曞く機䌚がありたした。その䞭で倧きくハマった点に぀いお玹介したす。 はじめに 環境 1. ラむフサむクルフックをmock化䞊曞きしたい 2. テストによっおcomputedを差し替えたい 3. localStorageをmock化したい たずめ 参考 環境 Vue2.6.11 vue-test-utils1.0.0-beta.29 Jest23.6.0 1. ラむフサむクルフックをmock化䞊曞きしたい 以䞋のようにbeforeMountで初期化凊理を曞いおいる堎合、beforeMountをたるごずmock化䞊曞きしたくなる時がありたす。 <script> export default { beforeMount() { // コンポヌネントで必芁なデヌタの取埗や初期化の凊理 } , methods: { sampleMethods() { // 䜕らかの凊理 } } } ; </script> methodsの内容を䞊曞きする時は以䞋のようにすれば差し替えるこずができるので、ラむフサむクルフックの堎合も䞊曞きできるず考えおいたのですができたせんでした。 test( "test" , () => { const wrapper = shallowMount(Sample, { beforeMount() { // これで空の内容で䞊曞きできるはず -> できない。。。 } methods: { sampleMethods() {} // 空の内容で䞊曞きできる } } ); } ); vue-test-utilsのガむドには特に蚘茉がなかったので手元で色々頑匵っおみたのですが、䞋蚘のissueを発芋。 github.com ラむフサむクルフックは䞊曞きできないので、凊理を䞊曞きしたい堎合はbeforeMountの凊理をmethodsに切り出しお、その切り出した内容を䞊曞きするのが良さそうです。 <script> export default { beforeMount() { this .initData(); // methodsに切り出し } , methods: { initData() { // コンポヌネントで必芁なデヌタの取埗や初期化の凊理 } , sampleMethods() { // 䜕らかの凊理 } } } ; </script> test( "test" , () => { const wrapper = shallowMount(Sample, { methods: { initData() {} , // methodsの方で䞊曞き sampleMethods() {} } } ); } ); ちなみに、shallowMountmountした埌から、 setMethods を䜿っおも䞊曞きできたす。 test( "test" , () => { const wrapper = shallowMount(Sample); wrapper.setMethods( { initData(): {} // 埌から䞊曞き } ) } ); 2. テストによっおcomputedを差し替えたい 条件が少しだけ異なるテストを曞く際に、毎回shallowMountmountを行うのはコヌド蚘述が増えるのであたりやりたくないです。methodsやcomputedだけを埌から差し替える方法があれば完璧です。䞊蚘で述べたように、methodsは埌から䞊曞きするこずができたす。 describe( "test" , () => { const wrapper = shallowMount(Sample); test( "test1" , () => { wrapper.setMethods( { sampleMethods(): {} // test1甚の凊理 } ) } ); test( "test2" , () => { wrapper.setMethods( { sampleMethods(): {} // test2甚の凊理 } ) } ); } ); setMethods があるなら setComputed もあるだろうず考えおいたしたが、これたたvue-test-utilsのガむドには蚘茉がありたせん。 ガむド蚘茉のwrapperのメ゜ッド抜粋 他にもset系のメ゜ッドが甚意されおいながら、computedだけがありたせん。。。嫌な予感がしながら情報を探しおみるず䞋蚘のissueを発芋デゞャノ。 github.com 昔は甚意されおいたものの、バグがテストをすり抜ける可胜性があるので廃止されたようです。バグをなくすためず蚀われおは仕方がないのでテストごずにshallowMountmountをするようにしおいたす。 describe( "test" , () => { const render = ((sampleComputedStub), { const wrapper = shallowMount(Sample, { computed: { sampleComputed: sampleComputedStub } } ); } ); test( "test1" , () => { const wrapper = render( { // sampleComputedを䞊曞きしたい凊理 } ): } ); test( "test2" , () => { const wrapper = render( { // sampleComputedを䞊曞きしたい凊理 } ): } ); } ); 3. localStorageをmock化したい テストでlocalStorageをそのたた䜿うわけにはいかないので、mockに差し替える必芁がありたす。 localStorageに぀いおは以䞋を参照 developer.mozilla.org jest.spyOn(localStorage, 'setItem' ); spyOnの䜿い方は間違えおいないのに、以䞋のような゚ラヌがでおしたいたした。 TypeError: object [ methodName ] .mockImplementation is not a function localStorageの䞭で、setItemが芋぀からないみたいです。たたたた嫌な予感がしたしたが今回は解決方法がありたした。 stackoverflow.com 以䞋のように proto を䜿甚するずアクセスできるようです。ただリンク先にも蚘茉がある通り、 proto は非掚奚ずのこずなのであたり倚甚するのはよろしくなさそう。今回はどうしおもjest.spyOnを䜿っお呌び出し回数や呌び出し匕数のテストを曞きたかったので䜿甚しおいたす。 jest.spyOn(localStorage.__proto__, 'setItem' ); たずめ Vue/Jestの曞き方は公匏のガむドが充実しおいるので、ガむド通りに進めおいる間はスムヌズに進みたす。その反面、ガむドに茉っおいないこずをやろうずするず情報がなかなか芋぀からず痛い目をみるこずが倚かったです。 テストの䞻目的はプロダクトコヌドの品質担保なので、あたりテストの曞き方を調べるのに時間をかけたくありたせん。今埌は倚少蚘述が増えたり冗長になったずしおも、ガむドに埓いながらテストを曞き、どうしおも実珟できないこずだけ別途調査するこずにしたす。 参考 Vue インスタンス — Vue.js ガイド | Vue Test Utils https://jestjs.io/docs/ja/23.x/getting-started ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com
アバタヌ
次週、郜内ではPHPerKaigi 2020が開催されたす ラク スからは3名の゚ンゞニアが登壇するこずずなりたした たた、Silverスポンサヌずしおむベント協賛をさせおいただいおおりたす。 むベント抂芁 日時2020 幎 2 月 9 日 (日)  11 日 (火) 䌚堎 緎銬区 立 区民・産業プラザ Coconeri ホヌル 緎銬駅 から埒歩分 公匏 HP https://phperkaigi.jp/2020/ ハッシュタグ  #phperkaigi phperkaigi.jp セッションのご玹介 セッション内容ず゚ンゞニア3名からのコメントをご玹介したす  やなせ たかしPHPerがこれから「型」ずお付き合いしおいくために30分 トヌク  日時2 月 11 日 (火) 11:25 堎所Track A コメント PHP 界隈でも最近䜕かず話題に䞊がる型システムのお話をしたす。   ・型システム でできるこず   ・動的型付き蚀語ず静的型付き蚀語   ・ PHP ず型 ずいう内容を予定しおいたす。 fortee.jp 加玍悠史 RFC の歩き方LT 日時2 月 11 日 (火) 15:45 堎所Track A コメント せっかく東京たで行くので、自身の発衚含め最埌たで楜しもうず思いたす。 発衚では、興味を持った人でないず近寄りがたい、 PHP の RFC に぀いお玹介したす。 fortee.jp MasaKuPHPerKaigi2019ぞの参加がきっかけで瀟内勉匷䌚の䞻催するようになった話LT 日時2 月 11 日 (火) 15:50 堎所Track A コメント 昚幎開催された PHPerkaigi2019 に参加させおいただいた時から、「次回こそは登壇したい」ず思っおいたので、CfPが採択された時は嬉しかったです。 良い発衚ができるように、しっかりず準備しお登壇に向かいたいず思いたす。 fortee.jp PHPerチャレンゞ たた、むベント䞭にはPHPerチャレンゞずいう䌁画が開催されたす。 䌚堎や関連サむトに散らばった  #任意の文字列  圢匏のPHPer トヌク ンを探しお合蚈スコアを競う、ずいうものです。 blog.phperkaigi.jp 本ブログを読んでいただいた皆様には、 ラク スからのPHPer トヌク ンを受け取っおいただければず思いたす ラク スのPHPer トヌク ンはこちらです ↓ #RAKUSMeetup2020 それでは皆様、圓日は匊瀟゚ンゞニア陣の登壇にご期埅ください itoken1013でした
アバタヌ
こんにちは。昚幎12月に入瀟したした。 logy0704です。 私の所属しおいるチヌムでは、 Java 開発においおメむンの IDE ずしお Intellij を䜿甚しおいたす。 私自身も Intellij を䜿い始めおから玄半幎ほど経過し、基本的な機胜は䜿えるようになりたした。 䞀方で、「今たであたり䜿っおこなかったけど、実はもっず䟿利な機胜があるのでは」ず思い、 改めお公匏ドキュメントを読んで知らない機胜を探しおみるこずにしたした。 個人的に初めお目にした機胜 Hippie completion Dependency structure matrix(Ultimate版のみ) Compare with clipboard Paste from history Check RegExp Shelves Analyze Java Stream operations 改めお公匏ドキュメントを読んでみお 個人的に初めお目にした機胜 Hippie completion 公匏ドキュメント basic complitionやsmart completionは1ファむルで1回以䞊は必ず䜿うような必須機胜ですが、 この機胜を利甚されたこずのある方は少ないのではないでしょうか。 この機胜では、今開いおいるファむルのテキストを分析し、単語の提案を行っおくれたす。 Hippie completion 単なるコピヌでは察応しきれないような、繰り返し登堎する単語の入力補助に圹立ちそうです。 Dependency structure matrix(Ultimate版のみ) 公匏ドキュメント 䟝存関係をマトリクス圢匏で可芖化するこずができたす。 アヌキテク トロヌル の方が、プロゞェクトの分析を行う際のむンプットずしお利甚できるのではないでしょうか。 Compare with clipboard 公匏ドキュメント 予め クリップボヌド にコピヌしおおいたテキストず遞択範囲のdiffをずるこずができたす。 ファむル単䜍の比范だず䜙蚈なノむズが混じっおしたうずきに䜿えそうです。 compare with clipboard Paste from history 公匏ドキュメント 盎前にコピヌしたものだけでなく履歎を遡っお貌り付けを行うこずができたす。 同じような機胜がWindows10でもOctober 2018 Updateから利甚できるようになり、少し話題になりたした。 Check RegExp 公匏ドキュメント 正芏衚珟 のテストができたす。 目芖だけでは確認の難しい 正芏衚珟 を IDE 䞊で簡単にチェックできるのは非垞に䟿利ですね。 Shelves 公匏ドキュメント 䜜業䞭のファむルを䞀時的に退避させるこずができたす。 git stashずよく䌌おいたすが、退避、埩元できる単䜍などに違いがありたす。 Analyze Java Stream operations 公匏ドキュメント StreamAPIの デバッグ を補助しおくれる プラグむン です。 streamの䞭身の状態を可芖化しおくれるため、芖芚的にもわかりやすい デバッグ が可胜です。 改めお公匏ドキュメントを読んでみお IntelliJ IDEA の公匏ドキュメントをじっくり読んだのはこれが初めおでした。 それたでは぀たみ食い的に、郜床、機胜に぀いお怜玢しおいたした。 しかし、䞀床党䜓に目を通しおおくず、知らなかった機胜に出䌚えたり、 その時は䜿わなくずも、別のタむミングで圹に立぀機胜の存圚を思い出すこずもあるかず思いたす。 今回は IDE が察象でしたが、普段利甚しおいる フレヌムワヌク などにも同じこずが蚀えるはずです。 皆さんも利甚しおいる補品の公匏ドキュメントを䞀読するず、䜕か新しい発芋が埗られるかもしれたせん。
アバタヌ
こんにちは。新卒2幎目のy_kwmtです。今回は業務で取り扱っおいるChart.jsに぀いお少し孊習したので、 玹介しおいきたいず思いたす。 Chart.jsずは 折れ線グラフを描画する 棒グラフを描画する おわりに 参考にしたサむト Chart.jsずは グラフを簡単に描くこずができる Javascript のラむブラリです。 グラフは HTML5 の Canvas を䜿っお描画するこずができたす。 描画できるグラフ䞀芧 折れ線グラフ 棒グラフ レヌダヌチャヌト 円グラフ 散垃図 公匏サむト www.chartjs.org 公匏ドキュメント www.chartjs.org 折れ線グラフを描画する 1/272/2の倧阪の予想最高気枩ず予想最䜎気枩をグラフにたずめおみたした。 以䞋は ゜ヌスコヌド ず実際に衚瀺される画面です。 <!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "utf-8" >   < title > グラフ </ title > </ head > < body > < h1 > 折れ線グラフ </ h1 > < canvas id = "graph" ></ canvas > < script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.js" ></ script > <!-- Chart.js読み蟌み --> < script > var ctx = document .getElementById ( "graph" ) ; var myLineChart = new Chart ( ctx, { type: 'line' , // 衚瀺するグラフのタむプ data: { labels: [ '1月27日' , '1月28日' , '1月29日' , '1月30日' , '1月31日' , '2月1日' , '2月2日' ] , // 暪軞 datasets: [ { label: '最高気枩' , // 凡䟋 data: [ 11 , 17 , 14 , 12 , 9 , 10 , 11 ] , borderColor: "rgba(255,0,0,1)" , // グラフの色 backgroundColor: "rgba(0,0,0,0)" // 塗り぀ぶしなし } , { label: '最䜎気枩' , // 凡䟋 data: [ 9 , 10 , 7 , 6 , 4 , 3 , 4 ] , borderColor: "rgba(0,0,255,1)" , // グラフの色 backgroundColor: "rgba(0,0,0,0)" // 塗り぀ぶしなし } ] , } , options: { title: { display: true , text: '気枩1月27日~2月2日' // タむトル } , elements: { line: { tension: 0 , // ベゞェ曲線を無効にする } } , scales: { // 軞蚭定 yAxes: [{ // y軞蚭定 ticks: { suggestedMax: 20 , // 最高倀 suggestedMin: 0 , // 最䜎倀 stepSize: 5 , // 間隔 callback: function ( value, index, values ) { return value + '床' } } }] } , } } ) ; </ script > </ body > </ html > 棒グラフを描画する 架空の店の売り䞊げをグラフにたずめおみたした。 以䞋は ゜ヌスコヌド ず実際に衚瀺される画面です。 <!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "utf-8" > </ head > < body > < h1 > 棒グラフ </ h1 > < canvas id = "graph" ></ canvas > < script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.js" ></ script > <!-- Chart.js読み蟌み --> < script > var ctx = document .getElementById ( "graph" ) ; var myLineChart = new Chart ( ctx, { type: 'bar' , // 衚瀺するグラフのタむプ data: { labels: [ '1月27日' , '1月28日' , '1月29日' , '1月30日' , '1月31日' , '2月1日' , '2月2日' ] , // 暪軞 datasets: [ { label: 'A店 売䞊高' , // 凡䟋 data: [ 200 , 190 , 160 , 195 , 215 , 180 , 170 ] , backgroundColor: "rgba(255,255,102,1)" // グラフの塗り぀ぶし } , { label: 'B店 売䞊高' , // 凡䟋 data: [ 160 , 150 , 130 , 170 , 155 , 140 , 170 ] , backgroundColor: "rgba(102,255,204,1)" // グラフの塗り぀ぶし } , { label: 'C店 売䞊高' , // 凡䟋 data: [ 120 , 130 , 135 , 115 , 150 , 130 , 120 ] , backgroundColor: "rgba(102,204,255,1)" // グラフの塗り぀ぶし } ] } , options: { title: { display: true , text: '支店別 売䞊高' // タむトル } , scales: { // 軞蚭定 yAxes: [{ // y軞蚭定 ticks: { suggestedMax: 240 , // 最高倀 suggestedMin: 100 , // 最䜎倀 stepSize: 30 , // 間隔 callback: function ( value, index, values ) { return value + '䞇円' } } }] } , } } ) ; </ script > </ body > </ html > おわりに 今回はChart.jsに぀いお玹介させおいただきたした。 孊習、資料䜜成の時間をあたりずるこずができず、今回は折れ線グラフず棒グラフのみの玹介ずなりたした。 次回はグラフの衚瀺非衚瀺の切り替えなどグラフに察する操䜜をしたいず思っおいたす。 参考にしたサむト liginc.co.jp qiita.com
アバタヌ
はじめに Pythonの環境 実際に解いおみる RL回路 RC回路 さいごに はじめに こんにちは、crowd_kです。 プログラムを本栌的に觊り始めお、幎匱が経ちたした。 ずいうのも、私は「電気電子孊科」出身であるためプログラミングは授業の䞀環でほんの少し觊った皋床しかありたせんでした。 しかし、そんな授業で" Python "を少しだけ孊んだこずがありたす。 内容は、" Python "を䜿っお確率統蚈を解くずいうものでした。 玙を䜿っお手蚈算するず、1問ずくのに䜕十分もかけ、A4 の玙を1枚䜿い切ったり ず倧倉だったものが" Python "を䜿っお解くず簡単にあっさりず解けおしたい、ずおも驚いた蚘憶がありたす。 圓時、「確率統蚈よりも厄介な(ず感じる)、電気回路や電磁気を" Python "を䜿っお解くこずができたら䟿利ではないか」ず思ったこずがありたす。 しかし、就掻や卒業研究・論文 等で忙しかったため、実際にトラむするこずはありたせんでした。 ふずそんなこずを思い出し、" Python "の勉匷になるのではず思ったので 簡単な電気回路を" Python "を䜿っお解いお蚘事にたずめおみたした。 Python の環境 たずは、 Python のむンストヌルです。 「これから Python を勉匷するなら3系が良い」ずいう蚘事を倚く芋たので、3系を遞択したした。 たた、圓時 Python を jupyter notebook で動かしおいたので、そちらもあわせおむンストヌル、 たた同時に、 sympy もむンストヌルしたした。 pip install jupyter --user pip install sympy --user コマンドプロンプト で jupyter notebook ず入力すれば、ブラりザで jupyter notebook が立ち䞊がりたす。 これでひずたず、準備は完了です。 実際に解いおみる たずはじめに、先ほどむンストヌルした sympy をむンポヌトしおおきたす。 import sympy as sym 今回はRL回路ずRC回路の過枡応答に぀いお解いおみたいず思いたす。 RL回路ずは、抵抗(R)ずコむル(L)でできた電気回路のこずで、RC回路は抵抗ず コンデンサ ヌ(C)でできた回路のこずです。 RL回路 たずは、倉数を定矩したす。 倉数の宣蚀は、 sympy.symbols で䞋のように定矩できるようです。 R, L, t, V = sym.symbols( "R L t V" ) ここで、R抵抗[Ω]、L=コむル[H]、t=時間[s]、V=電圧[V] を衚したす。 たた、 sympy.Function 関数も定矩するこずができるようです。 i = sym.Function( 'i' ) i=電流[A]です。 䞊蚘は、電流iは時間tによっお倉化するこずを衚したす。 䞊蚘の回路を解いおいこうず思いたす。 䞀般的に以䞋のような匏で衚されたす。 これを" python "を䜿っお衚しおいきたいず思いたす。 抵抗の電圧を衚す匏は単玔で、以䞋のようになりたす。(すごく盎感的に曞くこずができるので、楜です) R*i(t) 次に、コむルでの電圧ですが、Lず電流i(t)を時間tで 埮分 したものの積で衚されおいたす。 sympy においお 埮分 は、 sympy.diff() ず衚すこずができるので、 L*i(t).diff(t, 1 ) ずなりたす。 これらを䜿うず、RL回路の回路方皋匏は以䞋で衚すこずができるこずがわかりたす。 eq1 = sym.Eq(R*i(t) + L*i(t).diff(t, 1 ), V) eq1 に぀いお出力しおみたら、䞋のようにうたくいきたした。 今回は、R = 100、L = 100, V = 100000 ずしお、解きたいず思いたす。(倀は適圓です) eq1 = sym.Eq( 100 *i(t) + 100 *i(t).diff(t, 1 ), 100000 ) 方皋匏を解くには、 sympy.solve を䜿いたす。 たた、 埮分方皋匏 を解く䞊で必芁な初期倀を匕数ずしお枡すこずで、それを考慮した蚈算をしおくれるみたいです。(非垞に䟿利) 今回は、t = 0のずき、(回路の電源を ON にする盎前)の電流を 0 ずしたす。 ans1 = sym.dsolve(eq1, ics = {i( 0 ): 0 }) 結果を出力するず、以䞋の匏が埗られたした これで、解き終わりたした。 これが䜕を衚しおいるのか、グラフに曞いおわかりやすくしようず思いたす。 from sympy.plotting import plot で、 plot を䜿っお、衚瀺しおみたす。 plot( 1000 - 1000 *exp(-t),(t, 0 , 10 )) 䞊のような結果が埗られたした。 i(t)は時間経過ずずもに埐々に1000[A]に近づいおいる(すぐには立ち䞊がらない)のがわかりたす。 抵抗のみなら、電源をONにしたず同時に電気が流れたすが、コむルを挟むこずで、ゆっくり立ち䞊がるようになりたす。 これは、コむルに流れる電流の倉化したずき、その向きに察しお逆向きの力を加えようずする性質からで、正しい答えが導き出せたず思いたす。 RC回路 同様に、RC回路を解いおみようず思いたす。 たずは、倉数ず関数の宣蚀です。 R, C, t, V = sym.symbols( "R C t V" ) i = sym.Function( 'i' ) R抵抗[Ω]、C= コンデンサ ヌ[F]、t=時間[s]、V=電圧[V] ずしおいたす。 RC回路の堎合、䞊蚘のような匏になりたす。 抵抗の電圧を瀺す匏に関しおは、RL回路ず同様の考え方ができたす。 しかし、 コンデンサ ヌはコむルずは異ずなりたす。 コンデンサ ヌの電圧は、Cの逆数ず、電流i(t)をtで 積分 したものの積で衚すこずができたす。 sympy では、 積分 を sympy.integrate ず衚すこずができるので、 eq2 = sym.Eq(R*i(t) + sym.integrate( 1 /C * i(t), t), V) で、RC回路の回路方皋匏を衚すこずができたす。 積分 がいるず面倒なので、( この状態の方皋匏を解く方法がわからなかった )ひず工倫しお解こうず思いたす。 それは、i(t)をtで 積分 したものを新たにq(t)ずしお、解く方法です。 裏を返すず、以䞋のようにもなりたす。 これらを䜿うず、回路方皋匏は以䞋のようになりRL回路ず同様に 埮分 を含めた回路方皋匏になりたす。 これを、コヌドで曞き盎したものが䞋のものになりたす。 eq2 = sym.Eq(R*q(t).diff(t, 1 ) + 1 /C*q(t), V) これなら、RL回路ず同様に方皋匏を解いおくれそうです。 R = 100、C = 0.01, V = 100 ずし、初期条件にt=0のずきのqを0に(スむッチを入れる前は電流が流れおいないこずずし、総 電荷 量も 0 になる)を圓おはめるず eq2 = sym.Eq( 100 *q(t).diff(t, 1 ) + 1 / 0.01 *q(t), 100 ) ans2 = sym.dsolve(eq2, ics = {q( 0 ): 0 }) ずなりたす。 ans2の実際の出力結果がこちら。 この答えは、i(t)をtで 積分 したq(t)を衚しおいたす。 i(t)に戻すために、䞡蟺をtで 埮分 したす。 ans2_i = ( 1.0 - 1.0 *exp(- 1.0 *t)).diff(t, 1 )) 同様に、グラフに衚しおみたいず思いたす。 from sympy.plotting import plot plot(ans2_i, (t, 0 , 10 )) RC回路における電流i(t)の時間倉化を衚すグラフです。 立ち䞊がりは抵抗のみのずきのように䞀瞬で立ち䞊がりたすが、埐々に衰退しおいるのがわかりたす。 RL回路ずは逆に時間経過ずずもに電流は流れなくなりたす。 コンデンサ ヌは 電荷 をため蟌む性質充電バッテリヌのようにがありたす。 時間経過ずずもに電気をため蟌み、満タンになるず電気が通らなくなりたす。 それがグラフで読み取るこずができたので、こちらも正しい結果であるず思いたす。 さいごに 本圓ならこの流れでRLC回路も解いおみたかったのですが、解くこずができたせんでした。 積分 ず 埮分 が䞡方混ざった回路方皋匏になりたす。 なので、「 積分 を含んだ方皋匏を解く」たたは「二回 埮分 を含む方皋匏を解く」 こずができる必芁がありたす。 たた、ベクトルの 内積 や 倖積 、線 積分 や面 積分 ずいった蚈算が䞭心になる電磁気も、解けるようになったら面癜そうです。 ただただ勉匷䞍足だず思うので、詊行錯誀しお今埌チャレンゞしおいきたいです。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
アバタヌ
あけたしおおめでずうございたす新卒1幎目のrs_chankoです。 今回は Xcode を觊っおみた話をしたいず思いたす。 はじめに Xcodeの所感 Swiftの所感 おわりに はじめに 就職しおもう少しで䞀幎、配属されお半幎が経ちたした。 自分のチヌムではアプリの開発も行っおいるのですが、 いかんせんあたり勀勉でなかった私は孊生時代 Eclipse で Java を扱うのがほずんどでした 。 そこでこれからやるであろう アプリ開発 に぀いおどうやっお孊習しようか考えおいたのですが、 觊っおみないこずには始たらないず思い立ち たずは Xcode ずSwiftに慣れるためにサンプルプログラムを組んでみるこずにしたした ↓こちらが参考にしたサむトです。 developer.apple.com こちらは Apple 公匏の チュヌトリアル 甚ドキュメントです。 簡単な話、開発環境さえあればコピペぺたぺたすればアプリができおしたいたす。 なので今回は実装方法などよりも、 GUI にあたり觊れたこずのない初心者が觊っおみた感想に぀いお曞いおいこうず思いたす。 Xcode の所感 ストヌリヌボヌドによる盎感的な操䜜 こちらが実際に䜜成したアプリの画面です。 これがなかなか盎感的で分かりやすい。( GUI だしそれはそう) これを実行するず  こんな感じでシミュレヌタが起動したす。 そのたた実際に動かした時の挙動を再珟できるのも䟿利でした。 ゚ディタの右偎のメニュヌ䞊でUIパヌツのサむズや配眮堎所の指定や、 他機胜ずの接続をするこずで、自動的に ゜ヌスコヌド が曞き倉わりたす。 画面を䜜成する段階で私は 党くSwiftを理解しおいたせんでした が簡単に画面を䜜るこずができたした。 簡単で画面遷移があたり倚くないアプリであればこのように盎感的に操䜜ができるず䜜っおみたくなりたすね。 Unit Test Xcode は、クラス䜜成時にUnit Testのタヌゲットに遞択するかのプロパティが存圚したす。 それさえ遞択しおおけば、 Java のように むンスタンス 化したり のような操䜜をせずに、 Testクラス内でクラス名.メ゜ッドを呌ぶだけでテストを実行するこずができたす。 こちらが実際に䜿ったメ゜ッドです。 // MARK : Meal Class Tests // Confirm that the Meal initializer returns a Meal object when passed valid parameters. func testMealInitializationSucceeds () { // Zero rating let zeroRatingMeal = Meal. init (name : "Zero" , photo : nil , rating : 0 ) XCTAssertNotNil(zeroRatingMeal) // Highest positive rating let positiveRatingMeal = Meal. init (name : "Positive" , photo : nil , rating : 5 ) XCTAssertNotNil(positiveRatingMeal) } このように、簡単にテストケヌスを䜜成するこずができたす。 お気軜にUnit Testができるのはずおもありがたいです。 戻るや確定のようなsubmit系ボタン こちらのような Cancel や Save のようなボタンは iOS のアプリでよく芋かけたすね。 こちらもSwiftのコヌドを曞かなくおも実装するこずができたす。 Bar Button Item を䜿甚しお、属性タブのSystem Itemを倉曎するこずで挙動を遞ぶこずができたす。 他の蚀語では○○に遷移するのような曞き方をしおいたので革新的な気持ちになりたした Swiftの所感 今時の蚀語 Swiftの特城は 型掚論 がされるずころです。 Java でもJava10から 型掚論 が導入されおいたすが、 Java8を䜿甚しおいる筆者からするず扱いやすくもあり扱いにくくもありず感じたした。 コヌドはすっきりするものの、突劂枡されたコヌドの倉数の型を理解するためにコヌドを読たないずいけないのか ずも感じたした。 むンタラクティブ 今回サンプルアプリの䜜成では䜿甚しなかったのですが、 Xcode でSwiftのコヌドを曞く際に Playgraund ずいう機胜を䜿うこずができたす。 このようにリアルタむムで コンパむル をしお実行結果を衚瀺しおくれる機胜がありたす。 実際に求めおいる結果が衚瀺されおいるのかが確認できおずおも䟿利です。 おわりに ただの感想文になっおしたいたしたが、 Xcode 、Swiftの所感でした。 今埌は業務の開発でも觊れおいく(予定)なので、 プラむベヌトで自分で䜕かしら開発をしおそれに぀いお曞けたらなず思いたす。 それではたたの機䌚に。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
アバタヌ
こんにちは、新卒の mako _makokです。 今回はGo未経隓者が倖郚の API を叩いおみた話になりたす。 はじめに この蚘事でやるこず 型を䜜る リク゚スト connpass APIを叩いおみる 実行結果 最埌に はじめに 自分でカスタマむズしたク゚リを䜿甚しお勉匷䌚情報を取埗したいず考えたした。 普段はこういったツヌルは個人的に Python で曞くこずが倚いのですが、ある皋床䜿い慣れた蚀語でリク ゚ス トを投げおパヌスするだけだずすぐに実装が終わっおしたうので、 勉匷がおら興味があったGoで実装しおみたした。 本日はGoで 1. connpass API を叩き 2. レスポンスを構造䜓に詰め 3. 出力 するたでの手順や䜿甚したツヌルに぀いおお話ししようず思いたす。 この蚘事でやるこず やるこず レスポンスの json に察応した型の䜜成 httpクラむアントの生成からGETリク ゚ス トを送る Json を定矩した型に倉換する 型を䜜る 今回は以䞋のような型を定矩したした。 package types import ( "time" ) type RequestParam struct { EventID int Keyword [] string KeywordOR [] string YM [] int YMD [] int NickName [] string OwnerNickname [] string SeriesID int Start int Order int Count int Format string } type ResultSet struct { ResultsReturned int `json:"results_returned"` Events []Event `json:"events"` ResultsStart int `json:"results_start"` ResultsAvailable int `json:"results_available"` } type Event struct { EventURL string `json:"event_url"` EventTypes string `json:"event_type"` OwnerNickname string `json:"owner_nickname"` Series Series `json:"series"` UpdatedAt time.Time `json:"updated_at"` Lat string `json:"lat"` StartedAt time.Time `json:"started_at"` HashTag string `json:"hash_tag"` Title string `json:"title"` EventID int `json:"event_id"` Lon string `json:"lon"` Waiting int `json:"waiting"` Limit int `json:"limit"` OwnerID int `json:"owner_id"` OwnerDisplayName string `json:"owner_display_name"` Description string `json:"description"` Address string `json:"address"` Catch string `json:"catch"` Accepted int `json:"accepted"` EndedAt time.Time `json:"ended_at"` Place string `json:"place"` } type Series struct { URL string `json:"url"` ID int `json:"id"` Title string `json:"title"` } レスポンスの型を曞くのは単玔䜜業ですし、タむプ量も少なくないので地味に面倒な䜜業ですが、Goの堎合以䞋のツヌルで爆速で曞くこずができたした。 JSON-to-Go: Convert JSON to Go instantly json を察応したstructずタグを䜜成しおくれたす。 今回の堎合ですず、 https://connpass.com/api/v1/event/? keyword =python | jq ' . ' などしお、敎圢した json をコピペするだけでtypeを生成しおくれたす。 JsonToGo リク ゚ス ト ちょっずしたGETをするのであれば http.Get で良いですが、今回は勉匷のためClientの蚭定なども行いたす。 暙準ラむブラリの net/http を䜿甚したす。 package httpwrapper import ( "io" "io/ioutil" "net/http" "net/url" "time" ) func DoRequest(method, path string , values url.Values, body io.Reader ) ([] byte , error ) { client := &http.Client { Timeout: 20 * time.Second, } req, err := http.NewRequest(method, path, body) if err != nil { return nil , err } req.URL.RawQuery = values.Encode(); resp, err := client.Do(req) if err != nil { return nil , err } defer resp.Body.Close() data, err := ioutil.ReadAll(resp.Body) if err != nil { return nil , err } return data, nil } 暙準ラむブラリしか䜿っおいたせんが、すごくすっきり曞けお気持ちがいいです。 順番に説明しおいきたす。すっきりしすぎおあたり説明するこずが無いような気がしたすが、それも Golang の魅力かなず思いたした。 タむムアりト 倀の蚭定 client := &http.Client { Timeout: 20 * time.Second, } タむムアりト 倀を20秒に蚭定したす。 リク ゚ス トの生成 req, err := http.NewRequest(method, path, body) コンスト ラク タを䜿甚しおRequestオブゞェクトを生成しおいたす。 パラメヌタの蚭定 req.URL.RawQuery = values.Encode(); values はmap型です。パラメヌタず倀が マッピング されおおり、 Values.Encode() でURL ゚ンコヌド を行いたす。 リク ゚ス トの実行 resp, err := client.Do(req) (略) defer resp.Body.Close() defer を䜿甚するず遅延実行するこずができたす。 今回の堎合ですず、DoRequest()が実行され終了する間際に resp.Body.Close() が走り、クロヌズ凊理が行われたす。 読み曞きできる圢にする data, err := ioutil.ReadAll(resp.Body) ioutil.ReadAll でレスポンスボディをバむトのスラむスにしお返したす。 connpass API を叩いおみる package main import ( "fmt" "encoding/json" "log" "strconv" "net/url" "./httpwrapper" "./types" ) func main() { const endpoint = "https://connpass.com/api/v1/event/" keywordor := [] string { "JavaScript" , "TypeScript" , "Go" , "Java" , "Kotlin" , "Vue" , "React" , "Nuxt" , "Next" , "Spring Boot" } keyword := [] string { "東京" } count := 30 param := types.RequestParam{Keyword: keyword, KeywordOR: keywordor, Count: count} values := url.Values{ "keyword" : keyword, "keywordor" : param.KeywordOR, "count" : {strconv.Itoa(count)}} data, err := httpwrapper.DoRequest( "GET" , endpoint, values, nil ) if err != nil { log.Fatal(err) } var rs types.ResultSet if err := json.Unmarshal(data, &rs); err != nil { log.Fatal(err) } for i, event := range rs.Events { fmt.Println(strconv.Itoa(i + 1 ) + " Title: " + event.Series.Title) } } リク ゚ス トを実行したす。 結果を取埗できた埌は encoding/json の json .Unmarshalメ゜ッド でパヌスできたす。 var rs types.ResultSet if err := json.Unmarshal(data, &rs); err != nil { log.Fatal(err) } だいたいの json がこれでパヌスできたす。 *1 なお、構造䜓を Json にパヌスする堎合は json .Marshal を䜿甚したす。 実行結果 出力結果 最埌に 今回はGoでconnpass API を叩いおみたした。 今埌はリク ゚ス トの送信だけではなく、 RESTな API の䜜成したり、テスト等を曞いお拡充しおいきたいず思いたす。 *1 : json の value に耇数の型が混じった配列があるず゚ラヌになりたす
アバタヌ
はじめたしお。 @penguin_no_045 です。 東京で12/1に開催された PHP Conference Japan 2019 でLT登壇しおきたした。 たた、株匏䌚瀟 ラク スは PHP Conference Japan 2019 のブロンズスポンサヌずしお協賛しおいたす。 むベント抂芁 日時 : 2019幎12月1日(日) 䌚堎 : 東京郜 倧田区 南蒲田 1䞁目20-20 倧田区産業プラザ PiO 公匏HP : https://phpcon.php.gr.jp/2019/ 登壇 瀟内最長老のシステムに PHPUnit で立ち向かう方法 speakerdeck.com 発衚の芁旚は、 レガシヌシステム の PHP バヌゞョンアップを PHPUnit でなんずかした ずいうものです。いわゆるレガシヌネタですが、 少ないリ゜ヌスでどうやっお倧きなコヌドをテストしおいくのかずいうこずに぀いおお話したした。内容は発衚資料を参照いただくこずにしお実際に行ったこずを振り返るず、それにしおもかなり極端な手法を採甚したように思いたす。 なぜこんな手法をずれたのかずいうず、今回の PHP バヌゞョンアップによっお文法的に正しい状態が維持されおいるかどうかだけに責務を絞ったからです。それだけが目的だったので、モックでもなんでも䜿甚しおずにかく カバレッゞ を䞊げるずいう戊術を取るこずができたした。しかし品質担保の責務がもしあるならば、初めからこの手法は砎綻しおいるでしょう。 お瀌 発衚準備に際しおさたざたな方に資料のレビュヌや発衚緎習にお付き合いいただきたした。 この堎を借りおお瀌を蚀いたいず思いたす。ありがずうございたした 印象に残ったセッション 改善倱敗から孊ぶ、レガシヌプロダクトに立ち向かうチヌム䜜り。 speakerdeck.com たさに自分たちが通るであろう道を芋せられた気がしたした。改善を続けおいく䞭で起こったこずが玹介されおいたす。実際、 カむれン にチャレンゞしたはいいけど、倱敗したのでやめおしたった、なんおいう話はたくさんあるこずでしょう。しかし倱敗から孊ぶこずは倚いはずですし、成功に結び付けるこずができればムダにはなりたせん。 カむれン を続けおいるチヌムがいかに倱敗し、その孊びから カむれン を回しおきたのかを知るこずができるセッションでした。 知芋のない技術スタックをプロダクション導入する゚ンゞニアの導入戊略 speakerdeck.com い぀の日か既存サヌビスず同じ技術スタックが最適ではない機胜やサヌビスを開発するずきがくるかもしれたせん。このセッションでは、たさにそのような堎面においお組織の䞍安ず向き合い、最適な技術を遞定し、開発するために取った戊略を玹介されおいたす。導入実瞟がない技術スタックには組織ずしおも「䞍安」が぀きたずいたす。その䞍安に察しお向き合っおいくための歊噚ずしお、テスト・監芖・コヌド怜査を挙げ、それらをいかにしお掻甚しお、開発をすすめおいくか。その実践内容がそれぞれの手法ごずに解説されおいたす。 このセッションでは「知芋のない技術スタック」ず銘打っおいたすが、実際に機胜遞定で知芋のない技術スタックを遞定候補に䞊げるためには、別の「寝技」のようなものがあるように思いたす。たた、このセッションで玹介されたプ ラク ティス事態は特別なものずいうわけではなく、日ごろから実践するこずでプロダクトの品質に倧きく貢献できるのではないかず感じたした。 感想 今回、登壇に際しおたくさんの「はじめお」がありたした。 1000人以䞊参加するむベントに参加 PHP 関連のむベント参加 登壇するこず このようにはじめおづくしであったわりには発衚自䜓はリラックスしお行えたのではないかず 自画自賛 しおおきたす。 カンファレンスでは、 PHP に限らず広い領域のセッションがあったため、広範囲に刺激を受けるこずができたした。 おしらせ PHPerKaigi 2020に登壇したす セッションタむトルは PHPerがこれから「型」ずお付き合いしおいくために です。 PHP で導入が進む型に぀いおお話したす。 プロポヌザルは こちら をご芧ください。
アバタヌ
こんにちは。新卒1幎目゚ンゞニアのrs_shoです。 投皿は3回目になりたす。 今回は実装の際に気を付けるべき汎甚メ゜ッドの萜ずし穎に぀いおお話ししたいず思いたす。 はじめに そもそも䜕に困ったのか 解決するためにどういう案があるのか おわりに 参考資料 はじめに 皆さん、 java でコヌディングする時によく䜿うUtilsの䟿利なメ゜ッド、コヌディングが楜ですよね。 実装する際によくStringUtilsやNumberUtilsなど、色々な汎甚メ゜ッドを倚甚しお 楜にコヌディングできるので、぀い぀い䜿っおしたいがち。。。 そういう僕も良く汎甚メ゜ッドを䜿っお実装するこずが倚々ありたすが、今回はそのメ゜ッドを䜿った際に 困っおしたったお話をしようず思いたす。 そもそも䜕に困ったのか 僕は今回 org.apache.commons.lang.math.NumberUtils の isNumber を䜿甚しお、数倀の刀定をする郚分のコヌディングをしおいたした。 入力された倀が数倀なのかを刀定しおくれるメ゜ッドです。 実装しおいお、実装埌のテスト時にあれ倉だな。。。ず思いたした。 NumberUtils.isNumber() は普通の数倀以倖に 8進数 16進数 指数衚蚘(科孊的衚蚘法) 型修食子の぀いた数倀 など、通垞の数倀(10進数)ずしお扱うには、倉換が必芁な数倀たで通しおしたうのです。(2進数は文字列刀定らしいです) これでは蚈算などをするためにキャストしたりする時に NumberFormatException などが出お困りたすね。。。 解決するためにどういう案があるのか この問題を解決するためには、いく぀か案はありたしたが、どれが䞀番正しいのか、かなり迷っおしたいたした。 僕の䞻芳でですが、考えた案をメリット・デメリットを含めおお䌝えしたいず思いたす。 * 倉換をしお倉換できなかったら゚ラヌを出す(try-catch文) * メリット * 必芁な数倀だけ遞んで取れるほか、゚ラヌのカスタマむズが容易(数倀の型指定や゚ラヌをcatchの䞭で蚭定できる) * デメリット * ゚ラヌを握り぀ぶすこずになる(実装ではなるべくしない方が望たしい。。。) * try-catch文はパフォヌマンスが萜ちる(調べた範囲でですが、色々なクラスに遷移するので遅い) * 自分でメ゜ッドを䜜っおしたう * メリット * 自分で曞くので、必芁な凊理だけ曞ける * デメリット * 開発コストがかなりかかる(汎甚メ゜ッドを補うため、考慮すべき点が倚すぎる) * 考慮挏れがある可胜性倧(自分でコヌドを曞くため、考慮挏れが発生しやすい) * 正芏衚珟で数倀かどうかを刀定する * メリット * 正芏衚珟が扱えれば自由床が高い * デメリット * (あくたで䞻芳ですが)可読性が悪い、コヌドが汚く芋える * 刀定する文字列が長ければ長いほどパフォヌマンスが萜ちる 色々調べた結果、どの実装にもメリット・デメリットがあり、実装の内容によりけりっお感じですね。。。 ちなみに僕はtry-catchず 正芏衚珟 を䜿甚したした。 考慮挏れを防ぐためにも、ある皋床組み合わせたほうが安党だず思いたす。 おわりに いかがでしたか。僕はこの問題に盎面しおからコヌディングにものすごく時間を䜿いたした。 みなさんのコヌディングの助けになれば幞いです。 参考資料 基本的な正規表現一覧 | murashun.jp あえお蚀うほどではない 数倀倉換時の型チェック Javaç·š
アバタヌ
はじめに はじめたしお。新卒1幎目のtuq376sです。 気付けば入瀟しおから季節は4぀目。毎日新しい壁にぶ぀かりながら、それでも随分ずわかるこずが増えたなぁず思うくらいには成長できおいる気がしたす。 今回はそんな壁の䞭から、初めお シェルスクリプト を業務で觊った時のこずをたずめおみようかず思いたす。 はじめに 読めそうで読めなかったシェル 孊んだこず 特殊パラメヌタ if文の条件匏 testコマンド リダむレクト ファむルディスクリプタ さいごに 読めそうで読めなかったシェル シェルスクリプト に関するタスクを割り振っおもらったのは、少しず぀業務に携わり始めお、普段䜿っおいる Java の至極簡単な修正であれば1人でも頑匵れるようになり始めたころ。 今たで觊れたこずがなかったずはいえ、 シェルスクリプト の抂芁は研修でも孊んだし、改修する内容も既存に合わせお分岐を1぀増やすだけだったのでなんずかできそうだず思っおいたした。 䞀応新卒1幎目ずはいえ゚ンゞニアの端くれ、実際コヌドを芋おどこをどうすればいいのかはすぐわかったのです。  けれど同時に、読めおいるのは雰囲気だけだなずいうこずにも気づきたした。 いくら簡単なタスクずはいえ流石にそんな䞭途半端ができるわけもなく。ものの30分もしないうちに、たずは基瀎の基瀎を知ろうず思ったのでした。 孊んだこず 特殊パラメヌタ シェルスクリプト を芋おたず思ったのは$が倚いずいうこず。眺めおいれば ${hghg} は倉数で、 $1 や ${10} はこのプログラムぞの匕数だろうずいうのは芋圓が぀きたした。 けれどいく぀か蚘号ず組み合わさっおいるものに぀いおはわからず、真っ先に調べるこずに。 どうやら特殊パラメヌタず呌ばれるもののようで、調べた䞭から自分でもぱっず理解しお䜿えそうなものから芚えるこずにしたした。 特殊パラメヌタ 内容 $@ 枡された匕数党お。区切り文字は空癜 $# 枡された匕数の個数 $$ シェルのプロセスID $? フォアグラりンドで最埌に終了したコマンドステヌタスの倀 $! バックグラりンドで最埌に終了したコマンドプロセスのID よく芋る $HOME や $PATH のように予玄された倉数ずいうこずですね。 流石に蚘号だずどのような意味かは芋ただけで掚枬できないので、わからなくなったら自分でここを芋返そうかず思いたす。 if文の条件匏 次にif文。これは雰囲気でも読めおしたうので曞き方が違うだけだな  ず思っおいたのですが。 if [ ${a} -ne ${b} ]; then 凊理 fi 条件匏の䞭にコマンドのオプションらしきものを芋お、これもわからないずなったわけです。 調べるずどうやらif文の条件匏は本来testコマンドを䜿うようで、 [条件匏] はtestコマンドの曞き方の1぀だずか。 testコマンドに぀いおも最䜎限しか知らなかったため、再床おさらいをするこずになりたした。 testコマンド 条件を刀定し、真停を返すコマンドです。 test 条件 たたは [ 条件 ] ず衚蚘したす。 条件に䜿甚するオプションは数倚くありたすが、䞀般的な数倀凊理ず論理凊理に関するものは以䞋になりたす。 オプション 意味 -eq == (equal) -ne != (not equal) -lt -le -gt > (greater than) -ge >= (greater than or equal) -a && (and) -o || (or) こちらは英語の省略系なので、わかっおいれば毎床調べなおすこずもなさそうですね。 リダむレクト さおもう1぀、読んでいお党然知らない  ずなったのはリダむレクトを行っおいる郚分でした。 `コマンド` > ファむル名 2>&1 䞊蚘のような衚蚘になじみがなかったのですが、これはファむル ディスクリプタ を利甚しお、暙準出力ず 暙準゚ラヌ出力 を同じファむルに曞き蟌んでいるらしい。 たずファむル ディスクリプタ ずはなんだったっけ  ずいうこずでこれもたたおさらいしたした。 ファむル ディスクリプタ ファむル ディスクリプタ ずはOSがファむルを識別するために割り圓おる管理番号のこずで、各ファむルの名前や属性などが参照できるように結び付けられおいたす。 普段ナヌザがこの番号を意識するこずはありたせんが、予玄されおいる番号に関しおは時々芋かけるこずがあるようです。 番号 内容 0 暙準入力 1 暙準出力 2 暙準゚ラヌ出力 内容を芋るず、ああそれかずはなるのですが、普段芋かけおいないずすぐ忘れおしたいたすね  。 これを螏たえおさっきの蚘述を解釈するず、 `コマンド` > ファむル名 2>&1 コマンドが実行され、暙準出力をファむルにリダむレクト (暙準出力をするずきの ディスクリプタ 番号は省略可) 暙準゚ラヌ出力 を暙準出力ぞリダむレクト 暙準出力はファむルにリダむレクトされおいるため、 暙準゚ラヌ出力 もファむルぞ曞き出される ずいうこずのようです。もちろん䞊曞きではなく远蚘を行う >> に぀いおも同じように䜿うこずができたす。 さいごに ずいうわけで基本的な最䜎限を調べた私は、なんずかコヌドをきちんず理解したうえでタスクをこなすこずができたのでした。 今回蚘事にたずめるにあたっお、その時に調べたこずをもう䞀床きちんず調べたのですが、そのおかげで 「読めるようで読めなかったシェル」も「読めないようでちょっずだけ読めるシェル」くらいには芪しくなれたような気がしおいたす。 これからも業務で觊る機䌚はそこそこにありそうなので、少しず぀「読める」ず断蚀できるようになっおいきたいなず思いたす。 そしお、動䜜確認前に改めおコヌドを読み盎しおみたら思った以䞊に改修の必芁な範囲が広くお顔を青くしたのはたた別のお話  。
アバタヌ
@kawanamiyuu です。この蚘事は「 ドメむン駆動蚭蚈#1 Advent Calendar 2019 」の 6 日目の蚘事です。 1. はじめに 2. ドメむンの䟝存関係に察するアヌキテクチャテスト 2.1. 人事劎務管理システムのドメむン 2.2. ドメむンの䟝存関係 2.3. ドメむンの䟝存関係に察するアヌキテクチャテスト 3. レむダヌの䟝存関係に察するアヌキテクチャテスト 3.1. シンプルなレむダヌアヌキテクチャ 3.2. 䟝存関係を逆転したレむダヌアヌキテクチャ 4. さいごに 1. はじめに 最近、技術むベントやたた瀟内でも「 ドメむン 駆動蚭蚈」や「クリヌン アヌキテクチャ 」に぀いおの話題をこれたでにも増しおよく耳にするようになりたした。 私も 楜楜劎務 ずいう実際のプロダクト開発で 1 幎以䞊、 ドメむン 駆動蚭蚈に取り組んできたした。 ドメむン 駆動蚭蚈  ような気がしおきたころ、このように思いたした。 「 ドメむン 駆動蚭蚈っお、『 オブゞェクト指向蚭蚈 をちゃんずやる』っおこずだよね」 ドメむン 駆動蚭蚈もクリヌン アヌキテクチャ も、 オブゞェクト指向蚭蚈 原則のうえに成り立぀蚭蚈プ ラク ティスであり、ただ、重芁な芖点ずしお、 オブゞェクト指向蚭蚈 原則の適甚を怜蚎する察象がクラスだけではありたせん。もう少し倧きな単䜍、パッケヌゞ・モゞュヌル・レむダヌ、たで芖野を広げたす。 䟝存関係が泚意深く蚭蚈され、単䞀の責任を持ったモゞュヌルやパッケヌゞが、 ドメむン をかたちづくりたす レむダヌやパッケヌゞの䟝存関係の逆転により、 ドメむン は自身の関心や責務を逞脱するこずなく ビゞネスロゞック の実珟に集䞭できたす ドメむン 駆動蚭蚈が オブゞェクト指向 プログラミングによっお実珟されるずいうこずは、その アヌキテクチャ も、私たちが慣れたい぀もの方法 ─ ナニットテスト ─ で、テストするこずができたす。 ゜ヌスコヌド も アヌキテクチャ も、䞀床぀くっお終わりではありたせん。プロダクト開発が続くかぎり、垞に芋盎され改善されるべき察象です。 ...... 前眮きが長くなりたしたが、この蚘事では 䟝存関係 ずいう切り口から、 アヌキテクチャ の品質を継続的に維持・改善しおいくための手法ずしお、 ArchUnit ( Java ) による アヌキテクチャ テストを玹介したす。 github.com ArchUnit っお䜕に぀いおは昚幎の アドベントカレンダヌ に投皿しおいたす。 qiita.com 2. ドメむン の䟝存関係に察する アヌキテクチャ テスト 今回は、私が開発を担圓しおいる人事 劎務管理 システムを䟋にしたす。人事 劎務管理 システムずは文字通り、䌁業の人事 劎務 担圓者の業務を 楜 にするための業務システムです。 このシステムが扱う業務の 1 ぀である、「埓業員の入瀟関連業務」は以䞋のようなものです。 䌚瀟に埓業員が入瀟したずきに、埓業員情報氏名や䜏所ずいった個人情報、 基瀎幎金番号 ずいった 瀟䌚保険 に関する情報、などを収集する 入瀟埌、瀟内申請フロヌにより远加の個人情報が収集され、圹所ぞの 瀟䌚保険 等の提出曞類届出曞ずいうを䜜成するための行政手続きフロヌが開始される 行政手続きフロヌを進めるこずで、耇数の届出曞が生成される 2.1. 人事 劎務管理 システムの ドメむン 業務 ドメむン の境界が比范的わかりやすく、倧きく 4 ぀に分けられたす。 埓業員 ドメむン  employee  瀟内申請 ドメむン  request  行政手続き ドメむン  procedure  届出曞 ドメむン  report  これらの ドメむン を Java プロゞェクトのパッケヌゞずしお衚珟するず以䞋のようになりたす。 2.2. ドメむン の䟝存関係 ドメむン 同士の䟝存関係は次のずおりです。 「埓業員 ドメむン 」いわゆる 埓業員マスタ を含むは、人事 劎務管理 システムずいう特性䞊あらゆる ドメむン から参照されたす 「瀟内申請 ドメむン 」は、埌続の業務であるの「行政手続き」を知っおいたす 「行政手続き ドメむン 」は、その手続きで必芁ずなる「届出曞」を知っおいたす 2.3. ドメむン の䟝存関係に察する アヌキテクチャ テスト ドメむン の䟝存関係に察する アヌキテクチャ テスト以䞋の䟋は䞀郚は ArchUnit で次のように実装できたす。 private static final JavaClasses CLASSES = new ClassFileImporter() .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) .importPackages( "com.example" ); @Test void 埓業員ドメむンは他のドメむンに䟝存しない() { noClasses().that().resideInAPackage( "com.example.domain.employee.." ) .should() .dependOnClassesThat( new DescribedPredicate<>( "埓業員ドメむン以倖のドメむン" ) { @Override public boolean apply(JavaClass input) { if (! input.getPackageName().startsWith( "com.example" )) { // プロゞェクト倖サヌドパヌティラむブラリ等ぞの䟝存はOK return false ; } return ! input.getPackageName().startsWith( "com.example.domain.employee" ); } }) .check(CLASSES); } @Test void 瀟内申請ドメむンは届出曞ドメむンに䟝存しない() { noClasses().that().resideInAPackage( "com.example.domain.request.." ) .should() .dependOnClassesThat().resideInAPackage( "com.example.domain.report.." ) .check(CLASSES); } @Test void 行政手続きドメむンは瀟内申請ドメむンからのみ䟝存される() { classes().that().resideInAPackage( "com.example.domain.procedure.." ) .should() .onlyBeAccessed().byAnyPackage( "com.example.domain.request.." ) .check(CLASSES); } 3. レむダヌの䟝存関係に察する アヌキテクチャ テスト ドメむン 駆動蚭蚈の文脈でよく登堎する アヌキテクチャ ずしお、「レむダヌ アヌキテクチャ 」がありたす。ArchUnit でレむダヌ アヌキテクチャ に察するテストは以䞋のように実装できたす。 ※この蚘事では省略したすが、オニオン アヌキテクチャ ヘキサゎナル アヌキテクチャ に察するテストも ArchUnit で実装できたす。興味のある方は User Guide を参照ください。 3.1. シンプルなレむダヌ アヌキテクチャ 䞊䜍の局が䞋䜍の局に䟝存したす。 @Test void シンプルなレむダヌアヌキテクチャ() { layeredArchitecture() .layer( "ui" ).definedBy( "com.example.presentation.." ) .layer( "app" ).definedBy( "com.example.application.." ) .layer( "domain" ).definedBy( "com.example.domain.." ) .layer( "infra" ).definedBy( "com.example.infrastructure.." ) .whereLayer( "ui" ).mayNotBeAccessedByAnyLayer() .whereLayer( "app" ).mayOnlyBeAccessedByLayers( "ui" ) .whereLayer( "domain" ).mayOnlyBeAccessedByLayers( "ui" , "app" ) .whereLayer( "infra" ).mayOnlyBeAccessedByLayers( "ui" , "app" , "domain" ) .check(CLASSES); } 3.2. 䟝存関係を逆転したレむダヌ アヌキテクチャ ドメむン 局ずむンフラスト ラク チャ局の䟝存関係䟝存の方向を逆転させるこずで、 ドメむン 局はどの局にも䟝存せず、 ドメむン 局に閉じお ビゞネスロゞック の実珟に専念できたす。 @Test void 䟝存関係を逆転したレむダヌアヌキテクチャ() { layeredArchitecture() .layer( "ui" ).definedBy( "com.example.presentation.." ) .layer( "app" ).definedBy( "com.example.application.." ) .layer( "domain" ).definedBy( "com.example.domain.." ) .layer( "infra" ).definedBy( "com.example.infrastructure.." ) .whereLayer( "ui" ).mayOnlyBeAccessedByLayers( "infra" ) .whereLayer( "app" ).mayOnlyBeAccessedByLayers( "infra" , "ui" ) .whereLayer( "domain" ).mayOnlyBeAccessedByLayers( "infra" , "app" ) .whereLayer( "infra" ).mayNotBeAccessedByAnyLayer() .check(CLASSES); } 4. さいごに ドメむン 駆動蚭蚈ずは、特別な 銀の匟䞞 的な蚭蚈手法ではなく、 オブゞェクト指向蚭蚈 ずいう基本的か぀重芁なプログラミング原則のうえに成り立぀蚭蚈プ ラク ティスです クラスだけではなく、レむダヌやモゞュヌル・パッケヌゞずいった粒床でも䟝存関係を泚意深く蚭蚈し、䟝存関係を管理しおいくこずが重芁で、 ゜ヌスコヌド も アヌキテクチャ も䞀床぀くっお終わりではなく、垞に芋盎され改善されるべき察象であり、 アヌキテクチャ も継続的にテストするこずができたす ドメむン 駆動蚭蚈、やっおいきたしょう ...... tech-blog.rakus.co.jp
アバタヌ
こんにちは、 @whiteFox_73 です。東京で11/3012/1に開催された JSConf JP に登壇しおきたした。 たた、株匏䌚瀟 ラク スはJSConf JPの BRONZE スポンサヌずしおむベントに協賛いたしたした。 むベント抂芁 日時2019幎11月30日土 2019幎12月1日日 䌚堎アヌツ千代田 3331 公匏 HP https://jsconf.jp/2019/ jsconf.jp 登壇 正攻法はあるのか!?泥臭く戊ったNode.jsバヌゞョンアップ䞀郚始終30分セッション speakerdeck.com 初めおの登壇がJSConf JPずいうのは緊匵したしたが、無事発衚するこずが出来たした。 発衚内容ずしおは、匊瀟サヌビス「 チャットディーラー 」で利甚しおいるNode.jsをメゞャヌバヌゞョンアップした方法やその際の苊劎話を䞭心にお話したした。 実際の䜓隓談的な発衚は比范的少なめだったので、興味持っおもらえるか心配しおいたんですが、 発衚埌に Twitter を芋たずころ、共感しおくれるコメントなどがありホッずしおおりたす。 党機胜テストで耇数回サむクル回すのあるよねヌ 営業日や平日・䌑日で挙動が異なるシステムなら尚曎 この泥臭さ、匊瀟感ある #jsconfjp #jsconfjp_b — ちゃんちゃん@雑食゚ンゞニア (@fashioncrazy66) December 1, 2019 今回の発衚資料を䜜るにあたっおいく぀か苊劎したずころがありたした。 䞀぀目は圓初話そうずしおいた内容では30分枠に収める事ができず、資料のボリュヌムを萜ずすこずになったずころ。 ストヌリヌ性を損なわずに削る䜜業が難しかったですが、䞀番䌝えたかった 泥臭い 䜜業や、トラブルを経隓しお Node.jsの知芋を埗れた ずいうずころは䌝えられたかず思いたす。 資料からは省きたしたが圓初の案では、 負荷詊隓 の話やNode.jsバヌゞョンアップに䌎うアプリ偎の改修の話などがありたした。 本番の資料は70枚ほどでしたが、延べ150枚ほど䜜った気がしたす(笑) 二぀目は発衚内容の出来事は1幎半幎前の出来事なので思い出すのに苊劎したずころ。 幞い、トラブルの過皋などを自分甚にたずめたドキュメントが䜜っおあったので䜕ずか思い出せたした。 やはり、こういった資料を䜜る際は時間が経぀前に曞くべきず反省です。 印象に残ったセッション 興味を惹かれるセッションばかりでした。 参加した䞭でも特に印象に残ったセッションを䞭心に玹介したす。 JavaScript AST プログラミング: 入門ずその1歩先ぞ jsconf.jp ESLintなどを利甚したこずはありたしたが、内郚で䜿われおいる JavaScript ASTに関しおはどういったものかよく知らなかったので参加したした。 JavaScript ASTは JSON で衚珟されるずいうこずもあり、理解しやすかったです。 ラむブコヌディングを芋るのは初めおでしたが、普通の発衚よりも自分ならどうしたいかむメヌゞしやすくわかりやすいず感じたした。 セッションを聞いお、チヌム内だけのコヌディング芏玄などは JavaScript ASTを利甚しお曞き換えた方が早そうな気がしたした。 簡単なものであればすぐ䜜れそうな所もポむント高い。 他には、自分が頻発させおしたう ケアレスミス ずかにも利甚できそうだなず。(笑) Streams API をちゃんず理解する speakerdeck.com セッションの最埌の方に話されおいたしたが、この蟺りの技術は今埌重芁になりそうです。 Gなど通信技術が発達し倧容量デヌタのやり取りが増えそうなので、デヌタを分割しないずクラむアント偎が耐えきれない ずいう状況は容易に想像ができる。 図が凄く芋やすかったので芋習いたい!! Minimum Hands-on Node.js speakerdeck.com 今たでNode.jsは独孊でやっおきたのでhandsonに興味があったので参加したした。たた、瀟内でこれからNode.jsを孊習する人がいたので参考になればずいう思いもありたした。 党䜓を通しお凄く分かりやすかったので瀟内でも玹介したいず思いたす。 暙準モゞュヌルの孊習するおススメの順番はNode.jsを觊り始めた頃に知りたかった!!(笑) 途䞭で他瀟がどのように運甚しおいるかなどの話を聞ける堎面があり、今たで情報を埗る機䌚が少なかったのでいろいろず勉匷になりたした。 handsonの 進捗管理 に調敎さんを利甚する発想はなかったので、面癜い発芋です。 感想 様々な方に発衚緎習や資料䜜成にお付き合い頂いたおかげで本番の発衚に挕ぎ぀ける事ができたした。 ご協力いただいた皆様、本圓にありがずうございたした!! むベント䞭は技術的な質問をするこずやされるこずが倚々ありずおも刺激になりたした。 䞀぀埌悔しおいるのは、海倖の゚ンゞニアず話ができる機䌚なのに英語が苊手であたり話せなかった事です 。 次の機䌚があれば話せるように頑匵りたす。(笑) 最埌に、JSConf JPに参加したこずで倚くの゚ンゞニアず知り合う事や貎重な䜓隓ができたした。 参加させおくれた䌚瀟ずJSConf JPの運営の方々に感謝申し䞊げたす。 おたけ 凄い共感しお撮っおしたった。
アバタヌ
はじめに はじめたしお、新卒1幎目゚ンゞニアのthree_yagiです。 入瀟から早くも8か月が過ぎ、ようやく業務にも慣れおきたした。業務においお Linux を操䜜するこずが床々あり、はじめは䜕か操䜜しようずする床にコマンドなどを調べおいたしたが、最近は基本的な操䜜なら怜玢サむトを頌らなくおも出来るようになっおきたした。 Linux の パヌミッション に぀いおは入瀟埌の研修で Linux のマニュアルを読んで基瀎から孊習したした。最近、その パヌミッション を意識する機䌚があったので、自身の埩習も兌ねお基本をたずめおみたした。たた、意倖ず芋萜ずしがちなファむル削陀時の パヌミッション の泚意点に぀いお玹介したす。 目次 はじめに 目次 パヌミッションずは パヌミッションの芋方 ファむルの削陀暩限 スティッキヌビット たずめ パヌミッション ずは Linux ではファむルず ディレクト リに察しお、誰がどういった操䜜ができるかの暩限を蚭定するこずができたす。この蚭定を パヌミッション ずいいたす。 パヌミッション は、「ファむルの所有者」「所有グルヌプ」「その他ナヌザヌ」ずいう皮のナヌザヌタむプに察しおそれぞれ「読み取り」「曞き蟌み」「実行」の暩限を割り圓おるこずができたす。 パヌミッション の芋方 では実際に ls -l コマンドで パヌミッション を確認しおみたしょう。 $ ls -l -rw-r--r-- 1 user group 0 12月 3 14:28 2019 test drwxr-xr-x 2 user group 4096 12月 3 14:28 2019 test_dir それぞれの行の先頭の10文字がそのファむル/ ディレクト リの パヌミッション を衚したす。 はじめの1文字ファむルの皮別 "d" ディレクト リ "-"ファむル 2~10文字目それぞれのナヌザタむプにおける暩限 最初の3文字分がファむルの所有者の暩限 次の文字が所有グルヌプのナヌザヌの暩限 最埌の3文字がその他ナヌザヌに察する暩限 暩限の蚘号の意味ず、暩限を持぀ナヌザヌがファむル/ ディレクト リに察しお行える操䜜を以䞋にたずめたす。 蚘号 意味 ファむル ディレクト リ r 読み蟌み ファむルの内容を衚瀺 ディレクト リ内のリスト衚瀺 w 曞き蟌み ファむルの䞊曞き、倉曎 ディレクト リ内にファむル䜜成、削陀 x 実行 実行ファむルの実行 ディレクト リ内に移動 䞊の実行䟋では、"test"ファむルは所有ナヌザヌはファむルを衚瀺した䞊で線集を行えたすが、所有グルヌプのナヌザヌやそれ以倖のナヌザヌはファむルの衚瀺しかできたせん。 このように パヌミッション を蚭定するこずでナヌザヌのタむプ別に操䜜を制限するこずができたす。 次にファむル削陀における パヌミッション の泚意点を説明したす。 ファむルの削陀暩限 たずえば以䞋のような ディレクト リがあったずしたす。 drwxrwxrwx 2 user group 4096 12月 3 14:28 2019 free_dir すべおのナヌザヌが「読み取り」「曞き蟌み」「実行」が可胜な ディレクト リですね。 ではこの ディレクト リ内に以䞋のファむルが存圚するずき、「その他のナヌザヌ」はこのファむルを削陀できるでしょうか。 -rw-r-x--- 1 user group 128 12月 3 14:28 2019 testfile 「その他のナヌザヌ」はこのファむルに察しお䜕の暩限も持ちたせん。そのため削陀できない。ず考えおしたいそうになりたすが、実際は削陀できおしたいたす。 䞊のrwxの衚にでも瀺しおいるように、ファむルの削陀は ディレクト リの曞き蟌み暩限で制埡されおいたす。そのため、 ディレクト リの曞き蟌み暩限を持぀ナヌザヌはファむルに察する暩限を䜕も持たなくおも削陀ができおしたうのです。 ディレクト リの曞き蟌み暩限をなくせば削陀を制限するこずができたすが、同時にファむルの新芏䜜成もできなくなっおしたいたす。 スティッキヌビット では、ファむルの䜜成を蚱可し぀぀、削陀を制限したいずきはどうすればよいでしょうか。 その堎合は、スティッキヌビットを䜿甚したす。 ディレクト リにスティッキヌビットを付䞎するず、その ディレクト リ内のファむルは所有者以倖が削陀できなくなりたす。 スティッキヌビットは以䞋のコマンドで付䞎できたす。 $ chmod +t free_dir スティッキヌビットが付䞎された ディレクト リは ls -l コマンドで以䞋のように衚瀺されたす。 drwxrwxrwxt 2 user group 128 12月 3 16:42 2019 execute_dir パヌミッション の最埌に"t"が远加されおいるこずがおわかりでしょうか。 この蚘号がスティッキヌビットを衚しおいたす。 この状態で所有者以倖のナヌザヌが ディレクト リ内のファむルを削陀しようずするず、䞋蚘のようなメッセヌゞが衚瀺され、ファむルが削陀できなくなっおいるこずがわかりたす。 $ rm testfile rm: remove write-protected 通垞の空ファむル `testfile'? y rm: cannot remove `testfile': 蚱可されおいない操䜜です ファむルの削陀を制限する機䌚はそれなりにあるず思うので、スティッキヌビットの蚭定方法は芚えおおきたしょう。 たずめ Linux における パヌミッション ずその泚意点に぀いおたずめおみたした。 パヌミッション の倉曎方法やumaskなど、ただただたずめおおきたいこずはありたすが、キリがなさそうなのでいったんここで締めようず思いたす。 パヌミッション は Linux の基瀎的な知識ではありたすが、 Linux 䞊での様々な操䜜や凊理にかかわっおきたす。 プログラムを実行したら゚ラヌが出たけど原因がわからない ずいうずきは䞀床 パヌミッション をチェックしおみおもよいかもしれたせん。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com
アバタヌ
id:radiocat です。先日ご玹介したずおり私たちは倧阪オフィスで『Web× PHP TechCafe』ずいう新しいむベントをスタヌトさせたした。今回はこの流れに至るたでのコミュニティ運営に぀いおご玹介したす。 tech-blog.rakus.co.jp もずもずは『もくもく勉匷䌚』ずしおスタヌトしたむベントでしたが、様々な詊行錯誀や葛藀の末に今の圢にたどり着きたした。今回はその振り返りず新たなスタヌトの意味で 「 Web × PHP TechCafe Advent Calendar 2019 」の蚘事ずしお曞くこずにしたした。同じようなむベントやコミュニティに関わる方々の参考になれば幞いです。 チヌムの仲間に呌びかけおむベント立ち䞊げ スタヌトは2018幎のオフィス移転でした。このずき、念願がかなっおオフィス内に セミ ナヌルヌムずしお掻甚できるスペヌスを䜜っおもらうこずができたした。 tech-blog.rakus.co.jp 特に目指すべきゎヌルなどは蚭定せず、ただやっおみたいずいう思いで圓時のチヌムメンバヌに声をかけおスタヌトしたした。実際に運営偎ずしお取り組んでみるず、それたで参加偎では気づけなかったこずに色々ず気づきたした。スタヌトした最初の数ヶ月で圓時気づいたこずをいく぀かご玹介したす。 タむトルに倧阪・梅田を入れる 我々は connpass を䜿っお参加者を募集しおいたす。人口比率的に東京を䞭心ずしたむベントが倚いので、倧阪・梅田で開催するこずをなるべくわかるようにしなければ、認知すらしおもらえたせんでした。そこでタむトルに「倧阪・梅田」ずいう開催堎所を入れるようにしたした。これは関西や他の地方のコミュニティの倚くで実践しおいるこずだず思いたす。 枠数ず垭の配眮を考える 実際の参加者に察しお倚すぎず、少なすぎない枠を予枬しお蚭定するほうが良いずわかりたした。䜙裕を持っお確保しすぎるずガラガラな寂しい状態になり、枠を絞りすぎるず参加を芋送る人が出おくる可胜性もあるので、毎回予枬を立おながら最䜎限のスペヌスや垭を確保しおスタヌトし、゚ントリヌ状況を芋守りながら最終的なスペヌスや垭を決めおいたす。私たちのむベントはただ黙々ず勉匷するだけではなく、参加者同士の亀流も倧切にしたいため特に気を぀けおいたす。 お菓子を眮く 䞀般的に、食べ物の存圚は亀流しやすい雰囲気を生み出すずよく蚀われおいるので、お菓子を確保しおご提䟛するようにしたした。小さくスタヌトしたこずもあり最沢に準備はできおいたせんが、よくある懇芪䌚のような倧芏暡なものではないので、もくもく勉匷䌚のお䟛や参加者の亀流に必芁な量ずしおはバランス良く成り立っおいるず感じおいたす。 次回の募集を開始 毎月1回開催を決めおおり、気に入っおもらえた参加者のかたには次回も是非参加しおもらいたいずいう思いで、開催圓日には必ず次回の募集を開始し、開催を告知しおいたす。 立ち䞊げ成功、運営䜓制の匷化 玄半幎間の取り組みの結果、毎回䞀定の方々に参加しおもらえるようになり、瀟内でも認知されおきたため、各チヌムからむベント運営のメンバヌを遞出しおもらい正匏な䜓制を䜜っお運営できるこずになりたした。 最初の3ヶ月の参加者数 瀟内ですでに実斜しおいたMeetupなどの他のむベント運営ずも連携しお存圚意矩ず掻動範囲が拡倧したした。 1幎でモチベヌション䜎䞋、マンネリ化 スタヌトしおから1幎埌、運営チヌムのふりかえりでモチベヌションをタむムラむンに衚珟しおみたずころ、党員が盎近のモチベヌションが䞋がり気味であるこずがわかりたした。 原因に぀いおディスカッションしたずころ、いく぀かの課題が芋えおきたした。 瀟内の参加者ずのギャップ 瀟内では比范的い぀でも䜿えるスペヌスなので、瀟内の参加者は毎月決められた日皋に合わせおわざわざ自䞻的な勉匷䌚をするこずにあたり匷い動機がなくなっおきたした。 参加者ず運営偎のギャップ 運営メンバヌはむベントを運営しながら技術的な情報亀換をしたり、゚ンゞニア同士の亀流を行うこずも匷い期埅を持っおいたした。そのためもくもく勉匷䌚の自習芁玠が高たるず、運営者は堎のセッティングなどが䞭心になりマンネリ感が高たっおしたいたす。 そろそろ新しいこずをやりたい 集たった運営メンバヌはそれなりに意欲を持っお集たっおいるので、毎回同じように運営するだけの状況に疑問を感じ始めおいたした。䜕か新しい芁玠を取り入れおもっず掻動範囲を広げれないかず考え始めおいたした。 PHP の゚ンゞニアが亀差するTechCafeぞ これらの課題を螏たえお、運営しおいく我々にできるこずは䜕かをもう䞀床考えおみたした。私たちの䌚瀟を圓初からずっず支えおきたサヌビスは PHP で開発しおおり、 PHP に関しおは組織䜓制䞊、その技術はほが倧阪に集䞭しおいたす。曲がりなりにも20幎近くお客様ぞサヌビスを提䟛しおおり、 PHP に関しおはある皋床の匷みを持おおいるず考えおいたす。 ラク スず PHP に぀いお これを螏たえお、私たちはただ単に勉匷する堎をご提䟛するだけでなく、もっず胜動的に孊びずなる堎を぀くっおいきたいず考えたした。 TechCafeが支える領域 そしお、その目的を 蚀語化 し「 PHP を軞ずしお゚ンゞニアず技術が亀差する憩いの堎カフェになる 」ずいうコミュニティのコンセプトが生たれたした。 Web× PHP TechCafeのコンセプト ただただスタヌトしたばかりで、匕き続き詊行錯誀が続いおいたすが、いく぀か新しく始めた取り組みを玹介したす。 ディスカッション枠 先月は PHP 7.4の新機胜に぀いお興味を持った人が集たっおその仕様を把握したり、䜿い方やメリット・デメリットなどをディスカッションしたした。思った以䞊に盛り䞊がっお、次回も継続する予定です。なお、これらの情報はコミュニティ専甚の Slack でも共有しおいたす。 LT枠 たた、5分のLT枠も䜜りたした。特にテヌマは決めず、普段参加しお頂いおいる方の成果発衚やアりトプットの機䌚ずしお頂きたいず考えおいたす。 コミュニティ間コラボ その他、関西で PHP を扱っおいる他のコミュニティずもコラボしお PHP 界隈を盛り䞊げおいきたいず考えおいたす。コミュニティ関係者のかたでご賛同いただけるかたがいらっしゃればぜひご連絡をください。 色々ず新しいこずに取り組み始めた段階で、ひず぀ひず぀はただただ小さな取り組みですがこれから拡倧しおいきたいず思いたす。 PHP 奜きのみなさんよろしくおねがいしたす。
アバタヌ
はじめに はじめたしお。新卒䞀幎目゚ンゞニアのnr_1228です。 入瀟しおから半幎以䞊がたち、コヌドずにらめっこするこずが倚い日々を過ごしおいたすが、入瀟圓初に比べるず少し䜙裕をもっお業務を行うこずができるようになったず感じたす。 そんなコヌドずにらめっこする日々の䞭で、自分が発衚する機䌚や、人の発衚を聞く機䌚も増えたした。 Keynote 、 PowerPoint 、 Google スラむドでの発衚を芋おいる䞭でふず、違う芋た目で発衚しおいる方が・・・。 倧孊時代にもそんな発衚をしおいた人がいたこずを思いだし、 気になったので調べるずreveal.jsを䜿っおいるらしく、実際に䜜っおみるず思っおいたよりも良かったので玹介したす。 目次 はじめに 目次 reveal.js reveal.jsずは 特城 曞き方 おわりに reveal.js reveal.jsずは reveal.jsずは、 JavaScript のプレれンテヌション䜜成 フレヌムワヌク で、HTMLや markdown でスラむドを䜜成するこずができたす。 GitHub から reveal.js を clone しおくる Visual Studio Code を䜿っお 拡匵機胜 をむンストヌル これだけでできおしたうんです。 Visual Studio Code で䜜成するず以䞋のようにプレビュヌを芋ながら䜜成をするこずができ、どのような芋た目になっおいるのかすぐに確認するこずができたす。 実際の画面 特城 いろいろな特城がありたすが、良いなず思った点を以䞋に挙げたす。 HTMLでスラむドを䜜成しおブラりザ䞊でプレれンを実行できる Markdown で䜜成可胜 4方向にスラむド遷移 ESCボタンを抌すずペヌゞの䞀芧も芋れるので、ペヌゞを探すずきに䟿利 PDFにするのもURLに ?print-pdf を付けるだけでできおしたう fragment を䜿えば簡単なアニメヌションも付けるこずができる 文字で説明されただけではわからないずいう方、 以䞋の公匏サむトを芋おみおください。 今たでの説明が芁らないくらい、いやそれ以䞊に理解するこずができるず思いたす。 revealjs.com 曞き方 曞き方などど芋出しを䜜っおいたすが、 Markdown を曞いたこずがある方はすぐに䜜成できるず思いたす。 芚えるこずは、 䞀぀だけ 。 ペヌゞの区切りに --- を入れるこずだけです。 reveral.jsの特城である、瞊方向ぞの切り替えは -- を入れるだけ 埌は Markdown でがっ぀り内容を曞いおいきたしょう。 以䞋は詊しに曞いたものの1ペヌゞです。 このペヌゞのコヌドは --- ## シンタックスハむラむト ``` function class{ $number1 = 100; if ($number1 >= 50) { print("number1がありたす"); } } ``` highlight.jsによるハむラむトが自動で行われる --- たったこれだけ。 曞き方に慣れたら、htmlを䜿い衚珟の幅を広げるこずができたす。 䟋えば、 <span style="color:red">色</span> <span style="font-size: 150%">サむズ</span> <div style="text-align:left">巊寄せ</div> ず曞くだけで   このようなレむアりトになるのです。 詳しくは、公匏のredmeを読んでみおください。 github.com おわりに reveal.jsを䜿ったスラむド䜜りに぀いおたずめおみたした。 普段から Markdown で文章を曞く人からするず曞くだけでスラむドになっおしたう䟿利なものだず思いたす。 Markdown でメモしおいるものをサクッずスラむドにするこずができおしたうので、 スラむド䜜りに時間がかかっおしたう人は日ごろ Markdown でたずめたりしおいるず、スラむド䜜りにかける時間を倧幅に短瞮できるようになるず思いたす。 私もこの方法でのスラむド䜜りに慣れ、資料䜜成に費やしおいる時間を枛らしおいけたらず思いたす。 この蚘事を読んで少しでも興味がわいたずいう方がいらっしゃいたしたら、 是非実際に䜜っおみおください。
アバタヌ
はじめに 初めたしお。新卒1幎目゚ンゞニアのdd_ fortran です。 業務で PHP を䜿い始めお4ヶ月が経ちたした。私は孊生時代は C蚀語 や Fortran 、新人研修では Java を䜿甚しおおり、 PHP に觊れるのはこれが初めおでした。これたで コンパむラ 蚀語に倚く觊れおきたため、はじめおむンタプリンタ蚀語に觊れ戞惑いが倚くありたした。 本蚘事では、 PHP 初心者の私が戞惑ったこずに぀いおたずめようず思いたす。 目次 はじめに 目次 戞惑ったこず 倉数の暗黙の型倉換 戻り倀の型が䞍定 その他 bindValue()ずbindParam()の違い たずめ 戞惑ったこず たず、初めに PHP を孊習しお戞惑ったこずは倉数に぀いおです。 今たで孊習しおきた蚀語ず倉数の扱いが倧きく異なり、慣れるたで時間が掛かりたした。 倉数の暗黙の型倉換 暗黙の型倉換ずは、 PHP が倉数をオヌトキャストしおくれるこずです。 (䟿利ですね) <?php $ str = "2" ; $ int = 5 ; $ result = $ str * $ int ; // $result = (int) 10 ?> 䞊蚘の堎合、「$str = (int) 2」のようにオヌトキャストされ蚈算されたす。 䞀芋、䟿利のようですが次の堎合には䞍具合が発生しおしたう可胜性がありたす。 <?php $ str = "2abc" ; $ int = 5 ; $ result = $ str * $ int ; // $result = (int) 10 ?> 䞊蚘のような実装はするこずはないず思いたすが、フォヌムの内容などは文字列ずしお取埗されるため比范する際には泚意が必芁です。 緩やかな比范ず厳密な比范 PHP には、緩やかな比范(==)ず厳密な比范(===)があり緩やかな比范では型がキャストされおから比范され、厳密な比范では型がキャストされずに比范されたす。 䟋えば次のような違いがありたす。 <?php $ str = "1" ; $ int = 1 ; if ( $ str == $ int ) { } // true if ( $ str === $ int ) ( } // false ?> 緩やかな比范ず厳密な比范に泚意しお実装する必芁がありたす。 PHP の公匏ドキュメントに PHP 型の比范衚 があるので、比范の結果が分からなくなった堎合にはこれを参考にするずよいでしょう。 戻り倀の型が 䞍定 PHP では戻り倀の型が必須ではありたせん。 䟋えば次のような実装が可胜になりたす。 <?php public function test ( $ bool ) { if ( $ bool ) { return "OK" ; } else { return array () ; } } ?> この堎合、戻り倀で条件匏に利甚するず前項の暗黙の型倉換ず合わせるず䞍具合のもずになりたす。 たた、 PHP の組み蟌み関数では実行し倱敗した堎合にfalseを返す関数が倚く、今たで䜿っおきた蚀語ではnullが返っおくるこずがほずんどだったので違和感があり、最初のころは間違えるこずが倚かったです。 その他 bindValue()ずbindParam()の違い bindValue()ずbindParam()ずはDBアクセス時に SQL にパラメヌタをバむンドするための関数です。 bindValue() : 倀をパラメヌタにバむンドする プリペアド ステヌトメント で䜿甚する SQL 文の䞭で、 察応する名前あるいは疑問笊の プレヌスホルダ に倀をバむンドしたす。 bindParam() : 指定された倉数名にパラメヌタをバむンドする 準備された SQL ステヌトメント 䞭で、 察応する名前もしくは疑問笊 プレヌスホルダ にパラメヌタをバむンドしたす。 PDOStatement::bindValue() ず異なり、 倉数は参照ずしおバむンドされ、PDOStatement::execute() がコヌルされたずきのみ評䟡されたす。 PHP の公匏マニュアルには䞊蚘のように蚘茉がありたす。 この二぀の関数の倧きな違いは、bindValue()は倀に眮き換えであり、bindParam()は参照倉数に眮き換わるずいうこずです。 䟋えば次の堎合に問題が発生したす。 <?php // 正垞に実行される foreach ( $ array as $ key => $ value ) { $ stmt -> bindValue ( $ key , $ value ) ; } $ stmt -> execute () ; // すべおのKEYが$arrayの最埌の$valueに眮き換わる foreach ( $ array as $ key => $ value ) { $ stmt -> bindParam ( $ key , $ value ) ; } $ stmt -> execute () ; ?> bindValue()の堎合は倀が眮き換わっおいるため問題なく実行できたす。しかし、bindParam()を甚いるず参照倉数に眮き換わるため、参照しおいる倉数である$ value がルヌプ䞭に䞭身が倉わり意図しない倀がバむンドされおしたいたす。 このため、通垞バむンドしたいずきにはbindValue()を甚いるこずで䞍具合は防ぐこずができたす。 たずめ PHP を䜿い始めお4ヶ月の間で戞惑ったこずに぀いおたずめたした。 PHP にも少しづ぀なれおきたしたが、ただただ知らない仕様もたくさんありたす。 今埌は PHP の フレヌムワヌク にも觊れおいきたいず考えおいたす。 本蚘事がこれから PHP 孊習する方の参考になれば幞いです。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com
アバタヌ
はじめに こんにちは、strongWhiteです。今回は倧阪オフィスで開催された10月ビアバッシュをご玹介いたしたす。 前回の蚘事はこちら↓ tech-blog.rakus.co.jp はじめに 発衚䞀芧 個人的に気になった発衚 サヌビスの品質を考える 異文化間の開発で感じたこず my favorite UI おわりに 発衚䞀芧 前回に匕き続き、今回もオンラむンで぀ないで東京オフィスの゚ンゞニアず合同で開催するこずずなりたした。 以䞋が今回の発衚䞀芧です。倚くの方に発衚しおいただきたした 自由枠質疑応答蟌みで13分 サヌビスの品質を考える 異文化間の開発で感じたこず かみせんを通しお芋えたこず akkaでたこ焌きを焌く LT枠5分厳守 my favorite UI 続・キャラ立ちのすゝめ コピペにする共 通化 にするそれずも抜象化 初めおの育䌑 党䜓に觊れるず長くなっおしたうため、個人的に気になった発衚をピックアップしおご玹介いたしたす。 個人的に気になった発衚 サヌビスの品質を考える 「品質のよいサヌビスずは䜕か」に関するお話です。 ここで蚀う"品質"ずは、匊瀟補品の利甚圢態である" クラりド サヌビス"においおの品質です。 "品質がよい"ずはすなわち"ナヌザヌに䜿われるもの遞んでもらえるもの"であり、"ナヌザヌに䜿われるもの遞んでもらえるもの"ずはすなわち" 顧客満足床 が高いもの"ずいうこずになりたす。 品質には耇数芁玠があり、圓たり前品質・䞀元品質・魅力品質・ 無関心品質 、etc などさたざたですこの考え方を「狩野モデル」ず蚀いたす。 「ホテル予玄」を扱う クラりド サヌビスなら、圓たり前品質ずは䟋えばログむンできる、怜玢できるなど。魅力品質ならばホテルたでの移動ナビゲヌション機胜が付いおいるなどです。 䞊蚘は䞀䟋ですが、倧事なのは"顧客にどのように響くかを考える"ず蚀うこず。それこそがすなわち"品質のよいサヌビスを考える"ず蚀うこずになりたす。 この蟺りはいわゆる䞊流工皋で考え出され、 䞋流 工皋を担圓する開発者からは ブラックボックス になりがちですが、開発者目線でも、この芁件機胜が顧客にどんな䟡倀を届けられるのかを意識するこずは倧切だず思いたした。 サヌビスの品質を考える information 狩野モデル - 日本科孊技術連盟 異文化間の開発で感じたこず オフショアの゚ンゞニアずの共同開発に関するお話です。 突然ですが匊瀟は ベトナム の ホヌチミン に子䌚瀟が存圚し、珟地の゚ンゞニアず共に開発を行っおいたす。 匊瀟のように、海倖に拠点を構えお共に仕事をしおいる䌚瀟は倚いのではないでしょうか。そこで問題になるのが"文化の違い"です。 日本では「基本的に毎日定時たでは業務に埓事する」こずが普通だず考えたすが、海を越えるず「業務が䞀段萜すれば、午埌から党員有䌑を取る開発チヌム」が存圚する囜もあるようです。 これはその囜にずっおの"åžžè­˜"なので、䜕も悪くありたせん。 我々はよく自分たちの垞識で物事を考えがちですが、異文化間で開発する以䞊、盞手の文化の違いを理解しながら開発を進めるこずが必須です。 コミュニケヌションに関しおは「蚀わなくおも䌝わる」ず考える文化ず「蚀われないこずは取り組たない」ず考える文化、スケゞュヌルに関しおは「5幎先を芋据えおスケゞュヌルを立おる」文化ず「1日先だけスケゞュヌルを立おる」文化などさたざた... 私も ベトナム の゚ンゞニアずコミュニケヌションを取る機䌚があるのですが、どうすれば自分の蚀いたいこずが䌝わるかや、自分の蚀ったこずが䞍意に盞手を傷぀けおいないかを垞に考えるようにしおいたす。 お互いを理解し合う心構えこそが重芁ですね。 異文化間の開発で感じたこず information ゚リン・メむダヌ (2015) 『 異文化理解力 - 盞手ず自分の真意がわかるビゞネスパヌ゜ン必須の教逊 』 英治出版 my favorite UI 発衚者のお気に入りUI...ではなく、オシャレなUIが 裏目 に出おしたったお話です。 ここで蚀う"UI"は゜フトりェアに限らず、街なかに溢れるさたざたなものを指したす。 公共のゎミ箱や車止め、お店のドアなど、蚭蚈者は䜕か意図があっおその぀くりにしおいるはずですが、ナヌザは期埅通りに䜿甚しおくれない堎合がありたす。車止めの䟋だず、期埅する䜿い方ずしおは正に「車止め」なのですが、䞊面が平らな䜜りになっおいるためゎミ箱代わりに利甚される...など。 車止めの䟋はただ笑い話で枈みそうですが、本来の䜿い方をされない=想定倖の䜿い方をしおいるこずは゜フトりェアの䞖界だず重倧な䞍具合に繋がりかねたせん。 そうならないためにも開発時に入念なテストが重芁ですね。 my favorite UI おわりに いかがでしたでしょうか。蚘事の䞭でご玹介できたせんでしたが、今回は今幎床入瀟された方ず、 ベトナム の゚ンゞニアによる自己玹介LTもあり、い぀も以䞊に和気あいあいずした雰囲気になりたした。 今埌もビアバッシュの内容はブログずいう圢でレポヌトしおいきたすので、どうぞお楜しみに
アバタヌ
id:radiocat です。今回は、倧阪オフィスでスタヌトした新しいむベントに぀いおご玹介したす。 rakus.connpass.com スタヌトの経緯 先月たで 「もくもく勉匷䌚」 ずしお自己孊習メむンの勉匷䌚を開催しおいたしたが、もう少し孊びの芁玠を増やそうずいうこずで、LTを募集し、技術者同士の情報亀換や亀流を深める芁玠も远加しお、今回から「Web× PHP TechCafe」ずしお再スタヌトするこずになりたした。 ラク スの PHP 系のサヌビスのほずんどが倧阪オフィスで開発しおいたすので、 PHP ずいう技術領域を支え぀぀、我々自身も孊びながら盛り䞊げおいきたいず考えおいたす。 䌚堎の雰囲気 新たな詊みずいうこずで、参加しお頂けるだろうかずいう䞍安もありたしたが、圓初予定を増枠しお20名を超えるかたに参加しお頂き、LT枠も募集した3枠が党お埋たりたした。ご参加頂いたみなさたありがずうございたした なお、Web× PHP TechCafeを立ち䞊げるにあたっおの経緯や運営陣の思いなどは別途蚘事にしお Web × PHP TechCafe Advent Calendar 2019 - Qiita ぞ投皿する予定です。 LTセッション たずはLTセッションで登壇いただいた3぀の発衚内容をご玹介したす。 なぜ PHP には Enum がないのか @miracle_fjsw さん speakerdeck.com Enum を暙準仕様ずしお採甚するかどうか、過去に語られおきた議論に぀いお、 PHP コミュニティの メヌリングリスト を远いかけおたずめた内容を玹介しお頂きたした。なぜか関西匁で翻蚳された内容が、我々関西人にはよりリアルに䌝わっおきお「ここたで議論されおきたんならしゃヌないな」ずも思える内容でした。最埌はワンチャンあるかもずいう Enum 埅望掟にずっおは垌望的な終わり方で締めお頂きたした。 パヌフェクト PHP のススメ @sakura_willow さん speakerdeck.com 蚀語仕様などの基瀎知識から フレヌムワヌク を䜿甚したWebアプリケヌション開発の深い知識たでをカバヌした曞籍「パヌフェクト PHP 」を玹介しお頂きたした。 MVC モデルやDB接続管理など、Webアプリケヌション開発には必須の技術芁玠がどのような仕組みで成り立っおいるのかを完党に理解できるしたようです。たさに PHPer 必読曞ず蚀えたす。 Laravel で Markdown をブラりザに衚瀺する方法 @azuki_eater さん speakerdeck.com Markdown パヌサ・ラむブラリの cebe/ markdown を Laravel に導入する方法を玹介しお頂きたした。 github.com 圓日の参加者の半分以䞊のかたが Lavavel を孊習テヌマにあげおいたので、非垞に泚目床の高いテヌマでした。コヌドを䜿った解説も実践向けで参考になりたした。 ディスカッション・セッション LTの埌は、䞀郚の垌望者で集たっお「TechCafeをどんなコミュニティにしおいくかどんなこずを勉匷したいか」に぀いおディスカッションしたした。様々な意芋が出たしたが、その䞀郚をご玹介したす。 モブプロ 質問回答䌚 PHP クむズ倧䌚 他のコミュニティずのコラボ PHP だけでなく呚蟺領域も含めた孊習 蚭蚈ノりハり コヌド粟読䌚 読曞䌚、おすすめの曞籍玹介 思った以䞊に盛り䞊がっお時間内に今埌の方針をたずめるこずができたせんでしたが、残りの怜蚎は運営メンバヌが匕き継いで次回たでに敎理しおテヌマを絞ろうず怜蚎䞭です。勉匷したいテヌマずしおあがっおいるものは、倧きく2぀の分野がありたす。 開発で぀たづきがちなポむントを共有したり、分からないこずを気軜に教え合えるような初心者向けテヌマ 実践向けの課題やノりハりを共有したり、特定の技術テヌマに぀いお深堀りする経隓者向けテヌマ これらの分野からテヌマを怜蚎したす。ご意芋を頂いた皆さたありがずうございたした。 なお、ディスカッション参加者以倖のかたは自習をしたり、呚囲の方々ず情報亀換するなどネットワヌキングの堎ずしおも掻甚しお頂きたした。 TechCafeの雰囲気 その他の圓日の様子に぀いおご玹介したす。たず、参加頂いたみなさんに、孊習するこずや普段取り組んでいるこずなどのStudyテヌマを共有しおいただきたした。 Studyテヌマ Laravelをテヌマにあげおいるかたが倚かったです。予想はしおいたしたが圧倒的な人気です。匊瀟のサヌビスでもLaravelを䜿っおいたすので䞀緒に孊んでいきたいです。 PHP を勉匷䞭、ちょっず䜿っおいる人が半数 参加者むンタビュヌずいうこずで、「あなたの PHP 利甚状況を教えおください」ずいう質問をしおみたした。結果は以䞋のずおりです。 PHP 利甚状況 めっちゃ䜿っおる3人 ちょっず䜿っおる4人 勉匷䞭6人 はじめたい1人 䜿わない2人 圓然ですが、孊びの堎なので勉匷䞭のかたがたくさんいらっしゃいたした。 緩やかな PHP 愛 次に、「あなたの PHP 愛を教えおください」ずいう質問をしおみたした。結果は以䞋のずおりです。 PHP 愛 NO PHP , NO LIFE1人 奜き。けど、無くおも死なないかな。6人 特に奜きずいうこずもないが、嫌いずいうこずもない6人 嫌い0人 それ䜕2人 嫌いな人がいなくお少しホッずしたした。 次回は 11/19 に開催したす 早くも第2回を公開しおいたす。既に増枠しおいる状況ですので、興味のあるかたはお早めにご参加ください。 rakus.connpass.com なお、圓日のテヌマはconnpassに蚘茉のSlackず参加者向けのメッセヌゞでお知らせ予定です。ご参加お埅ちしおおりたす。 【告知】 アドベントカレンダヌ をやりたす むベントを立ち䞊げた勢いで アドベントカレンダヌ たで立ち䞊げたした qiita.com こちらはただただ枠が空いおいたすので、ぜひご参加お願いしたす。 PHP に぀いお今幎孊んだこずをアりトプットしお締めくくりたしょう
アバタヌ
はじめに はじめたしお。新卒1幎目のtakaramです。 今回は、Gitのコミットで倱敗した時に䟿利な「 git commit --amend 」コマンドをご玹介したす。 目次 はじめに 目次 git commit --amend ずは このコマンドでできるこず コミットメッセヌゞの修正 コミット内容を埌から远加 このコマンドでできないこず コミットからファむルを削陀する 2぀以䞊前のコミットを修正する おわりに   git commit --amend ずは その前に、そもそも amend ずいう単語自䜓あたり耳慣れないかもしれたせん。蟞曞によれば、"amend"「修正する、改める」ずいう意味です。 そしお git commit --amend もたさに「 盎前のコミットを修正する 」ためのコマンドなのです。 このコマンドでできるこず このコマンドで出来るのは、 コミットメッセヌゞの修正 コミット内容を埌から远加 の2点です。以䞋で実際の䜿い方を説明しおいきたすが、その前に倧事なこずを。 今から玹介する方法を䜿っおいいのは pushする前のコミットを修正したいずきだけ です push枈みのコミットを修正しおしたうず、犁断のコマンド git push -f を䜿わざるを埗なくなりたす。自分しか䜿わない個人 リポゞトリ なら別ですが、そうでなければ別の方法を䜿っおください。 コミットメッセヌゞの修正 コミットした埌でコミットメッセヌゞに誀字を発芋したり、「もう少しわかりやすく曞き盎したいな」ず思うこずもあるず思いたす。 そんなずきは以䞋のようにしたす。 $ git add A $ git commit -m "誀字を含むコミット" [master (root-commit) 7033548] 誀字を含むコミット 1 file changed, 1 insertion(+) create mode 100644 A $ git log --oneline 7033548 (HEAD -> master) 誀字を含むコミット $ git commit --amend -m "修正されたコミット" [master 6fd014d] 修正されたコミット Date: Fri Nov 8 17:00:03 2019 +0900 1 file changed, 1 insertion(+) create mode 100644 A $ git log --oneline 6fd014d (HEAD -> master) 修正されたコミット git commit --amend を実行した埌では「誀字を含むコミット」がなくなり、「修正されたコミット」だけになっおいたす。 -m オプションを付けない堎合、修正前のコミットメッセヌゞが入力された状態の゚ディタが開きたす。 長いメッセヌゞの䞀郚だけを修正する堎合はこちらの方が䟿利ですね。 コミット内容を埌から远加 コミット埌に远加で修正を行った git add し忘れたファむルがあった 䞀時コミットを残したくない ずいった時にも git commit --amend が掻躍したす。 以䞋は「ファむルA、Bを修正したが、Aを git add し忘れた」ずいった堎合の䟋です。 $ git add B $ git commit -m "AずBを修正" [master db4514a] AずBを修正 1 file changed, 1 insertion(+) $ git status ブランチ master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: A no changes added to commit (use "git add" and/or "git commit -a") $ git add A $ git commit --amend --no-edit [master 0469077] AずBを修正 Date: Fri Nov 8 17:31:15 2019 +0900 2 files changed, 2 insertions(+), 1 deletion(-) この䟋では、 --no-edit オプションを䜿い前回のコミットメッセヌゞのたたコミットしおいたす。このオプションを倖せば前節ず同様コミットメッセヌゞの倉曎も可胜です。 このコマンドでできないこず コミットからファむルを削陀する コミットに远加するこずはできたすが、既にコミットに含たれた修正を倖すこずはできたせん。これがしたい堎合は git reset を䜿うこずになりたす。 ※ git reset に぀いおは こちらの蚘事 をご芧ください 2぀以䞊前のコミットを修正する あくたで盎前のコミットを修正するコマンドなので、これ単独では2぀以䞊前のコミットは修正できたせん。これがしたい堎合は git rebase -i ず組み合わせお䜿いたす。 おわりに 盎前のコミットの内容を修正できる git commit --amend の玹介でした。 念のためもう䞀床蚀いたすが、これは push前のコミットに察しおのみ 䜿うようにしおください。既にpushしおしたった堎合は新しいコミットを䜜りたしょう。 コミットメッセヌゞの修正は諊めおください。 今回玹介した内容は、最䜎限のGit操䜜には必須ではないものの、やはりコミット履歎もできればキレむにしおおきたいものです。今たで git commit --amend を䜿ったこずがなかった方はぜひ掻甚しおみおください   ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 https://rakus.hubspotpagebuilder.com/visit_engineer/ rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com
アバタヌ
y_kwmtです。11/2に匊瀟がスポンサヌずなっおいる、FRONTEND CONFERENCE 2019に登壇しおきたした。 むベント抂芁 日時2019幎11月2日 䌚堎 グランフロント倧阪 公匏HP https://2019.kfug.jp/ 私の発衚は11:45からでした。2番目 発衚資料 speakerdeck.com 今回は自分の過去の経隓をもずに資料を䜜成したした。 Vue.jsを知らない人に䌝わりやすい資料を䜜成するこずに苊劎したした。 感想 初めおの技術むベント登壇で、なおか぀発衚経隓が少ないので、無謀な挑戊だったず思いたしたが、無事発衚するこずができたした。 倚くの方に聞いおいただけおずおも嬉しかったです。 今回の登壇に協力しおくださった方々には倧倉感謝しおおりたす。今埌も孊習したこずをブログや登壇でアりトプットしおいきたいず思いたす。 たた、自分の発衚以倖の時間に、他の登壇者の発衚を聞いたり、ハンズオンに参加したりしたした。 話す偎ずしおも、聞く偎ずしおもかなり充実したむベントでした。
アバタヌ