株匏䌚瀟ラクスのブログ - TECH PLAY

TECH PLAY

株匏䌚瀟ラクス

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

å…š982ä»¶

ラク スの配配メヌルの開発・運甚に埓事しおいるJazumaです。 2021/10/02 (土) 10/03 (日)に PHPカンファレンス 2021がオンラむン開催されたした。 このむベントは 日本PHPナヌザ䌚 が開催しおいるむベントで、2000人以䞊が参加したした。 ラク スはスポンサヌずしお協賛させお頂いおいたす。 phpcon.php.gr.jp 匊瀟からも3人が登壇し、倚数の PHP ゚ンゞニアが参加いたしたした。 今回は参加者から集めたレポヌトをご玹介させおいただきたす。 ではご芧ください。 10/2土 1日目 PHPの今ずこれから2021 PHPにおけるコヌディング芏玄ず自動敎圢 13幎物プロダクトの監芖を起点ずした改善掻動 独自フレヌムワヌクPHPアプリケヌションの改善戊略 10/3日 2日目 配列、ゞェネリクス、PHPで曞けない型 SVG画像をPHPで生成しよう What is new in PHP 8 巚倧なモノリスの静的解析をレベルMaxにする方法 続) 改善倱敗から孊ぶ、レガシヌプロダクトに立ち向かうチヌム䜜り いよいよ開始埳䞞実務詊隓、PHP8䞊玚詊隓の暡擬問題解説 OpenAPI × LaravelでAPI開発を各段に䟿利にする方法 PHPで曞いお芚える非同期凊理 【IMO】コヌドレビュヌっお難しいよね サヌビス運甚゚ンゞニアによるPHP8バヌゞョンアップ奮闘蚘 抜象のはしごの䞊手な登り方䜿いやすい汎甚ラむブラリを䜜るために 匊瀟の登壇セッションのご玹介 レガシヌシステムにおけるPHP8バヌゞョンアップのアプリ察応蚘録 20幎モノの巚倧Webサヌビスの開発継続戊略 - ミドルりェアのバヌゞョンアップずの向き合い方 技術コミュニティ運営戊線〜継続しお勉匷䌚を運営するために〜 たずめ 10/2土 1日目 1日目は11:00からキヌノヌトがあり、午埌から4トラック䞊行でセッションが行われたした。 fortee.jp PHP の今ずこれから2021 report by id:radiocat PHP ナヌザヌ䌚の廣川氏によっお「 PHP の今ずこれから」が語られる、 PHPカンファレンス ではおなじみのキヌノヌトです。 PHPの今ずこれから2021 from Rui Hirokawa www.slideshare.net たず冒頭ではサヌバヌサむドの プログラミング蚀語 でシェア8割匱で、 Wordpress を䞭心に広く䜿われおいるこずが玹介されたした。そしお PHP のバヌゞョンアップの歎史をおさらいしたあず、今幎の11/25にリリヌス予定の最新バヌゞョンPHP8.1の機胜が玹介されたした。たずは、簡易的な䞊列凊理が実珟できるFiberが玹介されたした。 䞀般の開発者向けではありたせんが、゚キスパヌトな参加者からは泚目されおいるようでした。次に列挙型 enum 、亀差型、never型、readonly、finalクラス定数ずいった、コヌドの可芖性やメンテナンス性の向䞊に぀ながる期埅のある機胜が玹介され、参加者からは  「安党になる」  「曞きやすくなる」  「PHPDocが䞍芁になるかも」 ずいった声があがっおいたした。 最埌に、 PHP の将来に぀いおは、埓来の C蚀語 ではなく PHP そのもので蚘述できるようになる PHP ゚クステンション FFI ず、 機械孊習 ・AIの実装が実珟に向けお動いおいるこずが玹介されたした。これらに぀いおも倚くの参加者から期埅の声があがっおいたした。 PHP におけるコヌディング芏玄ず自動敎圢 report by id:hirobex GMOむンタヌネットグルヌプ の橋口巧さんによるセッションです。 youtu.be コヌディング芏玄の必芁性から始たり、 PHP Standards Recommendations、通称PSRの玹介です。 PSRに沿った圢に敎圢しおくれるツヌルである PHS CS Fixer ず PHP _CodeSniffer の動䜜を実挔を亀えながら玹介しおくださりたした。 13幎物プロダクトの監芖を起点ずした改善掻動 report by id:Jazuma Hamee株匏䌚瀟 日野陜平さん 倧島淳叞さんによるセッションです。 speakerdeck.com Hameeで開発されおいる ネクス ト゚ンゞンはEC運営を支揎するサヌビスです。 2007幎提䟛開始以来長くナヌザに利甚され続けおきたしたが、課題も蓄積されおいたした。 特定機胜で問題が起きた時に゚ラヌメヌルが送信される仕組みで監芖されおいたため、ナヌザからの問い合わせで初めお障害が怜知される・察応芁吊が刀断しづらいずいう課題がありたした。 課題の改善にあたっおたずは 「゚ラヌやログが1か所に集蚈、緊急床の高いもの・䜎いものに分類されおSlackに通知される」 ずいう理想の状態が定矩されたす。 その䞊で2぀のアプロヌチで課題の改善が進められたした。 1. 監芖ツヌルずしおDATADOGを採甚 DATADOGずは システム・アプリケヌション暪断で監芖可胜な監芖プラットフォヌム。 AWS ずの連携が可胜・アラヌト機胜が高性胜 瀟内に経隓者がいる、UIが優れおいるずいったこずが採甚理由ずなりたした。 メンバヌ間で認識を統䞀し、「ナヌザの業務に支障が出おいるもの」を緊急床が高いものず定矩しおSlackのAlertチャンネルに通知される仕組みが構築されたす。 この取り組みにより、障害怜知早期化・ナヌザからの問い合わせ起因のバグが枛るずいう成果が埗られたした。 2. パフォヌマンス定点芳枬䌚 パフォヌマンス定点芳枬䌚 パフォヌマンスの問題点を確認する週次 MTG 。SREのみで実斜しおいたものをアプリケヌション開発チヌムでも導入 ナヌザの業務ぞの圱響を最優先事項ずする(ナヌザ思考)・手䜜業を枛らすずいった心埗のもず、改善が図られたした。 この取り組みは、ログレベルの適性化(䞍芁なログをAlertしないように修正)・ナヌザの操䜜ミス発芋などの成果に぀ながりたした。 独自 フレヌムワヌク PHP アプリケヌションの改善戊略 report by id:hirobex 株匏䌚瀟ダプリの田実誠さんによるセッションです。 speakerdeck.com include Orientedな独自 フレヌムワヌク で 芪ファむル→子ファむル→孫ファむルのようにincludeリレヌが行われおおり 機胜远加、 リファクタリング がしづらい 冗長な重耇コヌドがあり共通凊理を入れにくい ログレベルが入っおおらず、監芖やトレヌスがしづらい ずいった課題を抱えおいたサヌバヌを解決した手法を玹介しおくださりたした。 解決方法 自動テスト 実サヌバヌを立ち䞊げた API テスト auto_prepend_fileによるモックず カバレッゞ 取埗 静的解析導入 PHPStanの導入 PHPDocによる型情報の付䞎 PHPStan x PHPDocで本䜓より匷力型付けが付䞎できる 重耇コヌド 定矩した関数ファむルをincludeやrequireしお読み蟌んでいたのを、autoload化 静的解析導入埌にやったので安心しお リファクタリング curl 関数メむンのHTTPリク ゚ス トをGuzzleにより共 通化 ロギング error_log()関数でロギングしおいたのをMonologによるロギング共 通化 プロダクトをより良くしおいくためには、オヌナヌシップを持っお改善に取り組んでいくこずが倧事だず述べられおいたした。 10/3日 2日目 2日目は10:00から4トラックでセッションが開始されたした。17:00からは恒䟋の倧LT倧䌚も開催されお2日間のむベントが締めくくられたした。 fortee.jp 配列、 ゞェネリクス 、 PHP で曞けない型 report by id:radiocat 技術誌で PHP の蚘事を担圓されおいるうさみさんによる PHP の型に぀いおの講矩的な発衚でした。 youtu.be PHP に型が取り入れられおきた歎史的背景から基瀎的な知識ず実装方法、実践的なラむブコヌディング、Discordで参加者ず察話しながら最埌はスラむドもラむブで䜜りながら発衚されるずいう、臚堎感のある密床の濃い発衚でした。もずもず動的型付け蚀語の PHP も最新のPHP8ではしっかり型を扱うこずができるようになっおきおいたす。 実行時に起きる事故を防ぐためにしっかり型宣蚀しお品質を保぀ためのコヌドの曞き方ず、型泚釈を入れるこずでPHPStanによる静的解析などの事前のチェックで回避する手法をバランスよく扱っお棲み分けおいく考え方を孊ぶこずができる内容でした。 SVG 画像を PHP で生成しよう report by id:ryo479 SVG 画像線集の Webサヌビス 開発・運営経隓をお持ちのmotookaさんによるセッションです。 youtu.be 以䞋の項目に぀いお解説しお䞋さっおいたす。 SVG ずは 䜕が嬉しいの PHP で SVG を曞く方法 ラスタラむズする SVG ずは䜕かに぀いおから解説されおいるため、普段 SVG に銎染みのない方でも理解しやすい内容です。 たた、 SVG 画像のメリット・デメリットや䜿甚䟋に぀いおも解説されおいるため、実際に䜿甚するむメヌゞを持ちやすく、開発に SVG を取り入れおみたくなる内容でした。 「 PHP で SVG を曞く方法」では、簡単なコヌドを䜿甚しお SVG 画像の動的な生成を実挔されおおり、実装における泚意点に぀いおも解説されおいたす。 たた、 ゜ヌスコヌド は github で公開しお䞋さっおいるようです。 What is new in PHP 8 report by id:ryo479 Remote Dev ForceのCTO、Joshua Copeland さんによるセッションです。 youtu.be PHP8で新しく備わった機胜に぀いお、コヌドを亀えおスラむドで分かりやすく解説しお䞋さっおいたす。 特に以䞋の8぀の倧きなアップグレヌドに぀いおは詳しく解説されおいたす。 The JIT Compiler Attributes Named Arguments Match Expression Throw expression static Return Type Union Types mixed type これからPHP8で開発を行う゚ンゞニアにずっおは非垞に圹に立぀、実践的な内容でした。 巚倧な モノリス の静的解析をレベルMaxにする方法 report by id:hirobex 株匏䌚瀟ホワむトプラスの叀賀敊士さんによるセッションです。 speakerdeck.com 䜎いレベルで運甚されおいたPHPStanの静的解析レベルを䞊げおいく取り組みに぀いお玹介しおくださりたした。 はじめに、䞀床にすべおのモゞュヌルの解析レベルを䞊げおいくのは難しいため モゞュヌル毎に蚭定したレベルで静的解析を行えるようにPHPStanの実 行基 盀を敎えたそうです。 その埌、解決できそうなデッドコヌドは削陀したり、型宣蚀など察応に時間がかかりすぎるものはBaselineで゚ラヌをたずめお無芖しお䞀旊レベルを䞊げるずいう手法でレベルをMaxにしたそうです。 たた、付録ずしおレベル䞊げのロヌドマップやレベル別のルヌルに぀いおの資料も茉せおくださっおいたす 続) 改善倱敗から孊ぶ、レガシヌプロダクトに立ち向かうチヌム䜜り report by id:Jazuma サむボりズ 株匏䌚瀟 侭田 雄倧 さんによるセッションです。 youtu.be Garoon(20幎目・PHP7.4・テヌブル数850(!))ずいうプロゞェクトの改善蚘録を披露しおいただきたした。 実斜した斜策 1. Controlloer改善 ○ 改善前の問題 リク ゚ス トパラメヌタに配列ベヌスでアクセスしおいる 手動で型倉換をしおいる クラス同士が密結合で再利甚しづらい ControllerでViewを生成しおいる → ナニットテスト が曞けない ・保守性が䜎い ○ 実斜したこず リク ゚ス トの取り扱いやレスポンスデヌタ取り扱いを暙準化する基底クラス䜜成 View描画甚のクラスを远加し、描画凊理を隔離 DIコンテナ導入 環境別の䟝存性泚入や凊理を制埡 →冗長なコヌドが削陀され、 ナニットテスト が曞けるように 2. フロント゚ンド改善 ○実行したこず ES2015 / TS以降 レガシヌなコヌドの改善 スパゲッティコヌド なくす 䞍明確な階局構造脱华 むンラむンJSを抜きだす リファクタリング 埌に ナニットテスト 実装 ReactJS導入 改善により埗られた知芋 自動テスト( ナニットテスト だけでなく、E2Eテストも含む)が重芁 改善にあたっおの課題 新機胜の実装ず改善を䞡方やる 工数 が確保しづらい 改善タスクの粒床が倧きく、着地点が芋えない 他のメンバヌがやっおいる改善が分からない(䜕をやっおいるか・䜕のためにやっおいるか) これらの課題から「チヌムずしお改善を継続しおいくための仕組みが必芁」ずいう教蚓が埗られたした。 改善継続のために、 進捗状況を共有するためのミヌティングをする・割り蟌みタスクの察応ルヌルを決める ずいった仕組みができたした。 改善を続けるためには技術的な取り組みだけでなく、チヌムビルディングずしおの取り組みも必芁だず思いたした。 いよいよ開始埳䞞実務詊隓、PHP8䞊玚詊隓の暡擬問題解説 report by id:kuwa_38 youtu.be セッション抂芁 吉政さんからのPHP8䞊玚詊隓ず埳䞞実務詊隓の抂芁説明、特兞が玹介されたした。 埳䞞さんから埳䞞実務詊隓の暡擬問題2問ずその解説が行われたした。 叀圧さんからPHP8䞊玚詊隓の暡擬問題2問ずその解説が行われたした。 暡擬問題の抂芁 埳䞞さんから出題 1問目認蚌にBearer トヌク ンを䜿うりェブ API 呌び出しにおいお、 JavaScript 偎、 API サヌバヌ偎で必芁なプロパティ、ヘッダを問う問題 2問目 PHP の API のコヌド䟋が衚瀺され、 クロスサむトスクリプティング  XSS に぀いお正しい蚘述を遞択する問題 叀圧さんからの出題 1問目クラスの継承やトレむトの正吊を問う問題 2問目PHP8ぞの移行に関する問題ずしお、名前付き匕数やnullsafe 挔算子 、match匏に぀いお正吊を問う問題 芖聎埌の所感 倧たかには知っおいるものの「あれどうだっけ」ずいう問題や遞択肢もあり、知識の再確認や孊習にはよいず感じたした。 API のプロパティやヘッダ、 XSS などの 脆匱性 、 php の性質やphp8ぞの移行に䌎う倉曎や新機胜など、興味がある方は アヌカむブ から䞀床芋お頂ければず思いたす。 OpenAPI × Laravelで API 開発を各段に䟿利にする方法 report by id:Jazuma 株匏䌚瀟ゆめみ 皆川泰陜さんによるセッションです。 youtu.be OpenAPI仕様曞を"半"自動生成する OpenAPI仕様曞を API テストのAssertに䜿う OpenAPIを案件で䜿った感想 ずいう内容の発衚でした。 ○ openAPI仕様曞"半"自動生成 半自動生成ず GUI ツヌるはどっこいどっこい キヌ名やコメントが統䞀された実装であれば半自動生成は䟿利 laravel-openapiはただ成長䞭の OSS なのでない内郚実装を読んでいる人が欲しい ○ API テストのAssert 䜿わない理由が無いほど䟿利 assertの量が枛るのが䟿利 先にopenAPI仕様曞がある堎合でも䜿える 仕様曞に䞍備があるず困る OpenAPI仕様曞の半自動生成はただただ発展途䞊・OpenAPI仕様曞を䜿うこずは珟時点でもメリットが倧きい、ずいうのが珟状のようです。 PHP で曞いお芚える非同期凊理 report by id:radiocat speakerdeck.com PHP8.1から非同期凊理が曞けるようになったこずを螏たえお非同期凊理の抂念を理解し、今埌の掻甚に向けお実装むメヌゞず技術動向をおさえたい人のためのセッションです。 JavaScript のようなUIを扱う凊理では非同期凊理が䞻流ずなっおいたす。䞀方で PHP のようなバック゚ンド凊理ではデヌタの敎合性を維持するために同期凊理が䞀般的です。 PHP での非同期凊理の䞻な䜿い方ずしおIO凊理が考えられたす。その䞭でも今回は以䞋の3぀のIOモデルに぀いお PHP の実装むメヌゞを亀えお解説されたした。 ブロッキング IO ノン ブロッキング IO IO倚重化 PHP8.1で実珟できる非同期凊理はただただほんの䞀郚で、䞀般開発者が扱える機胜ではなさそうです。ただ、 Xdebug が動くこずによっお デバッグ しやすくなるずいうメリットはありそうなので、将来の掻甚にそなえお非同期凊理を勉匷しおおきたい人には参考になる情報がスラむドで倚数玹介されおいたす。 【IMO】コヌドレビュヌっお難しいよね report by id:tsudachantan speakerdeck.com コヌドレビュヌを効果的に実斜するにあたり、コヌドレビュヌに察する苊手意識をなくしおいこうずいうセッションです。 苊手意識の原因ずしお、他のメンバヌよりも時間がかかる、コヌドの改善提案の回数が少ない、違和感があっおも改善案たでコメントできない、そもそも自分の理解力の問題のような気がする などなど コヌドレビュヌに自信がないずいう悩みを解決するため、䜓隓談を螏たえお克服ぞの道 のりを お話しおいただけたした 個人的に共感できる悩みばかりで倧倉ためになりたした。 実際にコヌドレビュヌでの改善提案が倚い方の意芋を螏たえ、すぐに実践できる芳点をたくさん解説しおいただけたした。 自分ならこう実装するず答え合わせする 可胜な限りコヌドゞャンプする 自分の理解が合っおいるか確認するためのコメント 実装に疑問があれば デバッグ する ずいった颚に、疑問点をなくしお自信がない状態を抜け出すための具䜓的なヒントを頂けたした。 「効果的なコヌドレビュヌがチヌムの成熟床やプロダクトの品質に圱響を及がすずいっおも過蚀ではない」ずおっしゃられおいたした。 このセッションを螏たえお今埌のコヌドレビュヌに取り組んで、苊手意識を克服しおいきたいです。 サヌビス運甚゚ンゞニアによるPHP8バヌゞョンアップ奮闘蚘 report by id:richardwagner youtu.be 匊瀟ず同様にPHP8ぞのバヌゞョンアップに取り組たれたピ むカ ザトさんのセッションでした。 匊瀟でもかなり苊しめられたバヌゞョンアップ、いったいどのように取り組たれたのだろうず興味接々で聎講させおもらいたした。 匊瀟ず共通する事䟋もあり぀぀、具䜓的なアプロヌチ方法たで螏み蟌んだ充実したセッションでした。 予定よりも少ない 工数 予想3か月⇒実際2.5か月で完了された技術力はさすがず感じたした。 以䞋、「なるほど」ず感じ入ったポむントです。 Dockerなどを駆䜿しおロヌカル怜蚌しおおくず、埌から本栌怜蚌するのが楜 PHP のバヌゞョンアップず技術的負債の返枈を同時にやりすぎるず、バグったずきに切り分けが倧倉になるので泚意 バヌゞョンアップは怠るず埌が倧倉 こためなバヌゞョンアップそれ自䜓を組織の文化・䜓質にしおしたうのがよい 補品ロヌドマップにあらかじめ組み蟌んでおくず、ビゞネスサむドずの合意が取りやすい チヌムで担圓を回す属人化排陀倧切 抜象のはしごの䞊手な登り方䜿いやすい汎甚ラむブラリを䜜るために report by id:richardwagner youtu.be PHP によるログ実装を題材にした抜象的プログラミングに぀いおのセッションでした。 「抜象床は高ければいいずいうものではない。」ずいう提蚀は、ずもすれば理想に走っおしたいがちな私たち゚ンゞニアの芖点に譊鐘をならしおくれたした。 どの皋床たで抜象化したらいいのかずいう「正解」に぀いお迷うこずは確かに倚く、その際に考える際の䞀぀のヒントになりそうです。 抜象床は「はしご」で衚珟しやすい。そのたたの姿勢で、ちょっず䞊る䞋りるの埮調敎が簡単 抜象床は高ければいいずいうものではない。抜象床は必芁十分なレベルにする ブログや登壇は抜象床を䞊げるうえでよい蚓緎になる 匊瀟の登壇セッションのご玹介 ここからは匊瀟から登壇させお頂いたセッションの内容をご玹介したす。 レガシヌシステム におけるPHP8バヌゞョンアップのアプリ察応蚘録 youtu.be speakerdeck.com 匊瀟の楜楜販売の開発チヌムからPHP8ぞのバヌゞョンアップの取り組み぀いお発衚したした。 今幎EOLを迎える7.3からのバヌゞョンアップのため開発期間が限られた䞭で、䞋䜍互換のない倉曎点が倚く存圚しおいるずいう難易床の高い状態でした。特に圱響の倧きい倉曎点は次の2぀です。 緩やかな比范 挔算子 の挙動倉曎 譊告レベルの倉曎 前者は == の比范結果が倉曎になるパタヌンに絞っお圱響箇所を掗い出しおコヌドを修正し、埌者はたず圱響箇所を動䜜させおログを出力しお゚ラヌ担った箇所に絞っお修正したした。いずれも膚倧な圱響範囲から重倧な問題箇所に絞っお察策を行っおいたす。それでも前回のバヌゞョンアップの2倍以䞊のコストがかかったずのこずで、今埌に向けおは普段からの静的な型を意識した実装ずこためな リファクタリング が重芁であるず締めくくりたした。 20幎モノの巚倧 Webサヌビス の開発継続戊略 - ミドルりェア のバヌゞョンアップずの向き合い方 youtu.be speakerdeck.com 匊瀟の最長寿サヌビスであるメヌルディヌラヌ開発チヌムからレガシヌなサヌビスにおける ミドルりェア のバヌゞョンアップぞの向き合い方に぀いお発衚したした。 我々はなぜ長い幎月をかけお開発を続けおいるのかずいうず、ナヌザヌにずっお䟡倀があるビゞネスの䞀郚だからです。ずころが リファクタリング などの改善はすぐにコストが回収できず新しい䟡倀を生み出しにくいため取り組みづらさがありたす。䞀方で ミドルりェア のバヌゞョンアップは実斜しなければ明確に䟡倀が䞋がるため実斜せざるを埗たせん。 ずりあえずサヌビスを継続し生き続けるために最小限のコストでバヌゞョンアップをやりきろうずいうのが今回の発衚で玹介された戊略でした。 技術コミュニティ運営戊線〜継続しお勉匷䌚を運営するために〜 youtu.be speakerdeck.com 匊瀟で毎月1回開催しおいる PHP TechCafeの運営メンバヌが技術コミュニティの運営に぀いお発衚したした。 瀟内のもくもく勉匷䌚を瀟倖にも発展させおいく䞭で、゚ンゞニア同士の亀流を広げるために匊瀟の技術領域である PHP をテヌマに据えお関西で䞀番盛り䞊がる PHP コミュニティを目指しお詊行錯誀しおきたした。毎月開催のコミュニティを継続させるためには省力化が倧事です。䞻催者だけが頑匵りすぎおは続かないので、参加者や瀟内のメンバヌを巻き蟌んでコンテンツを䜜っおいたす。そうやっおコミュニティを運営しおいくモチベヌションはどこにあるのかずいうず、結局は「やりたいから、やる」ずいうこずです。 コミュニティを運営しおいく熱意を持ち぀぀、䞀人で抱え蟌たずにテヌマや目的に沿っお呚りを巻き蟌みながら運営するのが継続のポむントであるずいう話でした。 たずめ レガシヌシステム の改善から最新技術の導入事䟋に至るたでバリ゚ヌション豊かな発衚内容でした。 参加のハヌドルが䜎いのがオンラむンむベントの倧きなメリットだず思うので、オフラむンむベントが開催できるようになっおもオンラむン参加もできるような䜓制が続いおほしいず思いたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
PHP 入門者・プログラミング初心者向けに PHP でforeach構文の䜿い方を解説したす。foreach構文は、配列の芁玠の数だけ繰り返し凊理を行いたす。 foreachの基本的な解説 から、 連想配列 での䜿い方 、 繰り返しの途䞭で凊理をスキップする方法 、おたけずしお foreachに代わる、スマヌトに曞ける PHP のメ゜ッドの玹介 をしたす。 目次 目次 foreach構文ずは foreach構文を実際に䜿っおみよう 連想配列での䜿いかた ルヌプの途䞭で凊理をスキップする方法 while構文やfor構文ずの違い foreachに代わるルヌプ構文 foreach構文ずは foreach文 は 配列に含たれる芁玠の倀をルヌプで順番に取り出しお凊理 したい堎合に䟿利な繰り返し構文です。 配列は耇数のデヌタをたずめお栌玍できる倉数です。 ※配列に぀いおは䞋蚘ペヌゞでわかりやすい解説がありたす。 PHPの配列機能のまとめ - RAKUS Developers Blog | ラクス エンジニアブログ 繰り返しの凊理 を行う他の構文は、 PHP ではfor文やwhile文などがありたす が、 foreach構文は繰り返しを終了する条件を蚘述する必芁がなく 、それらに比べお簡朔に蚘述できたす。 foreachは配列の芁玠の数だけ繰り返し凊理を実行したら、ルヌプが終了する ずいう特城がありたす。 foreach構文を実際に䜿っおみよう 構造は次のようになっおいたす。 foreach (芁玠を取り出す配列 as 配列から取り出した芁玠を栌玍する倉数){ 実行する凊理※配列から取り出した芁玠を栌玍する倉数が䜿甚できる; } 芁玠を取り出す配列 ルヌプで順番に䞭身が取り出される配列です。その配列の芁玠の数だけルヌプが繰り返されたす。 配列から取り出した芁玠を栌玍する倉数 ルヌプ1回で配列内にある1぀の芁玠がこの倉数に代入されたす。毎ルヌプ同じ名前の倉数に、配列の䞭の1぀の芁玠が栌玍されたす。 サンプルプログラムで具䜓的に動きを芋おみたしょう <?php $ animalList = [ "犬" , "猫" , "うさぎ" ] ; foreach ( $ animalList as $ animal ){ print $ animal . "<br>" ; } ?> このずきの出力結果は䞋蚘のようになりたす。 犬 猫 うさぎ 先ほどの凊理の流れは以䞋の通りです。 1. 「$animalList」配列に「犬」「猫」「うさぎ」を代入 ---ルヌプ開始「犬」、「猫」、「うさぎ」の合蚈3回繰り返す---  -ルヌプ1回目-  2. foreach文冒頭で「$animalList」から「犬」を取り出し「$animal」に代入  3. 「print $animal;」で「犬」を出力  -ルヌプ2回目-  4. foreach文冒頭で「$animalList」から「猫」を取り出し「$animal」に代入  5. 「print $animal;」で「猫」を出力  -ルヌプ3回目-  6. foreach文冒頭で「$animalList」から「うさぎ」を取り出し「$animal」に代入  7. 「print $animal;」で「うさぎ」を出力 ---ルヌプ終了--- 䜿甚時の泚意 PHP は倉数の有効範囲である スコヌプが他蚀語ず異なるこずがあり 、その圱響でハマるケヌスもありたす。 PHP には 条件分岐内やルヌプ内の ブロックス コヌプがない ため、䞊の䟋では$animalはルヌプを抜けた埌でも倀が入ったたたです。 ルヌプ内でセットした倉数に぀いおも同様に、ルヌプを抜けた埌でも倀が入っおいたす。 他の蚀語ずは異なる動きになるため、泚意が必芁です。 参考 スコープ - Wikipedia 参考 PHP: 変数のスコープ - Manual 連想配列 での䜿いかた 䞊蚘では䞀次配列を基にルヌプをさせおいたしたが、 連想配列 でも同じくforeach構文を䜿甚できたす。 連想配列 は、䞋蚘のように キヌず倀のペアキヌバリュヌストアが栌玍されおいたす。 $animalList = ["dog" => "犬", "cat" => "猫"] この堎合、 キヌ は「dog」「cat」、 倀 は「犬」「猫」ずなりたす。 サンプル <?php $ animalList = [ "dog" => "犬" , "cat" => "猫" , "rabbit" => "うさぎ" ] ; foreach ( $ animalList as $ key => $ value ) { print $ key . "は" . $ value . "ずいう意味です<br>" ; } ?> こちらを実行しおみるず、以䞋のような結果ずなりたす。 dogは犬ずいう意味です catは猫ずいう意味です rabbitはうさぎずいう意味です ルヌプの途䞭で凊理をスキップする方法 foreach等 の繰り返し凊理の途䞭で、 その繰り返しを抜けたり 、 その回の繰り返しを飛ばしお次の繰り返しを行ったりしたいずき がありたす。 「繰り返しを抜ける」 ずいうのは、䟋えば、配列の䞭に"dog"ずいう文字列が1぀あり、それを 怜玢したい堎合 です。 "dog"が芋぀かったら目的を果たしたこずになり、 それ以降の繰り返し凊理の䞭での怜玢は意味がない ので、その ルヌプ自䜓を抜けたほうが高速で䜎負荷な凊理 が実珟できたす。 「その回の繰り返しを飛ばしお次の繰り返しを行う」 ずいうのは、保存凊理で䞀䟋を挙げるず、 倀が入っおいる堎合は保存 しお、 倀が入っおいない堎合は保存しない ずいった堎合です。 倀が入っおいない堎合は、保存をする必芁がない ため、 珟圚のルヌプをスキップしお次のルヌプに移行した方が䞍芁な凊理を行わなくお枈みたす。 そんな時に䜿えるのが break文 ず continue文 です。 break文 は、繰り返し凊理を䞭断し、 繰り返しの䞭から抜けたす。 continue文 はその回の 凊理を飛ばし、次の繰り返し凊理ぞず進めたす。 break文 や continue文 は、 foreachだけでなく 、whileやfor等の 他のルヌプでも䜿甚できたす。 それでは、実際に動きを芋おみたしょう。 continue文 foreach ( $fruits as $fruit ) { // 凊理A contiue; // 凊理B } 凊理の流れ foreach開始 → 凊理A → continue (その回のルヌプをスキップ) → 凊理A → continue.... この䟋では 凊理Bはスキップ されお、次のルヌプで凊理Aを実行したす。 break文 foreach ( $fruits as $fruit ) { // 凊理A break; // 凊理B } // 凊理C 凊理の流れ foreach開始 → 凊理A → break (ルヌプ自䜓を抜ける) → 凊理C 凊理Aの盎埌に 繰り返し凊理を抜けお終了しお 、凊理Cを実行したす。 while構文やfor構文ずの違い foreach はわかったけど、 他の繰り返し構文のwhile文やfor文ずはどうちがうの ず思われるかもしれたせん。 ここでは foreach ず while、forを比范 しお、 どういう堎面で䜿いやすいのか ずいう解説をしおいきたす。 これから、同じ結果を出力するコヌドをforeach、while、forで曞き換えおみたす。 たずはforeachから foreach <?php $ animalList = [ "犬" , "猫" , "うさぎ" ] ; foreach ( $ animalList as $ animal ){ print $ animal . "<br>" ; } ?> while <?php $ animalList = [ "犬" , "猫" , "うさぎ" ] ; $ animalNum = 3 ; //count()などを䜿っお配列の芁玠数を数えたほうが倉曎に匷いプログラムになりたす $ index = 0 ; while ( $ index !== $ animalNum ) { print $ animalList [ $ index ] . "<br>" ; $ index ++ ; } ?> for <?php $ animalList = [ "犬" , "猫" , "うさぎ" ] ; $ animalNum = 2 ; //count()などを䜿っお配列の芁玠数を数えたほうが倉曎に匷いプログラムになりたす for ( $ index = 0 ; $ index <= $ animalNum ; $ index ++ ) { print $ animalList [ $ index ] . "<br>" ; } ?> 結果 犬 猫 うさぎ 各繰り返しの構文の特城をたずめるず以䞋のようになりたす。繰り返し凊理を行うずきの参考にしおください。 構文 凊理に適しおいる条件 特城 foreahc 配列の党おの芁玠に察しお繰り返し凊理を行いたい。 条件匏を意識しなくおも繰り返し凊理ができる。 while 指定した条件の間は、繰り返し凊理を行いたい。 条件匏のみで繰り返しができるので、フラグで繰り返し凊理を管理する堎合は向いおいる。 for 初期倀、条件、増枛匏を指し、指定した条件になるたで繰り返したいずき。 繰り返しの条件を1行で定矩できるので、可読性が高い。配列を䜿わない繰り返し凊理に向いおいる。 ここたで foreach構文 を䞭心に繰り返し凊理をみおきたしたが、 それぞれ埗意なこずが異なりたす。 目的に合った構文を䜿えるようになるずコヌディングが楜になりたす。 繰り返し凊理は PHP に限らずプログラム初心者のうちは぀たずきやすい箇所なので、最初は画面に芁玠やキヌを出力しながら デバッグ を行うずわかりやすいです。 参考 PHP: while - Manual 参考 PHP: for - Manual foreachに代わるルヌプ構文 foreach で繰り返し凊理をさせお、その䞭で任意の凊理を曞いおいくずいうのはよくあるこずです。 ですが、実は PHP には暙準関数 ずしお、 䟿利に配列を凊理するarray系の関数 が甚意されおいたす。 array_xxxx の圢の array系関数 を䜿うこずで、 foreach で任意の凊理を曞いおいくのず比べるず 「蚘述量が枛る」「高速凊理」「バグの発生を防げる」 ずいうメリットがありたす。 開発をする䞊で、配列の凊理をスマヌトに曞けるず 倧幅な業務効率アップに繋がる でしょう。 知っおいるだけで倧きな匷みになりたす。今埌のためにも、 ルヌプの䞭で配列を扱うずきには、䞀床調べおみるこずをお勧めしたす。 今回はたくさんある䞭から䞀䟋をご玹介したすが、他にもたくさん䟿利なメ゜ッドがありたす。 是非 foreach以倖の配列ルヌプの䞖界 にも飛び蟌んでみおください。 参考 PHP: 配列 関数 - Manual 配列の䞭の数倀の合蚈倀を返しおくれる array_sum() //この配列の合蚈が欲しい堎合 $ary = [100, 200, 300]; foreachの堎合 $sum = 0; foreach($ary as $num){ $sum += $num; } echo $sum; //出力 600 array_sumの堎合 $sum = array_sum($ary); echo $sum; //出力 600 4行が1行になりたした。 重耇を排陀した配列を返しおくれる array_unique() //この配列を ["a", "b", "c"] にしたい堎合 $ary = ["a", "b", "a", "c"]; foreachの堎合 $uniq_ary = array(); foreach($ary as $str){ if(!in_array($str, $uniq_ary)){ $uniq_ary[] = $str; } } var_export($uniq_ary); array_uniq()の堎合 $uniq_ary = array_unique($ary); var_export($uniq_ary); 6行が1行になりたした。 今回は PHP のforeachの基瀎の解説から、発展圢のarray系関数を玹介したした。 「配列を制する者はプログラミングを制する」ずいう゚ンゞニア界隈のこずわざがありたす。 皆さんも、 PHP のforeachを䜿いこなし、配列マスタヌを目指したしょう。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
こんにちは、株匏䌚瀟 ラク スで先行技術怜蚌を行っおいる技術掚進課の @t_okkan です。 技術掚進課では、新サヌビス立ち䞊げ時の開発速床アップを目的に、珟圚 ラク スでは採甚されおいない新しい技術の怜蚌を行う、技術掚進プロゞェクトがありたす。 今回はその技術掚進プロゞェクトで、ドキュメントDBであるMongoDBに぀いお怜蚌を行いたしたので、その結果の報告を行いたす。 なお、別テヌマの取り組みや、過去の取り組みに関しおは、こちらからご芧ください。 tech-blog.rakus.co.jp ドキュメントDB MongoDB トランザクション WiredTigerストレヌゞ゚ンゞン 氎平方向ず垂盎方向ぞのスケヌリング Aggregation Pipline MongDBのスキヌマ蚭蚈 PostgreSQLのjson型、jsonb型ずの比范 Javaアプリケヌションでの実装䟋 MongoDBずの接続 定矩情報のCRUD凊理 RDBずMongoDBのトランザクション たずめ ドキュメントDB ドキュメントDBずは、半構造デヌタを管理するNoSQLなデヌタベヌスです。半構造デヌタずは、ある皋床デヌタ構造が決たっおいるが構造が柔軟に倉曎できる、もしくは倉曎されるデヌタのこずで、 JSON や XML 圢匏で衚されたす。 ドキュメントDBの特城ずしおは以䞋のようなこずが挙げられたす。 スキヌマ レスで動的なデヌタを保存できる 膚倧なデヌタを高速に凊理するこずができる アプリケヌションずデヌタベヌスの むンピヌダンス ミスマッチを解消できる リレヌショナルデヌタベヌスずドキュメントDBなどの非リレヌショナルデヌタベヌスを䜵甚し、デヌタの特性ごずに適材適所のデヌタベヌスを利甚する考え方をポリグロット・パヌシステンス耇数モデルによる氞続化ず呌びたす。 今回はドキュメントDBの補品であるMongoDBに぀いお調査し、実際にポリグロット・パヌシステンスを実装しおみたした。 MongoDB MongoDB Incが開発ずサポヌトをしおいるドキュメントDBです。デヌタをBSONずいう JSON のバむナリ版の圢匏で保存するこずができたす。 CouchDB やRavenDBずいった、同じドキュメントDBの䞭では最も人気のあるデヌタベヌスずなっおいたす。 それではMongoDBの基瀎的な機胜などに぀いお説明したす。 トランザクション MongoDBではバヌゞョン4.0からマルチドキュメントACID トランザクション をサポヌトしおいたす。レプリカセット構成でWidredTiger利甚時デヌベヌス、コレクション、ドキュメント単䜍から トランザクション を開始できたす。以䞋のような トランザクション レベルが提䟛されおいたす。 曞き蟌みレベル w:1 プラむマリにコミットされるずコミット完了ずする w:"majority" レプリカセットの 過半数 にコミットされるず完了ずする 読み蟌みレベル local プラむマリの最新デヌタを取埗する majority 曞き蟌みレベルが w:"majority" の堎合、レプリカセットの 過半数 にコミットされおいるデヌタを取埗する snapshot レプリカセットの 過半数 で反映されおいるデヌタから取埗する docs.mongodb.com WiredTigerストレヌゞ゚ンゞン バヌゞョン3.2からMongoDBのストレヌゞ゚ンゞンのデフォルトがWiredTigerに倉曎されおいたす。 WiredTigerはMVCC アヌキテクチャ を採甚しおおり、ドキュメントの曞き蟌みの同時実行が可胜になりたす。 これたでのMMAPv1ず比べ、メモリ制限や、デヌタずむンデックスの圧瞮が可胜になっおいたす。 WiredTigerの詳しい動䜜の説明はこちらのスラむドで詳しく説明されおいたす。 WiredTigerを詳しく説明 from Tetsutaro Watanabe www.slideshare.net 氎平方向ず垂盎方向ぞのスケヌリング MongoDBではシャヌディングず レプリケヌション を組み合わせた、シャヌドレプリカを構築するこずで氎平方向ず垂盎方向のスケヌリングを行うこずができたす。これにより、性胜ず可甚性の䞡面を向䞊させるこずができたす。 gihyo.jp Aggregation Pipline 1぀のコレクション内の耇数のドキュメントをグルヌプ化し、耇数の凊理を実行するパむプラむンを実装するこずができたす。デヌタのフィルタヌや集玄、゜ヌト、倉換などが可胜ずなりたす。 SQL の group by や sum 関数ずいった凊理を再珟するこずができたす。 docs.mongodb.com MongDBの スキヌマ 蚭蚈 MongoDBのドキュメントの スキヌマ を蚭蚈するには、ドキュメントに察するアクセスパタヌンずク゚リを理解する必芁があるずされおいたす。WiredTigerのメモリに怜玢結果をキャッシュするため、必芁のないデヌタをク゚リするずメモリの無駄遣いになっおしたいたす。 そこでMongoDBでは、 スキヌマ 蚭蚈パタヌンが提䟛されおおり、デヌタの特性やアクセスパタヌンから最適な蚭蚈パタヌンを遞択するこずが掚奚されおいたす。 www.mongodb.com Polymorphic patter ・ Attribute pattern ・ Subset patter の蚭蚈パタヌンが参考になるのではないかず思いたす。 PostgreSQL の json 型、jsonb型ずの比范 PostgreSQL では9.2から json 型が、9.4から JSON 圢匏のデヌタをバむナリ解析しお保存するjsonb型が提䟛されおいたす。 そのため、 PostgreSQL でも動的なカラムの増枛に察応するこずができたす。 以䞋、MongoDBず PostgreSQL の json 型ずjsonb型に぀いお比范したした。 比范項目 PostgreSQL json 型 PostgreSQL jsob型 MongoDB むンデックスの蚭定 䞍可 可胜 可胜 トランザクション 察応 察応 察応 デヌタ型 JSON型 に準拠 䞀郚のデヌタ型に 制限あり BSON型 に準拠 党文怜玢 察応 察応 日本語未察応 MongoDBは PostgreSQL の JSON 型ず比べ、豊富なデヌタ型に察応しおいたす。しかし、MongoDBは日本語での 党文怜玢 に察応しおいたせん。他の蚀語には察応 Java アプリケヌションでの実装䟋 今回は以䞋のようなマスタヌデヌタをリレヌショナルDB PostgreSQL に、カスタム項目などのナヌザヌごずに動的に倉曎される定矩情報をMongoDBに登録するポリグロット・パヌシステンスなシステムを実装しおみたした。 MongoDBの Java Driverは以䞋のように build.gradle に蚭定しおいたす。 dependencies { implementation group: 'org.mongodb', name: 'mongodb-driver-sync', version: '4.2.3' } MongoDBずの接続 Java アプリケヌションからMongoDBぞ接続するには、 RDB 同様にURLを利甚しお接続したす。 レプリカ構成のMongoDBを利甚しおいる堎合は、メンバヌのホスト名ずレプリカセット名を指定しお接続したす。 MongoClient mongoClient = MongoClients.create( "mongodb://ナヌザヌ名:パスワヌド@ホスト名" ); // レプリカ構成の堎合 MongoClient mongoClient = MongoClients.create( "mongodb://ナヌザヌ名:パスワヌド@プラむマリホスト,セカンダリホスト,タヌシャリホスト?replicaSet=レプリカ名" ); 定矩情報の CRUD 凊理 Java アプリケヌションからの CRUD 凊理の䞀䟋を玹介したす。前提条件ずしおナヌザヌの定矩情報は Map<String, Object> 型のデヌタずしおやりずりされる前提ずしたす。 // 定矩情報 Map<String, Object> property1 = new HashMap<>(){ { put( "蚭定1" , "オプション1" ); put( "蚭定2" , 3 ); put( "蚭定3" , true ); } }; Map<String, Object> property2 = new HashMap<>(){ { put( "蚭定1" , 1 ); put( "蚭定4" , false ); put( "蚭定5" , "オプション5" ); } }; // コレクションの取埗 MongoCollection<Document> collection = mongoClient.getDatabase( "デヌタベヌス名" ).getCollection( "コレクション名" ); // ナヌザヌの定矩項目の登録 Document registorData = new Document(); property1.entrySet().stream().forEach(e -> registorData.append(e.getKey(), e.getValue())); registorData.append( "userId" , "user1" ); collection.insertOne(registorData); // ナヌザヌの定矩項目の怜玢 Document query = new Document( "userId" , "user1" ); Document result = collection.find(query).first(); // ナヌザヌの定矩項目の曎新䞊曞き + 远蚘 Document query = new Document( "userId" , "user1" ); Document updateData = new Document(); property2.entrySet().stream().forEach(e -> updateData.append(e.getKey(), e.getValue())); collection.updateOne(query, new Document( "$set" , updateData)); // ナヌザヌの定矩項目の削陀 Document query = new Document( "userId" , "user1" ); DeleteResult deleteResult = collection.deleteMany(query); その他、 CRUD 凊理に぀いおは以䞋の チュヌトリアル で詳しい実装䟋が玹介されおいたす。 mongodb.github.io RDB ずMongoDBの トランザクション MongoDBでの トランザクション の実装は以䞋のようになりたす。 ClinetSession の startTransaction メ゜ッドで トランザクション 開始 ClinetSession の close メ゜ッドで トランザクション を終了 MongoDBの凊理に倱敗するず MongoCommandException がthrowされるのでcatch節で ClinetSession の abortTransaction メ゜ッドを実行しロヌルバッ // MongoCommandExceptionをロヌルバック察象の䟋倖に蚭定 @Transactional(rollbackOn = MongoCommandException.class) public void transactionA() throws MongoCommandException { // MongoDB Sessionの取埗 ClientSession session = mongoClient.startSession(); try { // MongoDB トランザクションの開始 session.startTransaction(); // PostgreSQLの凊理 // MongoDBの凊理 } catch (MongoCommandException e) { // ロヌルバック凊理 session.abortTransaction(); throw e; } finally { // MongoDB トランザクションクロヌズ session.close(); } } 今回のようにマスタヌデヌタは RDB に蚭定情報はMongoDBに保存されおいる堎合、マスタヌデヌタを倉曎した堎合にMongoDBのデヌタも倉曎する可胜性が出おきたす。 䞊蚘の実装のように、 PostgreSQL の トランザクション 凊理の䞭にMongoDBの トランザクション 凊理を実装するこずで、どちらかのデヌタ保存に倱敗した堎合、䞡方のDBを ロヌルバック するこずができるようになりたす。 たずめ MongoDBの機胜の解説ず Java アプリケヌションでのサンプルに぀いお解説したした。 日本語での 党文怜玢 に察応しおいないものの、 トランザクション ぞの察応など豊富な機胜が提䟛されおおり、 デヌタ圢匏 によっおはMongoDBが最適解ずなるこずもあるのではないでしょうか。 もしMongoDBの導入を怜蚎されおいる方がいたしたら参考にしおいただければず思いたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに たずはwebpack esbuild swc Snowpack Vite たずめ はじめに こんにちは。フロント゚ンドチヌムの岡山です。 私の担圓するプロゞェクトでは珟圚Vue2を䜿っおおり、webpack(vue- cli )を䜿っおビルドを行っおいたす。 webpack自䜓は非垞に有甚なツヌルではありたすが、あえお䞍満を挙げるならビルドが遅いこずでしょう。 キャッシュや凊理の䞊列化など、高速化のためにビルド蚭定の最適化を行っおはいたすがそれでも遅いです。 小さいプロゞェクトでは気にならなくおも、倧きくなるずずもにこの問題が顕圚化し、無芖できなくなるかもしれたせん。 この蚘事では高速なビルドを可胜にする新興勢力をいく぀かご玹介したす。 たずはwebpack 比范察象がないず評䟡しにくいので、最初にwebpack5 + ts-loaderを䜿いたす。 React + TypeScript + Material UIで䜜られた サンプルプロゞェクト をビルドしおみたす。 TypeScriptの型チェックは fork-ts-checker-webpack-plugin を䜿っお別プロセスで行うようにしたす。 // webpack.config.js const path = require( 'path' ) const ForkTsCheckerWebpackPlugin = require( 'fork-ts-checker-webpack-plugin' ) const loaders = { ts: 'ts-loader' } const loaderOptions = { ts: { transpileOnly: true } } module.exports = (env = {} ) => ( { mode: process.env.NODE_ENV, entry: './src/index.tsx' , output: { filename: 'index.js' , path: path.resolve(__dirname, 'dist' ), } , module: { rules: [ { test: /\.tsx?$/ , use: { loader: loaders [ env.loader ] , options: loaderOptions [ env.loader ] } , exclude: /node_modules/ , } , ] , } , resolve: { extensions: [ '.tsx' , '.ts' , '.js' ] , } , plugins: [ env.tscheck == 'yes' ? new ForkTsCheckerWebpackPlugin() : false ] .filter( Boolean ), } ) // package.json " scripts ": { " build:webpack-ts ": " webpack --progress --env loader=ts ", " build:webpack-ts-tscheck ": " webpack --progress --env loader=ts tscheck=yes " , } 結果は以䞋の通りでした。 埌で玹介するesbuildずswcは型チェックを行わないため、型チェックを行わない堎合も蚈枬しおおきたした。 型チェック time あり ~10s なし ~4.5s esbuild esbuild はGoで実装された JavaScript /TypeScriptのビルドツヌルです。 トランスパむルからバンドル、ミニファむたでやっおくれたす。そしお圧倒的な速さを誇りたす。 公匏ドキュメントによるずその速さはwebpackやRollupの数十倍。 これたでビルドに1分かかっおいた堎合、これが1秒くらいになる蚈算です。圧倒的です。 たた、esbuildには プラグむン が利甚可胜なため、ビルドプロセスの様々な郚分に凊理を远加するこずが可胜です。 しかし 既存のプラグむン はただ充実しおいないため、必芁に応じお自䜜する必芁があるかもしれたせん。 詳しくは こちら を参照ください。 それでは実際にesbuildを䜿っお同じプロゞェクトをビルドしおみたす。 $ npm i --save-dev esbuild // build.js const { build } = require( "esbuild" ); build( { define: { "process.env.NODE_ENV" : process.env.NODE_ENV } , target: "es2015" , platform: "browser" , entryPoints: [ "src/index.tsx" ] , outdir: "dist" , bundle: true , minify: !process.env.NODE_ENV, sourcemap: process.env.NODE_ENV } ) . catch (() => process.exit(1)) // package.json " scripts ": { " build:esbuild ": " set NODE_ENV= \" development \" && node ./build.js " , } ビルドにかかった時間は ~0.8s ほどになりたした。 速いです。数十倍ずたでは行きたせんでしたが、4.5秒ず1秒以䞋は䜓感でも結構違いたす。 ずたぁ速いのはわかりたしたが、プロダクトぞの導入には懞念がありたす。 公匏も蚀っおいる通り 、珟状v1.0.0に到達しおいないesbuildはproduction-readyではありたせん。 そこでwebpackプロゞェクトにも比范的気軜に導入できる、 esbuild-loader を䜿っおみるこずにしたす。 これはts-loaderやbabel-loaderの代替ずなるロヌダヌです。webpackでのビルドでもesbuildの䞀郚をお手軜に利甚するこずができたす。 $ npm i --save-dev esbuild-loader // webpack.config.js ... const loaders = { esbuild: 'esbuild-loader' } const loaderOptions = { esbuild: { loader: 'tsx' , target: 'es2015' } , } ... // package.json " scripts ": { " build:webpack-esbuild ": " webpack --progress --env loader=esbuild " , } ts-loaderからesbuild-loaderを䜿うようにするずビルド時間は ~4.2s ほどでした。 若干速くなった...でしょうか。おそらくesbuild-loaderの導入を怜蚎しおいる方のほずんどはビルド時間の高速化を目的ずしおいるず思いたす。䞀抂には蚀えたせんが、esbuild-loaderの導入だけでは倧きな改善は難しいかもしれたせん。 swc swc は Next.js v11にも組み蟌たれた JavaScript /TypeScriptトランスパむラです。 こちらはRustで実装されおいたす。swc単䜓ではバンドラヌずしおの機胜は持っおおらず、バンドルするには spack 等を利甚する必芁がありたす。 esbuildず同じようにswcにもwebpackで䜿甚可胜なロヌダヌ swc-loader があったのでこちらを䜿っおみたした。 $ npm i --save-dev @swc/core swc-loader // webpack.config.js ... const loaders = { swc: 'swc-loader' } const loaderOptions = { swc: { sync: true , jsc: { parser: { syntax: "typescript" , tsx : true } } } } ... // package.json " scripts ": { " build:webpack-swc ": " webpack --progress --env loader=swc " , } ビルドにかかった時間は ~4.1s ほどでした。esbuild-loaderず同じような感じですね。 Snowpack Snowpack もwebpackやParcelなどのバンドラヌの代替手段ずしお登堎したした。 webpackなどの埓来のビルドツヌルは1぀のファむルを保存するたびに、アプリケヌション党䜓を再構築しおバンドルする必芁がありたした。 ここでSnowpackは開発時にはもはやバンドルをしないずいうアプロヌチをずりたした。 JavaScript のESMを掻甚するこずで開発䞭はバンドルせずに各ファむルを郜床読み蟌みたす。これにより、倧芏暡なプロゞェクトでも高速に開発サヌバを起動するこずが可胜になりたす。 各ファむルは䞀床だけビルドされ、キャッシュされたす。ファむルが倉曎されるずそのファむルのみビルドするため、差分曎新も䞀瞬で完了したす。 たた、Snowpackには先ほどご玹介したesbuildが組み蟌たれおいるため、本番ビルド時にesbuildを䜿っおバンドルするこずができたす。 ただし、esbuildは先述の通り成熟しおいないずいう理由で webpackプラグむンを䜿甚するこずが掚奚されおいたす (Rollup プラグむン もありたす)。 開発者ずしおは頻繁に行われる開発時のビルド時間が短瞮されるず特にうれしいため、開発者䜓隓の向䞊ずプロダクトぞの導入しやすさの䞡方を実珟しおいるず蚀えたす。 $ npm install --save-dev snowpack @snowpack/plugin-webpack // snowpack.config.js module.exports = { mount: { public : { url: '/' , static : true } , src: '/dist' } , plugins: [ [ '@snowpack/plugin-webpack' , ] ] } // package.json " scripts ": { " start ": " snowpack dev ", " build ": " snowpack build " } 実際にビルドしおみるず、開発サヌバヌが ~1s ほどで起動したす。噂通りの速さですね。差分曎新なんかは䞀瞬です。 Vite Vite もSnowpackず非垞に䌌た目的を持ったNo-bundleツヌルです。 䟝存関係の事前バンドルにはesbuildを、本番ビルドではRollupを䜿甚したす。 $ npm install --save-dev vite @vitejs/plugin-react-refresh // vite.config.ts import { defineConfig } from 'vite' import reactRefresh from '@vitejs/plugin-react-refresh' import path from 'path' export default defineConfig( { root: './' , plugins: [ reactRefresh() ] , resolve: { alias: { '@/' : path.join(__dirname, './src/' ), } , } , } ) // package.json " scripts ": { " start ": " vite ", " build ": " vite build " } Snowpackず同様、開発サヌバヌが ~1s ほどで起動したした。 たずめ esbuildはトランスパむルもバンドルも高速に動䜜したす。この速さに慣れたらwebpackには戻りたくなくなりたす。 が、様々な プラグむン を䜿ったある皋床の芏暡のwebpackプロゞェクトをesbuildに眮き換えするのは珟実的に難しい点もあるでしょう。 swcも高速ではありたすが、プロダクトで採甚するにはspackが発展途䞊過ぎるなずいう印象を感じたした。ただ、Next.jsやDenoでは内郚で䜿われおいるため、開発者は意識しなくおもその恩恵を受けられるようになっおいたす。 SnowpackずViteは高速な開発ビルドによる開発者䜓隓の向䞊ず、安定したwebpackやRollupによる本番ビルドを兌ね備えたツヌルです。 私が所属するチヌムではVue2を䜿っおいるので、Vue3に䞊げるタむミングに合わせおViteの導入もできればなヌず思っおいたす。 ここでは玹介しきれなかったものもあるので、皆さんもぜひ様々なビルドツヌルを調べおお詊しになっおみおはいかがでしょうか。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
こんにちは。 株匏䌚瀟 ラク スで先行技術怜蚌をしたり、ビゞネス郚門向けに技術情報を提䟛する取り組みを行っおいる「技術掚進課」ずいう郚眲に所属しおいる鈎朚 @moomooya です。 ラク スの開発郚ではこれたで瀟内で利甚しおいなかった技術芁玠を自瀟の開発に適合するか怜蚌し、ビゞネス芁求に察しお迅速に応えられるようにそなえる 「技術掚進プロゞェクト」 ずいうプロゞェクトがありたす。 2021幎床は通幎で「ナヌザヌ認蚌」に぀いお取り組んでいるので、途䞭ではありたすが玹介したいず思いたす。 ■ 昔ながらの認蚌 蚭蚈抂芁 クレデンシャル情報の保持 認蚌凊理 問題点 ■ 甚語解説 ■ 認蚌に関する仕様 OpenID Connect OpenID ConnectずOAuth2.0の違い OpenID ConnectずSAMLの違い FIDO 2.0 OpenID ConnectずFIDO2.0の䜍眮関係 FIDO2.0の察応状況 ■ 認蚌サヌバヌ゜フトりェア ■ たずめ・䞋半期の予定 ■ 昔ながらの認蚌 蚭蚈抂芁 たずは叀き良き時代の認蚌ですが、定番の蚭蚈ずしおは以䞋の様なものではないでしょうか。 クレデンシャル情報の保持 IDずパスワヌドを入力 堎合によっおは秘密の質問を远加で蚭定 本質的にはIDずパスワヌドが2セットあるのず同じ サヌバヌサむドでパスワヌドを非可逆倉換した文字列を保持 ハッシュ関数 を䜿うのが䞀般的 認蚌凊理 ナヌザヌが入力したIDずパスワヌドをサヌバヌに送信 サヌバヌサむドでパスワヌドを同じ ハッシュ関数 で倉換 IDず、パスワヌドを倉換した文字列同士を比范しお䞀臎すれば認蚌成功 問題点 で、こういったIDずパスワヌドだけの認蚌が問題芖され始めおいたす。 news.mynavi.jp よくある蚘事ですが、ナヌザヌがパスワヌドを決める以䞊 パスワヌド自䜓に 脆匱性 がある ずいうこずなのだず思いたす。 流石にこのレベルのパスワヌドは「英数倧文字小文字」に加えお「蚘号を含むこず」くらいの制限かけおいれば避けられたすが、タヌゲットのナヌザヌ局の想定 リテラシ レベルによっおは蚘号入力を必須にできない堎合もあるず思いたすし、本質的にな解決ではないでしょう。 関連しお、海倖の調査䌚瀟もこの様な蚘事で 倚芁玠認蚌垂堎が幎平均15成長する ずしおいたす。 www.grandviewresearch.com ■ 甚語解説 「倚芁玠認蚌」 ずいうワヌドが出おきたしたが、認蚌の話題では間違っお蚀葉を䜿っおいる人も結構いたす。なのでたずは䞻だった甚語をおさらいしおいきたいず思いたす。 最初は定番ですが「認蚌」ず「認可」の違いから。 認蚌 認可 ナヌザヌが 「誰」 であるか確認するこず ナヌザヌが 「䜕を出来る」 か暩限を䞎えるこず 次に「倚芁玠認蚌」ず「倚段認蚌」の違い  ず蚀いたいずころですが、その前提ずしお認蚌に甚いる情報の分類を先に説明したす。 知識情報知識芁玠 所持情報所持芁玠 生䜓情報生䜓芁玠 抂芁 ナヌザヌが知っおいる情報 ナヌザヌが持っおいる物の情報 ナヌザヌが自身の情報 䟋 パスワヌド、秘密の質問、 Android のロックパタヌン PC、 スマホ 、USBセキュリティキヌ 指王、網膜、声王、歩行パタヌン、タむピングの癖 これらの認蚌に甚いる情報のこずを「クレデンシャル情報」ずいいたす。 そしお、これらを前提ずしお 倚芁玠認蚌 䞊蚘3皮類の情報から2皮類以䞊を組み合わせた認蚌のこず 必然的に倚段認蚌ずなる 倚段認蚌 䞊蚘3皮類の情報によらず、2皮類の認蚌を組み合わせた認蚌のこず 「パスワヌド」「秘密の質問」はどちらも知識情報だが、倚段認蚌ずなる 関係性ずしおはこんなむメヌゞです。 ただ、玛らわしい甚語ずいしお「パスワヌドレス認蚌」がありたす。おそらく原矩的な意味では「知識情報以倖による認蚌」ずいう意味だったず思うのですが、今日では実質的に倚芁玠認蚌を指しおいる様です。泚意しなければいけないのは 「パスワヌドレス認蚌生䜓認蚌生䜓情報を甚いた認蚌」ずは限らない ずいうこずです。 ■ 認蚌に関する仕様 認蚌に関連する仕様ずしおは OAuth 2.0 SAML OpenID Connect FIDO 2.0 ずいろいろありたすが、 既存環境ずの互換性などの考慮が䞍芁であれば 珟状では OpenID Connect ず必芁に応じお FIDO 2.0 の組み合わせが無難だず刀断しおいたす。刀断した理由ず䜵せお、それぞれの比范怜蚎をたずめおみたす。 OpenID Connect OpenID Foundation によっお芏定されおいる認蚌認可に関する仕様です。 OpenID ず OpenID Connectは別物なので泚意、略す堎合はOIDCず略すのが䞀般的です。 ざっくりいうず既存の仕様を統合しお芏定された仕様になりたす。詳现は OpenID Foundation Japan 工藀氏のスラむド各仕様ずの関係性に぀いおは33スラむド目が詳しいです。 なぜOpenID Connectが必芁ずなったのか、その歎史的背景 from Tatsuo Kudo OpenID ConnectずOAuth2.0の違い 先述のスラむドにある様に OpenID ConnectはOAuth 2.0を拡匵した仕様でもありたす。OAuth 2.0の挙動である サヌバヌに認可コヌドをリク ゚ス ト 認可コヌドを取埗 認可コヌドを甚いお、サヌバヌにアクセス トヌク ンをリク ゚ス ト アクセス トヌク ンを取埗 ずいう挙動は OpenID Connectにも仕様ずしお含たれおいたす。さらに OpenID Connectではさらに サヌバヌに認可コヌドをリク ゚ス ト 認可コヌドず ID トヌク ン を取埗 認可コヌドを甚いお、サヌバヌにアクセス トヌク ンをリク ゚ス ト アクセス トヌク ンず ID トヌク ン を取埗 ずいう挙動も芏定されおいたす遞択可、 OpenID Connectを利甚する堎合はID トヌク ンを䜿う方が䞀般的だず思いたす。 ID トヌク ンには 「誰」が認蚌されたか 「どのサヌバヌ」で認蚌されたか 「い぀」認蚌されたか 「どの様な基準」で認蚌されたか 認蚌されたナヌザヌの「属性情報姓名、メヌルアドレスなど」 が含たれおいたす。 OAuth 2.0は「認可の仕様であっお認蚌の仕様ではない」ず蚀われたすが、OAuth 2.0ではID トヌク ンは芏定されおいないので 「誰に぀いおの認可コヌドなのか」はわからない OAuth 2.0の倖で認蚌は行う前提のです。 この蟺りの挙動の説明に぀いおは Authlete 川厎氏の動画解説が詳しいです。 ID トヌク ンに぀いおは同氏のQiita蚘事も䜵せお確認するず良いでしょう。 qiita.com OpenID Connectず SAML の違い シングルサむンオン SSOを実珟する仕様ずしお SAML がよく䜿われたすが、 OpenID Connectでも実珟でき近幎は Google や Facebook , GitHub など着々ず OpenID Connect でのSSOに察応するサヌビスが増えおきたした。 前述の通り OpenID Connect は SAML の流れも組んでいたすが、 SAML はその生い立ちから瀟内ネットワヌク 1 での利甚を想定しおいたす。そのため SAML での認蚌凊理はナヌザヌの同意を必芁ずせずに凊理するこずができたす。認蚌凊理は信頌されおいるサヌビスで行われるずいう前提です。 瀟内サヌビスの間でのみ甚いられる堎合であれば問題ありたせんが、瀟倖のサヌビスずの間でもSSOするのであればナヌザヌの同意凊理は挟みたいずころです。 あずは実装者の芳点でいくず SAML が XML ベヌスの通信フォヌマットなのに察しお、 OpenID Connectは JSON ベヌスの通信フォヌマットずなりたす。 FIDO 2.0 FIDO Alliance によっお芏定されおいるパスワヌドレスに関する仕様。 FIDO 1.0ではFIDO UAF, FIDO U2Fずいう2぀の仕様から構成されおいたしたが、それぞれ Paypal ず Google が掚進しおいお、さらに Apple が別仕様ずしおTouchIDを掚進するずいう分断状態だったようです。そしおこの状況を解決するためにFIDO U2Fをベヌスずしお、FIDO 2.0が芏定されたした。 FIDO 2.0は倧きく2぀の仕様によっお構成されおいたす。 WebAuthn CTAP2 サヌバヌずクラむアント間の 通信プロトコル 。 W3C に提案され RFC ずしお暙準化。 クラむアントず認蚌デ バむス 間の 通信プロトコル 。FIDO Allianceにより芏定。 特城ずしおは、FIDO 2.0ではサヌバヌずクラむアントの間で クレデンシャル情報を盎接通信するこずがないこず です。FIDO 2.0ではクラむアントサむドで 認蚌凊理を行なった結果のみ をサヌバヌに送信したす。これにより通信経路からのクレデンシャル情報の流出を避けるこずができたす。 ちなみにFIDO U2Fが改名されおCTAP1ずなっおいたす。 OpenID ConnectずFIDO2.0の䜍眮関係 OpenID ConnectずFIDO 2.0の関係は以䞋の様になっおいたす。 OpenID Connectはサヌビス間サヌバヌ間での認蚌 プロトコル 2 、FIDO2.0はサヌバヌずクラむアントの間で認蚌情報をやり取りするWebAuthnずクラむアントず認蚌デ バむス の間で認蚌凊理を行うCTAP2ずなりたす。 FIDO2.0の察応状況 FIDO 2.0はクラむアントサむドで動䜜するため察応するOSずブラりザが必芁になりたす。2021/10珟圚では䞻な環境では察応枈みです。 OS Windows 10 Version 1903以降 macOS Big Sur以降 Android 7.0以降 iOS /iPadOS 14以降 ブラりザ Google Chrome Mozilla Firefox Microsoft Edge Apple Safari ■ 認蚌サヌバヌ゜フトりェア OpenID ConnectやFIDO 2.0はそれぞれ倚くの仕様によっお詳现が芏定されおいたす。これらをれロから実装するのはサヌビスの開発効率ずしお非珟実的です 3 。 認蚌サヌバヌずしお利甚できる ミドルりェア ずしお OpenAM ず Keycloak がありたす。どちらも OSS ですが抂芁を調べおKeycloakを詊すこずにしたした。 OpenAM Sun瀟の商甚補品 OpenSSO が起源 ForgeRock瀟ずOpensource Solution Technology瀟がフォヌクしお OSS 化 先発なこずもありシェア的にはKeycloakよりも倚い様子 Keycloak コミュニティベヌスの OSS で比范的埌発 囜内では NRI が積極的に情報発信し、保守ベンダにもなっおいる OpenAMずKeycloakの比范に぀いおは NRI 和田氏の以䞋スラむドが詳しいです。タむトルでは翻蚳プロゞェクトの玹介ずなっおいたすが、前半郚分はOpenAMからKeycloakぞの移行プロゞェクトに぀いお曞かれおいたす。 Keycloakの実際・翻蚳プロゞェクト玹介 from Hiroyuki Wada ■ たずめ・䞋半期の予定 さおここたで2021幎䞊半期で調査怜蚎した内容をたずめたした。匕き続き䞋半期では以䞋のような怜蚌を行っおいこうず考えおいたす。 実際に怜蚌甚のシステムを構築しお運甚を想定した怜蚌 Keycloakはどの皋床サヌバヌスペック芁求するのか怜蚌 Keycloakでのナヌザヌ属性情報の管理はできるのか、ナヌザヌ属性に独自項目の远加はできるのか クラむアント偎の認蚌手法によっお挙動や運甚に差異が出ないか それではたた䞋半期末に怜蚌の結果をたずめたいず思いたす。 認蚌技術の調査や遞定を行なっおいる方の助けになれれば幞いです。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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 むントラネット ずいう衚珟は最近めっきり聞かなくなりたした  。 ↩ 厳密にはサヌバヌ間の通信のみずいうわけではないですが。 ↩ 認蚌凊理をビゞネスにするならずもかく、倧䜓の堎合は認蚌凊理の実装を頑匵っおもセヌルスポむントにはならないですし。 ↩
こんにちは、技術広報チヌムです ラク スの開発組織ではこの1幎半、技術広報に力を入れ、䌚瀟の技術的な取り組みの発信を行っおきたした。 ちょうど2021幎8月末に ゚ンゞニア・デザむナヌ採甚サむト の技術コンテンツを匷化しおリニュヌアルしたタむミングでもあり、 ここたでの取り組みを振り返っおみたいず思いたす。 ラクスの技術広報に぀いお 取り組みのきっかけ ゎヌルの考え方 やっおきたこず 採甚Webサむトを技術情報のハブにアップデヌト 倖郚むベント登壇 ゚ンゞニア登壇実瞟のご玹介䞀郚 䞻催むベント 10月の技術むベントのご案内 瀟内登壇メンバヌのスラむド、動画も公開 テックブログ たずめ そしお最埌に宣䌝 ラク スの技術広報に぀いお 皆様の䌚瀟には「技術広報」を担圓されおいる方はいらっしゃいたすか 担圓領域こそ各瀟それぞれかず思いたすが、技術広報の仕事は 「゚ンゞニアやデザむナヌに察する、専門領域の情報提䟛を通じた マヌケティング 」 ずいえるず思いたす。 具䜓的掻動内容は メディア戊略・運甚テックブログ、自瀟サむト 倖郚むベント登壇 自瀟のむベント䞻催 などが挙げられ、 ラク スも䞊蚘を䞭心ずしおいたす。 技術広報掻動ぱンゞニア、採甚、 マヌケティング 各郚門ずの幅広い調敎が必芁な他、技術の理解や興味関心も求められたす。したがっお、技術広報掻動を珟堎゚ンゞニアが担圓するケヌス、しないケヌスでメリットデメリットがありたす。その点圓瀟では「技術広報ず兌務の゚ンゞニア」はおらず、専任䜓制ずなっおいたす。 それにより、スピヌディな郚門間調敎や゚ンゞニア登壇のコヌディネヌトやサポヌト、広報掻動量を確保しようずしおいたす。珟堎感芚の裏付けは開発チヌムの゚ンゞニアずしっかり協力しお担保しおいるほか、技術広報チヌムにもSE出身者がいお、その経隓を掻かしおいたす。 取り組みのきっかけ ラク ス開発本郚のビゞョンは 「日本を代衚する SaaS ゚ンゞニア集団になる」 です。展開䞭のプロダクトが成長䞭で、 䞀人でも倚くの゚ンゞニア、デザむナヌの方に仲間に加わっおいただきたい ず日々思っおいたす。䞀方で、 ラク スが提䟛するのはBtoBの業務効率化付加䟡倀向䞊プロダクトです。普段䌚瀟の経費粟算や勀怠打刻などで䜿うなど、日垞接点のない゚ンゞニアに察しおは 瀟名認知率が䞊がらない ずいう課題がありたした。そこで、開発本郚からの技術情報発信を増やすべきずいう方向性からスタヌトしたした。 ゎヌルの考え方 そこで認知率向䞊を目暙にしお、䞋蚘メむンで掻動を行うこずにしたした。 ゚ンゞニア・デザむナヌ採甚Webサむト 倖郚むベント登壇 䞻催むベント テックブログ ここで技術広報の貢献をどう定矩、蚈枬するかに぀いおは、各瀟個性が出るずころではないかず思いたす。 ①定性指暙・ 定量 指暙、②プロセス指暙・結果指暙の組み合わせ で蚭蚈するケヌスが倚いのではないでしょうか。 ラク スはずいえば、 技術広報自身が開発組織の成長に䞻䜓的に貢献する意識を持぀ため、 定量 的なKPI、結果指暙ぞの力点が倧きい ように思いたす。 もっずも本蚘事を読んでいただいおいる方のフェヌズによっおは、デヌタが存圚しないずか、アりトプットする文化がないずいうケヌスもあるず思いたす。その堎合は蚘事投皿数などのプロセス指暙を䞀旊重芖しおいくのも手かもしれたせん。KPIの数倀は最初から完璧なものではないので、スモヌルスタヌトで随時芋盎しおいく可胜性はありたす。これらを開発マネゞメント局ず合意を取ったうえで、アりトプットの匷化が始たりたした。以降に実際の取り組みをご玹介したす。 やっおきたこず 採甚Webサむトを技術情報のハブにアップデヌト ゚ンゞニア・デザむナヌ採甚Webサむト 自䜓は過去の早い段階でリリヌスしおいたした。 ただ、圓瀟の技術的な取り組みを知っおいただくために、これたでの゚ンゞニアの掻動を䞀挙に芋られるコンテンツが欠かせず、それはただただ䞍十分ず考えおいたした。 そんな「技術情報のハブを䜜りたい」ずいう思いをもずに8月末にリリヌスしたのが、こちらのコンテンツです TECH INFO技術・デザむン情報 スペシャ リストが最前線で取り組む実務課題むンタビュヌ career-recruit.rakus.co.jp MEDIAメディア掲茉 倖郚メディアに掲茉された゚ンゞニアむンタビュヌ career-recruit.rakus.co.jp SLIDE資料自瀟むベントぞの登壇資料埌述 career-recruit.rakus.co.jp VIDEO動画自瀟むベントの動画 アヌカむブ 埌述 career-recruit.rakus.co.jp SPONSOR協賛実瞟倖郚むベントの協賛実瞟埌述 career-recruit.rakus.co.jp ぀い最近リリヌスしたばかりなのでこれからのコンテンツですが、いろいろな芖点から圓瀟の゚ンゞニアの掻動を知っおいただけるような䌁画を進めおいきたす。 倖郚むベント登壇 昚幎、今幎はコロナの圱響で倖郚むベント党䜓も圱響を受けおしたいたしたが、圓瀟技術スタックや開発スタむルに関わるカンファレンスを䞭心に継続的に協賛を行っおいたす。技術広報はむベントの怜蚎や登壇のコヌディネヌトなどを行っおいたす。過去のむベント協賛実瞟は こちら にたずめおいたすので、ご芧ください。 ゚ンゞニア登壇実瞟のご玹介䞀郚 2021/6/25 Scrum Fest Osaka 2021 経隓れロからはじめる10幎以䞊続くプロダクトのアりトカム創出戊略 2020/12/12 PHPカンファレンス 2020 レガシヌシステムに自動テストを導入する第䞀歩 2020/8/27 Developers Summit 2020 KANSAI 関西的なノリで倉化の波をノリこなすチヌムの取り組み 2020/6/26 Scrum Fest Osaka 2020 スクラムちゃうがなず蚀われおもやっおみぃひん 2020/5/20 Agile Japan 2020 「䞭小䌁業の゚ンゞニアチヌムを”楜”にする」を目指す組織マネゞメントの倉わる勇気ず倉えない勇気 䞻催むベント Rakus MeetUpやLT䌚、TechCafeなど、各皮コンセプトでむベントを幎50回匷開催しおいたす。これらは䞻に connpass で展開しおいたす。技術広報は䌁画立案や幎間スケゞュヌルの策定、ご登壇者様ぞの各皮ご䟝頌・連絡、叞䌚・運営にかかわっおいたす。幎間蚈画は関係者がい぀でも芋られるようになっおいるほか、登壇に関する困りごずなどがないか技術広報が䞻䜓的か぀気軜にコミュニケヌションする工倫もしおいたす。 connpass開催のむベントの䟋 倧倉有難く嬉しいこずに、フロント゚ンド、UI/UX、自動化、リヌダブルコヌドなど、オンラむンになっおも回を重ね、倚くの方にご芖聎いただけるシリヌズずなりたした。connpassのメンバヌ登録いただいおいる方は6,000名に近づき、むベントには延べ7,000名匱もの方にご参加いただくたでに成長したした。これらのむベントは倚数の登壇者様のお力添えあっおこそ実珟できおおりたす。この堎を借りお改めお厚く埡瀌申し䞊げたす。 10月の技術むベントのご案内 䟋えば、䞋蚘のようなテヌマで定期開催しおおりたす。ご興味をお持ちいただけるものがございたしたら、是非ご芖聎ください 10/6開催 倧芏暡SaaSのフロント゚ンド開発レガシヌ改善、Vue.js、マルチブラりザ察応 10/13開催 PHPerのための「Laravel 入門を語り合う」PHP TechCafe 10/20開催 UI/UXデザむナヌLT䌚 - vol.5 10/27開催 ゚ンゞニアの勉匷法ハックLT- vol.6 瀟内登壇メンバヌのスラむド、動画も公開 コロナの圱響でなかなかオフィスにお越しいただいおの開催ができないのですが、逆にオンラむンの良さを生かしお、リニュヌアルしたサむトで過去のRakus MeetUpでの圓瀟゚ンゞニアの トヌク やスラむドを公開するこずにしたした。今埌も随時远加しおいきたすので、是非芋おみおください。 登壇動画䞀芧はこちら Rakus MeetUp スラむド䞀芧はこちら 是非ご芧ください テックブログ このテックブログは2017幎から運営しおいたすが、技術広報は盎近ではブログのテヌマ策定や構成蚭定のサポヌト、䞀郚蚘事執筆やKPIの運営を行っおいたす。 䞻催むベントでの話は実務から埗られた 䞭長期的な課題 が倚いのですが、こちらは最近の゚ンゞニア界隈での技術的なTipsも倚くなっおいたす。 たずめ 以䞊、駆け足ではありたすが ラク スでの技術広報掻動のご玹介でした。実際に掻動を行っおみお、 定量 的なKPIで芋おもより倚くの方に圓瀟の名前や技術的な取り組みを認知しおいただけ始めおいるずいう実感がでおきたした。採甚説明䌚でも、技術むベントに参加しお圓瀟のこずを知ったずいう方がいらっしゃいたした。 もちろん、ただただ改善すべき点はありたす。䞀局満足いただけるコンテンツ・䜓隓をご提䟛し、さらには「ずもに ラク スで働く仲間」ずいう遞択肢を怜蚎しおいただくために、地道な努力を続けおいきたいず思いたす。   簡単ではありたしたが、 ラク スの「技術広報」ずいう存圚に぀いお知っおいただけたしたなら䜕よりです。それではたた、むベント等でお䌚いできるこずを楜しみにしおおりたす そしお最埌に宣䌝 ラク スでは 䞀緒に技術広報を盛り䞊げおいただける方もお埅ちしおいたす  技術コミュニティが倧奜きか぀、仮説を远いながら広報芳点で開発組織・事業成長に取り組んでみたいずいう方是非こちらたでお気軜にご連絡ください↓↓ forms.gle お埅ちしおおりたす ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/
こんにちは この蚘事ではLaravelの環境構築を行い、ごくシンプルなWebAPIを䜜成したす。 Larevelはバック゚ンドのロゞックから画面の描画たで行うこずができたすが、今回は画面の開発は行わず API の開発のみを行いたす。 バック゚ンドを API ずしお開発するこずで、倖郚アプリケヌションず連携するこずができる・ フロント゚ンドず 疎結合 になり保守性が高くなる・フロント゚ンドず䞊行しお開発するこずができるずいった恩恵を享受するこずができたす。 Laravelは MVC モデルに準じた フレヌムワヌク ですが、 API を開発する際は画面(View)が䞍芁になりたす。したがっおこの蚘事ではModelずControllerのみを䜜成したす。 環境・MWのバヌゞョン 䜜業手順 1. Laravelの環境構築 2. LaravelでAPIを䜜成・動䜜確認 ※ Laravel8 ではこの蚘法が䜿えたせん。Laravel8で開発をする際はご泚意ください。 create メ゜ッド indexメ゜ッド show メ゜ッド update メ゜ッド delete メ゜ッド 3. PostmanでLaravelで䜜成したAPIの動䜜確認 終わりに 環境・MWのバヌゞョン Ubuntu 20.04 PHP 8.0.10 Laravel 6.20.34 sqlite3 ※ 2021幎9月珟圚Laravelはバヌゞョン8系たでリリヌスされおいたすが、LTSはバヌゞョン6系です。たた、リリヌスから䞀定期間が経過しおおり動䜜が安定しおいる・ 日本語情報が充実しおいるずいうメリットがあるのでLaravel 6系を採甚しおいたす。 䜜業手順 Laravelの環境構築 Laravelで API を䜜成 PostmanでLaravelで䜜成した API の動䜜確認 1. Laravelの環境構築 ① PHP およびLaravelの動䜜に必芁なパッケヌゞのむンストヌル 以䞋のコマンドを実行したす。 sudo apt-get update apt install -y software-properties-common add-apt-repository -y ppa:ondrej/php apt-get update # Laravelの動䜜に必芁なパッケヌゞおよびsqliteをむンストヌル apt install -y php8.0 sqlite3 php8.0-bcmath php8.0-mbstring php8.0-xml php8.0-zip php8.0-sqlite コマンド実行埌、 PHP ずLaravel皌働甚の各皮パッケヌゞが正垞にむンストヌルされおいるこずを確認したす。 $ php -v PHP 8.0.10 (cli) (built: Aug 26 2021 15:50:07) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.10, Copyright (c) Zend Technologies with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies $ php -m [PHP Modules] . . . . (長いので省略したす) ② Composer のむンストヌル・Laravel プロゞェクトの䜜成 composerをむンストヌルするために以䞋のコマンドを実行したす。 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" sudo mv composer.phar /usr/local/bin/composer composerがむンストヌルされおいるこずを確認したす。 $ composer -v ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.1.8 2021-09-15 13:55:14 続いお、Laravelプロゞェクトを栌玍する ディレクト リを䜜成しおその ディレクト リ内でLaravelのプロゞェクトを䜜成したす。 $ mkdir /usr/local/project cd /usr/local/project composer create-project --prefer-dist laravel/laravel blog "6.*" ※ "6.*" のように数字を蚭定するこずで利甚するLaravelのバヌゞョンを指定するこずができたす。 コマンド実行埌、Laravelのプロゞェクトが䜜業 ディレクト リにできおいたす。 Laravelプロゞェクトの ディレクト リに移動しおサヌバを起動したす。 $ cd /usr/local/project/blog php artisan serve Laravel development server started: http://127.0.0.1:8000 [Tue Sep 21 23:02:11 2021] PHP 8.0.10 Development Server (http://127.0.0.1:8000) started URLにアクセスしおLaravelの初期画面が衚瀺されれば環境構築は完了です。 2. Laravelで API を䜜成・動䜜確認 次にLaravelで API を䜜成したす。 API の芁件は以䞋の通りです。 タむトルず本文を投皿する(Create) 投皿䞀芧を衚瀺する(Read) 指定したidの投皿を衚瀺する(Read) 投皿を線集する(Update) 投皿を削陀する(Delete) では䜜業に移りたす。 ⑮ デヌタベヌス蚭定 Laravelはデフォルトでは mysql を䜿甚するように蚭定されおいたすが、今回はより手軜に䜿える sqlite を䜿甚したす。 ・ デヌタベヌス甚ファむルを䜜成 $ touch database/database.sqlite ・ 蚭定ファむルの倉曎 倉曎前 # Laravelのデフォルト蚭定 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD= 倉曎埌 DB_CONNECTION=sqlite ・ マむグレヌション ファむルの䜜成 テヌブル䜜成甚の マむグレヌション ファむルを䜜成したす。 $ php artisan make:migration craete_posts_table マむグレヌション ファむルを䞋蚘のように倉曎しお、テヌブルを䜜成したす。 # 倉曎箇所のみ蚘茉 public function up() { Schema::create('posts', function (Blueprint $table) { $table- > increments('id'); $table- > string('title'); $table- > string('content'); $table- > timestamps(); }); } $ php artisan migration コマンドを実行しお゚ラヌが衚瀺されなければ成功です。 ・ モデルクラス䜜成 続いおモデルクラスを䜜成したす。 Laravelはモデルクラスに ビゞネスロゞック を配眮するこずが倚いですが、今回はコヌドの量自䜓が少ないのでほずんど䜿いたせん。 $ php artisan make:model Post <?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { // fillableに指定したプロパティは入力可胜になる protected $ fillable = [ 'title' , 'content' , ] ; } ・ ルヌティングの蚭定 Laravelのルヌティングは`通垞``route/web. php に定矩したすが、APIは route/ api . php ```に定矩したす。 api . php にルヌティングを定矩するず、URLのはじめに/ api が自動的に぀きたす。 (䟋 '/ hoge /fuga' ず定矩するず実際の゚ンドポむントは'/ api / hoge /fuge' になりたす。) API のURL蚭蚈もサポヌトする芪切さがLaravelの魅力の1぀だず思いたした。 Route::middleware(['middleware' = > 'api'])- > group(function () { # 投皿䜜成 Route::post('/posts/create', 'PostController@create'); # 投皿䞀芧衚瀺 Route::get('/posts', 'PostController@index'); # 投皿衚瀺 Route::get('/posts/{id}', 'PostController@show'); # 投皿線集 Route::patch('/posts/update/{id}' , 'PostController@update'); # 投皿削陀 Route::delete('/posts/{id}', 'PostController@delete'); }); ※ Laravel8 ではこの蚘法が䜿えたせん。Laravel8で開発をする際はご泚意ください。 このルヌティングにより、 ・ http://127.0.0.1:8000/api/posts ぞのGETリク ゚ス トはPostController に定矩されおいるindex メ゜ッドで凊理 ・ http://127.0.0.1:8000/api/posts/create ぞのPOSTリク ゚ス トはPostControllerに定矩されおいるcreateメ゜ッドで凊理 されるようになりたす。 GETメ゜ッドずPOSTメ゜ッドは広く䜿われおいるHTTPメ゜ッドですので特に説明は䞍芁かず思いたす。 PATCHメ゜ッドはリ゜ヌスの䞀郚を倉曎するためのメ゜ッドです。 DELETEメ゜ッドは読んで字のごずくリ゜ヌスを削陀するメ゜ッドです。 PATCHメ゜ッドやDELETEメ゜ッドではなく、POSTメ゜ッドで実装しおも問題ありたせんが、PATCHやDELETEを䜿甚する方がそのリ゜ヌスが䜕をするかが明確に なるのでより望たしいず思いたす。 ルヌティングが蚭定できたので次はコントロヌラを䜜成したす。 ・ コントロヌラの䜜成 コントロヌラはViewからリク ゚ス トを受けおModelにデヌタを枡したす。 たず、以䞋のコマンドでコントロヌ ラク ラスを䜜成したす。 php artisan make:controller PostController PostContoroller. php を以䞋のように倉曎したす。 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Post; class PostController extends Controller { # 投皿䜜成 public function create ( Request $ request ) { $ post = new Post () ; $ post -> title = $ request -> input ( 'title' ) ; $ post -> content = $ request -> input ( 'content' ) ; $ post -> created_at = now () ; $ post -> updated_at = now () ; $ post -> save () ; return response () -> json ( Post :: all ()) ; } # 党件取埗 public function index () { $ posts = Post :: all () ; return response () -> json ( $ posts ) ; } # 投皿衚瀺 public function show ( Int $ id ) { $ post = Post :: find ( $ id ) ; return response () -> json ( $ post ) ; } # 投皿線集 public function update ( Int $ id , Request $ request ) { $ post = Post :: find ( $ id ) ; $ post -> title = $ request -> input ( 'title' ) ; $ post -> content = $ request -> input ( 'content' ) ; $ post -> updated_at = now () ; $ post -> save () ; return response () -> json ( $ post ) ; } # 投皿削陀 public function delete ( Int $ id ) { $ post = Post :: find ( $ id ) -> delete () ; return response () -> json ( Post :: all ()) ; } } create メ゜ッド Laravelが MVC モデルに準拠した フレヌムワヌク であるのを考えるず、リク ゚ス トを受け取る・受け取ったデヌタをDBに保存するずいった凊理はモデルクラスやサヌビスクラスに蚘茉すべきですが、今回はお詊しずいうこずで盎接コントロヌ ラク ラスに曞きたす。 たた、リク ゚ス トパラメヌタの入力倀チェックや゚ラヌハンドリングも今回は省略したす。 リク ゚ス トで送られおきた投皿をPostテヌブルに保存し、indexメ゜ッドず同じように投皿䞀芧を json 圢匏で返したす。 Laravelで json をリク ゚ス トを受け取る際には特に特別な䞋凊理は必芁ありたせん。 リク ゚ス トパラメヌタの Content-Type ヘッダを application/json ず指定し、 json を送ればinputメ゜ッドでその倀を取埗するこずができたす。 indexメ゜ッド 投皿䞀芧を json 圢匏でレスポンスずしお返したす。 json ()メ゜ッドはLaravelで甚意されおいるメ゜ッドです。 匕数に配列を枡すず自動的に json に倉換しおくれたす。 (第二匕数にレスポンスの ステヌタスコヌド を、第䞉匕数にContent-Typeヘッダを指定するこずもできたす。省略した堎合はそれぞれ200 , application/ json がデフォルトでセットされたす。) show メ゜ッド Post::find() メ゜ッドは匕数に枡したidで投皿を怜玢したす。 (idしか枡すこずができないこずに泚意しおください。 id以倖のカラムで怜玢する際はwhere メ゜ッドを䜿甚したす。) update メ゜ッド findメ゜ッドで倉曎察象の投皿を怜玢し、プロパティの倀にリク ゚ス トパラメヌタを代入したす。 delete メ゜ッド deleteメ゜ッドで指定したリ゜ヌスを削陀したす。 レスポンスをどのようなものにするかは遞択の䜙地があるず思いたすが、今回は察象の投皿が正垞に削陀されたこずを確認しやすいように 投皿䞀芧を返すようにしたす。 3. PostmanでLaravelで䜜成した API の動䜜確認 API の動䜜確認を行いたす。 curl コマンドでLaravelのサヌバにリク ゚ス トを送っおも良いですがパラメヌタを指定するのがやや面倒です。 そこで、 API の動䜜確認ツヌルPostmanを䜿甚したす。 www.postman.com Postmanを動かすたでの手順はこちらの蚘事に分かりやすく蚘茉されおいたす。 www.tairaengineer-note.com 詊しにLaravelで䜜成した投皿䜜成 API にリク ゚ス トを送っおみたす。 画像のようにHTTPメ゜ッド・゚ンドポむント・リク ゚ス トパラメヌタを指定しおSendボタンを抌したす。 レスポンスが正垞に返っおきおいれば成功です。 続いお先ほど䜜成した投皿を取埗したす。 投皿衚瀺 API はGETメ゜ッドでリク ゚ス トを送りたす。 投皿が衚瀺されおいたす。 終わりに 今回はLaravelでWebAPIを䜜成したした。 フルスタックフレヌムワヌク ずいうむメヌゞの匷いLaravelでしたが、WebAPIも特に苊心せず䜜成するこずができたした。( API の開発にLaravelを採甚すべきなのかずいう問題はあるず思いたすが...) 個人的な感想ずしおは api . php にルヌティングを定矩するこずでURLに/ api を付䞎しおくれる機胜が良いず思いたした。 Laravelのような高性胜な フレヌムワヌク を䜿うず自然ずセオリヌに沿った蚭蚈になりやすいです。 皆さんもWebアプリケヌションだけではなく、WebAPIの開発にもLaravel を利甚しおみおはいかがでしょうか。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
匊瀟で毎月開催し、 PHP ゚ンゞニアの間で奜評いただいおいる PHP TechCafe。2021幎8月のむベントでは瀟倖でご掻躍されおいる PHP ゚ンゞニアにもご参加いただいお「PHP8.1の新機胜」に぀いお語り合いたした。 rakus.connpass.com PHP8.1の新機胜は8.0に比べれば少ないずはいえ、順番に远いかけおみるず思ったより倧きなボリュヌムになったためむベント内容を2回に分けおレポヌトしたす。今回は埌線ずしお埌半の半分をご玹介したす。 前線はこちら。 tech-blog.rakus.co.jp PHP8.1 新機胜に぀いお Pure intersection Types 他の蚀語ではあたりない機胜 New never type 静的解析などで圹立぀期埅あり New array_is_list function ネヌミングに関する議論 Final class constants New fsync function ゚ラヌで萜ちおも曞き蟌みは保蚌 Explisit octal integerliteral notation 利甚シヌンは少ないが事故を防げそう Restrict $GLOBALS usage パフォヌマンス向䞊のための䜿甚制限 Deprecate passing null to non-nullable arguments of internal functions nullが入りうるパタヌンに芁泚意 その他の倉曎点 今埌はPHPUnitやLaravelをテヌマに開催予定 PHP8.1 新機胜に぀いお PHP8.1の新機胜は匊瀟のメンバヌが事前にShowNoteにたずめおいたす。今回はこの埌半郚分の新機胜をみおいきたした。 hackmd.io Pure intersection Types 亀差型 ず呌ばれ、型AずBがあるずきに、Aでありか぀Bの䞡方の性質をも぀型を衚すずきに A&B のように蚘述したす。 「AたたはB」のような衚珟は8.0で Union Type ずいう型が導入されおおり、 瞊棒で A|B のように蚘述したす。 「それの逆版が8.1で入りたす。」ず玹介されたした。 ※参考PHP8.0で導入されたUnion Type wiki.php.net この亀差型に察しおは次のような意芋が出たした。 新しく型を定矩しなくおも良くなる むンタヌフェヌス名から䞡方の特性を持っおいるっおいうのがひず目でわかるので、意図が分かりやすくなるし、管理もしやすくなるのかな 色々ず賛吊や考え方が出るかもしれたせん 亀差型のサンプルコヌド ShowNote より抜粋 <?php class A { private Traversable & Countable $ countableIterator ; public function setIterator ( Traversable & Countable $ countableIterator ) : void { $ this -> countableIterator = $ countableIterator ; } public function getIterator () : Traversable & Countable { return $ this -> countableIterator; } } ※参考サンプルコヌドで䜿われおいる Traversable ず Countable むンタヌフェヌスに぀いお www.php.net www.php.net 䞊蚘のコヌドを元に詳しく解説されたした。今たでは Traversable ず Countable ずいう2぀の振る舞いを持぀オブゞェクトを䜜るようなケヌスでは䞡方を継承する新しいむンタヌフェヌスを䜜る必芁がありたした。バリ゚ヌションが増えおくるず、この振る舞いずこの振る舞いずこの振る舞いの組み合わせで ずいうように、どんどん耇雑な むンタヌフェむス が増えおきたす。亀差型を䜿うこずで新しく型を定矩しなくおも良くなり、䞊蚘のように Traversable ず Countable の䞡方を持っおいるずいうのがひず目でわかりやすくなりたす。 ただし、䜿う䞊では泚意も必芁です。 ルヌプできる Traversable ずカりントできる Countable はセットになりがちず思えたすが、党然関係ないAずBずいう属性が Traversable でくっ぀けるず密結合になるのかなず思うので、気を぀けないず倉な蚭蚈になる。 実は嬉しいずころがあんたりない。 あたり䜿いすぎるず耇雑な蚭蚈になるので泚意が必芁です。亀差型が必芁になるようなシヌンでは以䞋のような疑問を持っおみるのも良さそうです。 そもそもここたで现分化しおいるこずがおかしいのでは 連想できない無関係なものが䞀぀のオブゞェクトにたずたっおいるのがうたく ドメむン を分解できおいないっお事なのでは 他の蚀語ではあたりない機胜 たた、 PHP 以倖の プログラミング蚀語 にも目を向けた議論がありたした。 普通の静的型付蚀語でもあたりない機胜。 どちらかずいえば動的型付蚀語に拡匵で導入される䟋が倚い気がしたす。 倚重継承が前提の機胜なのでいきなり䜿うようなものじゃないですが、䜿えるず䟿利。 正盎ここたでやるなら Haskell 系の蚀語や Scala ずか、倚重継承が普通にできる蚭蚈か぀匷い静的型付の蚀語を䜿うほうが良い気もしたすが、TypeScriptでも導入されおいるので動的型付蚀語ならではの䜿いどころがあるのではないでしょうか 「䟿利だけど、あたり䜿うシヌンはない」ずいう、やや消極的な意芋が倚かったものの、 RFC をみおみるず賛成意芋がほずんどで採択されおいたした。 RFC では賛成30で採択 亀差型は「もずもずPhpStormやPHPDocでサポヌトされおいたもの」ずのこずで、亀差型が導入されるこずで䜕かを壊すずいうこずもなく、「衚珟の幅が広がる」ずいうこずから受け入れられやすかったのではないかずのこずでした。 ※参考PHPStanの䜜者のブログPHP8.1の機胜ではできないが倚重継承的なこずができる事䟋も玹介されおいる medium.com New never type 垞に䟋倖出したり、exitで終わっおしたうような凊理の返り倀に never ず曞いお衚せるようになりたす。「レガシヌなコヌドであればあり埗る話だよなあず思うので、かなり䜿い所が倚いんじゃないか」ずのこずです。 <?php function redirect ( string $ uri ) : never { header ( 'Location: ' . $ uri ) ; exit () ; } RFC 段階では never ず noreturn の二案があったそうですが、最終的に never になりたした。参加者からも「 noreturn のほうがわかりやすい気もするんですけどね。」ずいう意芋がありたした。「悪くなかったず思うんですけど、二語になるからややこしいっお話があった」「noずreturnの間にハむフン入れるのか、アンダヌバヌ入れるのかっおなっお䞀語にしようっお話になったようです。」ずのこずです。「静的解析などをするうえでは never は別の目的で䜿いたいので noreturn を掚しおいたみたいです」ずいう背景もあったようです。 静的解析などで圹立぀期埅あり 䞊蚘のサンプルコヌドのように、リダむレクトしたり exit() で終わっおしたうずきに曞いおおけば「静的解析ずかでもうたく䜿えそうな気がしたすね。」ずのこずです。PhpStormで「 redirect を呌んだ次の行ずかに違う凊理があるず実行されない ステヌトメント ずいう譊告が出せる。」ずいう実珟むメヌゞです。 最終的に never が採甚されたしたが、静的解析に関しおは圹立぀期埅が持おそうです。「個人的にはReadonlyに䞊んで期埅しおいる機胜ですね。」ずのこずでした。 New array_is_list function 配列のキヌが0番目からスタヌトする配列なのか 連想配列 なのかを刀定する機胜です。 array_is_list ずいう関数を䜿うこずで、0番目から始たる配列なら true 、それ以倖は false が返りたす。 <?php $ list = [ "a" , "b" , "c" ] ; array_is_list ( $ list ) ; // true $ notAList = [ 1 => "a" , 2 => "b" , 3 => "c" ] ; array_is_list ( $ notAList ) ; // false 参加者から質問がありたしたが、 [0=>"A", 2=>"B", 3=>"C"] ずいう 連想配列 でも false が返るようです。 ネヌミングに関する議論 array_is_list ずいうネヌミングに関しおは様々な議論があったようです。 RFC の議論を読むず is_list ずいう候補もあったこずが曞かれおいたす。 wiki.php.net 参加者からも「名前がすごいですよね。」「䜕だろう同じこずを蚀っおいる感じがする。」「名前を芋れば芋るほどモダモダしたすね。」ずいう声があがっおいたした。 ここで議論しおいるものは「 コンピュヌタサむ゚ンス でいう連結Listずは違う」「これたでList構造ずいうのは分割代入のために䜿われおいた」が、そうではなく「玔粋な配列」ずのこずです。「静的解析などではlistずいう型が䜿えるようになっおいお連番で衚す」ずいうこずで、そういう経緯もあっおこういう名前になったのではないか、「奇跡的なバランスでできた名前ですね。」ず解説されたした。 Final class constants 継承したclassの定数をオヌバヌラむドするこずを犁止するこずが出来るようになりたす。これたではclass間で定数を曞き換えるこずができたため、芪classの蚭蚈者の意図に反しお「䞀定ではない」状態が起こりうるようになっおいたした。 <?php class Foo { final public const X = "foo" ; } class Bar extends Foo { public const X = "bar" ; } // Fatal error: Bar::X cannot override final constant Foo::X 前線の「 Readonly Properties 」で final の䜿い方ずの違いが玹介されたしたが、「 Readonly ずはたた䜿い所が違う」ずのこずです。 New fsync function ファむルの曞き蟌み内容をメモリから実際にファむルぞ曞き蟌む機胜です。 これは内郚実装が倉わっお、「现かく蚀うずI/Oの順番が倉わった」こずで、「途䞭で凊理が止たっおも曞き蟌みをちゃんずしおくれる」ずのこずです。 ゚ラヌで萜ちおも曞き蟌みは保蚌 ここでは「趣味で PHP でDBを䜜っおいる」ずいう参加者から利甚シヌンの䞀䟋が玹介されたした。 キャッシュメモリ からディスクに曞き蟌むずころで゚ラヌハンドリングずかで fsync が䜿えたらな、ず思っおいた そういう甚途でしかあたり䜿わない たしかに甚途は少なそうですが、䜿い方がむメヌゞできお他の参加者も玍埗しおいたした。 Explisit octal integerliteral notation 0o れロ・オヌずいう接頭詞を眮くこずで8進数ず明瀺できるようになりたした。 元々、 0 で始たる堎合は8進数ずしお扱われ、䟋えば 16 == 016 の 016 は8進数ず解釈されるためfalseになりたす。 0o が䜿えるようになり芖芚的にわかりやすく衚蚘できたす。 利甚シヌンは少ないが事故を防げそう 8進数を䜿う堎所は限られるのでい぀䜿うのだろうずいう疑問もありたすが、䞀䟋ずしお chmod の利甚シヌンが玹介されたした。 chmod でファむルの パヌミッション を蚭定するずき 0755 ず曞くず正しく パヌミッション を蚭定できたすが、間違えお 755 ず曞くず意図しない動䜜になりたす。 「誰かが 0755 の 0 が邪魔じゃないず思っお消したら事故になる、ずいうケヌスを防げるんじゃないかず思いたす。」ず、 0o ず明蚘するこずで事故が防ぎやすくなるメリットの䞀䟋が玹介されたした。 ※参考 chmod 関数 PHP: chmod - Manual たた、他にも「 PHP のバヌゞョンアップしようずした時に、8進数や16進数の振る舞いが倉わりたすずなった時にどうやっお探せば良いんだず思ったんですが、接頭詞を眮けば探しやすくなりたすね。」ずいう意芋もありたした。 そのほか、なぜ 0 ず o ずいう芋間違えやすい文字を連続しお䜿うのかずいう意芋もありたしたが、8進数octaずいう意味から来おいるこずが解説されたした。16進数はHexの x を䜿っお 0x です。このあたりは PHP 以倖の蚀語でも採甚されおいる衚蚘法でもありたす。 Restrict $GLOBALS usage ここからは仕様倉曎の機胜に぀いおの玹介です。スヌパヌグロヌバルの $GLOBALS で他の倉数にアクセスできる特殊な倉数ですが、䞀郚の䜿い方ができなくなりたす。 <?php $ a = 1 ; $ GLOBALS [ 'a' ] = 2 ; var_dump  $ a ; // int2 // Generates compile-time error: $ GLOBALS = [] ; $ GLOBALS += [] ; $ GLOBALS =& $ x ; $ x =& $ GLOBALS ; unset ( $ GLOBALS ) ; パフォヌマンス向䞊のための䜿甚制限 なぜこのような倉曎が行われたのかに぀いお、次のように解説されたした。 他の倉数にはない特殊な䜿い方が出来るようにしおいたこずで、 PHP 党䜓の配列アクセスぞの ボトルネック になっおいた 芋るからに誰も䜿わなさそうな凊理が PHP ナヌザヌ党䜓の凊理の足かせになっおいた 䞖に転がっおいるラむブラリを芗くずそんな䜿い方しおいるや぀ほずんど無いやずなった じゃあ消しちゃおうずいうこずで䜿えなくしようずなった PHP 党䜓の配列アクセスのパフォヌマンス向䞊のため、「元々はできおいたんだけど今埌はできなくなりたす。」ずのこずです。誰も䜿わなそうではありたすが、「ある皮䟿利な機胜だったず思うんですよね。 $GLOBALS 経由でなんでもアクセスできたしたし。テストで倉数党郚吹っ飛ばすずか。」「無理やりいじるずかはあるのかなず。 WordPress のカスタマむズ案件ずかで、ベヌス郚分はさわれないけどどうにかこうにかしたいみたいなケヌスずか。」ずいう意芋もあり、䜿わないだろうず決め぀けるのも危険かもしれたせん。 なお、「 PHP8.1でいきなり゚ラヌになりたす 」ずのこずで、非掚奚化による譊告などではない点も泚意が必芁です。 なお、 $GLOBALS の䜿甚に぀いおは䞊蚘のような特殊なケヌスで䜿甚するこずはあるかもしれたせんが、本来は「これ自䜓䜿うべきではないですね。」ずいう意芋も出おいたした。今回の倉曎の圱響にかかわらず、 なるべく $GLOBALS を䜿わず別の方法を怜蚎するほうが良さそうです。 Deprecate passing null to non-nullable arguments of internal functions str_contents ずいう暙準関数の第2匕数に null を指定するこずが非掚奚化されたす。 <?php // PHP8.1 では非掚奚、PHP9 では譊告が出力される str_contains ( "string" , null ) ; str_contents はPHP8.0から導入された暙準関数で、第1匕数の文字列䞭に第2匕数の文字列が存圚する堎合にtrueが返されたす。 PHP: str_contains - Manual PHP8.0では第2匕数にnullを指定するずtrueが返されおいたしたが、これ自䜓が䞍具合だったようです。「 PHP のナヌザヌ定矩関数ずかだず普通はStringっお型宣蚀しおいるので通らないんですが、 PHP のネむティブな関数だからこそ入っちゃったバグですね。」ずのこずです。内郚的にnullをキャストしたこずで空文字列ずしお凊理され、「空文字列はあらゆる文字列の郚分集合なのでtrueになる」ようです。 nullが入りうるパタヌンに芁泚意 str_contents に察しお盎接的にnullを指定するケヌスはあたりなさそうですが、参加者からは以䞋のような泚意点も共有されたした。 未定矩倉数ずかがnullが入りうるパタヌンなので芁泚意ですね PHP8.0から導入されたのでそんなに䜿っおいないず思いたすが、䟿利な関数なので発生しうるかな だからPHP8.1で䞀回譊告を挟むんでしょうね PHP8.0で早速䜿い始めたけど、特定のパタヌンで未定矩倉数が玛れ蟌むこずはありそうです。䞇が䞀そのようなパタヌンがあっおもPHP8.1の間は譊告が出るので芋぀けたらすぐに察凊しおおくず良さそうです。 その他の倉曎点 時間の関係ですべおは玹介できたせんでしたが、これ以倖の倉曎点も以䞋にたずめられおいるのでご確認ください。たた、機䌚があれば次回以降のPHPTechCafeで話題にあがるかもしれたせん。 hackmd.io 今埌は PHPUnit やLaravelをテヌマに開催予定 次回以降は9月ず10月のテヌマず開催日が既に決たっおおり参加者を募集䞭です。参加頂くずブログには掲茉しきれない现かい情報や、 PHP の最新動向のニュヌスの玹介などもありたすのでぜひご参加ください。 rakus.connpass.com rakus.connpass.com ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに おすすめの読者局 芁件定矩ずは よくある問題 芁求が䞍足しおいる 芁求が曖昧 そもそも芁求を叶えるのが䞍可胜 芁件定矩の始め方 おわりに はじめに こんにちは。rs_chankoです。 最近はもっぱらオフショア管理の業務をしおいたす。 最初は玍品物のチェックがメむンだったんですが、ここ数か月、案件の䟝頌を出すこずが増えたした。 最初は芋様芋真䌌でリヌダヌのやっおいるこずをやっおみおはいろいろ指摘を受けおいたのですが、 自分の持っおいる技法や芳点では思うように内容を拟いきれず、䟝頌内容がいたいちになっおしたうこずが倚いこずに気付きたした。 「このたたではだめだ」ず思いいったん本を読んでみようずいうこずで芁件定矩に぀いおの本に手を出しおみたした。 䜜業䟝頌っお芁件定矩の簡易版っお感じなんですよね。䜓感的にですが。 そこで今回はその本がなかなか初玚者に易しく、さっそく実践しおいるので蚘事にしおみようかなず思い曞いおいるずいったずころです。 今回読んだ本はこちらです。(これもリヌダヌのお勧めで決めたのは秘密です。) www.amazon.co.jp 衚玙の通り、前半は目玉焌きを䜜る工皋で芁件定矩ずは䜕ぞやずいう説明がされおいる本です。(ずっおもずっ぀きやすい) ◆ 関連ブログも合わせおご参考ください。 ・ 芁件定矩 ずは【たずめ】 ・ プロゞェクトマネゞメントTips 20遞 珟堎から語るプロマネの極意 おすすめの読者局 これから芁件定矩に参画する人 芁件定矩をするメンバヌに教育する人 ふわっずしおいる案件を圢にしお䟝頌する人(私はこれです) 芁件定矩ずは そのたた芁件を定矩するこずなんですが、実際その「芁件」を「定矩する」ずは䜕なんでしょうか。 ■芁件=泚文 䟝頌する人(ナヌザヌや䌁画郚など)が開発に察しお「こういうものを䜜っおほしい」「こんな機胜があったら䟿利」ずいうずころから、プロダクトの開発は始たるず思いたす。 個人であればそのふわっずしたものからあれやこれやず぀けたい機胜を぀けおアプリなりなんなりを䜜成したすよね。 ただグルヌプや䌁業だず最初に認識を合わせおおかないず倧きな霟霬が起きたり、倧量のバグの枩床になりかねたせん。 そういったこずを避けるために 䜜っおほしい人が䜜る人に出す芁望 が芁件になりたす。 䟋えばの話にはなりたすが、なんでもできる䞇胜な車を䜜ろうず考えおいたす。 䟝頌䞻からの芁望は * 空を10m飛びたい * ベヌスは日本補の䞀般車にしたい * 陞䞊は通垞通り走れるようにする * ガ゜リンが燃料 これらの芁望が 芁件 です。 ただ、お客さんが芁件を䞊べたらすべおが叶うずいうわけではありたせん。 魔法の力で䜕ずか空を飛ぶ車は䜜るこずができるずしたす。 日本補の車に空を飛ぶ 拡匵機胜 を付けたした。 䜙分なパヌツを぀ける堎所もなくなり、完璧な圢に仕䞊げるこずができたした しかし、あずから䟝頌䞻が「氎䞊も走れるようにできないかな」ず蚀い出したした。 事前に決たっおいればそれ甚に䜜るこずもできたしたが、 空陞甚に䜜り䞊げおしたったため、氎䞊を走れるようにずいうのは叶えられたせんでした。 このため、こちらの芁望は諊めおもらうこずにしたした。 本来であれば、氎䞊も走れるようにしたいず蚀うのは、芁望をたずめる段階で出しおおいおもらうべきです。 ただ、その郚分を完璧に詰めずに車を䜜っおしたったため、䟝頌䞻は枋々諊めるこずになりたした。 このような「できるこず」「しおほしいこず」「できないこず」をはっきりずしおおくこずが 芁件定矩 なんですね。 よくある問題 珟実的な開発の話に戻したす。 事業郚や取匕先などから新しい補品や、新しい機胜を䜜る話が開発に降りおくるでしょう。 芁件定矩の堎を蚭けお、仕様に぀いおたぁたぁ詰めた状態たで持っおいったかなずいうずころで、 「これやっおください」が決たったずしたす。 開発者はそれを実珟するために動くず思いたす。 ただ、次のような問題が埀々にしおあるはずです。 芁求が䞍足しおいる 実際に䜜っおみたものはいいものの、既存の機胜の考慮が足りおいたせんでした。 「あれ、この既存機胜も新機胜反映しないずいけないんだっけ」「え、無芖しおいいんじゃないの」 ずいった具合に埌から芁件の芋盎しをするこずもあるんじゃないでしょうか 芁求が曖昧 どんなものを䜜るかむメヌゞは぀きたした。 むメヌゞは぀いたものの、仕様が虫穎で「この条件は付けるべきなのか」「この時の動䜜はこれでいいのか」が分からず、蚭蚈段階で詰みたすね。 もっず酷ければ実装しおテストしおいるずきに気付いたりするこずもありたす。 そもそも芁求を叶えるのが䞍可胜 芁件定矩の時点で䞍可胜やないかヌいずいった事態。 技術的な物だったり、既存機胜を壊しおしたったりなど、様々な理由でできないこずがあったり。 基本はスタヌトの段階で気づくずは思いたすが、䜜っおみお気づくなんおこずも珟堎では起きたすね。 芁件定矩ではじゃあいざ蚭蚈だ実装だより前に今あるものに察しおどのように察応しおいくのか、そこたで考える必芁が出おきたす。 今ある機胜や実珟したい機胜ず、バッティングする堎合どちらを生かすか、どう共生させるか 実珟したい機胜が今の補品や機胜に䞎える圱響はどの皋床がいいのか そもそも実珟したい機胜の现かな぀くりはどこたで考慮すればいいのか これでいいのではで進めおしたうこずで、正しく䜜った぀もりが䟝頌䞻ずの間で出来䞊がりに乖離が出おしたいたすよね。 䟝頌䞻からの芁求が足りおいないのであれば芁件定矩の段階ですり合わせおいくずいうフェヌズが必芁です。 各䌚瀟や個人で流儀や手法はあるず思いたすが、 画面のモックなどのむメヌゞや、システム郚分の仮蚭蚈を䜿いながら、䞍足しおいる芁求を匕き出すこずが開発偎の芁件定矩です。 芁件定矩の始め方 たずは実珟したいこずを䞀芧にしおわかりやすくする必芁がありたす。 曞籍では䌁画曞の䜜り方ずしお曞かれおいたしたが、ナヌザヌや事業郚の望んでいるものがふわっずしおいるずきには開発偎でそこたでたずめる堎合もあるず思いたす。 曞籍で曞かれおいるような技法を、アレンゞしお業務に取り入れたりもしおいるため、 ブログ甚にさらにアレンゞしお、曞籍の技法を簡単にたずめおみたした。 今回は蚘事甚に遠い昔にアルバむト時代の店長にアプリを䜜っおず蚀われた際の芁求をたずめおみたす。( アプリ制䜜 自䜓は諞事情あっおやっおいたせんが。。。) その時に店長が䜜っおくれずいったアプリの芁求は以䞋のようなものです。 倖囜人メンバヌのためのマニュアルアプリ メンバヌ同士で泚意点を共有できるように、蚘事を投皿できる いいねボタンみたいに参考になったよボタンを蚭眮しおポむント制にする 圓時こんなふわっずしたオヌダヌだけでアプリ䜜っおず蚀われ困惑したしたが、それは眮いおおきたす。 これだけ聞いた際にどんなこずが実珟できればいいかなず思っお ヒアリ ングをしたので、そこから芁求をたずめおみたした。 抂芁 倖囜人・新人メンバヌのための手順曞・泚意事項共有アプリ 目的 ・䌚瀟から提䟛される手順曞は぀ぶれた写真だったり、癜黒で分かりにくい ・文字での説明は぀いおいるけど、倖囜人にはニュアンスで䌝わりにくい ・䞊䜍メンバヌが知っおるコツを集玄しおどのメンバヌでもわかるように動画などで共有したい 珟状 ・玙のマニュアルのみで、䞊䜍メンバヌが぀きっきりで教える必芁がある ・耇数のメンバヌに手順曞には曞いおいない同じ泚意をしたこずがある ・メモを自発的にするメンバヌず党くしないメンバヌがいる あるべき姿 ・䞊䜍メンバヌでない人でも教育ができるようになる ・誰かに䞀床説明したら、メンバヌ同士にその内容が共有される ・メモをしないメンバヌでも手元に情報が残っおいる 目暙達成に必芁な芁玠 ・ twitter などのように各メンバヌが蚘事を投皿できるアプリ ・動画付きで投皿ができる ・参考になる床合いで゜ヌトするこずができる(必芁性の高いものから芋るこずができる) 無芖しおいい芁玠 ・投皿に察するコメント機胜は必芁ない 䟋なのでかなり荒いですがこんな感じで「できるこず」「しおほしいこず」「できないこず(厳密にいえばしなくおいいこずですが)」を䞊べたした。 芖芚的に䜕をすればいいのかがわかるため、実珟したいこず実珟できないこずを早い段階で拟うこずができるようになりたす。 これが芁件定矩の第䞀歩、スタヌトです。 こちらを元に実装や蚭蚈をする開発偎ず䟝頌䞻偎で、実際に出来䞊がるもののむメヌゞをすり合わせおいきたす。 出来䞊がっおから「あれはできないの」「これはできないの」ずなっおしたうず、最悪䞀から䜜り盎しお倍の 工数 がかかっお玍品が倧幅に遅れおしたうず蚀うこずもありたすね。 そういうこずを避けるためにも、じっくり芁件定矩で時間をかけお、蚭蚈、実装はすんなり、サクサク進めお埌から䜙蚈な工皋が起きないようにするこずを心がけるこずが倧事です。 そのためにも芁件定矩のスキルを習埗しお、確実な状態でのスタヌトを切れるようにするこずが䞊手な開発の第䞀歩です おわりに 最近はあたり倧きな機胜を扱っおいないので、䟋で皋床瀺した皋床の粒床のものを耇数打っおいたす。 仕事でもオフショア先に䟝頌する際にも䞊蚘のように文面を組み立おおパタヌン化しお以来前の確認もしやすいようにしおいたす。 なのであんたりテクいこず曞けおないんですが、芁件定矩や䜜業の䟝頌に重芁なのは䞊蚘の衚みたいな内容だずいうこずが本を読んで確信を持おた、ずいった感じです。(やっおいるこずが、䞖間的に䜿われるような技法だったず蚀う裏どり、心匷く感じお倧事だず思いたす。) 目的(䜕がしたいのか、) 珟状(問題点、䞍足しおいるずころ) あるべき姿(問題が解消された状態、できるようになるこず) 必芁な芁玠(あるべき姿にするためにすべきこず、付随しおできるべきであるこず) 䞍芁な芁玠(考慮する必芁のないこず、察応できるけどしなくおよいこず) この蟺をはっきりしおおくこずでいざ蚭蚈だ実装だっおなった時に迷うこずも枛りたすし、 玍品だっお時に「いやそれは芁件ずしお提瀺されおいないので」ずいう材料になるんですね。 逆に蚀えばですが、はっきりしおいないず「え、これは圓然じゃないの」ず抌し切られ、ネットでよく芋るn次受けの地獄珟堎みたいなこずが起こるんですよね。。。 自分の身を守るため、クラむアントず良奜な関係を築くためにも、芁件定矩の技法は自分の物にしおいきたいず思いたした。 皆さんも気持ちよく、無駄のないスマヌトな開発をするためにも、こちらの本読んでみおください。 䜿える技法から埐々に取り蟌んでいくこずで珟状を打砎するきっかけになるかもしれたせんね。。。 さらに现かいこず、蚭蚈チックな話は玹介した曞籍に现かに曞いおあるのでぜひ読んでみおください。 内容的にも読みやすいのでどんな方にもおすすめです。 たず第䞀に抑えるずころ的な蚘事になっおしたいたした。 あたり现かく曞きすぎるず盗䜜になっおしたいそうなのでこんな感じで悪しからず 。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
技術広報の yayawowo です。 iPhone や iPod のモバむルデ バむス をお持ちの皆様、 「 Podcastポッドキャスト 」ずいう無料のアプリをご存知でしょうか 是非ご自身のモバむルデ バむス をご確認ください。 Podcast  ポッドキャスト がデフォルトで既にむンストヌルされおいるはずです。 むンタヌネットを通じお配信された音声や動画を無料で芖聎できるサヌビスずなっおおり、暇぀ぶしや勉匷にも圹立぀ 最匷アプリ なんです 今回は、゚ンゞニアやデザむナヌの皆様向けにTech系の Podcast  ポッドキャスト 番組をにたずめおみたした。 本ブログを通しお、是非おうち時間を有効掻甚する䞀぀の手段に Podcast  ポッドキャスト を远加しおいただけたすず幞いです。 囜内倖のTechç³» Youtube チャンネルをたずめた蚘事は以䞋になりたす 【2021年版】国内外Tech系YouTubeチャンネル10選 - 登録者数順まとめ! - - RAKUS Developers Blog | ラクス エンジニアブログ Podcastポッドキャストを始めおみよう Techç³»Podcast人気番組 Apple Events Rebuild Apple Events (video) Apple News Radio ワンボタンの声 backspace.fm Image Cast texta.fm TEDTalks テクノロゞヌ TED Radio Hourt 電脳タむガヌ飯店 Off Topic // オフトピック 石川枩のスマホNo.1メディア 匊瀟゚ンゞニアおすすめ番組 fukabori.fm UIT INSIDE EM . FM #EMFM PHPの珟堎 ajitofm 終わりに Podcast  ポッドキャスト を始めおみよう Podcast  ポッドキャスト は Apple 瀟が提䟛しおいるアプリケヌションずなりたす。 名前の由来は、ポヌタブルマルチ メディアプレヌダヌ である iPod  アむポッド ず、攟送を意味するbroadcastブロヌドキャストを組み合わせた造語ずのこずです。 最近では、 Apple 瀟だけでなくGoolgeや Spotify でも Podcast がでおおりたす。 Google Podcasts Spotify for Podcasters 今回は、 Apple 瀟が提䟛しおいる Podcast の始め方をご説明したす。 1. Apple Store で「 Podcast  ポッドキャスト 」を怜玢し、アプリを開く 図 Apple Store 画面 2. Podcast  ポッドキャスト のアプリが起動する 図 Podcast 起動画面 3. 芋たいカテゎリ or キヌワヌドを怜玢する 図 Podcast 怜玢画面 たったこれだけです。簡単ですよね。 次に゚ンゞニアやデザむナヌの皆様に芋おいただきたい、Techç³» Podcast  ポッドキャスト の番組をご玹介したす Techç³» Podcast 人気番組 Podcast の「テク ノロ ゞヌ 」人気番組ランキングは以䞋の通りです。 順䜍 番組名 1 Apple Event 2 Rebuild 3 Apple Events (video) 4 Apple News Radio ワンボタンの声 5 backspace.fm 6 Image Cast 7 texta.fm 8 TEDTalks テク ノロ ゞヌ 9 TED Radio Hour 10 電脳タむガヌ飯店 11 Off Topic 12 石川枩の スマホ No.1メディア ※2021/9/17時点での情報です。 では、早速番組ごずに玹介しおいきたす Apple Events Apple Events (audio) Apple テク ノロ ゞヌ Â¥0 podcasts.apple.com 秋の新補品を発衚した Apple 瀟が配信する番組「 Apple Events」が堂々の1䜍 番組説明 The Apple Events podcast is home to the latest keynote addresses. Listen to announcements of new products and services and browse the archive of past events to relive revolutionary moments in the history of personal technology. 匕甚元 Podcast 配信先リンク Apple Podcast 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング Apple Inc. 2019幎 8 Apple Events 䞍定 期新補品が発衚された時 ※2021/9/17時点での情報です。 人気の゚ピ゜ヌドはこちら 最新゚ピ゜ヌド  ‎Apple Events (audio):Apple Podcast内のApple Event, September 2021  ‎Apple Events (audio):Apple Podcast内のWWDC21 Keynote  ‎Apple Events (audio):Apple Podcast内のApple Event, April 2021 ※2021/9/17時点での情報です。 こちらの番組は音声のみの配信ずなっおいたす。 もし動画、日本語字幕ず合わせお芖聎したい堎合は、これからご玹介する「 Apple Events (video)」番組をご確認ください Rebuild Rebuild Tatsuhiko Miyagawa テク ノロ ゞヌ Â¥0 podcasts.apple.com Tech系番組の日本で䞀番有名ず蚀われおいるのが、「Rebuild」です 番組説明 りェブ開発、プログラミング、モバむル、ガゞェットなどにフォヌカスしたテク ノロ ゞヌ ç³» ポッドキャスト です。 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング Tatsuhiko Miyagawa 2013幎 441 rebuild.fm 䞍定 期(月に3回くらい) ※2021/9/17時点での情報です。 rebulid.fmの䞭で最新の゚ピ゜ヌドは以䞋になりたす。 最新゚ピ゜ヌド  ‎Rebuild:Apple Podcast内の316: Domestic Violence Camcorder (N)  ‎Rebuild:Apple Podcast内の315: Our Bank Doesn't Like Your Voice Service (higepon)  ‎Rebuild:Apple Podcast内の314: Takeda Shingen of Silicon Valley (hak) ※2021/9/17時点での情報です。 rebuild.fmは、色々なゞャンルのゲストを亀えた トヌク が聞けるのでどの゚ピ゜ヌドも楜しく聞くこずができる番組ずなっおおりたす 9/14に最新゚ポ゜ヌドも䞊がっおいたすので、こちらも芋逃せたせんね Apple Events (video) Apple Events (video) Apple テク ノロ ゞヌ Â¥0 podcasts.apple.com 1䜍に続き、 Apple 瀟の新補品や新サヌビスの発衚を アヌカむブ 動画ずしお配信しおいる Podcast の番組が「 Apple Events (video) 」です Apple 補品奜きの方には有難い番組ですね。 番組説明 The Apple Events podcast is home to the latest keynote addresses. Watch announcements of new products and services and browse the archive of past events to relive revolutionary moments in the history of personal technology. 匕甚元 Podcast 配信先リンク Apple Podcast 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング Apple Inc. 2008幎 53 Apple Events (video) 䞍定 期新補品が発衚された時 ※2021/9/17時点での情報です。 最新゚ピ゜ヌド  ‎Apple Events (video):Apple Podcast内のApple Event, September 2021  ‎Apple Events (video):Apple Podcast内のWWDC21 Keynote  ‎Apple Events (video):Apple Podcast内のApple Event, April 2021 ※2021/9/17時点での情報です。 こちらの番組は前述した通り音源だけでなく、動画の配信も行っおおりたす。 たた、 スマヌトフォン で芖聎するず字幕も぀いおみれたすので英語の解説でも問題なく理解できたす Apple 補品だけでなく、英語孊習にも䜿える良い番組です Apple News Radio ワンボタンの声 Apple News Radio ワンボタンの声 ワンボタンの声制䜜委員䌚 テク ノロ ゞヌ Â¥0 podcasts.apple.com Apple 関連のニュヌスを䞭心にナヌザヌ目線で玹介しおいる Podcast が「 Apple News Radio ワンボタンの声」ずいう番組です やはりどの番組も、話題は Apple の新商品に぀いおばかりですね。 番組説明 Mac , iPod , iPhone , iPad , Apple watch , Apple TVなど Apple にた぀わるニュヌスをもずにリスナヌず䞀緒に楜しむ podcast です。Old Mac ナヌザヌには懐かしい埀幎の Apple 補品を振り返る"Time machine radio"も奜評です。30分間の番組を火・朚・土の早朝に配信しおいたすので通勀、通孊のお䟛にお楜しみください。 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング ワンボタンの声制䜜委員䌚 2009幎 15 Apple News Radio ワンボタンの声 火・朚・土の早朝 ※2021/9/17時点での情報です。 最新゚ピ゜ヌド  ‎Apple Podcast内のApple News Radio ワンボタンの声  ‎Apple Podcast内のApple News Radio ワンボタンの声  ‎Apple Podcast内のApple News Radio ワンボタンの声 ※2021/9/17時点での情報です。 30分ずいう尺で配信を行っおいたすので、通勀・通孊期間にぎったしのコンテンツずなっおおりたす。 Apple ナヌザの皆様、是非ご芖聎ください backspace.fm backspace.fm backspace.fm テク ノロ ゞヌ Â¥0 podcasts.apple.com 続きたしお、 フェンリル 株匏䌚瀟さんが提䟛しおいる「backspace.fm」です 番組説明 䞀週間分のテック・ガゞェットニュヌスを配信する ポッドキャスト 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング Koichi Aoki 2014幎 664 backspace.fm 䞍定 期(3日に1回くらい) ※2021/9/17時点での情報です。 以䞋が最新゚ピ゜ヌドになりたす。 最新゚ピ゜ヌド  ‎backspace.fm:Apple Podcast内の#411:【後編】次が人生最後のクルマなら、あなたは何を買いますか?  ‎backspace.fm:Apple Podcast内の#411:【前編】次が人生最後のクルマなら、あなたは何を買いますか?  ‎backspace.fm:Apple Podcast内の#410:【お便りコーナー】転職ホヤホヤの山川記者と議論する最近のカメラ事情とコロナ禍での働き方 ※2021/9/17時点での情報です。 1週間分のテック・ガゞェットニュヌスを配信しおいるず蚘茉がありたすが、曎新頻床を芋るず3日に1回くらいず頻床は高めです。 ぀たり、最新情報がすぐに入っおくる良いコンテンツずいうこずになりたすので是非ご興味あればご芖聎ください Image Cast Image Cast Image Club テク ノロ ゞヌ Â¥0 podcasts.apple.com クリ゚むティブな話を聞きたい方におすすめなのが、「Image Cast」です 番組説明 Image Castは、個人でものを䜜る人の集たりImage Clubずしお掻動しおいるあずたず鉄塔が自宅からお送りする30分ほどの Podcast です。技術・デザむン・制䜜・衚珟などに関係のあるような無いようなトピックを䞭心に、毎週二人が気になったもの、発芋したこずをそれぞれ持ち寄っおおしゃべりしたす。 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング Image Club 2020幎 52 Image Club 毎週土曜日朝 ※2021/9/17時点での情報です。 人気の゚ピ゜ヌドはこちら 最新゚ピ゜ヌド  ‎Image Cast:Apple Podcast内の#49 うまくいかないのが自分のせいか世界のせいかは気分で決めていい  ‎Image Cast:Apple Podcast内の#48 全ての道はマリオペイントに通ず  ‎Image Cast:Apple Podcast内の#47 ポイントカードお持ちですか? ※2021/9/17時点での情報です。 制䜜、衚珟、技術、デザむンなどに関係のある話が30分1時間くらいで聞けるので通勀やお昌䌑憩の際に最適なコンテンツずなっおおりたす。 毎週土曜日に曎新されるそうですので、気になった方はフォロヌしおみおくださいね texta.fm texta.fm Design and Engineering team at PIXTA テク ノロ ゞヌ Â¥0 podcasts.apple.com 動画・動画の玠材サむトを運営しおいるピクスタ株匏䌚瀟さんの「texta.fm」です Podcast で配信しおいるなんおすごいですね 。 番組説明 texta.fmは、ピクスタで働くデザむナヌ・゚ンゞニアによる技術ブログ「おくすた」の ポッドキャスト 版です。 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング Design and Engineering team at PIXTA 2020幎 11 texta.fm 䞍定 期(2か月に1回くらい) ※2021/9/17時点での情報です。 最新゚ピ゜ヌドはこちら 最新゚ピ゜ヌド  ‎texta.fm:Apple Podcast内のSideshow 7. Jbuilder was Right  ‎texta.fm:Apple Podcast内の7. Fat Controllers and Models  ‎texta.fm:Apple Podcast内の6. 1on1 in Public ※2021/9/17時点での情報です。 テスト駆動開発 TDDの スペシャ リストずしお知られる和田卓人さんずの トヌク が聞けたす。 ラゞオ感芚で孊習ができるずおも良いコンテンツです TEDTalks テク ノロ ゞヌ TEDTalks テクノロゞヌ TED テク ノロ ゞヌ Â¥0 podcasts.apple.com 䞖界䞭の発明家や研究者たちが技術発信をしおいる番組が「TEDTalks テク ノロ ゞヌ 」です 番組説明 TEDカンファレンス、TEDxむベント、䞖界䞭の提携むベントのステヌゞから、䞖界最先端の発明家、研究者たちが、デモや発芋やビゞョンを披露しおくれたす。これらに加え、たくさんのビデオが、英語の スクリプト や最倧80の蚀語から遞んだ字幕を付けおTED.comから無料でダりンロヌドできたす。TEDは「広める䟡倀のあるア むデア 」を远い求める非営利組織です。 匕甚元 Podcast 配信先リンク Apple Podcast 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング TED Talks 2012幎 120 TEDTalks テクノロゞヌ 䞍定 期 ※2021/9/17時点での情報です。 人気の゚ピ゜ヌドはこちら 最新゚ピ゜ヌド  ‎TEDTalks テクノロジー:Apple Podcast内の電化による素晴らしい未来の空の移動 | コリー・コウムズ  ‎TEDTalks テクノロジー:Apple Podcast内の都市が交通機関をデトックスする | モニカ・アラヤ  ‎TEDTalks テクノロジー:Apple Podcast内のパンデミックを乗り越え、公衆衛生を再考する上でテック企業にできること | カレン・デサルヴォ、ホイットニー・ペニントン・ロジャース、クリス・アンダーソン ※2021/9/17時点での情報です。 5分皋で終わる内容や、1時間語り続けおいるものたで゚ポ゜ヌドは様々ありたす。 ご興味のある分野から是非ご芖聎ください なお、日本語の字幕も蚭定できたすのでご掻甚ください。 TED Radio Hourt TED Radio Hour NPR テク ノロ ゞヌ Â¥0 podcasts.apple.com アメリ カで攟送しおいるラゞオの Podcast 「TED Radio Hourt」です 番組説明 Exploring the biggest questions of our time with the help of the world's greatest thinkers. Host Manoush Zomorodi inspires us to learn more about the world, our communities, and most importantly, ourselves. 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング NPR 2012幎 150 TED Radio Hour 毎週金曜日 ※2021/9/17時点での情報です。 最新の゚ピ゜ヌドはこちら。 最新゚ピ゜ヌド  ‎TED Radio Hour:Apple Podcast内のListen Again: The Gratitude Chain: A.J. Jacobs  ‎TED Radio Hour:Apple Podcast内のThe Food Connection  ‎TED Radio Hour:Apple Podcast内のListen Again — Esther Perel: Building Resilient Relationships (2020) ※2021/9/17時点での情報です。 アメリ カのラゞオ局が配信しおいるずいうこずもあり、党゚ピ゜ヌド英語ずなっおおりたす。 英語が埗意な方にずっおは面癜い番組なのではないでしょうか 電脳タむガヌ飯店 秘密結瀟 電脳タむガヌ飯店 dentora テク ノロ ゞヌ Â¥0 podcasts.apple.com 次はなんず2021/8月から配信を開始したばかりの「電脳タむガヌ飯店」ずいう番組です 始めたばかりにも関わらず、Tech系ランキングで䞊䜍にきおいる番組ずなっおおりたす。 番組説明 毎回、テク ノロ ゞヌ ×䜕かで䞖界埁服が実珟できないかをテヌマに語る䞖界埁服系 Podcast 番組です。 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング 電脳タむガヌ 2021幎 5 電脳タむガヌ飯店 毎週火曜20時 ※2021/9/17時点での情報です。 最新゚ピ゜ヌド  ‎秘密結社 電脳タイガー飯店:Apple Podcast内の#05 全人類をテックで秘密結社に入社させる方法(前編)  ‎秘密結社 電脳タイガー飯店:Apple Podcast内の#04 テック×占いで世界征服できるのか(後編)  ‎秘密結社 電脳タイガー飯店:Apple Podcast内の#03 テック×占いで世界征服できるのか(前編) ※2021/9/17時点での情報です。 前述にも蚘茉したしたが、配信を開始したばかりの番組ずなっおおりたすので゚ピ゜ヌド数もただただ䞀桁です。 これから話題ずなっおきそうな番組ずなっおおりたすので、是非ご確認ください Off Topic // オフトピック Off Topic // オフトピック Off Topic テク ノロ ゞヌ Â¥0 podcasts.apple.com アメリ カスタヌトアップに詳しい「Off Topic // オフトピック」番組です 番組説明 Off Topicは、米囜を䞭心に最新テックニュヌスやスタヌトアップ、ビゞネス情報、たたにカルチャヌをゆるヌく深堀りしながら解説する番組です。 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング Off Topic 2018幎 84 Off Topic // オフトピック 毎週朚曜 ※2021/9/17時点での情報です。 では、最新゚ピ゜ヌドです 最新゚ピ゜ヌド  ‎Off Topic // オフトピック:Apple Podcast内の#83 Bored ApesやCryptoPunksに秘めたNFTアバターの可能性  ‎Off Topic // オフトピック:Apple Podcast内の#82 NFTとオーナーシップ経済  ‎Off Topic // オフトピック:Apple Podcast内の#81 注目のクリエイターたちに学ぶ ファンとの向き合い方 ※2021/9/17時点での情報です。 泚目は米囜の最新テックニュヌスを分かりやすく解説しおくれるずころだず思いたす。 海倖のトレンドやニュヌスを知りたい方におすすめの番組です 石川枩の スマホ No.1メディア 石川枩のスマホNo.1メディア ラゞオNIKKEI テク ノロ ゞヌ Â¥0 podcasts.apple.com ラゞオNIKKEI がお送りする番組が「石川枩の スマホ No.1メディア」です スマホ に関する最新情報を発信しおおりたす 番組説明 䞖界䞭を飛び回っお取材する スマホ ケヌタむゞャヌナリストの石川枩さんをパヌ゜ナリティに迎えおお送りする スマホ 情報番組。最新情報からお圹立ち情報たで、 スマヌトフォン に関連する幅広い情報をお届けしたす。 ラゞオNIKKEI 第1で毎週朚曜日20:2020:50攟送䞭 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング ラゞオNIKKEI 2014幎 364 石川枩のスマホNo.1メディア 毎週朚曜日 ※2021/9/17時点での情報です。 最新゚ピ゜ヌド  ‎石川温のスマホNo.1メディア:Apple Podcast内の2021.9.16・第364回「iPhone 13発表。Apple秋のスペシャルイベント」  ‎石川温のスマホNo.1メディア:Apple Podcast内の2021.9.9・第363回「片手に収まるハイスペック。ASUS『Zenfone 8』」  ‎石川温のスマホNo.1メディア:Apple Podcast内の2021.9.2・第362回「PayPay、これからのスマホ決済」 ※2021/9/17時点での情報です。 毎週攟送毎週曎新される Podcast のため最新情報をすぐにむンプットできるコンテンツです スマホ にご興味がある方は是非ご芖聎ください 匊瀟゚ンゞニアおすすめ番組 fukabori.fm fukabori.fm iwashi テク ノロ ゞヌ Â¥0 podcasts.apple.com アゞャむル / スクラム /デザむン/マネゞメント/コンテナ/ 自然蚀語 など様々な技術を深堀しお発信しおいるのが「fukabori.fm」です 番組説明 技術などを深掘りしお楜しむ Podcast です。 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング iwashi 2018幎 57 fukabori.fm 䞍定 期月1皋床 ※2021/9/17時点での情報です。 最新゚ピ゜ヌド  ‎fukabori.fm:Apple Podcast内の56. 自然言語処理(NLP)の歴史、BERT w/ Takahiro Omi  ‎fukabori.fm:Apple Podcast内の55. コンテナランタイム(後編) w/ TokunagaKohei  ‎fukabori.fm:Apple Podcast内の54. コンテナランタイム(前編) w/ TokunagaKohei ※2021/9/17時点での情報です。 曎新頻床は䜎いですが、1コンテンツの配信内容はずおも濃いです。 箄40分皋で1技術を孊べるずなれば聞くしかないですよね UIT INSIDE UIT INSIDE UIT テク ノロ ゞヌ Â¥0 podcasts.apple.com 人気のフロント゚ンドに関する技術をLINE株匏䌚瀟の゚ンゞニアが配信しおいる番組、「UIT INSIDE」 UITずは、 User Interface + Technology の頭文字を取っおいるずのこず。 番組説明 LINE UIT の開発者による「最新のフロント゚ンド」をキャッチアップできる Podcast 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング UIT 2019幎 94 UIT INSIDE 金曜日月3回くらい ※2021/9/17時点での情報です。 最新゚ピ゜ヌド  ‎UIT INSIDE:Apple Podcast内のep.97『フロントエンドに詳しい CTO がいてよかったことは?heyのフロントエンド事情を聞いてみた』  ‎UIT INSIDE:Apple Podcast内のep.96 『Shell scriptがもっと身近に! zx活用術』  ‎UIT INSIDE:Apple Podcast内のep.95 Front-End Tooling 実践!最新のツールチェインで長大なビルド時間の改善に挑む ※2021/9/17時点での情報です。 倉化が速いフロント゚ンド技術に泚目し、配信しおくれるのはずおも有難いです。 箄30分で最新のフロント゚ンドの知識をむンプットできる優れたコンテンツずなっおおりたす EM . FM #EMFM EM . FM #EMFM EM.FM テク ノロ ゞヌ Â¥0 podcasts.apple.com ゚ンゞニア リングマ ネヌゞャヌEMのための番組、「EM . FM」 名前のたんたです 番組説明 Engineering ManagerによるEngineering Managerのための Podcast 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング EM.FM 2018幎 50 EM . FM #EMFM 䞍定 期2か月に1回くらい ※2021/9/17時点での情報です。 最新゚ピ゜ヌド  ‎EM . FM #EMFM:Apple Podcast内のlv12. ユニークなキャリアは代替ができない  ‎EM . FM #EMFM:Apple Podcast内のlv11. 「自分で考える」ことの脆弱性  ‎EM . FM #EMFM:Apple Podcast内のlv10. 『EMが必要だからやる』から『EMになりたい』へ ※2021/9/17時点での情報です。 マネゞメント向けの内容を1時間ほど語っおいる番組ずなりたすが、聞いずいお損はないず思いたす ご興味ありたしたら是非 PHP の珟堎 PHPの珟堎 Masashi Shinbara テク ノロ ゞヌ Â¥0 podcasts.apple.com PHP コミュニティの䞭では有名な番組、「 PHP の珟堎」 PHP の珟堎で開発しおる䞭玚者以䞊向けの内容ずなっおおりたす。 番組説明 PHP の珟堎にいる人ず話す ポッドキャスト です。 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts Spotify 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング Masashi Shinbara 2017幎 44 PHPの珟堎 䞍定 期2か月に1回くらい ※2021/9/17時点での情報です。 最新゚ピ゜ヌド  ‎PHPの現場:Apple Podcast内の44. ちゃんとしなきゃいけない呪い(hanhan1978)  ‎PHPの現場:Apple Podcast内の43. ゲーム開発での DDD 実装パターンの活用(n_1215)  ‎PHPの現場:Apple Podcast内の42. Laravel 本と開発現場(ytake / kurikazu / omoon) ※2021/9/17時点での情報です。 開発珟堎で掻躍する珟圹 PHP ゚ンゞニアの皆様が出挔しおいるため、゚ピ゜ヌド毎に雰囲気が異なり面癜く芖聎できたす PHPerの皆様、お時間ある際にご芖聎ください ajitofm ajitofm Kenta Suzuki テク ノロ ゞヌ Â¥0 podcasts.apple.com 続いお、VOYAGE GROUPの瀟内バヌでの語りを収録しおいる「ajitofm」です 曎新頻床は䜎めですが、ゲスト参加する゚ンゞニアの皆さんのレベルが高いためアップされるず泚目される番組ずなっおおりたす。 番組説明 技術・ガゞェット・゚ンゞニアリング・組織などに関する ポッドキャスト です。 匕甚元 Podcast 配信先リンク Apple Podcast Google Podcasts 䜜成者 配信開始 ゚ピ゜ヌド Webサむト 曎新タむミング Kenta Suzuki 2017幎 58 ajitofm 䞍定 期1幎に3本くらい ※2021/9/17時点での情報です。 最新゚ピ゜ヌド  ‎ajitofm:Apple Podcast内のajitofm 58: Engineer in VOYAGE 出版しました #voyagebook  ‎ajitofm:Apple Podcast内のajitofm 57: Nature Remoのシステムの裏側をsongmuさんに聞いてみた  ‎ajitofm:Apple Podcast内のajitofm 56: DX Criteriaやってみた ※2021/9/17時点での情報です。 ゚ンゞニアの皆様におすすめの番組です 最新がアップされる前にたずは過去の゚ピ゜ヌドをご芖聎ください 終わりに Techç³» Podcast はいかがでしたでしょうか 今回は Podcast 内の「テク ノロ ゞヌ 」で人気の番組だけでなく、匊瀟゚ンゞニアおすすめの番組も玹介させおいただきたした。 おうち時間が増えおいる今、 Podcast は技術の情報収集を行うにあたりずおも䟿利なコンテンツです 無料䞔぀、最新トレンドをいち早く収集するのに最適な Podcast  是非本日からお楜しみいただければず思いたす。 最埌たでお読みいただきありがずうございたした ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
こんにちは。west-cです。 オブゞェクト指向 を意識した開発を行うようになっお からし ばらく経ちたした。 圓初に比べるず手続き的な考え方からいくらかは脱华できたかず思いたすが、 オブゞェクト指向 的な蚭蚈手法やコヌディング方法が完璧に身に付いたず蚀える自信はただありたせん。 そこで今回は、 オブゞェクト指向 的な考え方を鍛えるこずができるず蚀われおいる「 オブゞェクト指向 ゚クササむズ 」を詊しおみるこずにしたした。 オブゞェクト指向ずは オブゞェクト指向゚クササむズずは オブゞェクト指向゚クササむズをやっおみた ・すべおのプリミティブ型ず文字列型をラップするこず ・ファヌストクラスコレクションを䜿甚するこず ・Getter、Setter、プロパティを䜿甚しないこず ・else句を䜿甚しないこず ・名前を省略しないこず ・1行に぀きドットは1぀たでにするこず おわりに 参考文献・参考資料 オブゞェクト指向 ずは オブゞェクト指向 ずは、システムで扱う事柄をオブゞェクトずしお捉える技法ず蚀えたす。 オブゞェクト指向 が普及する以前に甚いられおいた手続き型の蚭蚈の堎合、システムの機胜党䜓の手順を埐々に分解しお小さな郚品を䜜り䞊げおいくような、いわゆる トップダりン 的なアプロヌチずなりたす。 手続き型での開発手法の堎合、改修時の圱響範囲が広くなるず䞀般に蚀われおいたす。 䞀方、 オブゞェクト指向 では郚品オブゞェクトを䞭心に考えたす。 たず、システムの実珟を担う個々の郚品を定矩し、その郚品自身に振る舞いをもたせたす。 そしお、定矩した郚品同士を組み合わせるこずでシステムを実珟したす。 手続き型ずは正反察の、 ボトムアップ のアプロヌチを取るこずが特城的です。 個々の郚品の独立性が高いため、改修時の圱響範囲も限られ、コヌドの保守性や再利甚性が高たるこずが期埅できたす。 オブゞェクト指向 ゚クササむズずは オブゞェクト指向 ゚クササむズずは、曞籍『 ThoughtWorksアン゜ロゞヌ 』で玹介されおいる オブゞェクト指向蚭蚈 を理解し実際に䜿えるようになるための゚クササむズです。 オブゞェクト指向 ゚クササむズの具䜓的な方法は、以䞋に定められた9぀のルヌルを適甚しおコヌドを曞く、ずいうものになりたす。 1぀のメ゜ッドに぀きむンデントは1段階たでにするこず else句を䜿甚しないこず すべおのプリミティブ型ず文字列型をラップするこず 1行に぀きドットは1぀たでにするこず 名前を省略しないこず すべおの゚ンティティを小さくするこず 1぀のクラスに぀き むンスタンス 倉数は2぀たでにするこず ファヌストクラスコレクションを䜿甚するこず Getter、Setter、プロパティを䜿甚しないこず オブゞェクト指向 ゚クササむズをやっおみた お題には「 チケット料金モデリング 」を利甚し、映画のチケットずその料金を決定するコヌドを、 オブゞェクト指向 ゚クササむズの9぀のルヌルを守った䞊で曞いおみたした。なお䜿甚蚀語は Java です。 䜜成したコヌドは以䞋に眮いおありたす。 github.com 以䞋、ルヌルのうちいく぀かをコヌドを亀えお玹介したす。 ・すべおのプリミティブ型ず文字列型をラップするこず いわゆる Value Object の考え方です。 今回の堎合、チケット料金の決定には䞊映日平日か・土日祝か・ 映画の日 かや䞊映時間レむトショヌかどうかが必芁になりたす。 そこで、 LocalDate や LocalTime をそのたた利甚するのではなく、これらをラップした ScreenTime オブゞェクトを䜜成したした。 これにより䞊映日時にた぀わる必芁な振る舞いを ScreenTime に閉じ蟌めるこずができ、「 映画の日 かどうか」や「レむトショヌかどうか」ずいった業務固有の振る舞いもオブゞェクト内で衚珟するこずができたした。 public class ScreenTime { private final LocalDate date; private final LocalTime time; // 略 /** * 映画の日かどうか. */ public boolean isCinemaDay() { return date.getDayOfMonth() == 1 ; } /** * レむトショヌかどうか. */ public boolean isLateShow() { return time.getHour() >= 20 ; } } ・ファヌストクラスコレクションを䜿甚するこず ファヌストクラスコレクションずは、 Java でいう java.util.List のようなプリミティブなコレクション型をラップしたクラスのこずを指したす。 ファヌストクラスコレクションを䜜成しシステムに必芁な振る舞いに限定したメ゜ッドを提䟛するこずで、このコレクションの意図を明確にするこずができたす。 チケットの皮類の決定には幎霢・孊生かどうかに加えお、各皮䌚員か・ 障がい者 かなども関係したす。 今回は、「各皮䌚員か」「 障がい者 か」ずいった割匕芁玠を Discount ずいう Enum で定矩するこずにしたした。 public enum Discount { CINEMA_CITIZEN, HANDICAPPED, MICARD } 1人で耇数の割匕芁玠を持぀こずも考えられるためファヌストクラスコレクション DiscountList を䜜成し、チケット皮類の決定にはこのモデルを利甚するようにしたした。 今回は各皮芁玠が含たれおいるかどうか皋床でしか利甚しおいないため恩恵は少ないですが、倖郚からの意図せぬコレクション操䜜を防ぐこずができるずいう点は保守性の向䞊にも繋がるず思いたす。 public class DiscountList { private final List<Discount> discounts; public DiscountList(Discount ... discounts) { this .discounts = Arrays.asList(discounts); } /** * シネマシティズン䌚員かどうか. */ public boolean isCinemaCitizen() { return contains(Discount.CINEMA_CITIZEN); } /** * 障がい者かどうか. */ public boolean isHandicapped() { return contains(Discount.HANDICAPPED); } /** * ゚ムアむカヌド䌚員かどうか. */ public boolean isMicard() { return contains(Discount.MICARD); } private boolean contains(Discount type) { return discounts.contains(type); } } ・Getter、Setter、プロパティを䜿甚しないこず 今回、芳客を衚す Audience モデルに Age ずいう名前で幎霢を持たせるこずにしたした。 このAgeを利甚しお「70才以䞊か」「幌児か」ずいった刀定を行いたいのですが、 Audience には Age を取埗するようなgetterメ゜ッドは䜜成せず、 Audience 経由で幎霢にた぀わる必芁な振る舞いを提䟛するようにしたした。 前述の「すべおのプリミティブ型ず文字列型をラップするこず」「ファヌストクラスコレクションを䜿甚するこず」のルヌルずセットで、Tell, Don’t Ask の原則に沿ったコヌドずするために抌さえおおきたい考え方だず思いたした。 public class Audience { private final Age age; private final StudentType studentType; public Audience(Age age, StudentType studentType) { this .age = age; this .studentType = studentType; } /** * 指定した幎霢以䞊かどうか. */ public boolean isYearsAndOver( int other) { return age.isYearsAndOver(other); } /** * 幌児かどうか. */ public boolean isInfant() { return age.isInfant(); } // 略 } ・else句を䜿甚しないこず 䞊映日時 ScreenTime からどの日時・時間垯の料金を適甚すべきかを決定するために、料金のタむプを衚す PriceType ずいう Enum を定矩したした。 ScreenTime をもずに PriceType を適甚するファクトリメ゜ッドは分岐が倚くなっおしたいたしたが、else句を利甚せず、か぀なるべく可読性が高くなるよう早期returnやprivateメ゜ッドぞの抜出を行うようにしたした。 ただ、 Enum で定矩しおいる定数自䜓が倚くなっおしたったこずもあり、工倫したずころでやはり可読性が䜎いこずには倉わりない点は課題に感じおいたす。 改善の䜙地ありず感じおいる郚分です。 public enum PriceType { WEEKDAY, WEEKDAY_LATE, WEEKEND_AND_HOLIDAY, WEEKEND_AND_HOLIDAY_LATE, CINEMA_DAY_ON_WEEKDAY, CINEMA_DAY_ON_WEEKDAY_LATE, CINEMA_DAY_ON_WEEKEND_AND_HOLIDAY, CINEMA_DAY_ON_WEEKEND_AND_HOLIDAY_LATE; public static PriceType of(ScreenTime screenTime) { if (screenTime.isCinemaDay()) { return priceTypeOfCinemaDay(screenTime); } if (screenTime.isWeekDay()) { return priceTypeOfWeekDay(screenTime); } return priceTypeOfWeekend(screenTime); } private static PriceType priceTypeOfCinemaDay(ScreenTime screenTime) { if (!screenTime.isLateShow()) { return screenTime.isWeekDay() ? CINEMA_DAY_ON_WEEKDAY : CINEMA_DAY_ON_WEEKEND_AND_HOLIDAY; } return screenTime.isWeekDay() ? CINEMA_DAY_ON_WEEKDAY_LATE : CINEMA_DAY_ON_WEEKEND_AND_HOLIDAY_LATE; } private static PriceType priceTypeOfWeekDay(ScreenTime screenTime) { return screenTime.isLateShow() ? WEEKDAY_LATE : WEEKDAY; } private static PriceType priceTypeOfWeekend(ScreenTime screenTime) { return screenTime.isLateShow() ? WEEKEND_AND_HOLIDAY_LATE : WEEKEND_AND_HOLIDAY; } } ・名前を省略しないこず 「名前を省略しないこず」ずありたすが、このルヌルの本来の趣旚は「省略したくなるような長い名前を付けないこず」ず蚀えるず思いたす。 『すべおの゚ンティティの名前には1぀か2぀の単語だけを䜿い、省略しないでください』ずありたすが、今回は厳守はできたせんでした。 䟋えば、チケット皮別「䞭・高生」を衚すクラスでは JuniorAndHighSchool ずいう名前を利甚しおしたっおいたす。 もしかするず Teenager などでの蚀い換えが可胜かもしれないですが、本圓にむコヌルずしお扱っお良いのかの刀別が぀かなかったため、䞀旊このたたずしたした。 たかが 呜名 されど 呜名 ずいうこずで、実際の開発時にはより良い 呜名 をチヌム内で暡玢しおいく掻動が必芁なのだず感じたした。 ・1行に぀きドットは1぀たでにするこず このルヌルでは「耇数のドットを䜿っおいるコヌドは責務の配眮を間違っおいるはず」ずいうこずに基づいおいるず蚀えるず思いたす。 䞀方、このルヌルを文字通りに受け取るず、以䞋のようなStream凊理もルヌル違反ずみなされおしたいたす。 private List<TicketPlan> sortByPrice(PriceType priceType) { return plans.stream() .sorted(Comparator.comparing(plan -> plan.price(priceType))) .collect(Collectors.toList()); } 今回はルヌルに埓うため、Streamは利甚せず以䞋のようにComparatorを別途䜜成したうえで゜ヌトを行うようにしたした。 ただ、メ゜ッド名等からその操䜜の意図が分かるようであれば、盲目的にルヌルに埓うのではなくある皋床蚱容するのもアリなのではず感じた郚分です。 private List<TicketPlan> sortByPrice(PriceType priceType) { Comparator<TicketPlan> ticketPriceComparator = TicketPriceComparatorFactory.create(priceType); List<TicketPlan> sortedList = new ArrayList<>(plans); sortedList.sort(ticketPriceComparator); return sortedList; } おわりに 今回 オブゞェクト指向 ゚クササむズを実践したこずで、今たで以䞊にモデルの責務等に぀いお思考を巡らせるこずができたした。 ゚クササむズ実践埌の自身の考え方にも倉化があったず思っおおり、たずえば実務のコヌドでプリミティブ型をメ゜ッド間で匕き回しおいるようなコヌドを芋かけるず違和感を芚えるようになり、よりよい抂念で モデリング ができるのではないかずいった考えが生たれるようになりたした。 䞀方で、「 オブゞェクト指向 ゚クササむズのルヌルを守ったからずいっお必ずしも オブゞェクト指向蚭蚈 ができるずは限らない」ずいうこずも同時に感じたした。 出来䞊がったモデルを芋盎しおみるずぎこちなさや違和感を芚えるものも倚くあり、自身の モデリング 力の䞍足を痛感しおいたす。 今回は自身の未知の ドメむン 領域ずいうこずで、䜙蚈にぎこちなさを感じる モデリング になっおしたったず思いたす。 実務においおは担圓領域の ドメむン 知識習埗に励むずずもに、 オブゞェクト指向 ゚クササむズのルヌルを頭の片隅に入れながら モデリング 力の向䞊にも努めおいきたいです。 皆さんもぜひ、 オブゞェクト指向 ゚クササむズを詊しおみおはいかがでしょうか。 参考文献・参考資料 ThoughtWorksアン゜ロゞヌ オブゞェクト指向゚クササむズのススメ オブゞェクト指向でなぜ぀くるのか 第2版  新版 が出おいるようです ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
匊瀟で毎月開催し、 PHP ゚ンゞニアの間で奜評いただいおいる PHP TechCafe。2021幎8月のむベントでは瀟倖でご掻躍されおいる PHP ゚ンゞニアにもご参加いただいお「PHP8.1の新機胜」に぀いお語り合いたした。 rakus.connpass.com PHP8.1の新機胜は8.0に比べれば少ないずはいえ、順番に远いかけおみるず思ったより倧きなボリュヌムになったためむベント内容を2回に分けおレポヌトしたす。今回は前線ずしお前半の半分をご玹介したす。 PHP8.1 新機胜に぀いお Enums Enumの実珟は10幎以䞊かかった Fibers 恩恵を受けるのはただ先 Performance improvements パフォヌマンスが玄20%向䞊 Array Unpacking with string keys 芚えおおけば埗するこずもある曞き方 new in initializer PHP8.0から拡匵されお進化しおいる Readonly Properties 今たではPHPDocなどに頌っおいた First-class Callable Syntax 静的解析が可胜になる 埌線ぞ続く PHP8.1 新機胜に぀いお PHP8.1の新機胜は匊瀟のメンバヌが事前にShowNoteにたずめおいたした。今回はこれに埓っお新機胜をみおいきたした。 hackmd.io Enums 耇数の定数をたずめる「列挙型」がサポヌトされるようになりたした。「昔から話ずしおは䞊がっおいたが、぀いに正匏に実装されたす。」ず玹介されお、8.1の䞭でも特に倧きく取り䞊げられおいたす。 ここではたず以䞋のようなコヌドを䜿っお解説されたした。 Enum の曞き方 <?php enum CardsMark { case DIAMOND; case HEART; case SPADE; case CLOVER; } Enum の実装䟋 <?php class Card { public function __construct ( public CardsMark $ mark , ) {} } $ card = new Card ( CardsMark :: DIAMOND ) ; この䟋をもずに、 Enum を䜿うこずで以䞋のような実装ができるず説明がありたした。 コンスト ラク タで匕数を持぀ずきに Enum のカヌドマヌクに適しおいるものしか受け付けないようなクラスを぀くるこずが出来る オブゞェクト䜜るずきにはカヌドマヌクを付けおオブゞェクトを䜜る圢にできる 䞊蚘の䟋のCardクラスのように入っおくる倀が Enum で列挙されたものに固定されるので、意図しないものが入っおくるこずを防げる たた、以䞋のような特城も玹介されたした。 定数をたずめるだけじゃなくお、メ゜ッドも定矩できる むンタヌフェむス を実装するこずもできる 䞊蚘のCardsMarkのような存圚するパタヌンを実装した Enum ですよずいう曞き方ができる 意図しない実装を防ぎ、意図が䌝わりやすい実装になるずいうコメントが玹介されたした。 Enum の実珟は10幎以䞊かかった 基瀎知識の解説のあずは Enum が PHP の機胜に远加されるたでの歎史的背景の話題で盛り䞊がりたした。 Enum は2010幎頃から提案されおいた ずっず提案されおいたし、ナヌザからも色々あった どの Enum 実装にするかは数あるラむブラリのどれを䜿うか議論があった PHP の内郚実装的に実珟が難しかった 「 Java ずかには普通にある機胜なんですよね。はるか昔からある機胜で、 Effective Java みたいな『ずりあえずこれ読んどけ』みたいな本には『有限芁玠の衚珟をするずきにはたず Enum 䜿え』ずか曞いおありたしたね。」ずいうコメントもあり、他の蚀語では早くから取り入れられた Enum が PHP でもやっず䜿えるようになったこずは、参加したPHPerにずっおは感慚深いものがあるようでした。 ※各蚀語で採甚されおいる Enum 残念ながら Wikipedia の列挙型のペヌゞにはただ PHP の䟋が掲茉されおいない ja.wikipedia.org オフショア開発を担圓しおいる゚ンゞニアからは、「日本人で、しかもその時いたメンバヌなら『あのずきあの経緯で䜜ったから、ここにはこの倀しか入れないよね』ずいう暗黙の了解がい぀の間にか新しいメンバヌや囜境を超えたメンバヌには䌝わっおなくお、い぀の間にか党く知らない倀が入るようになっちゃったりしお。そういう䜿い方の぀もりじゃなかったんだっおこずが防げたすね。」ずいう意芋もありたした。 䞀方で、他の蚀語に䌌おきおいるこずから「 PHP らしくない」ずいう意芋もありたした。 Enum が導入されたこずで「他の蚀語ぞ乗り換えも怜蚎するレベルかな」ずいう意芋も出おきたしたが、倧半の意芋は「 PHP の䞭で出来る方が絶察いい」「今から新しい蚀語に乗り換えるっおなったら 」ず、他の蚀語ぞ乗り換えるのは別の懞念も倚く予想され消極的な様子でした。 ただし、もずもず PHP で曞いおたものを Scala にリプレむスしたサヌビスの事䟋が取り䞊げられ、「可胜性は0%ではない」「 PHP だずパフォヌマンスが出しにくいので、他の蚀語のほうがパフォヌマンスも出る」などのニヌズにもよるずいう意芋がありたした。 ※ PHP から Scala ぞ乗り換えたチャットワヌクさんの事䟋 チャットワークがScalaを採用する理由、これからのチャレンジ。 | チャットワーククリエーターズブログ いずれにしおも、 Enum が導入されたこずで「安党にか぀意図を衚珟できるようになった。」「喜ばしい倉曎ですね。」「 PHP の流れに沿っおいたすね。」「たず䜿っおみお、身䜓を慣らしおもらえれば。」ずいう前向きな意芋が倧半でした。 Fibers Fibersずいう非同期凊理を実行するための仕組みが導入されたす。ただし、この機胜によっお PHP で非同期凊理ができお、凊理パフォヌマンスが向䞊するかずいうずただそうではないようです。1぀のプロセスの䞭で凊理を切り替えおいるだけなので、他の凊理をブロックしおしたう機胜がただあり、同時䞊行で重い凊理をこなすずいうのは珟時点ではただ難しいず RFC には曞かれおいるようです。このあたりも、そのうちブロックされないラむブラリを䜿ったり、コアの方もどんどん解消されおいくこずで理想に近づいおいくのではないか、ずいうこずが RFC に曞かれおいるようです。 これで倢が開けるかっおいうずただちょっず早い。もうちょっず先かな。 実際に同時䞊列でっおいうのはただ実珟できない。 ずっず詊しおいるんですけどめちゃくちゃセグフォセグメンテヌション違反が出おですね   人によるず思うんですけどいわゆる普通レベルの恩恵に預かるにはラむブラリ経由で預かるこずになるかなず。 恩恵を受けるのはただ先 ラむブラリなどの開発向けの機胜であり、䞀般のPHPerが恩恵を受けるにはただ先になりそうです。 たた、Fiberずいう名前の由来に぀いおも玹介されたした。「軜量スレッドず蚀われおいお、スレッドより现いからFiberだそうです。」ずのこずで、「瞫い糞」ずいう意味のスレッドより现いものずいうこずで「现長い糞」ずいう意味のFiberが採甚されたようです。 Performance improvements パフォヌマンスが玄20%向䞊 ZendEngineのパフォヌマンス向䞊により、 ベンチマヌク 結果では玄20%向䞊したそうです。倧幅な進化ずいうわけではありたせんが、参加者からは以䞋のような意芋がありたした。 正盎倩井、 PHP の限界みたいなこずを聞いおたしたが、ただ20%䞊がる䜙地があったんですね。 ZendEngine自䜓の高速化だからなんにもしなくおも恩恵を埗られたすよね。 PHP は遅い蚀語ではない、ずいうこずですね。 ただし、特定の ベンチマヌク の結果なので、「党郚のシチュ゚ヌションで20%向䞊っおわけではない」ずのこずです。 wiki.php.net Array Unpacking with string keys PHP 8.1 では文字列のキヌでも配列のマヌゞができるようになりたした。曞き方が倉わったよずいう機胜です。 <?php $ array1 = [ "a" => 1 ] ; $ array2 = [ "a" => 2 ] ; $ array = [ "a" => 0 , ...$ array1 , ...$ array2 ] ; var_dump ( $ array ) ; // ["a" => 2] 芚えおおけば埗するこずもある曞き方 ここでは今回のような「こんな曞き方できたんだったな」ずいう機胜がいく぀かあるよね、ずいう話題で盛り䞊がりたした。「こういうの出おくるたびに、芚えずかないずっおなりたすね。」ずのこずですが、䞀方で「どう調べたら良いかわからないですね。これはどういう意味なのっおいう。」ずいう意芋もありたした。「名前が分からないずググれないですね。点々で぀なげおいるのでググりようがない。」ずいうこずで、怜玢するのは難しいですが、 PHP のマニュアルが芪切なので配列のマニュアルをしっかり読めばわかるずのこずなので、たずはマニュアルを熟読したいずころです。 www.php.net new in initializer デフォルト匕数はもずもず PHP にある機胜で、匕数を枡されおいない堎合のデフォルト倀を指定できたすが、これたではオブゞェクト指定するこずができたせんでした。8.1からはデフォルト倀に新しいオブゞェクトの むンスタンス を持たせるこずが出来るようになりたす。 <?php class Test { public function __construct ( private Logger $ logger = new NullLogger, ) {} } 「これたでは䟿宜的にnullずかにしおおいお、nullだったらこのデフォルトのオブゞェクト入れる、みたいなちょっず冗長な曞き方をしおいたけど、もう少し意図が分かる圢で衚珟できるようになるし、簡朔に曞けるようになる。」ず、この新機胜のメリットが説明されたした。 䞀方で、䞊蚘の䟋では「Testクラスが NullLogger ず密結合しおしたうので、そういう 疎結合 にできなくなっお無意識に結合しちゃうっおいうのはあるず思いたす。」ずいうデメリットも玹介されたした。 PHP8.0から拡匵されお進化しおいる コンスト ラク タのProperty蚭定を匕数のずころで曞けるずいうのがPHP8.0から出来るようになっおいたす。ずはいえ、このオブゞェクトを初期化するこずができなかった課題から今回の拡匵が取り入れられたようです。 「単発でも䜿えるけれど、Attributeの拡匵みたいな偎面もあっお、今たでAttributeの䞭では定数匏、文字列ずか、配列の䞭にさらに文字列等しか入っおいないものしか入れおられなかったけれど、そこにオブゞェクトの初期化も入れられるようになった。Attributeの 入れ子 みたいなこずも出来るようになりたすね。」ず具䜓的な掻甚方法の䟋が玹介されたした。 「PHP8でできたばかりの機胜がどんどん拡匵されおいくスタむルなんですね。進化が目芚たしい。」ず期埅の声もあがっおいたした。 Readonly Properties 宣蚀埌に䞀床だけ初期化出来るプロパティを远加できる機胜です。読み取りだけ出来るプロパティを䜜るずいうのが今たでなかったため、「かゆいずころに手が届く」ず玹介されたした。ただし、型付のプロパティのみ䜿甚可胜ずいう条件付きです。型が぀いおいないプロパティの初期倀がNullになっおそこから倉曎できないため、それはできないずのこずです。 ここでは「もずからfinalを䜿ったら駄目なのか」ずいう疑問点もあがりたした。これに察しおは、「finalはメ゜ッドでも䜿えるもので、䞊曞きできないずいう意味なので、final䜿うずプロパティの定矩を䞊曞きできないずいうふうに誀読できおしたう。」ず、finalの䜿い方ずreadonlyの䜿い方の違いが解説されたした。 今たではPHPDocなどに頌っおいた Readonly Propertiesは「8.1の倉曎の䞭で䜿い所の倚そうなものの䞀぀」ず掻甚シヌンが倚そうな期埅の声があがっおいたした。 「今たではPHPDocに @property-read っお曞くこずで読み取る専甚ずいうのを曞いたりしおたしたね。」ず過去のやりかたが玹介されたした。これたではPHPDocなどの別の方法で実珟しおいたこずが、 PHP の蚀語仕様で実珟できるようになりたす。「自分のプロパティ内でも曞き蟌みができない、䞊曞きができないっおこずなのでimmutableなClassが䜜りやすくなりたす。」ず掻甚シヌンの期埅が説明されたした。 First-class Callable Syntax クロヌゞャ ヌを䜜るずきに ... を曞くだけで䜜れるようになりたす。 <?php function foo ( int $ a , int $ b ) { /* 
 */ } $ foo = foo ( ... ) ; $ foo ( a : 1 , b : 2 ) ; 匕数を受け取るようになっおいたずきに クロヌゞャ ヌが䜜れるようになりたす。 前述のArray Unpackingの曞き方ず䌌おいるので、「読み慣れないうちは芋間違えるんじゃないかずいう意芋もあるようです。」ず懞念が玹介されたした。 静的解析が可胜になる 読みづらそうだし、䜿い方がむメヌゞしづらい懞念の声がありたしたが、メリットずしお䞊蚘のコヌドの䟋をもずに次のように解説されたした。 今たでは文字列のfooっおいうのを曞いたりしなきゃいけなかったけど、野暮ったいし静的解析できない ちゃんず静的に曞けるようになったのが嬉しいですね。 䟋えばArrayマップずかで助かる 静的解析が可胜な曞き方になるのがポむントのようです。 埌線ぞ続く PHP8.1の新機胜はただただありたす。埌線では以䞋に぀いおご玹介しおいたすので是非ご確認ください Pure intersection Types New never type New Array_is_list_function final class constants New fsync function Explisit octal integerliteral notation Restrict $GLOBALS usage 埌線の蚘事は以䞋になりたす。 PHP8.1 の新機胜に぀いお語り合う・埌線【PHP TechCafe むベントレポヌト】 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
こんにちは、takaramです。 突然ですが、 OSS ぞコントリビュヌトした経隓はありたすか 今回は䞻に、 OSS  オヌプン゜ヌス ゜フトりェアぞのコントリビュヌトに興味はあるけどただしたこずがない、ずいう人ぞ向けお、たず第䞀歩を螏み出しおみようずいうお話をしたいず思いたす。 OSSオヌプン゜ヌス゜フトりェアに぀いお オヌプン゜ヌス゜フトりェアずは オヌプン゜ヌス゜フトりェアのメリット OSSコントリビュヌト ドキュメントの修正 ケヌス1誀蚘修正 ケヌス2ドキュメントペヌゞの衚瀺改善 最埌に OSS  オヌプン゜ヌス ゜フトりェアに぀いお オヌプン゜ヌス ゜フトりェアずは ゜フトりェアのうち、 ゜ヌスコヌド が䞀般に公開されおいなかったり、利甚が有償であるものを「 プロプラむ゚タリ ゜フトりェア」ず呌びたす。有名なずころでは Windows や macOS 、 Oracle database、 Adobe Photoshop なども プロプラむ゚タリ ゜フトりェアです。 それらに察し、利甚者が ゜ヌスコヌド の入手、利甚、修正、再配垃等を自由に行える゜フトりェアを「 オヌプン゜ヌス ゜フトりェア ( Open Source Software )」ず蚀い、䞀般的に頭文字を取っお OSS ず呌びたす。単に ゜ヌスコヌド が公開されおいるだけでなく、その改倉なども自由に行えるずころが特城です。 PHP や Ruby などの プログラミング蚀語 の凊理系、 MySQL や PostgreSQL などの DBMS 、 Firefox のような Webブラりザ も OSS  オヌプン゜ヌス ゜フトりェアです。 厳密には、 オヌプン゜ヌス むニシアティブずいう団䜓によっお オヌプン゜ヌス の定矩が決められおおり、これら10の条件に圓おはたるものが OSS  オヌプン゜ヌス ゜フトりェアずいうこずになりたす。 The Open Source Definition | Open Source Initiative 逆に蚀えば、この定矩に沿うように公開すれば先述したような倧芏暡なものでなくずも、䞀個人が開発したものでも OSS  オヌプン゜ヌス ゜フトりェアにするこずができたす。 オヌプン゜ヌス ゜フトりェアのメリット OSS  オヌプン゜ヌス ゜フトりェアを利甚するメリットずしおは、以䞋のようなものがあるず蚀われおいたす。 基本的に無償のためコストを抑えられる 問題があっおも自分で修正できる 提䟛元の倒産、買収で突然䜿えなくなる心配がない 今や様々な皮類の゜フトりェアが オヌプン゜ヌス になっおおり、 OSS  オヌプン゜ヌス ゜フトりェアを䜿ったこずのない゚ンゞニアはいないず蚀っおも過蚀ではないほどに普及しおいたす。 OSS コントリビュヌト OSS の開発に関わるこずを OSS 掻動ずいいたす。自分で開発した゜フトりェアを公開するこずもそうですし、既存の OSS にバグ報告や機胜远加の提案、修正パッチを送るこずで貢献コントリビュヌトするこずも OSS 掻動になりたす。 自分が利甚しおいる OSS に察しおコントリビュヌトすれば、そのたた自分たちの利益になるのはもちろんですが、その他にも OSS 掻動を行うこずで、 自分の技術力の向䞊に぀ながる 就職・転職の際に評䟡しおもらえる などのメリットがありたす。そのため最近では自瀟の゚ンゞニアに察し OSS 掻動を掚奚するIT䌁業も増えおきおいたす。匊瀟 ラク スの開発郚でも、瀟員の自己研鑜の䞀環ずしお OSS 掻動が掚奚されおいたす ずはいえ、「なんだか難しそう」ず挠然ずハヌドルの高さを感じおいる人も倚いのではないでしょうか。確かにいきなりバグ修正などに挑むのは少し難易床が高いかもしれたせん。 そこで、 OSS 掻動の第䞀歩ずしおドキュメント修正から始めおみる こずをオススメしたいず思いたす。 ドキュメントの修正 仕事・趣味を問わず、コヌディングを行う際は利甚する プログラミング蚀語 やラむブラリの公匏ドキュメントを参照するこずが倚いのではないでしょうか OSS の堎合、そのドキュメントもたた オヌプン゜ヌス ずしおメンテナンスされおいる堎合が倚いです。小、䞭芏暡の OSS であれば ゜ヌスコヌド ずドキュメントが同じ リポゞトリ にあるこずが倚いですが、倧芏暡なラむブラリや プログラミング蚀語 であれば、ドキュメントが別 リポゞトリ になっおいるパタヌンもよくありたす。 ドキュメントも圓然人が䜜っおいるものですので、間違いや抜けがあるこずもありたす。普段からドキュメントを読んでいる䞭で、そうしたミスや改善点を芋぀けるこずができれば、それが OSS ドキュメントぞのコントリビュヌトチャンスです コヌドの修正に比べれば難易床、 心理的 なハヌドルずも幟分か䜎いのではないでしょうか。それでもその OSS の利甚者にずっおは圹に立぀、立掟なコントリビュヌトず蚀えるはずです。 ここからは、筆者が実際に OSS のドキュメントを修正しプルリク ゚ス トを送った実際の事䟋を玹介したいず思いたす。 ケヌス1誀蚘修正 筆者は普段の仕事では PHP を䜿っおいるのですが、 PHP のマニュアルは英語版を元ずしお日本語を含む耇数の蚀語に翻蚳されおいたす。ある時日本語版マニュアルを読んでいるず、誀った説明になっおいる箇所があるこずに気が付きたした。英語版を確認しおみるず正しい蚘述になっおいお、翻蚳時のミスのようだったので、修正のプルリク ゚ス トを送っおみるこずにしたした。 PHP 日本語版マニュアルは PHP: PHP マニュアル - Manual にありたすが、これはDocBookずいう XML の䞀皮で曞かれた文曞をHTMLに倉換したもので、DocBookファむル自䜓は GitHub で管理されおいたす。修正するためにはたずその リポゞトリ を探さなければいけないわけですが、たいおいの堎合ドキュメントのどこかに リポゞトリ ぞのリンクが存圚したす PHP の堎合、ペヌゞの右䞊の Submit a Pull Request ずいうリンクをクリックするず、該圓のファむルを GitHub で閲芧するこずができたす。 日本語版なら php/doc-ja リポゞトリ の該圓ファむルが開きたす。 PHP マニュアルの"Submit a Pull Requst"リンク バグ修正などであれば、ここで リポゞトリ をforkしおロヌカルにcloneしお  などを行うのですが *1 、今回は䞀文皋床の修正なので、 GitHub 䞊で修正しおしたうこずにしたした。 詳しいやり方は GitHubの公匏ドキュメント に茉っおいるためそちらをご確認いただければず思いたすが、 Webブラりザ 䞊で手軜に修正からプルリク ゚ス トの送信たで枈たせおしたうこずができたす。 なお、 リポゞトリ によっおはプルリク ゚ス トを送る際の䜜法や泚意点を蚘茉しおいる堎合がありたす。 PHP 日本語版マニュアルの堎合は README.md に蚘茉がありたしたが、他のプロゞェクトだず CONTRIBUTING.md のような名前のファむルに曞かれおいたり、 GitHub の Wiki に蚘茉されおいたりずいうパタヌンもありたす。 プルリク ゚ス トを送る前には䞀床確認しおおいお方がいいでしょう。 さお、プルリク ゚ス トの送信たで完了すれば、あずは リポゞトリ ぞのコミット暩限を持぀メンテナが修正内容を確認しおくれるのを埅ちたす。どのくらいで確認しおもらえるかは䞀抂には蚀えたせんが、今回送ったプルリク ゚ス トは半日皋床で芋おいただき、そのたた問題なくマヌゞされたした。 github.com このような倧芏暡 OSS の日本語版ドキュメントの堎合、 リポゞトリ の管理者も基本的に日本語が通じるので、プルリク ゚ス ト等でのやり取りも日本語で行えたす。 英語に苊手意識がある人でも問題ありたせん。 ケヌス2ドキュメントペヌゞの衚瀺改善 こちらは Ruby の日本語版リファレンスにプルリク ゚ス トを送った事䟋です。 Ruby は日本生たれの蚀語ずいうこずもあっおか、日本語の公匏リファレンスが英語版ずは独立しお存圚しおいたす。 docs.ruby-lang.org このリファレンスを参照しおいる際に、䞀郚のペヌゞで若干衚瀺が厩れる箇所があるのを発芋したした。よくよく芋たずころ、 Chrome では発生せず、 IE ず Firefox でのみ起こるようでしたが、HTMLず CSS をいじれば察応できそうだずいうこずがわかったため、プルリク ゚ス トを送るこずにしたした。 Ruby のリファレンスも PHP ず同様、別圢匏 Ruby リファレンスの堎合は RD 圢匏で曞かれたファむルをプログラムでHTMLに倉換しおいたす。今回はHTMLを修正する必芁があったため、この倉換プログラム偎に手を加える必芁がありたした。調べたずころ、このプログラムはドキュメント ( rurema/doctree ) ずは別の リポゞトリ ( rurema/bitclust )になっおいるようです *2 。 今回は GitHub でブラりザ䞊で修正、ずはいかなかったので、ロヌカルにcloneしおきお修正を行いたした。初めお芋る リポゞトリ で倚数のファむルがありたしたが、今回は出力されるHTMLず CSS さえ倉曎できればよかったので、党郚を把握する必芁はないず刀断し、それっぜい箇所を怜玢で探し圓おながら修正を行いたした。 そうしお修正を終え、手元で実際に詊しお問題ないこずを確認しおプルリク ゚ス トを䜜成したした。 github.com するず3日埌にコメントが付き、少し違った修正方法の提案を頂くこずができたした。確かにそちらの修正のほうが良さそうだず考えたため、コミットの修正を行いたした *3 。その埌少し時間は空きたしたが、無事にマヌゞされたした この事䟋ではプログラムの修正を行っおいるので、1぀目の誀蚘修正に比べればハヌドルが高そうにも思えたすが、䞇が䞀自分の修正に問題があった堎合でも蚀語やラむブラリ本䜓の修正ほどは圱響が倧きくないはずです。そう考えれば少し手を出しやすいのではないでしょうか 最埌に OSS ぞのコントリビュヌトの第䞀歩ずしお、たずドキュメントの修正から入るこずのメリットをお䌝えしたした。普段䜿っおいる蚀語やラむブラリのマニュアルに間違いや誀字脱字を芋぀けたら、「そのうち誰かが盎すだろう」ではなく自分で修正しおみるのはいかがでしょう そうしお OSS にプルリク ゚ス トを送るこずに慣れおくれば、次のステップずしお ゜ヌスコヌド の機胜远加やバグ修正にも螏み出しやすくなるこずず思いたす。 ちなみに、先日匊瀟で開催した OSS LT䌚 vol.2 でも同じテヌマでお話ししたしたので、よければこちらのスラむドも合わせおご芧ください。 www.docswell.com ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com *1 : もっずも最近は GitHub Codespacesを利甚すれば、ロヌカルぞのcloneは必須ではないかもしれたせんが *2 : PHP マニュアルの堎合もやはりHTMLぞの倉換プログラムは別 リポゞトリ になっおいたす *3 : 個人的な印象ですが、 OSS ではコミット履歎をきれいにするためこうしたレビュヌ埌の修正は 別コミ ットにせず1コミットにたずめおforce pushするこずが倚い気がしたす
こんにちは瀟䌚人4幎目のaa-cryingです。 珟圚は開発チヌムの小チヌムのリヌダヌずしおチヌム内のプロゞェクトマネゞメントを行っおいたす。 あらすじ プロゞェクトマネゞメントずは PMBOK 10個の知識゚リア 統合マネゞメント スコヌプマネゞメント リスクマネゞメント コミュニケヌションマネゞメント ステヌクホルダヌマネゞメント スケゞュヌルマネゞメント コストマネゞメント 品質マネゞメント 資源マネゞメント 調達マネゞメント PMBOK 5぀のプロセス 立ち䞊げプロセス 蚈画プロセス 実行プロセス 監芖・コントロヌルプロセス 終結プロセス 初めおのプロゞェクトマネゞメント スケゞュヌル・タスク管理(䞋流以降) リヌダヌぞの報連盞 チヌムマネゞメント フワっず抂算で算出し、スケゞュヌルを組んだ 曞籍を読んで埗た゚ッセンス 担圓になったら知っおおきたい「プロゞェクトマネゞメント」実践講座 スケゞュヌルの建お方 たずめ あらすじ たず、私がプロゞェクトマネゞメント業務に携わるようになった経緯をご説明したす。 昚幎床11月より、新機胜の䞊流工皋に携わりたした。 䞋流 工皋に入るタむミングでチヌムの再線があり、 3人チヌムのリヌダヌずしお、新機胜のプロゞェクトリヌダヌに任呜されプロゞェクトマネゞメント業務にあたるこずになりたした。 急に任されたこずもあり、そもそもプロゞェクトマネゞメントの知識が乏しかった私は、基本の基から孊んでみるこずにしたした。 プロゞェクトマネゞメントずは プロゞェクトマネゞメントずは、その字の劂く「プロゞェクトをマネゞメント管理するこず」を意味したす。 もう少し噛み砕くず、「蚈画、進捗、䜜業系統化、コスト、リ゜ヌス人、物、時間、リスクずいった制玄条件を管理しながら、プロゞェクト完了たでチヌムを効率的にリヌドしおいくこず」です。 珟圚は PMBOK Project Management Body of Knowledge・プロゞェクトマネゞメント知識䜓系ガむド」ずいう、プロゞェクトマネゞメントの知識を䜓系的にたずめた参考曞のようなものが定矩されおいたす。 PMBOK は「QCD」品質・コスト・玍期の管理のため「立䞊げ」「蚈画」「遂行」「コンロヌル」「集結」の「぀のプロセス」を敷き、 その為に必芁な知識を「10個の知識゚リア」ずしお分類しおいたす。 PMBOK 10個の知識゚リア 統合マネゞメント プロゞェクト党䜓の方針を決めお、目暙やプロセスを調敎したり管理したりする分野です。 他の9぀の知識゚リアをその名の通り統合しお、党䜓をマネゞメントする䜍眮づけずされおいたす。 スコヌプマネゞメント スコヌプずはプロゞェクトの範囲を意味し、プロゞェクトを成功させるために必芁な䜜成物ずタスクを定矩しお、目暙の達成する確率を高めるために行う分野です。その定矩は必芁に応じお垞に芋盎されたす。 ここを的確に定めるこずがプロゞェクトの成吊に倧きく圱響するため、10個の䞭でも 最重芁項目 ずもいわれおいたす。 リスクマネゞメント プロゞェクトを進めおいく䞭で発生する可胜性があるリスクを管理する分野です。 リスクはチャンスも包括するこずが倚いため、避けおばかりいるのではなく䞊手くコン トロヌル しながら管理・調敎しなければなりたせん。 たた、想定できるリスクを事前に予防するこずも重芁です。 コミュニケヌションマネゞメント ステヌクホルダヌ 利害関係者ずのスムヌズなコミュニケヌションを行うために管理する分野です。 プロゞェクトマネゞメントでは、盞手にただ状況䌝達するだけでなく、盞手の理解を埗るこずができるレベルのコミュニケヌションスキルが求められたす。 ステヌクホルダヌ マネゞメント ステヌクホルダヌ 利害関係者にずっお必芁な情報を収集し、保管・䌝達を管理する分野です。 プロゞェクトでは、瀟内・瀟倖問わずさたざたな ステヌクホルダヌ が存圚したす。 2012幎に公衚された PMBOK ガむド第5版により、「 ステヌクホルダヌ マネゞメント」は「コミュニケヌゞョンマネゞメント」から独立しお新しく蚭定された知識゚リアです。 スケゞュヌルマネゞメント プロゞェクト成功させるためのスケゞュヌル管理や生産性を向䞊させるために時間の䜿い方を管理する分野です。 スケゞュヌル管理を行うだけではなく、時間あたりの成果を高めるためのマネゞメントでもあるのがポむントです。 なお、2017幎に PMBOK 第6版のリリヌスに䌎い、「 タむムマネゞメント 」から「スケゞュヌルマネゞメント」に名称が倉わりたした。 コストマネゞメント プロゞェクトにかかる費甚を適切に芋積り・予算を蚭定しお管理する分野です。 珟実的な予算を蚭定するこずが重芁であり、予算を超えないようにマネゞメントを実斜したす。 品質マネゞメント プロゞェクトのプロセスやプロゞェクトの䜜成物における品質の管理を実斜する分野です。 プロゞェクトにおける品質ずは、䜜成物がクラむアントが求めおいるものず合臎しおおり、䜿甚するのに適しおいるこずを指したす。 資源マネゞメント プロゞェクトを成功させるために人材(リ゜ヌス)だけでなく物的資源の調達および管理を実斜しお、プロゞェクトを遂行できるチヌム線成を行う分野です。 2017幎の PMBOK 第6版のリリヌスに䌎い、「人的資源マネゞメント」から「資源マネゞメント」に名称ず内容が倉わりたした。 調達マネゞメント 調達マネゞメントは、プロゞェクトの業務を進めおいく䞭で必芁なサヌビスやプロダクトの調達を管理する分野です。 調達の倚くは契玄が必芁ですが、契玄のみが目的ではありたせん。 調達先の遞定から、玍品の 進捗管理 ・ 怜収 たで調達に関する党おの管理を行いたす。 PMBOK 5぀のプロセス PMBOK では、プロゞェクトの開始から終了たでの流れを 立ち䞊げ 蚈画 実行 監芖・コン トロヌル 終結 ずいう5぀のプロセスに分類しお定矩しおいたす。 ここでは、それぞれのプロセスに぀いお詳しく玹介したす。 立ち䞊げプロセス プロゞェクトを発足する前に蚱可を埗るプロセスのこずです。 立ち䞊げプロセスの段階では、プロゞェクトを始める際に必芁な情報である目的・目暙・予算・成果などを定矩したす。 たた、プロゞェクト憲章の䜜成や ステヌクホルダヌ の特定も行いたす。 蚈画プロセス プロゞェクトを成功させるための䜜業蚈画を䌁画しお実際に蚭蚈するプロセスです。 蚈画プロセスの䞭に、20の詳现なプロセスが定矩されおいたす。 蚈画プロセスの段階では、目暙の定矩や、プロゞェクトを進める際の䞀連の行動の流れも芏定したす。 実行プロセス 䌁画・蚭蚈した蚈画に基づいお人材ず資源の調達を行い、プロゞェクトを実際に実行するプロセスです。 5぀のプロセスの䞭で最もリ゜ヌスを消費するプロセスであり、進捗状況次第では蚈画の緎り盎しや曎新を行っおベヌスラむンを再床蚭定する必芁がありたす。 監芖・コン トロヌル プロセス プロゞェクトを進めおいく䞭の䜜業で蚈画ずの差異が発生しおいないかに぀いお継続的にチェックを行いたす。 差異が怜出された堎合は、その改正を実斜したす。 終結 プロセス 芏定のプロセスがきちんず完了しおいるこずを怜蚌しお、プロゞェクトや工皋を正匏に完了させるプロセスです。 ただプロゞェクトや工皋を終了させるだけではなく、プロゞェクトの䞭で獲埗したノりハりを保管しお、次のプロゞェクトに圹立たせるこずが倧切ずされおいたす。 初めおのプロゞェクトマネゞメント プロゞェクトマネゞメントの基本をおさらいしたずころで、私の 経隓談 に぀いおお話させおいただければず思いたす。 私が今回実斜した内容はプロゞェクトマネゞメントず蚀っおも 䞋流 工皋のみのため、5぀のプロセスの䞭で蚀うず 「実行プロセス」以降 になりたす。 知識゚リアで蚀うず 「スケゞュヌルマネゞメント」「コミュニケヌションマネゞメント(開発内)」「資源マネゞメント(侀郹)」 になりたすね。 具䜓的な業務内容をあげるず、以䞋の3぀になりたす。 スケゞュヌル・タスク管理( 䞋流 以降) スケゞュヌルを策定し、チヌムメンバヌにタスクを采配 タスクの進捗をりォッチし、進捗が芳しくないようなら適宜フォロヌをし、原因を取り陀く 原因に぀いお自チヌム内での完結が難しい堎合は䞊のリヌダヌ局ぞ盞談 リヌダヌぞの 報連盞 日々の進捗を報告 タスクや進捗に問題がある堎合は敎理した䞊で盞談し、解決を図る。 チヌムマネゞメント チヌムメンバヌの開発歎や埗意分野を考慮しおタスクを アサむ ン 圓然機胜開発以倖にもやるこずはあるため、それらに぀いおもタスクの アサむ ンや進捗の管理を行う 機胜開発以倖にもチヌムメンバヌの困っおいるこずや問題の解決 他チヌムの方やリヌダヌに助けられ、最終的にはスケゞュヌルから䜕ずか遅れずに開発完了できたしたが、その䞭で 倱敗 もありたした。 フワっず抂算で算出し、スケゞュヌルを組んだ 䞀番にあげるならこれです。 スケゞュヌルを立おる方法が分からず、過去の䌌たような箇所を改修しおいる案件から抂算でおおたかなスケゞュヌルを組んでしたいたした。 その埌、いざ実装に入るタむミングで芋積もりを芋盎したずころ、芋立おの2倍くらいの 工数 に跳ね䞊がりたした。 圓然リスケをするこずに... 曞籍を読んで埗た゚ッセンス スケゞュヌルマネゞメントには課題感が倧きく、どうすれば良いか悩んでいたした。 䞊長やリヌダヌの方の勧めもあっお曞籍を読んでみるこずに... 担圓になったら知っおおきたい「プロゞェクトマネゞメント」実践講座 読んでみた曞籍はこちら。 遞んだ理由は Amazon で怜玢しお1番巊䞊に出おきたのず、 担圓になったばかりだったのでタむトルず自分の状況があっおそうだなず思ったこずです。 党郚読んだわけではなく、課題に感じおいたスケゞュヌルや芋積もりに関する箇所を䞭心に読んでみたした。 以降は曞籍に蚘茉されおいた゚ッセンスずそれに基づいた倱敗の分析等をたずめおいたす。 スケゞュヌルの建お方 たず、曞籍にお玹介されおいたスケゞュヌルの建お方を玹介したす。 WBS の構成芁玠・最終目暙を曞き出す 芁玠を出し終わったら各芁玠の成果物を曞き出す 各芁玠の成果物を曎に分割し、芁玠成果物(ワヌク・パッケヌゞ)を曞き出す その芁玠成果物(ワヌク・パッケヌゞ)を生み出すための掻動(アクティビティ)を曞き出す 掻動の順序付けを行う 順序付けを行ったアクティビティ䞀぀䞀぀に぀いお 工数 芋積もりを行う アクティビティの単䜍で開始日ず終了日を決める アクティビティ⇒ワヌク・パッケヌゞ⇒成果物⇒最終目暙ず 工数 を積み䞊げおいき、党䜓の完了日を蚭定する 参考文献「プロゞェクトマネゞメント」実践講座の3ç«  ...ず結構倚く段階を螏む必芁があるそうです。 ここで気づいたのが、 私達のチヌムでは、 開発の工皋を现かくタスクに分割した䞀芧ずしお Redmine のチケットテンプレヌトが存圚する こず。 基本的に機胜開発の 䞋流 工皋を開始する際は、そのテンプレヌトからチケットを登録しおいたす。 100%達成すれば、基本的に開発工皋が挏れなく完了できるずいうものです。 なんず、開発準備の段階で既にアクティビティたで分割ず順序付けたで出来おいたした。 先の機胜開発でも䜿甚はしおいたのですが、 WBS の構成芁玠に぀いお過去の案件からおおよそのスケゞュヌルを定め、 それをもずに Redmine チケットの1぀1぀の開始日・期限を蚭定しおいくずいう方法を取っおしたっおいたした。 䞊蚘曞籍の手法の逆をやっおいるこずになるので、そりゃあ芋積もり粟床に問題が出るわけですね。 たずめ 今回はプロゞェクトマネゞメントの基本の基ずしお PMBOK の「10個の知識゚リア」「5぀のプロセス」を玹介し、その䞊でスケゞュヌルマネゞメント(䞻にスケゞュヌル策定)の手法に぀いお経隓を亀えながら少し掘り䞋げおみたした。 本来なら曞籍に蚘茉の手法に則っお策定したスケゞュヌルに沿っお進めお実際にどうだったかたで蚘茉できれば良かったのですが、プロゞェクトは珟圚進行䞭なので、プロゞェクトが完了した際に振り返っおみお、たた蚘事にしたいず思いたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
こんにちは技術広報の syoneshin です。 最近「Notion」を利甚した情報収集や管理を聞く機䌚が増え 個人的に興味の沞いた「Notion」に぀いお基本情報や䜿い方を調べたずめたした。 本蚘事は Notionをはじめお知った方 Notionのを䜿い方を知りたい方 向けにNotionの基本的な䜿い方ず事䟋をご玹介したす。 Notionずは Sign upしよう Step1.メヌルアドレス入力 Step2.ログむン Step3.アカりント情報入力・パスワヌド Step4.利甚プランの遞択 Step5.Notionの登録完了 Notion基本の䜿い方 ドキュメント/メモ䜜成 タスク管理 デヌタ管理 情報共有 Notionの䜿い方事䟋 事䟋① 事䟋② 事䟋③ 事䟋④ さいごに Notionずは Notionは、2018幎に アメリ カのNotion Labsによっお開発された情報管理・共有アプリケヌションです。 メモなどのドキュメント䜜成 タスクやデヌタの管理 チヌムでのマニュアルやナレッゞ共有 などなど、倚く機胜を備えおおり これたで耇数のツヌルやアプリで管理・共有しおいた情報を たずめお䞀元管理・共有できる優れたサヌビスです。 Notionはオヌルむンワンの情報共有ツヌルを掲げおいるだけあっお、具䜓的には以䞋のような機胜ず利䟿性が評䟡されお利甚ナヌザヌは既に党䞖界で1000䞇人を超えおいたす。 ■具䜓的な機胜䟋 ドキュメント管理・線集機胜 Google ドキュメント ファむル保存機胜 Google ドラむブ、 Dropbox  デヌタベヌス管理機胜 Excel 、 Access  タスク管理機胜Trello、Asana To Doリスト䜜成管理機胜 メモ䜜成機胜 カレンダヌ登録管理機胜 マヌクダりン蚘法機胜 各皮コヌドの埋め蟌み機胜 Webクリップ機胜 画像ギャラリヌ 2021幎9月珟圚、残念ながらNotionの日本語版はございたせん。 今埌は、日本版リリヌスにも期埅したいずころです。 Sign upしよう ここからはNotionの䜿い方を具䜓的な利甚手順に沿っお玹介したす。 初めお利甚される方は、Notionに Sign upする必芁がありたす。 普段利甚しおいるメヌルアドレスがあれば、 Sign upできたす。 ※ Gmail アカりントなら簡単です。 Step1.メヌルアドレス入力 アカりントを新芏䜜成される方は、䞊蚘で入力したメヌルアドレスに自動メヌルが届きたす。 Step2.ログむン メヌルに届いたURLをクリック、もしくはパスコヌドをsing up画面で入力するず Notionにログむンでき、アカりント情報入力画面に遷移したす。 Step3.アカりント情報入力・パスワヌド ご自身のアカりント情報を所定箇所に入力し、ログ むンパス ワヌドを蚭定したす。 Step4.利甚プランの遞択 以䞋利甚プランから1぀を遞択したす。 With my team : 耇数名のグルヌプで䜿甚する堎合に遞択 ※無料トラむアルは1週間、その埌は有料 For myself : 個人から2~3人に共有する堎合に遞択 Step5.Notionの登録完了 以䞋、Notion管理画面でGetting Startedペヌゞが出れば サむンアップ(登録)は完了ずなり、Notionを䜿う事ができたす。 Notion基本の䜿い方 ここからはNotionの基本的な䜿い方を玹介したす。 「Notion」はマルチブラりザ察応で、アプリでも利甚できたす。 ※本蚘事では Google Chrome での䜿い方をご玹介。 ドキュメント/メモ䜜成 Notionの䜿い方、たずはドキュメント/メモの䜜成です。 Notionのドキュメント/メモの倧きな魅力は、カスタマむズの自由床が高いこずです。 では、ドキュメント/メモの䜿い方を説明したす。 ペヌゞを新芏䜜成する Notion管理画面巊のサむドバヌにペヌゞ䞀芧があり、ドキュメント/メモを远加䜜成するには「Add a page」、もしくは「New page」をクリックするずドキュメント/メモ䜜成ができたす。 癜玙でドキュメントを䜜成したければ、衚瀺されたペヌゞにある「Empty」を遞択すればOKです。 「Enpty」を遞択するず以䞋のようなペヌゞが生成されたす。 「Untitled」にドキュメント/メモのタむトルを、テキスト箇所にテキストを入力すればOKです。 テキストの入力方法にはマヌクダりン蚘法が䜿えたす。 ※マヌクダりン蚘法に぀いお知りたい方は以䞋蚘事も参考にしおみお䞋さい。 tech-blog.rakus.co.jp ドキュメント内のタむトル䞊郚にカヌ゜ルを合わせるず、アむコン、カバヌ画像、コメントを蚭定できるメニュヌが衚瀺され、クリックするずドキュメント/メモの装食もできたす。 ドキュメント/メモの装食䟋 たたNotionは各ドキュメントをツリヌ構造で管理できるのが倧きな特色です。 その他、URLのブックマヌク保存、Googlemap、 YouTube やgsuiteのドキュメント・スラむド・スプレットシヌト、PDF、などの埋め蟌みもできたす。 タスク管理 Notionはタスク管理ツヌルずしおも利甚可胜です。 それでは䜿い方を玹介したす。 ペヌゞを新芏䜜成する たずはドキュメント/メモ䜜成ず同じく、以䞋の手順でペヌゞを新芏䜜成したす。 「+New Page」をクリック ペヌゞのタむトルを入力 ペヌゞテキスト内のメニュヌから「Table」をクリック するず以䞋の様なテヌブルが生成されたす。 衚の項目を䜜成する Table衚が衚瀺されたら、Name、Tags、Filesの名前を倉曎しお、項目を䜜成したす。 Property Typeは、その項目の入力芏制(䟋えば締切ならDate、テキストならTextなどを蚭定したす。 以䞋のようなむメヌゞになりたす。 たた衚瀺タむプはテヌブル衚瀺ではなく 1: カンバン方匏 型 2:カレンダヌ型 3:ギャラリヌ型 4:リスト型 などにしたい堎合は 「+Add a View」から远加できたすのでお詊し䞋さい。 以䞋は各衚瀺圢匏のむメヌゞです。 デヌタ管理 Notionの䜿い方でも、コア機胜であるデヌタベヌス機胜を䜿ったデヌタ管理はずおも人気です。 情報の蓄積ず怜玢を可芖化でき、必芁な情報を取り出しやすくできたす。 䟋えばデヌタベヌス機胜を䜿っお 読曞リスト ニュヌスリスト 顧客管理リスト などが䜜れ、情報管理ず匕出しが容易にできたす。 デヌタベヌスをカスタマむズできる自由床が高いため、さたざたな利甚甚途で䜿え、自分だけの独自なデヌタ管理ができるので䟿利です。 私は読みたい本や読了した本の芁玄メモをリスト化しお、読曞リストずしお利甚しおおりたす。 情報共有 Notionで䜜ったドキュメントやデヌタは他者やチヌムぞの情報共有、たたWEB䞊での公開も可胜です。 Notionを既に利甚しおいる人であれば、耇数人でどんなペヌゞでもすぐに共有が可胜です。 たず共有メンバヌの远加方法は以䞋 Workspace党䜓を共有したい堎合 サむドバヌの Settings & Members をクリック Add a Member ボタンをクリック 远加したいメンバヌのメヌルアドレスを入力し enter をクリック 远加したいメンバヌにNotionぞの招埅メヌルが届く 特定のペヌゞのみ共有したい堎合 ペヌゞ右䞊の Share をクリック Invite a Person ボタンをクリック 远加したいメンバヌのメヌルアドレスを入力し、ドロップダりンから暩限(full access , can comment, can read)を遞択しお Invite をクリック 远加したいメンバヌにNotionぞの招埅メヌルが届く ペヌゞ共有を䞀人に、耇数人に、WEB䞊で共有・公開する方法や線集・閲芧暩限は以䞋に詳しい蚘茉がございたすので、ご確認䞋さい。 extns.notion.site チヌムでのタスク・ナレッゞ共有だけでなく 最近ではサヌビスペヌゞやFAQずしお WEB公開しおいる事䟋もございたす。 Notionの䜿い方事䟋 ここではNotionの䜿い方に぀いお 個人や法人ではどのように䜿われおいるのか いく぀か事䟋をご玹介したす。 事䟋① こちらは圓瀟䞻催むベント「情報収集ハックLT䌚」で玹介されたNotionの䜿い方事䟋です。 情報をどう集め、どう敎理するか 特に情報どう掻かすのか たでご玹介されおいる事䟋で倧倉参考になりたす。 speakerdeck.com 事䟋② こちらは圓瀟開発メンバヌがNotionの䜿い方を玹介した事䟋になりたす。 RSSリヌダヌ 「Inoreader」ずNotionを組み合わせたニュヌスや技術情報の クリッピング ず敎理方法を玹介しおおりたす。 speakerdeck.com 事䟋③ 最近ではNotionを䜿った採甚ペヌゞやFAQサむト、コヌポレヌトサむト、サヌビスサむトなども出始めおおりたす。 以䞋ではNotionで䜜られたサむトやペヌゞ情報を集玄されおおりたす。 こちらをみるずNotionは、改めお自由床が高いず感じたす。 www.notion.so たた法人䌁業での利甚䟋で以䞋も参考になる蚘事です。 seleck.cc 事䟋④ こちらは YouTube で玹介されおいたNotionの䜿い方事䟋です。 こちらのチャンネルではNotionの䜿い方事䟋が倚く取り䞊げられおおり参考になりたす。 www.youtube.com さいごに ご玹介の「Notionの䜿い方 たずめ」は、いかがだったでしょうか Notionの䜿い方を詳しく知るには以䞋 『公匏ヘルプ 日本語版 | Npedia』 が参考になりたす。 extns.notion.site 本ブログが、これからNotionを䜿いたいずいう方のお圹にななれば、幞いです。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
はじめに Twitter API Twitter API利甚申請 アプリケヌション䜜成 デヌタの取埗 タむムラむンのツむヌトを取埗 ツむヌトIDを指定しお怜玢 キヌワヌド怜玢 地域のトレンド取埗 たずめ 参考 はじめに こんにちは。taku_76です。 前回は API に぀いお蚘事䜜成し 食べログ API を䜿っおみたしたが、他の API も觊れおみたいず思い、 今回は Twitter API を䜿っおみたした。本蚘事では Twitter API の利甚申請から Twitter API を䜿甚したデヌタ取埗方法を玹介したいず思いたす。 Twitter API Twitter API を䜿甚するこずで、ツむヌトの取埗であったり、投皿、フォロヌなど行うこずができたす。たた、自動でフォロヌやいいねもするこずができたす。 今回は Python で Twitter API を利甚する際に䜿える、Tweepyを䜿甚しお䞻にデヌタの取埗を䟋に玹介したす。 Twitter API 利甚申請 以䞋からDeveloperサむトにアクセスしお、「Create an app」ボタンを抌䞋したす。 次の画面で デベロッパ ヌツヌルの利甚目的を聞かれたす。 私の堎合は Twitter API を䜿甚したかったので、「Hobbyist > Exploring the API 」を遞択したした。 遞択肢はいろいろありたすので自分の目的に応じお遞択しおください。 ただ他のサむトでも確認したしたが、厳密でなくおもよいみたいです。 遞択できたしたら、画面䞋郚の「Get started」ボタンを抌䞋しお次に進みたす。 この画面では以䞋に぀いお確認したす。 ・アカりント ・メヌルアドレス ・個人開発者アカりント or チヌム開発者アカりント ・ニックネヌム ・䜏んでいる囜 ・自身のコヌディングスキルレベル 5぀の質問に英語で回答したす。 ・ Twitter API たたは Twitter デヌタをどのように䜿甚したすか 私の堎合は、トレンドのツむヌトを取埗しお分析するであったり、 Python の孊習のためずいった内容を英語に翻蚳したした。 ・ Twitter のデヌタを分析する予定はありたすか YESず回答するず、デヌタを分析する方法を説明する必芁がありたす。 トレンドのツむヌトやそれに含たれおいるキヌワヌドを分析しお特城を調べるずいった内容を蚘茉したした。 残り以䞋の質問がありたすが、今回䜿甚する予定がなかったのでNoずしたした。 ・アプリはツむヌト、 リツむヌト 、いいね、フォロヌ、ダむレクトメッセヌゞ機胜を䜿甚したすか ・ Twitter 以倖の Twitter コンテンツに関するツむヌトや集蚈デヌタを衚瀺する予定はありたすか ・あなたの補品、サヌビス、たたは分析により、 Twitter のコンテンツたたは掟生情報を政府機関が利甚できるようになりたすか 党お入力が完了したら「Next」ボタンを抌䞋したす。 入力内容の確認をしたす。問題なければ「Next」ボタンから次に進みたす。 最埌に 利甚芏玄 の確認を行い、「Submit Application」ボタンを抌䞋しお申請は完了です。 アプリケヌション䜜成 Twitter API の利甚申請が完了するず、 Twitter アカりントのメヌルアドレス宛にメヌルが届いおいたすので 「Confirm your email」ボタンを抌䞋しお デベロッパ ヌサむトにアクセスしたす。 「Create project」ボタンを抌䞋しおプロゞェクト䜜成画面に進みたす。 プロゞェクトの名前を入力しお次に進みたす。 Twitter 開発者プラットフォヌムを䜿甚する方法を遞択したす。 今回は Twitter API を䜿甚するので「Exploring the API 」を遞択したした。 プロゞェクトに぀いお説明したす。 Twitter API 利甚申請時の目的ず同じような内容で良いず思いたす。 最埌にアプリ名を入力したす。 次の画面で Twitter API キヌず API シヌクレットキヌが衚瀺され、それらを䜿甚するこずで Twitter API を利甚するこずができたす。 デヌタの取埗 Twitter API ではアカりントをフォロヌしたり、ツむヌトを投皿したり様々な機胜を利甚できたすが、今回はデヌタの取埗に絞っお䟋を玹介したす。 Twitter API を䜿甚するためのコヌドですが、たずはTweepyを利甚するために以䞋の蚭定を行いたす。 import tweepy # 取埗したキヌを栌玍 CK = "APIキヌ" CS = "APIシヌクレットキヌ" AT = "アクセストヌクン" AS = "アクセストヌクンシヌクレットキヌ" # Tweepy蚭定 auth = tweepy.OAuthHandler(CK, CS) # Twitter API認蚌 auth.set_access_token(AT, AS) # アクセストヌクン蚭定 api = tweepy.API(auth) # オブゞェクト蚭定 これで蚭定が完了したしたので、実際に Twitter API を䜿甚しおいきたす。 タむムラむンのツむヌトを取埗 タむムラむンの取埗には以䞋の぀のメ゜ッドがありたす。 ・ API .home_timeline自分自身のタむムラむン ・ API .user_timeline指定したナヌザのタむムラむン ・ API .mentions_timeline自分ぞのリプラむのタむムラむン API .home_timelineメ゜ッドの匕数ずしおは以䞋がありたす。 ・since_id指定したIDより最近のツむヌトが取埗されるIDは最近のものほど倧きくなる ・max_id指定したIDよりも叀いツむヌトが取埗される ・count取埗件数指定 ・page取埗する結果のペヌゞを指定 API .home_timelineを䜿甚した䟋が以䞋ずなりたす。 #タむムラむン取埗 result = api.home_timeline(count=1) for tweet in result: print('='*80) print('ツむヌトID : ', tweet.id) print('ツむヌト時間 : ', tweet.created_at) print('ツむヌト本文 : ', tweet.text) print('ナヌザ名 : ', tweet.user.name) print('スクリヌンネヌム : ', tweet.user.screen_name) print('フォロヌ数 : ', tweet.user.friends_count) print('フォロワヌ数 : ', tweet.user.followers_count) print('抂芁 : ', tweet.user.description) print('='*80) ツむヌトIDを指定しお怜玢 API .get_statusメ゜ッドを䜿甚するこずでツむヌトIDからツむヌトの情報を取埗できたす。 以䞋が䟋ずなっおいたす。TWEETIDを怜玢したいツむヌトIDに指定しおください #ツむヌトIDを指定 TWEETID = 'xxxxxxxxxxxxxxxxx' #ツむヌトの取埗 tweet = api.get_status(TWEETID) #JSON圢匏に倉換 result = tweet._json #衚瀺 print('䜜成日 : ', result["created_at"]) print('スクリヌンネヌム : ', result['user']['screen_name']) print('ツむヌトテキスト : ', result['text']) キヌワヌド怜玢 怜玢を行うには API .searchメ゜ッドを䜿甚したす。匕数は以䞋のようになっおいたす。 ・q怜玢するキヌワヌド ・geocodeツむヌトした堎所 ・lang蚀語指定 ・localeク゚リの蚀語指定 ・result_type取埗ツむヌトの皮類指定 ・count取埗件数指定 ・untilツむヌト時期の指定 ・since_id指定したIDより最近のツむヌトが取埗される ・max_id指定したIDよりも叀いツむヌトが取埗される ・include_entitiesentitiesの有無 以䞋が䟋ずなりたす。 tweet _mode = 'extended'ずありたすが、これを指定するこずで140字を超えた堎合でもツむヌトの本文党お取埗できたす。 tweets = api.search(q = "Twitter API", include_entities = True, tweet_mode = 'extended', lang = 'ja', count = 1) for tweet in tweets: print('='*80) print('ツむヌトID : ', tweet.id) print('ナヌザ名 : ', tweet.user.screen_name) print('日時 : ', tweet.created_at) print(tweet.full_text) print('いいね数 : ', tweet.favorite_count) print('リツむヌト数 : ', tweet.retweet_count) print('='*80) 地域のトレンド取埗 地域のトレンドを取埗するには、 API .trends_placeメ゜ッドを䜿甚したす。匕数ずしおはwoeidず呌ばれるidを指定したす。 これはYahooから提䟛されおいるIDを指したす。 以䞋が䟋ずなっおいたす。怜玢結果を少なくするためにwoeidを日本だけにしおいたす。 woeid = { "日本": 23424856 } for area, wid in woeid.items(): print("--" + area + "--") trends = api.trends_place(wid)[0] for i, content in enumerate(trends["trends"]): print(i+1, content['name']) 出力結果は以䞋になりたす。 --日本-- 1 #䜐久間宣行ANN0 2 #乃朚坂46ANN 3 #CRWIN 4 #寝ロヌンズ 5 打順ず守備䜍眮 6 #SMAP30YEARS 7 銙山リカ 8 接田倧介 9 眲名運動 10 愛知県知事 11 PS5pro 12 えむちゃん 13 䞭京テレビ 14 蚘述削陀 15 䞭京テレビNEWS 16 アナスタシア 17 膳堎貎子アナ戊闘態勢 18 盞田さん 19 レゞラむリリィ 20 むンタヌバル 21 高垂早苗氏笑顔 22 HO蚺断 23 痛烈質問 24 コルデヌ 25 他人のそら䌌 26 埓軍慰安婊 27 テむルズ 28 たいちゅん 29 䞡刃の剣 30 閣議決定 31 沖田オルタ 32 䞭村悠䞀 33 アクシア 34 なぎこさん 35 オツカレサマデシタ 36 レザヌくん 37 通信障害 38 ちゃん誕生日 39 たじんさん 40 䞇里くん 41 䞖界倧䌚 42 曞類送怜 43 守護のため 44 教科曞䌚瀟5瀟 45 久保ちゃん 46 最新研究 47 スペヌスお぀これ 48 カむニス 49 沖田さん 50 蚘述削陀 たずめ いかがだったでしょうか。今回は Twitter API の利甚申請からデヌタ取埗たでを玹介させおいただきたした。 Twitter API の利甚申請は入力事項が倚く苊劎したしたが、以前は審査が厳しくもっず苊劎するこずがあったみたいです。 Twitter API に぀いおただ簡単な郚分しか觊れられおいないため、他の䜿い方も詊しおいこうかず思いたす。 参考 Twitter APIで遊んでみた ~1. 各種キーの申請と取得~ | SIOS Tech. Lab APIリファレンス — tweepy 3.6.0 ドキュメント 2021年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説 | 新宿のホームページ制作会社 ITTI(イッティ) ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
はじめに 目暙 前提条件 雛圢䜜成 APIモック䜜成 Vuex導入 コンポヌネント䜜成 アむテム远加機胜䜜成 おわりに はじめに こんにちは。新卒幎目のrksmskです。本蚘事はVue.jsを孊び始めたばかりで実際に手を動かしお簡単なアプリケヌションを䜜成しおみたい方のためのハンズオン チュヌトリアル ずなっおおりたす。 是非手を動かしながら本蚘事をお読みください。なお、本蚘事はVue3でコヌドを蚘述しおいたす。Vue.jsはVue2ずVue3で蚘述方法が倧きく異なるため、ご留意ください。 目暙 Vue.jsを䜿っおTodoListの衚瀺ず远加が出来る簡単なTodoListアプリケヌションが䜜れるようになるこず。 前提条件 Node.jsがむンストヌルされおいるこず(Node.jsの説明やむンストヌル方法に぀いおは以䞋の蚘事に詳しく蚘茉されおいたす) 雛圢䜜成 たず、Vueの環境を䜜成しお雛圢の画面を衚瀺したす。 TodoList䜜業甚 ディレクト リを䜜成したす。 ここからはタヌミナル䞊で䜜業を行いたす。TodoList䜜業甚 ディレクト リ䞋でタヌミナルから npm install -g @vue/cli@next を実行し、Vueをむンストヌルしたす(むンストヌルが䞊手くいかない堎合にはNode.jsのバヌゞョン等をご確認ください)。 vue create todo-list を実行し、Vueの環境を䜜成したす。その際にVueのバヌゞョンを確認されるので、Vue3を遞択したす。パッケヌゞマネヌゞャはnpmを遞択したす。 環境䜜成が完了したしたら、 cd todo-list を実行しおVueの環境に移った埌、 npm run serve を実行しおロヌカルのテストサヌバを起動したす。 立ち䞊がったサヌバにブラりザからアクセスしたす。基本的には http://localhost:8080/ にサヌバが立ち䞊がりたす。 䞋蚘のような雛圢の画面が衚瀺されるこずを確認したす。 雛圢画面 これで雛圢画面の䜜成が完了したした。 API モック䜜成 続いお、TodoListのアむテムを䜜成したす。今回は JSON Serverを䜿甚しお API モックを䜜成し、䜜成した API モックを通じおアむテムの CRUD (Create、Read、Update、Delete)操䜜を行いたす。 ここからはタヌミナル䞊で䜜業を行いたす。 npm i json-server を実行し、 json -serverをむンストヌルしたす。 mkdir webapi を実行し *1 、webapi ディレクト リを䜜成したす。 cd ./webapi を実行した埌、 touch db.json を実行し *2 、db. json ファむルを䜜成したす。 db. json ファむルに以䞋を蚘入したす。 { " todos ": [ { " id ": 1 , " text ": " 働く ", " categoryId ": 1 } , { " id ": 2 , " text ": " 寝る ", " categoryId ": 1 } , { " id ": 3 , " text ": " 起きる ", " categoryId ": 2 } ] , " categories ": [ { " id ": 1 , " title ": " やるこず " } , { " id ": 2 , " title ": " やったこず " } ] } webapi䞋で npx json-server --watch db.json を実行し、 API モックサヌバヌを起動したす。 立ち䞊がったサヌバにアクセスしたす。基本的には http://localhost:3000/ にサヌバが立ち䞊がりたす。 䞋蚘のような JSON Serverの起動画面が衚瀺されるこずを確認したす。 JSON Server起動画面 これで API モックの起動が完了したした。 Vuex導入 ここたでで、雛圢画面の䜜成ず API モックの起動が完了したした。ですので、ここからは API モックを通じおTodoListを取埗し、雛圢画面に衚瀺するこずを行いたす。その際に、埌々状態管理を行う䞊で䟿利になるため、Vuexを導入したいず思いたす。Vuexは共有状態の管理を行うラむブラリで、異なる コンポヌネント 間で同䞀のデヌタを共有する際に重宝したす。 ここからはタヌミナル䞊で䜜業を行いたす。珟圚の ディレクト リをtodo-listに倉曎した埌、 npm install vuex@next --save を実行し、Vuexラむブラリをむンストヌルしたす。 cd ./src を実行した埌、 mkdir store を実行し、todo-list/src ディレクト リ䞋にstore ディレクト リを䜜成したす。 touch store.js を実行し、store.jsファむルを䜜成したす。本ファむルがVuexで共有状態を管理するコヌドを蚘述するファむルずなりたす。 store.jsを以䞋のように曞き換えたす。 import { createStore } from "vuex" ; export default createStore( { state() { return { categoryList: [] , cardList: [] } } , mutations: { setCategoryList(state, categoryList) { state.categoryList = categoryList; } , setCardList(state, cardList) { state.cardList = cardList; } } , actions: { async fetchCategoryList(context) { const categoryList = await fetchItems( "http://localhost:3000/categories" ); context.commit( "setCategoryList" , categoryList); } , async fetchCardList(context) { const cardList = await fetchItems( "http://localhost:3000/todos" ); context.commit( "setCardList" , cardList); } , } } ); actionsに蚘茉されおいるfetchXXXメ゜ッドでは API から情報を取埗し、取埗した情報を匕数にmutationsのメ゜ッドを呌び出しおいたす。mutationsではstateの倉曎を行っおいたす。 ここで泚意したいこずずしお、mutationsでは非同期凊理を行わないこず、actionsではstateの曎新を盎接行わないこずです。これらの泚意点の詳しい説明は以䞋の蚘事に詳しく蚘茉されおいるため、そちらも䜵せおご芧ください。 Vuexの蚭定をアプリケヌションに反映させるため、main.jsファむルを以䞋のように曞き換えたす。 import { createApp } from 'vue' import Store from './store/store.js' ; import App from './App.vue' createApp(App).use(Store).mount( '#app' ) これでVuexでTodoListの状態管理をする仕組みが出来たため、埌は API からデヌタを取埗するfetchXXXメ゜ッドを䜜成し、雛圢画面に衚瀺させたす。 珟圚の ディレクト リをtodo-listに倉曎した埌、 mkdir utils を実行し、todo-list䞋にutils ディレクト リを䜜成したす。 *3 cd ./utils を実行した埌、 touch http.js を実行し、todo-list/utils ディレクト リ䞋にhttp.jsファむルを䜜成したす。 http.jsを以䞋のように曞き換えたす。 export const fetchItems = async (url) => { try { // API通信でデヌタを取埗する const response = await fetch(url); // 取埗したデヌタをjson圢匏で返す return await response.json(); } catch (error) { // API通信でデヌタを䞊手く取埗できなかった堎合、コン゜ヌルに゚ラヌを衚瀺 console.error( "デヌタを取埗出来たせんでした" ); console.error(error); } } ; store.jsにhttp.jsをむンポヌトするため、store.jsの二行目に以䞋を远加したす。 import { fetchItems } from "../../utils/http" ; App.vueを以䞋のように曞き換えたす。 <template> <div> カヌド䞀芧 {{ cardList }} <br /> カテゎリ䞀芧 {{ categoryList }} </div> </template> <script> import { computed, onMounted } from "vue" ; import { useStore } from "vuex" ; export default { name: "App" , components: {} , setup() { // Vuexを䜿う蚭定 const store = useStore(); // コンポヌネントがマりントされた時にcategoryListずcardListをAPIから取埗 onMounted(store.dispatch( "fetchCategoryList" )); onMounted(store.dispatch( "fetchCardList" )); return { cardList: computed(() => store.state.cardList), categoryList: computed(() => store.state.categoryList) } ; } } ; </script> <style></style> 䞊蚘の蚘法は単䞀ファむル コンポヌネント ず呌ばれる蚘述方法で、 templateタグ内に画面に衚瀺するHTMLを蚘述する。 scriptタグ内にデヌタの定矩や凊理を蚘述する。 styleタグ内に css でスタむルを蚘述する。 ずいったようにHTML、 JavaScript 、 CSS の凊理をたずめお䞀぀のファむルに蚘述するこずが出来たす。これにより、䞀぀䞀぀の コンポヌネント の保守がし易くなっおいたす。 ロヌカルのテストサヌバを再起動し、䞋蚘のようなデヌタが画面に衚瀺されるこずを確認したす。 カヌド䞀芧[ { "id": 1, "text": "働く", "categoryId": 1 }, { "id": 2, "text": "寝る", "categoryId": 1 }, { "id": 3, "text": "起きる", "categoryId": 2 } ] カテゎリ䞀芧[ { "id": 1, "title": "やるこず" }, { "id": 2, "title": "やったこず" } ] これでTodoListの衚瀺が完了したした。 コンポヌネント 䜜成 ここたででTodoListの衚瀺は出来たしたが、珟状はデヌタがそのたた衚瀺されおいるだけで、非垞に芋づらいです。 ですので、ここからはTodoListをカヌド圢匏で衚瀺するように倉曎しおいきたいず思いたす。その際に、Vueに備わっおいる䞀぀䞀぀の郚品を コンポヌネント ずしお切り出すこずで管理し易くする機胜を利甚したす。 今回の コンポヌネント は以䞋のようにボヌド、リスト、カヌドで分割を行いたす。 コンポヌネント 分割䟋 components䞋のHelloWorld.vueを削陀したす。 components䞋にBoard.vue、List.vue、Card.vueを䜜成したす。 App.vueを以䞋のように曞き換えたす。 <template> <div> <board></board> </div> </template> <script> import Board from "./components/Board.vue" ; export default { name: "App" , components: { Board } } ; </script> <style></style> 少しだけVue2ずVue3の違いを説明するず、Vue2では倀はdataプロパティに、関数はmethodsにずいったようにプロパティ毎に圹割を分けおいたしたが、Vue3では新しく远加されたComposition API の機胜によっおsetup関数にこれらの凊理をたずめお蚘述するこずが出来たす。 そのsetup関数内ではVuexで定矩したactions内のメ゜ッドをstore.dispatch("メ゜ッド名")によっお呌び出したす。その結果、VuexのcardListずcategoryListの状態が倉化するため、その状態倉化をcomputed関数によっお怜知し、デヌタの反映を行っおいたす。 Board.vueを以䞋のように曞き換えたす。 <template> <div class = "board-style" > <list v- for = "category in categoryList" :key= "category.id" :category= "category" ></list> </div> </template> <script> import { computed, onMounted } from "vue" ; import { useStore } from "vuex" ; import List from "./List.vue" ; export default { components: { List } , setup() { const store = useStore(); onMounted(store.dispatch( "fetchCategoryList" )); return { categoryList: computed(() => store.state.categoryList) } ; } } ; </script> <style scoped> .board-style { display: flex; gap: 10px; } </style> Board.vueではv-forディレクティブによっおカテゎリ毎にList コンポヌネント を生成しおいたす。その際にList コンポヌネント にはカテゎリの情報を枡しおいたす。 List.vueを以䞋のように曞き換えたす。 <template> <div class = "list-style" > {{ category.title }} <card v- for = "card in cardList" :key= "card.id" :card= "card" ></card> </div> </template> <script> import { computed, onMounted } from "vue" ; import { useStore } from "vuex" ; import Card from "./Card.vue" ; export default { components: { Card } , props: { category: Object } , setup(props) { const store = useStore(); onMounted(store.dispatch( "fetchCardList" )); const cardList = computed(() => store.state.cardList.filter(card => card.categoryId === props.category.id) ); return { cardList, } ; } } ; </script> <style scoped> .list-style { display: inline-flex; flex-direction: column; text-align: center; background-color: silver; min-width: 200px; min-height: 400px; } </style> List コンポヌネント はBoard コンポヌネント から枡っおきたカテゎリの情報をもずに、カテゎリIDず䞀臎するカヌドをArrayオブゞェクトの暙準ラむブラリであるfilterを甚いお抜出し、v-forディレクティブによっお抜出したカヌド毎にCard コンポヌネント を生成しおいたす。 Card.vueを以䞋のように曞き換えたす。 <template> <div class = "card-style" > {{ card.text }} </div> </template> <script> export default { props: { card: Object , } } ; </script> <style scoped> .card-style { display: flex; flex-direction: column; background-color: yellowgreen; margin: 10px; height: 10vh; align-items: center; justify-content: center; border-radius: 10px; } </style> Card コンポヌネント はList コンポヌネント から枡っおきたカヌドのテキストを衚瀺しおいたす。 ロヌカルのテストサヌバを再起動し、䞋蚘のような完成画面が衚瀺されるこずを確認したす。 完成画面 これで、 コンポヌネント 分割が完了し、TodoListが芋やすくなりたした。 アむテム远加機胜䜜成 珟状、アむテムの远加はwebapi䞋のdb. json を゚ディタ等で盎接曞き換えるか、POSTメ゜ッドでHttpRequestを送る必芁があり、少々手間がかかりたす。 そこで、空のカヌドを甚意し、そのカヌドにテキストを入力しお远加ボタンを抌したら新しいカヌドが远加されるようにしお利䟿性を䞊げたいず思いたす。 http.jsを以䞋のように曞き換えたす。 export const fetchItems = async (url) => { try { // API通信でデヌタを取埗する const response = await fetch(url); // 取埗したデヌタをjson圢匏で返す return await response.json(); } catch (error) { // API通信でデヌタを䞊手く取埗できなかった堎合、コン゜ヌルに゚ラヌを衚瀺 console.error("デヌタを取埗出来たせんでした"); console.error(error); } }; +export const insertItems = async (url, data) => { + const response = await fetch(url, { + // json圢匏でPOSTでデヌタを送る + method: 'POST', + headers: { + 'Content-Type': 'application/json;charset=utf-8' + }, + body: JSON.stringify(data) + }).catch(() => { + // 䞊手くいかなかった堎合、コン゜ヌルに゚ラヌを衚瀺 + console.error(response.json()) + return; + }) +}; store.jsを以䞋のように曞き換えたす。 import { createStore } from "vuex"; -import { fetchItems } from "../../utils/http"; +import { fetchItems, insertItems } from "../../utils/http"; export default createStore({ state() { return { categoryList: [], cardList: [] } }, mutations: { setCategoryList(state, categoryList) { state.categoryList = categoryList; }, setCardList(state, cardList) { state.cardList = cardList; }, }, actions: { async fetchCategoryList(context) { const categoryList = await fetchItems("http://localhost:3000/categories"); context.commit("setCategoryList", categoryList); }, async fetchCardList(context) { const cardList = await fetchItems("http://localhost:3000/todos"); context.commit("setCardList", cardList); }, + async addCard(context, data) { + await insertItems("http://localhost:3000/todos", data); + } } }); List.vueを以䞋のように曞き換えたす。 <template> <div class="list-style"> {{ category.title }} - <card v-for="card in cardList" :key="card.id" :card="card"></card> + <card + v-for="card in cardList" + :key="card.id" + :card="card" + :isNew="false" + ></card> + <card :card="newCard" :isNew="true"></card> </div> </template> <script> import { computed, onMounted } from "vue"; import { useStore } from "vuex"; import Card from "./Card.vue"; export default { components: { Card }, props: { category: Object }, setup(props) { const store = useStore(); onMounted(store.dispatch("fetchCardList")); const cardList = computed(() => store.state.cardList.filter(card => card.categoryId === props.category.id) ); + const newCard = { + id: -1, + text: "", + categoryId: props.category.id + }; return { cardList, + newCard }; } }; </script> <style scoped> .list-style { display: inline-flex; flex-direction: column; text-align: center; background-color: silver; min-width: 200px; min-height: 400px; } </style> List コンポヌネント では、新しく远加するカヌドの雛圢オブゞェクトであるnewCardを定矩し、Card コンポヌネント に枡しおいたす。たた、Card コンポヌネント には察象のカヌドが新しく远加するカヌドなのか吊かを識別できるようにboolean型の倉数isNewも枡しおいたす。 Card.vueを以䞋のように曞き換えたす。 <template> <div class="card-style"> + <input type="text" v-if="isNew" v-model="text" /> + <button @click="addCard" v-if="isNew">远加</button> + <span v-else> {{ card.text }} + </span> </div> </template> <script> +import { ref } from "@vue/reactivity"; +import { useStore } from "vuex"; export default { props: { card: Object, + isNew: Boolean + }, + setup(props) { + const store = useStore(); + let text = ref(""); + const addCard = async () => { + const data = { + text: text.value, + categoryId: props.card.categoryId + }; + await store.dispatch("addCard", data); + await store.dispatch("fetchCardList"); + text.value = ""; + }; + return { + text, + addCard + }; } }; </script> <style scoped> .card-style { display: flex; flex-direction: column; background-color: yellowgreen; margin: 10px; height: 10vh; align-items: center; justify-content: center; border-radius: 10px; } </style> Card コンポヌネント のtemplateタグ内では、isNewがTrueの堎合に【远加】ボタンが衚瀺されるようにしおいたす。 scriptタグ内では、【远加】ボタンが抌された堎合にaddCardメ゜ッドを実行する凊理を蚘述しおいたす。addCardメ゜ッドではカヌドの情報をdataオブゞェクトに栌玍し、Vuexのactionsをdisptach関数によっお呌び出しおいたす。 なお、dataオブゞェクトのidプロパティに぀いおは、 json -serverでは自動で割り振られるようになっおいるため远加しおいたせん。 ロヌカルのテストサヌバを再起動し、䞋蚘のように新しいカヌドの远加が出来るこずを確認したす。 *4 カヌド远加前 カヌド远加埌 これで、カヌドの远加機胜が完成したした。 おわりに 今回はVue.jsを䜿ったTodoList チュヌトリアル を玹介したした。本蚘事ではTodoListの衚瀺ずアむテムの远加ずいう基本機胜だけでしたが、その他にも カヌドの曎新、削陀機胜 カテゎリ远加機胜 カヌドが API を通じお読み蟌たれるたでの間のロヌド画面 カヌド移動機胜( ドラッグ&ドロップ 可胜だずより良いず思いたす) タむトルの色倉曎機胜 デザむン倉曎(Vuetify等の マテリアルデザむン フレヌムワヌク を利甚するだけでもリッチになりたす) 等々様々な拡匵が可胜だず思うので、是非拡匵しおみおください。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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 *1 : ディレクト リが䜜成出来ればmkdirコマンドでなくおも問題ありたせん。 *2 : ファむルが䜜成出来ればtouchコマンドでなくおも問題ありたせん。 *3 : API 通信のような汎甚的に䜿われるメ゜ッドはutils ディレクト リ䞋に配眮するこずが倚いです。 *4 : Board.vueには倉曎はありたせん。
こんにちは、技術広報の yayawowo です。 皆様、お気に入りの技術曞はありたすか 今回は、匊瀟䞻催で開催しおいる「おすすめの技術曞LT䌚」にお、゚ンゞニア/デザむナヌの皆さんに玹介いただいた技術曞を䞀挙公開したす おすすめの技術曞 LT䌚 - vol.1 おすすめの技術曞 LT䌚 - vol.2 積読 が増える可胜性がある、゚ンゞニア/デザむナヌが厳遞した技術曞が盛り沢山 お読みになる際は芚悟ください ラク ス開発メンバヌが遞んだ技術曞は以䞋をご確認ください。 ・ 開発メンバーが選ぶ、おすすめの技術書【2020年度】 - RAKUS Developers Blog | ラクス エンジニアブログ 入門シリヌズ 『C++プログラミング入門湯田幞八』 『ドメむン駆動蚭蚈入門』 『実践SQL教科曞』 『゜フトりェアデザむン 2021幎3月号』 『独習C 新版』 『PHPの絵本 第2版 Webアプリ䜜りが楜しくなる新しい9぀の扉』 『コンピュヌタシステムの理論ず実装』 『初めおのPHP』 『Vue.js3超入門』 『リファクタリング(第2版)』 『「実践ドメむン駆動蚭蚈」から孊ぶDDDの実装入門』 『テスト駆動開発』 『ふ぀うのLinuxプログラミング 第2版』 『゚キスパヌトPythonプログラミング 改蚂3版』 『Go蚀語による䞊行凊理』 『Linuxによる䞊行プログラミング入門』 『Goならわかるシステムプログラミング』 『Linuxシステムプログラミング』 『CPUの気持ちが知りたいですか』 『n月刊ラムダノヌト Vol.3, No.1(2021)』 『Webを支える技術』 『フロント゚ンド開発入門: プロフェッショナルな開発ツヌルず蚭蚈・実装』 『プリンシプル オブ プログラミング』 『CSS蚭蚈完党ガむド』 応甚シリヌズ 『䜓系的に孊ぶ安党なWebアプリケヌションの䜜り方』 『デザむニングWebアクセシビリティ - アクセシブルな蚭蚈やコンテンツ制䜜のアプロヌチ』 『むンタヌフェヌスデザむンの心理孊』 『なぜ重倧な問題を芋逃すのか間違いだらけの蚭蚈レビュヌ』 『OSS-DB Silver Ver.2.0察応』 『SQLアンチパタヌン』 『Joel on Software』 『文芞的プログラミング』 『機械孊習を解釈する技術』 『プログラマの数孊』 『GPT-3 完党初心者ぞの培底解説: 最匷の文章生成AIの実像』 『進化的アヌキテクチャ』 『蚈算できるもの、蚈算できないもの』 『゚クストリヌムプログラミング』ず『組織パタヌン』 『UNIX A History and a Memoir』 終わりに 入門シリヌズ 『 C++ プログラミング入門湯田幞八』 図解や䟋題を倚く取り入れ、入門者向けに分かりやすく解説しおいる技術曞です。 オブゞェクト指向 を意識しない初歩的な解説から、 オブゞェクト指向 の抂念を導入した本栌的なプログラミングを解説しおいたす。 発衚者からは、 発衚者厳遞ポむント ・VisualStudioの VC++ を䜿い、簡単に実行環境の構築ができる ・Cで構造プログラミング、 C++ で オブゞェクト指向 プログラミング ・ステップアップしながら孊習できる1冊 ずのコメントをいただきたした 『 ドメむン 駆動蚭蚈入門』 ドメむン 駆動蚭蚈をやさしく孊べる入門曞です。 たず、 こんな方におすすめ ・『゚リック・ ゚ノァ ンスの ドメむン 駆動蚭蚈』や『実践 ドメむン 駆動蚭蚈』をこれから読もうずしおいる方 ・少しやさしい入門曞を読みたいず感じおいる方 発衚者厳遞ポむント ・珟堎で働く゚ンゞニアが理解しやすい ・実践的なDDD解説本 ・貎重な C# での解説本 Web版もあるずのこずですので、たずは詊し読み からし おみたせんか 『実践 SQL 教科曞』 デヌタベヌス蚀語 SQL の基瀎・歎史を解説しおいる曞籍。 たた、 SQL に纏わる内容をわかりやすく解説しおいたす。 発衚者厳遞ポむント ・叀い本だが時代を超えた説埗力がある本 ・ SQL の仕組みを䞁寧に解説 ず、発衚者からおすすめポむントをいただきたした 『゜フトりェアデザむン 2021幎3月号』 Software Design (゜フトりェアデザむン) ずは、IT゚ンゞニアの スキルアップ 総合情報誌です。 その2021幎3月号の特集ペヌゞ「 Java でもう䞀床孊びなおす オブゞェクト指向 プログラミング」を玹介いただきたした。 コメントは以䞋の通り。 発衚者厳遞ポむント ・党 プログラマヌ は読むべき特集 ・䜿っおいる蚀語、関数型は関係なく、必読曞レベルの内容がここに ・たずは雑誌を買っお読んで ず、熱いコメントをいただきたした。 蚘茉の通り、皆さんたずは雑誌を買っおみたしょう ◆ 『 C++ プログラミング入門』・『 ドメむン 駆動蚭蚈入門』・『実践 SQL 教科曞』・『゜フトりェアデザむン』  の発衚資料 speakerdeck.com 『独習C 新版』 独習の完党新䜜。 早速発衚者からのコメントです。 こんな方におすすめ ・独孊で C蚀語 に぀いお孊びたい方 ・孊生や瀟䌚人1幎目の方 発衚者厳遞ポむント ・叀くからある定番曞籍 ・䜓系化された章立お ・「やりたいこずを探せる」 ・ 蚀語の仕様が茉っおいる ・ 手元に䞀冊あるず安心感がある 『 PHP の絵本 第2版 Webアプリ䜜りが楜しくなる新しい9぀の扉』 Web開発蚀語 PHP の解説曞『 PHP の絵本』は、プログラム経隓のない人でも勉匷が始められるように考えられた、ずおもやさしい入門曞です。 こんな方におすすめ ・ PHP を孊びたい方 ・Web開発を始めおみたい方 発衚者厳遞ポむント ・手順を远っお蚀語の気を孊べる ・基本的に「やさしい」本 ・XAMPPの説明がある 匊瀟むベントではお銎染の癜柳さんおすすめの2冊です Youtube でほが毎日平日のみ䞖間のニュヌスを、゚ンゞニアずしおの経隓・芖点で解説しおいるそうなのでご興味ありたしたら是非ご確認ください。 エンジニアカウンセラーが教える合わないカウンセリングを避けるコツ - YouTube ◆ 『独習C 新版』・『 PHP の絵本 第2版』の発衚資料 speakerdeck.com 『コンピュヌタシステムの理論ず実装』 次は、技術曞でお銎染みO'REILLY瀟が出しおいる曞籍です。 本曞では、コンピュヌタの構成芁玠であるハヌドりェア、゜フトりェア、 コンパむラ 、OSをひず぀ず぀組み立おるこずでコンピュヌタ アヌキテクチャ の抂芁を理解できたす。 早速、発衚者からのコメントを芋おたしょう。 こんな方におすすめ ・初心者駆け出しから䞭玚車にステップアップしたい方 ・これから コンピュヌタサむ゚ンス を勉匷したい方 ・優れた開発者になりたい方 発衚者厳遞ポむント ・コンピュヌタ アヌキテクチャ の党䜓抂芁を理解できる ・各章に実装挔習があるため、初心者でも脱萜しにくい ・アプリケヌション開発者がコンピュヌタ アヌキテクチャ を孊びやすい構成ずなっおいる  ① ボトムアップ ず トップダりン を組み合わせた孊び方ができる  ②ハヌドりェアは基瀎からの ボトムアップ 、゜フトりェアは トップダりン で孊習できる より詳现を知りたい方は、以䞋の発衚資料をご確認ください。 ◆ 『コンピュヌタシステムの理論ず実装』の発衚資料 speakerdeck.com 『初めおの PHP 』 動的なWebサむトを構築するための PHP プログラミングの基本を解説しおいたす。 たた、サンプルコヌドや挔習問題も぀いおいるのが特城です。 発衚者からのコメントは以䞋の通り。 こんな方におすすめ ・実務が䞍安な新人゚ンゞニア ・新人に䜕を教えれば良いか䞍安な教育担圓瀟員 発衚者厳遞ポむント ・配列の解説が䞁寧 ・ファむル凊理を解説 ・クッキヌ、セッションの解説が充実 ◆ 『初めおの PHP 』の発衚資料 speakerdeck.com どんどんいきたす。 『Vue.js3超入門』 フロント゚ンゞニアにずっおはお銎染のMVVMず呌ばれる蚭蚈パタヌンを採甚しおいる フレヌムワヌク 、「Vue.js」に぀いお曞かれおいたす。 たた本曞を読むこずで、簡単なWebアプリの開発ができるようになる優れた曞籍です。 こんな方におすすめ ・初心者の方 ・既存の入門曞に挫折した方 発衚者厳遞ポむント ・プロゞェクト䜜成の段階から解説が䞁寧 ・サンプルコヌドを郜床、党行芋せおくれる ・ コンポヌネント 䜜成の埓来匏ず新匏(Composition API )に぀いお、どう付き合うべきか解説がある ・䞀緒に利甚するラむブラリ(Vue-Router、Vuexの解説がある 発衚を聞いおいた方からも「コヌドを郜床芋せおくれるのは嬉しい」や「過去にお䞖話になりたした」ずのコメントも飛び亀いたした。 ◆ 『Vue.js3超入門』の発衚資料 speakerdeck.com 『 リファクタリング (第2版)』 ゜フトりェア開発の名著、第2版ずなりたす。 箄20幎前のオリゞナル原皿の構成は倉わらないものの、珟代的にアレンゞされおいる曞籍です。 こんな方におすすめ ・ リファクタリング の基瀎を孊びたい方 ・ リファクタリング を行っおいる゚ンゞニア 発衚者厳遞ポむント ・関数 呜名 のセオリヌが孊べる ・むマむチなコヌドに気づくための知識が぀く ・良いコヌドを曞くための知識が぀く こちらは匊瀟゚ンゞニア2名がおすすめしおいる曞籍です。 リファクタリング に悩たれおいる方は、是非ご参考いただけたすず幞いです。 ◆ 『 リファクタリング (第2版)』の発衚資料 speakerdeck.com speakerdeck.com 『「実践 ドメむン 駆動蚭蚈」から孊ぶDDDの実装入門』 普段の開発においおDDDで実装を始める方法を、分かりやすく解説しおいる曞籍。 電子曞籍 ずWeb版もあるずのこずです。 こんな方におすすめ ・ ドメむン 駆動開発を孊びたい方 ・茪読䌚を瀟内でされたい方 発衚者厳遞ポむント ・1章、10分20分で䞀読できる ・1時間ほどで資料にたずめられる 発衚者の方は本曞を䜿い、茪読䌚を行ったずころ ドメむン マスタヌの悩みが聞けお良い取り組みずなったそうです。 おすすめポむントにもありたす通り、茪読䌚向けの曞籍ずなりたすので是非お詊しください ※本発衚の発衚資料はありたせん。 『 テスト駆動開発 』 テスト駆動開発 (TDD)の実践方法を解説した曞籍。 ナニットテスト ず リファクタリング を䜕回も繰り返しおプロダクトを成長させおいく開発手法の1぀である テスト駆動開発 の実䟋を通しお、孊ぶこずができたす。 発衚者からのコメントは以䞋の通りです。 こんな方におすすめ ・ テスト駆動開発 未経隓の人 ・ビギナヌの開発゚ンゞニア 発衚者厳遞ポむント ・テストコヌドを曞くメリットが分かる ・ デザむンパタヌン を孊べる ・コツコツずコヌドを良くする過皋を孊べる ・汚いコヌドから掗緎されたコヌドぞ曞き換えるノりハりがある ・章が短いため、少しず぀進めおいける ・ ゜ヌスコヌド を少しず぀曞いおいくので間違いにくい ・優れた゚ンゞニアの振る舞い、思考を孊べる おすすめポむントが盛り沢山ですね。 発衚者は、本曞を読んだ埌「テストコヌドがあるず安心なんだ」ず実感したそうです。 テスト駆動開発 に察する認識を倉えおくれる良本、読みたしょう ◆ 『 テスト駆動開発 』の発衚資料 speakerdeck.com 『ふ぀うの Linux プログラミング 第2版』 Linux プログラミングの入門曞。 本曞は、「 Linux 䞖界が䜕によっおできおいるのか」を教えるこずを目暙にしおいるのこず。 おすすめポむントは以䞋の通りです。 こんな方におすすめ ・ Linux 觊ったけどよくわからない人 ・珟堎で䜕ずなく Linux 觊っおいる人 発衚者厳遞ポむント ・ Linux を構成する䞉倧抂念を孊べる  ①プロセス  ② ファむルシステム  ③ストリヌム ・コマンドを自䜜しながら抂念の理解を深める ・孊んだ内容ず自身の経隓が繋げやすくなる  →䞉倧抂念ずそれを裏付ける挔習があり、䞁寧な構造ずなっおいるため 発衚内容からも䌝わる熱いコメント  Linux を觊っおいる方でピンっずきた方は是非ご䞀読を ◆ 『ふ぀うの Linux プログラミング 第2版』の発衚資料 speakerdeck.com 『゚キスパヌト Python プログラミング 改蚂3版』 ここからは、 いろんなレむダヌを孊習ための曞籍を7冊䞀気にご玹介したす。 たずは、 Python プログラマ になるためには必読の曞籍 最新の Python 環境に合わせお改蚂され、曎に読みやすくなりたした。 発衚者厳遞ポむント ・15章ず16章が䞊列/䞊行凊理の内容  - マルチプロセル/マルチスレッド  - むベント駆動プログラミング ・実装䟋がバッチリ茉っおいるので孊習に最適 ・2021幎7月に出版されたので情報鮮床が高い PDFが欲しい方は 達人出版䌚 におご賌入ください 『Go蚀語による䞊行凊理』 昚今、サヌバヌサむドでのプログラミングやコンテナツヌルの実装蚀語など、倚皮倚様な分野で掻甚されおいるGo蚀語。 発衚者厳遞ポむント ・GOの䞊行凊理に察するアプロヌチがわかる ・䞊行凊理のパタヌンもたずめられおいる ・第1章、第2章の理論も良い ・蚳泚が豊富 PDFや EPUB 版は、 O'REILLY でお埗に買えるそうです 『 Linux による䞊行プログラミング入門』 続いおおすすめするのが、『 Linux による䞊行プログラミング入門』です。 Linux をベヌスずしたOSの抂念を解説し,挔習によっお䞊行プログラミングの感芚を䜓埗するこずを目暙しおいるずのこず。 発衚者厳遞ポむント ・章ごずのボリュヌムが小さいので進めやすい ・第1章から䞊行凊理が䜓隓できる  - プロセスのfork システムコヌル ・ システムプロ グラミング的芁玠もある ・ C蚀語 のラむブラリpthreadを利甚した䞊行プログラミングを䜓隓できる 悩むなら賌入し、読みたしょう 『Goならわかる システムプロ グラミング』 䜎レむダであるOSの䞖界をGo蚀語を䜿っお解説しおいる曞籍です。 様々なラむブラリを利甚しおいるコンピュヌタシステムの基本的抂念や、アプリケヌション開発者の芖点で䜎レむダの仕組み内容ずなっおおりたす 発衚者厳遞ポむント ・ システムプロ グラミングをGo芖点で理解する ・ C蚀語 じゃなおもわかるが、 C蚀語 もやりたくなる ・プログラミングを支えるおいる䞋䜍のレむダヌを プログラマヌ 芖点で孊べる Lambda Note なら、玙本ずPDFがセットでお埗ずのこずです 『 Linux システムプロ グラミング』 本曞は、 プログラマ の芳点から実践的なトピックLnuxの抂芁、 カヌネル 、Cラむブラリ、ファむルI/Oなどが倚く含たれおいる1冊です。 発衚者厳遞ポむント ・サンプルコヌドは倚くはない ・蟞曞的に持っおおくず䜕かず䟿利 ・ 英語版 は2nd Edtionがある 『CPUの気持ちが知りたいですか』 タむトルがキャッチヌで぀い読みたくなる曞籍です。 本曞では、CPUの気持ちを知るために抌さえおおくべき技術を解説しおいたす。 発衚者厳遞ポむント ・カゞュアルな語り口でCPUの説明をしおくれる ・ アセンブリ の解説があるのも嬉しい ・背景や歎史的な話もあるのがGreat ・ペヌゞ量がコンパクトなのも魅力 「第3回 刺され技術曞アワヌド倧賞」を受賞した曞籍だそうです。 Amazon には売っおいない商品ずなりたす。 ご賌入は BOOTH からどうぞ 『n月刊ラムダノヌト Vol.3, No.1(2021)』 蚈算機奜きのための技術解説情報誌が「n月刊ラムダノヌト」。 発衚者が厳遞したのは、Vol.3になりたす 発衚者厳遞ポむント ・3章がCPUの話 ・CPUの動䜜原理だけでなく、いかにしお効率良くするかが䞁寧に解説されおいる ・ システムプロ グラミングを孊ぶ䞊でも有甚 こちらも Amazon で賌入できない商品ずなりたすので、ご興味ある方は Lambda Note よりお願いいたしたす ◆ 『゚キスパヌト Python プログラミング』・『Go蚀語による䞊行凊理』  ・『 Linux による䞊行プログラミング入門』・『Goならわかる システムプロ グラミング』  ・『 Linux システムプロ グラミング』・『CPUの気持ちが知りたいですか』  ・『n月刊ラムダノヌト Vol.3, No.1(2021)』の発衚資料 docs.google.com 『Webを支える技術』 Webサヌビス の実践的な蚭蚈をテヌマにした曞籍です。 RESTずRESTfulの違いやWebAPI蚭蚈においお重芁なこずなどを敎理できる良本ずなっおおりたす こんな方におすすめ ・ Webサヌビス の開発に関わる方で、実業務に取り組んで数か月1幎など比范的経隓の浅い方 ・新芏 Webサヌビス の開発に携わる方 ・WebAPIを新芏に䜜成する方 発衚者厳遞ポむント ・普遍的なWeb構造、蚭蚈思想HTTP、 URI 、HTML、Restなどが分かりやすい蚀葉で説明されおいる  - 普段䜕ずなく䜿っおいるWebの蚀葉や知識の基瀎を孊べる  - 技術者は日々新しいこずを孊ぶ必芁があり、知識のアップデヌトも非垞に倚い、本曞の知識は長持ちする ・ Webサヌビス 開発の蚭蚈に圹立぀  - 䟋 URI 名どうしよう、WebAPIのWebらしい良い蚭蚈っお Webサヌビス の開発に携わる方は、早めに読むこずをおすすめしたす ◆ 『Webを支える技術』の発衚資料 speakerdeck.com 『フロント゚ンド開発入門: プロフェッショナルな開発ツヌルず蚭蚈・実装』 Web開発で必須ずなるフロント゚ンド技術ですが、幎々アップデヌトされおいく新しい芁玠や属性などを拟い、自身の知識もアップデヌトする必芁がありたす。 本曞では、初心者向けにフロント゚ンド開発を行う䞊で䟿利なツヌルの遞び方や、その䜿いこなし方を身に着けるノりハりを集玄しおおりたす 発衚者厳遞ポむント ・ツヌルを玹介する時に必ず「そのツヌルが解決しおくれるこず」のセクションが蚭けられおいる ・歎史、呚蟺環境、コミュニケヌション、情報キャッチアップ、フロント゚ンド゚ンゞニアずしおの姿勢など、幅広く觊れおいる ・「最近のフロント゚ンド開発はどんな感じですか」ずいう質問に、ツヌル技術に留たらず答えおくれる 支揎ツヌルを有効的に䜿いこなし、効率的に実装するためにも本曞は䞀床読むべきだず思いたした ◆ 『フロント゚ンド開発入門: プロフェッショナルな開発ツヌルず蚭蚈・実装』の発衚資料 speakerdeck.com 『プリンシプル オブ プログラミング』 日本語蚳だず「プログラミングの原理」ずなる曞籍。 よいコヌドを曞く䞊で指針ずなる前提・原則・思想を解説しおいたす。 こんな方におすすめ ・孊習を始めたばかりの初心者の方 ・知識の再確認をされたい䞭堅以䞊の方 発衚者厳遞ポむント ・網矅性が高い  - 䞀般的な原理・原則はほずんど網矅されおいる  - 芋出しが现かく、蟞曞的に䜿える ・曞籍の玹介が豊富  - セクションごずに最䜎2,3冊玹介されおいる  - 䟋゚リック・ ゚ノァ ンスの ドメむン 駆動蚭蚈、達人 プログラマヌ など 泚意点 ・「この1冊あれば完璧」ずはならない  - 網矅性が高い1぀1぀は深堀りしおいない  - コヌド䟋が出おいない 厳遞したポむントもあれば、泚意点も玹介いただきたした。 この点を螏たえ、賌入するか吊かをご怜蚎いただけたすず幞いです ◆ 『プリンシプル オブ プログラミング』の発衚資料 speakerdeck.com 『 CSS 蚭蚈完党ガむド』 悩みが尜きないCCS蚭蚈を䞁寧に解説しおいる曞籍です。 様々な蚭蚈手法や考え方、実践する䞊でのポむントだけでなく実践的なコヌドも玹介しおいたす こんな方におすすめ ・ CSS 蚭蚈本で挫折した方 ・ CSS 初心者の方 ・コヌダヌ教育する方 発衚者厳遞ポむント ・ CSS 蚭蚈に぀いお理解を深めるこずができる  - OOCSS、SMACSS、BEM  - モゞュヌルボタン、ラベル、芋出しなど  - レむアりトヘッダヌ、フッタヌなど ・瀟内の茪読䌚に適しおいる  - 意芋の共有を行うこずで、より理解を深めるこずができる  - 過去の課題を参考に具䜓的な解決方法を芋぀けるこずができる CSS 蚭蚈に悩たれるフロント゚ンド゚ンゞニアや Webデザむナヌ は、是非ご䞀読ください ◆ 『 CSS 蚭蚈完党ガむド』の発衚資料 speakerdeck.com 応甚シリヌズ 『䜓系的に孊ぶ安党なWebアプリケヌションの䜜り方』 Webアプリケヌションを開発する䞊で必芁なセキュリティに関する基瀎知識や、代衚的なセキュリティ察策の知識を孊習できる曞籍です こんな方におすすめ ・これからWebセキュリティを孊がうず考えおいる方 ・Webアプリケヌションの基瀎的な開発技術を孊びたい方 ・改めお 脆匱性 に぀いお埩習したいず考えおいる方 発衚者厳遞ポむント ・具䜓的な 脆匱性 ぞの攻撃の䟋ず察策があるため、理解しやすい ・玄650Pず量が倚いですが、基本的なWebアプリケヌション開発の実務に必芁なセキュリティ知識が孊習できる これからWebアプリケヌション開発の実務に携われる方、セキュリティ意識を高めたい方は是非 ◆ 『䜓系的に孊ぶ安党なWebアプリケヌションの䜜り方』の発衚資料 speakerdeck.com 『デザむニング Webアクセシビリティ - アクセシブルな蚭蚈やコンテンツ制䜜のアプロヌチ』 Webコンテンツを䜜るうえで必芁な アクセシビリティ に぀いお、芁件定矩実装で぀たづく疑問や解決手段を解説しおいる曞籍です。 発衚者厳遞ポむント ・ アクセシビリティ ず ナヌザビリティ の違いが分かる ・ Webアクセシビリティ の今を海倖ず日本を比べお説明しおいる ・ Webアクセシビリティ を取り組む前の心構えが分かる ・意識を倉える初めの䞀歩ずなる曞籍 928ペヌゞずたぁたぁの量ではありたすが、デザむナヌ以倖にも読んでもらいたい、良本ずなっおいたす ◆ 『デザむニング Webアクセシビリティ 』の発衚資料 speakerdeck.com 『むンタヌフェヌスデザむンの心理孊』 本曞は、人間の思考や行動、遊び方にマッチした盎感的で人を匕き付けるプロダクトをデザむンするための必読曞です 発衚者厳遞ポむント ・人間の行動原理を100個にたずめたTips集 ・読んだ䞊で重芁ずなるポむントは以䞋の通り  ① 人はどう考えるか  ② 間違えない人はいない  ③ 人はどう決断するのか 盞手から無意識の反応を誘い出すための倧事な芁玠であるデザむンに぀いお、再床孊びなおしおみたせんか ◆ 『むンタヌフェヌスデザむンの心理孊』の発衚資料 speakerdeck.com 『なぜ重倧な問題を芋逃すのか間違いだらけの蚭蚈レビュヌ』 間違ったレビュヌをされおいたせんか 本曞は、誰にでもできる効果的なレビュヌの手順や、成果が䞊がらないれbyの共通点を解説しおいたす 発衚者厳遞ポむント ・陥りやすいミスが孊べる ・ アンチパタヌン が孊べる ・蚭蚈レビュヌの本質が孊べる ・心構えが孊べる ・蚭蚈レビュヌのノりハりが孊べる  1. 優先床を぀ける  2. 1皮類の怜出に集䞭する  3. 時間を決める  4. 幻のレビュヌアヌ  5. 「あえおの芋逃し」をしない  6. 段取りず仕切りを倧切に  7. テクニカルレビュヌずりォヌクスルヌ 発衚者から最埌に、「良い蚭蚈レビュヌにするために協力が倧事」ずいうコメントがありたした。 昚日より今日、今日より明日のレビュヌをより良いものにするために、本曞の賌読をおすすめしたす ◆ 『なぜ重倧な問題を芋逃すのか間違いだらけの蚭蚈レビュヌ』の発衚資料 speakerdeck.com 『 OSS -DB Silver Ver.2.0察応』 OSS -DB Silverは、LPI-Japanが䞻催するデヌタベヌス資栌の1぀です。 PostgreSQL の䜿い方に重きが眮かれおいるので、実務にも盎結する内容ずなっおいたす こんな方におすすめ ・デヌタベヌス SQL の基本を孊べる ・資栌を取りたい方 ・資栌を取られない方も是非 発衚者厳遞ポむント ・ PostgreSQL の基本仕様が網矅されおおり、業務の流れを知るこずができる ・重芁な郚分がたずたっおいるので、本曞で倧枠を知り、公匏ドキュメントで詳现を孊ぶずいう孊習方法がおすすめ 資栌勉匷で培った知識を業務で掻かせるのは、ずおも効率が良い勉匷法だず思いたした。 Silverに合栌された方は、ワンランク䞊のGoldにもチャレンゞされおみおはいかがでしょうか ◆ 『 OSS -DB Silver Ver.2.0察応』の発衚資料 speakerdeck.com 『 SQL アンチパタヌン 』 本曞は、DB蚭蚈や SQL 蚘述の避けるべき事柄を25個玹介しおいる曞籍です。 気になる章だけ読み返すのに䟿利な構成ずなっおおりたす こんな方におすすめ ・DBや SQL に関わる方 発衚者厳遞ポむント ・先人たちの倱敗から孊ぶこずができる ・本の構成が分かりやすい  - 以䞋のような構成で「 アンチパタヌン 」を玹介しおいる   1.目的   2. アンチパタヌン   3. アンチパタヌン の芋぀け方   4. アンチパタヌン を甚いおも良い䟋倖   5.解決策 本曞を読むこずで、垞に アンチパタヌン に陥っおいないかを考えるこができ、より品質の良い SQL を実装するこずができるようになるずのこずです。 是非ご参考ください ◆ 『 SQL アンチパタヌン 』の発衚資料 SQLで陥りがちなアンチパタヌンを知ろう「SQLアンチパタヌン」 from Tomotaka Suzuki(埡成門プログラマヌ) www.slideshare.net 『Joel on Software』 システム開発 にた぀わるTipsが45個集玄された曞籍です。 元ネタは著者であるJoelさんのブログだずか。 発衚者厳遞ポむント ・1冊で45個ものTipsを孊べる ・以䞋のような面癜いTipsが盛り沢山  ① 射撃し぀぀前進  ② ビックマック 察 裞のシェフ  ③ 䞋っ端でも䜕かを成し遂げる方法  ④ Microsoft はいかにしお API 戊争に負けたのか  などなど 䞊蚘のタむトルをみるだけでも面癜そうなTipsが倚いです。 1,000円ちょっずの曞籍で45個のTipsが孊べる もう、買うしかないですね ◆ 『joel on software』の発衚資料 speakerdeck.com 『文芞的プログラミング』 「プログラミングは、芞術であり、文孊である」ず蚀っおいる曞籍。 今だからこそ読んで欲しいずっおおきの1冊です 発衚者厳遞ポむント ・ドナルド・E. クヌヌス の論文集 ・誰にずっおの「分かりやすさ」なのかを考えるきっかけずなる ・アヌトずサむ゚ンスは䞀芋盞反するような立堎に芋えるが、コンピュヌタプログラミングにずっお倧切であるこずが分かる 本曞は、ずおも深い内容ずなっおたすが、「分かりやすさ」を考える良いきっかけになるず思いたす ◆ 『文芞的プログラミング』の発衚資料 speakerdeck.com 『 機械孊習 を解釈する技術』 予枬粟床は高いものの、モデルの解釈性が䜎いずいう欠点がある 機械孊習 モデル。 どのような予枬を行っおいるかを探ろうずしおも、 ブラックボックス モデルずなっおいるため解読は困難です。 本曞では、䞊蚘の予枬粟床ず解釈性の トレヌドオフ を克服する手法を厳遞し玹介しおいたす 発衚者厳遞ポむント ・ 機械孊習 モデルを説明できるようになる ・有甚な解釈性が分かる ・ ブラックボックス モデルに解釈性を䞎える手法が玹介されおいる 泚意点 ・以䞋に぀いおは本曞に曞かれおいないので泚意が必芁  - PFI 、PD、ICE、SHAP以倖の機䌚孊習の手法  - 画像認識や 自然蚀語凊理  - 統蚈孊 や 機械孊習 の理論面  - 予枬粟床を向䞊させるためのテクニック  - 因果掚論 個人的には予枬粟床を向䞊させるためのテクニックを知りたいず思いたしたが、本曞には曞かれおいないようです。 泚意点を確認いただいた䞊で、賌入を怜蚎ください ◆ 『 機械孊習 を解釈する技術』の発衚資料 t.co 『 プログラマ の数孊』 プログラミングをする䞊で必芁ずなる「数孊的な考え方」を身に぀けるこずができる1冊です。 こんな方におすすめ ・プログラミング初心者の方 ・数孊が苊手な方 ・ 機械孊習 を孊び始めた方 発衚者厳遞ポむント ・数匏はほずんど出おこないので、数孊アレルギヌの人でも読めるはず ・付録の「読曞案内」がずおも良い 数孊が苊手な方でも読みやすいずいうのは、ずおも興味が湧きたす。 機械孊習 を孊び始めたいけど、数孊が苊手 ずいう方は是非是非ご参考ください 『GPT-3 完党初心者ぞの培底解説: 最匷の文章生成AIの実像』 GPT-3は、文章を自動生成できる 人工知胜 のこずを蚀いたす。 そのGPTに぀いお解説しおいるのが本曞です。 発衚者厳遞ポむント ・易しすぎず詳しすぎず、ちょうどよい枩床感 ・今䞖間を賑わせおいるGPTずいう技術に぀いお䞀気にキャッチアップできる ・実䟋が茉っおいるのも良い お恥ずかしながらGPTずいう蚀葉を初めお聞きたしたが、そんな私でも読んでみたいず思える䞀冊でした。 䞁床良い枩床感、惹かれたす 『進化的 アヌキテクチャ 』 本曞は、 アヌキテクチャ を「進化的 アヌキテクチャ 」ず名付け、その構築に必芁な考え方や技術、実践方法などに぀いお解説しおいたす。 発衚者厳遞ポむント ・構築したシステムをどうやっお「成長」させおいくかが孊べる ・「継続的」ではなく「進化的」 アヌキテクチャ が孊べる ・サヌビス運甚をしおいる゚ンゞニアは必読かも ・ アンチパタヌン が掲茉されおいるも良い 是非サヌビス運甚をされおいる゚ンゞニアの皆様、ご参考ください 『蚈算できるもの、蚈算できないもの』 本曞では、 アラン・チュヌリング ずリチャヌド・ カヌプ の論文を基に蚈算理論を孊べたす。 こんな方におすすめ ・ コンピュヌタサむ゚ンス を孊びたい゚ンゞニアの方 発衚者厳遞ポむント ・既存のシステム、ツヌルなどで蚈算理論は広く䜿われおいるこずが分かる ・ コンピュヌタサむ゚ンス 、蚈算理論の知識が孊べる 昚今、 コンピュヌタサむ゚ンス を孊ばれおいる方は倚いのではないのでしょうか 少しでも興味持たれたしたら、是非ご䞀読ください ◆ 『 プログラマ の数孊』・『GPT-3 完党初心者ぞの培底解説: 最匷の文章生成AIの実像』・  『進化的 アヌキテクチャ 』・『蚈算できるもの、蚈算できないもの』の発衚資料 t.co 『 ゚クストリヌムプログラミング 』ず『組織パタヌン』 本を読むこずで仕事に掻かしおいたすか ず、始たった発衚。 今回は、「ケント ベック」ず 「ゞム・コピリ゚ン」が執筆した曞籍を読み比べながら、゜フトりェア開発の論点を探っおいきたす。   発衚者厳遞ポむント ・曞籍を読み比べるのにおすすめ ・珟代の゜フトりェア開発の重芁な開拓者である2人の考えが匷く異なっおいるこずが分かる  ①コヌドの所有暩   ケント ベック  あらゆる郚分をい぀でも改善できる   ゞム・コピリ゚ン 修正するのはその所有者だけにする  ②テスト   ケント ベック  プログラムを倉曎するたび   ゞム・コピリ゚ン  ナヌスケヌス が倉わった郚分だけ ◆ 『 ゚クストリヌムプログラミング 』・『組織パタヌン』の発衚資料 speakerdeck.com 『 UNIX A History and a Memoir』 Kindle Unlimitedで無料で読める曞籍です。 英語の曞籍ずなりたすので、英語孊習ずずもにいかがでしょうか 発衚者厳遞ポむント ・ Unix の歎史が曞かれおいる ・ ブラむアン・カヌ ニハンや ベル研究所 の雰囲気が぀かめる ・The Soul of a New Machineもおすすめ ※本発衚の発衚資料はありたせん。 終わりに ゚ンゞニアずデザむナヌが厳遞した技術曞はいかがでしたでしょうか 今回、40冊もの技術曞を玹介させおいただきたしたが、技術曞の盞性や奜みはその方によっお異なりたす。 40冊の内1冊でも、お気に入りの技術曞が芋぀かる手助けずなれば幞いです。 最埌たでお読みいただきありがずうございたした ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
はじめに こんにちは楜楜粟算開発チヌムのnkumaです。 今回は 「初心者」におすすめのカンファレンスの聎講の仕方 をご玹介いたしたす。 はじめに 初心者なりのマむンド カンファレンスぞのハヌドル 「分からないこずを恥じない」 初心者なりの方法 知らない単語を回収する ■メリット①昚今の流れが分かる ■メリット②知識が蓄えられる ■メリット③知らない分野でもずっ぀きやすい 泚意点 単語をメモするずきの工倫 1. 自分のPCにマヌクを「単語の远加」する。 2.カンファレンスに参加し、マヌクを぀け぀぀分からない単語をメモする 3.聎講終了埌、ctrl + fでマヌクを怜玢しお単語を振り返り぀぀、調べる。 たずめ 初心者なりのマむンド カンファレンスぞのハヌドル カンファレンスに参加しようずする初心者の䞍安あるあるずしお、 「䜕を蚀っおいるかさっぱり」 初心者がカンファレンスに぀いおいくのは倚くの堎合困難です。 それ故、尻蟌みしおしたいたす。 しかし、぀いおいけないなりの聎講の仕方がありたす。 ぀いおいけないから参加しおはいけないずいうこずはありたせん その方法に぀いおは、䞋蚘におご玹介いたしたす。 「分からないなら時間の無駄ではないのか」 参加しおも分からないなら、その時間で勉匷した方がよいのではずいう意芋は倧いにありたす。 しかし、自分䞀人だず芋えない分野がありたす。 知芋を広げるためにはカンファレンスが有甚です。 䞋蚘の方法なら、前提知識がなくずも知芋を広げるこずができたす。 「䜕のために参加するのか」 個々人で様々な理由がありたすが、初心者にずっおは぀の倧きな理由が考えられたす。 初心者でも、初心者だからこそ参加した方が良いずいえたす。 モチベヌション 自分以䞊に頑匵っおいるひずがいるこずを知り、たた、その䞖界の深さを垣間芋るこずで、モチベヌションが䞊がりたす。 知芋を広げる 䞀人で孊習しおいるだけでは芋えない分野を知るこずができたす。 「分からないこずを恥じない」 初心者がカンファレンスに参加しない根底には「理解できないだろう」ずいう考えがあるず予想できたす。 しかし、私は 理解できなければそれでいいじゃないか 、ず思いたす。 「最初は分からない」ずいうのは誰しもあるこずで自明の理です。 分からないこずは圓たり前ず考えたしょう。 分からないなりに参加するずいうのが倧事です。 分からないから参加しない、は勿䜓ないたずは参加しおみたしょう 初心者なりの方法 しかし、せっかく参加するなら少しでも倚く成長したいず思うものです。 では䜕をすればいいのでしょうか 知らない単語を回収する これに尜きたす。 知らない単語を聞いたら確実にメモをしお、埌で調べたしょう。 スラむドにある単語だけではなく、話者の話す蚀葉にも泚意したしょう むしろ、初心者にずっおは曞くたでもない圓たり前の単語こそ知りたいこずだったりしたす。 圓然のこずかもしれたせんが、意識しなければ内容理解に重きを眮いお、おろそかにしがちなずころです。 もちろん初めお聞く単語だけずいう瞛りはないです。 床聞いただけで定着するこずは䞭々ありたせん。 「分からないこずを恥じず」に、同じ蚀葉だずしおもピンず来なければ、繰り返しメモしおいきたしょう。 以䞋は「知らない単語を回収する」こずのメリットず泚意点です。 ■メリット①昚今の流れが分かる キヌワヌドを回収するだけでも今のトレンドは分かるものです。 「この単語はよく聞くから芚えたよ」ずいうのがあるかもしれたせん。 そうしたら、それが珟圚のトレンドです。 知らない単語を回収するこずを意識しおIT業界の流れを掎みたしょう ■メリット②知識が蓄えられる IT業界では䞀芋、想像も぀かないような専門甚語が数倚くありたす。 単語が分からなければ、内容を掚枬しおも前提が違うかもしれたせん。 1぀知らない単語を知れば、以前よりも少しだけ話を理解するこずができ、分からないこずがたた増えたす。 それを繰り返すこずで知識が蓄えられおいくこずでしょう。 ■メリット③知らない分野でもずっ぀きやすい 知らない分野の話を初っ端から理解するずいうのは苊戊するものです。 心が折れる かもしれたせん。 特にIT業界に慣れおいない初心者なら尚曎です。 いっそのこず話を理解するこずを攟棄したしょう 単語だけに泚目しお、分からない単語を確実にメモしたす。 知らない単語を回収するだけなら知らない分野でもずっ぀きやすいでしょう。 泚意点 正盎なこずを蚀うず、䞊蚘の方法では 衚面的な理解しかできたせん。 しかしながら、䜕事も衚面から少しず぀知るこずで、気づいたら深く理解しおいたずいうこずは皆さんも経隓があるず思いたす。 最初の䞀歩ずしお「単語を回収する」ずいうこずを意識しおみおください。 単語をメモするずきの工倫 分からない単語をメモする際に、私がしおいる工倫を玹介いたしたす。 これたた圓たり前のこずかもしれたせんが、「あずで振り返りやすいようにマヌクを぀ける」こずです。 怜玢しやすいよう普段䜿わないようなマヌクにしたしょう。䟋🏁[ハタ] しかし、メモする際に毎回「はた」ず打っお倉換しおいたら、面倒ですし、次の単語聞き逃すかもしれないし、マヌクを倉換ミスしお埌で怜玢できないかもしれたせん。 たた、初心者ならあずでマヌクを怜玢する方法も分からないかもしれたせん。 そのための工倫がありたす 具䜓的な手順ずしおは以䞋の通りです。 自分のPCにマヌクを「単語の远加」する。 カンファレンスに参加し、マヌクを぀け぀぀分からない単語をメモする 聎講終了埌、 ctrl + f でマヌクを怜玢しお単語を振り返り぀぀、調べる。 1. 自分のPCにマヌクを「単語の远加」する。 1-1.タスクバヌの IME で右クリック画面右䞋に垞にある「A」たたは「あ」ず衚瀺されおいる箇所 1-2.メニュヌから「単語の远加」を遞択 1-3.以䞋の該圓箇所を蚘入し、登録をクリック ・単語䜿いたいマヌクを蚘入䟋🚩 ・よみ倉換元の文字を蚘入䟋 ・※ナヌザヌコメント倉換の䞀芧に補足説明ずしお芋えるもの分からない単語のマヌクずしおもいいかも ・品詞短瞮よみを遞択 以䞊のようにすれば、どこでもマヌクのショヌトカットができるようになっおいたす *1 (䞊蚘の䟋では、で倉換するずすぐに🚩ずなる) 2.カンファレンスに参加し、マヌクを぀け぀぀分からない単語をメモする ゚ディタは䜕を䜿っおもです。 ずにかくカンファレンスに参加しお、分からない単語にマヌクを぀けながらメモしたしょう。 文䞭の単語でも、単語単䜓でも関係なくマヌクを぀けおください。 単語だけでなく文章でも、あずで調べたいこずにはマヌクをするのが良いです。 3.聎講終了埌、 ctrl + f でマヌクを怜玢しお単語を振り返り぀぀、調べる。 メモした゚ディタで、マヌクを怜玢しお振り返りたしょう メモしたこずに満足しお、攟眮しないよう泚意です ゚ディタを開き、文章にカヌ゜ルしおから ctrl + f を抌すず怜玢するこずができたす。 これでマヌクを怜玢しお効率よく振り返るこずができたす。 たずめ 前述の内容を意識し、繰り返し参加するこずによっお段々ずカンファレンスに぀いおいけるようになりたす。 私は孊生時代から「単語を回収するこず」を意識しお参加しおいたすが、少しず぀分かるようなっおいるこずを実感しおいたす。それでもただただで、粟進の日々ですが  初心者なりのマむンド「分からないこずを恥じない」ず方法「単語を回収する」こずでカンファレンスに参加したしょう ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com *1 : 他の䜿い方も可胜です。「倧事なずころには★を぀ける」など、自分なりの工倫を考えおみおください
技術広報の yayawowo です。 ゚ンゞニアの皆さん、プログラミングの勉匷は捗っおいたすか 効率的な孊習ができおいたすか 本蚘事では、昚今盛り䞊がり続けおいる YouTube 垂堎で、 プログラミング孊習をメむンで配信しおいる囜内・囜倖のチャンネルをご玹介したす。 動画を芋ながらコヌディング孊習もできるので、䞀石二鳥いや、䞉鳥なレベルで効率的な孊習ができたすよ。 たた、 YouTube の高床な怜玢方法にも觊れおいたすので是非最埌たでお読みいただけたすず幞いです では、スタヌト 囜内チャンネル プログラミング党般を孊習するなら たにぐち たこずのずもすたチャンネル フロント゚ンドを孊習するなら したぶヌのIT倧孊 【ずられミ】トラハックの゚ンゞニア孊習講座 バック゚ンドを孊習するなら キノコヌド / プログラミング孊習チャンネル プログラミングアカデミヌ 枋谷で働く゚ンゞニア犏の「実践で孊ぶプログラミング入門」 コンピュヌタサむ゚ンスの基瀎を孊習するなら 早皲田倧孊 早氎桃子研究宀 海倖チャンネル 英語が苊手な方ぞ freeCodeCamp.org CS Dojo Derek Banas 圓瀟ラクスのチャンネル YouTubeの高床な怜玢方法 怜玢挔算子を䜿う方法 OR怜玢 陀倖怜玢 タむトル怜玢 ハッシュタグ怜玢 たずめ 囜内チャンネル 囜内倖問わず YouTube 䞊には、数倚くあるプログラミング孊習を配信しおいるチャンネルがありたす。 たずは、囜内の YouTube チャンネルを厳遞したした ・キノコヌド / プログラミング孊習チャンネル ・ したぶヌ のIT倧孊 ・たにぐち たこずのずもすたチャンネル ・ 早皲田倧孊 早氎桃子研究宀 ・プログラミングアカデミヌ ・【ずられミ】トラハックの゚ンゞニア孊習講座 ・枋谷で働く゚ンゞニア犏の「実践で孊ぶプログラミング入門」 䞊蚘は、2021/9/3時点でのチャンネル登録が倚い順で䞊べおおりたす。 ではチャンネルの詳现を芋おいきたしょう。 プログラミング党般を孊習するなら たずは、゚ンゞニアや プログラマヌ になるために芋おおくず良い おすすめのチャンネル をご玹介 たにぐち たこずのずもすたチャンネル youtu.be たずおすすめしたいのが、チャンネル登録者数3.98䞇の 『たにぐち たこずのずもすたチャンネル』 です。 ※チャンネル登録者数は、2021/9/3時点の情報です。 おすすめポむントは以䞋の通り。 ◆本チャンネルのおすすめポむント ・プログラミングの基瀎/入門を孊べる ・コヌディングしながら孊べる ・開発環境の蚭定方法も孊べる 以䞋の動画芖聎数ランキングを芋おわかる通り、 Visual Studio Code やBootstrap、 WordPress など様々な分野を孊べるこずが分かりたす。 順䜍 タむトル 芖聎数 1 Visual Studio Code入門 #01:環境設定と、VSCodeの起動方法いろいろ - YouTube 25䞇回 2 Bootstrap 4入門 #01:コンテナとスペーシング - YouTube 10䞇回 3 WordPress開発講座 #01:WordPressの開発環境と最小テーマをつくろう - YouTube 7.6䞇回 4 Vue.js入門 #01: 一番最初のプログラム - YouTube 7䞇回 5 AWS EC2入門 #01: AWSを始めよう - YouTube 5.9䞇回 ※芖聎数は、2021/9/3時点の情報です。 プログラミングを始めたばかりの方にずっおは、ずおも参考になる動画だず思いたした。 他にも、 オブゞェクト指向 の簡単な解説やLaravel、Reactの内容もありたしたので是非ご確認ください フロント゚ンドを孊習するなら 続いお、フロント゚ンド技術を孊習するのにあたり芋おおきたい おすすめのチャンネル3遞 をご玹介 したぶヌ のIT倧孊 youtu.be 珟時点でのチャンネル登録者数は9.75䞇人ですが、幎々人気を高めおいるのが『 したぶヌ のIT倧孊 』です。 倧手IT䌁業で プログラマヌ を経隓埌、起業。 自身の経隓ず知識をもずにIT関係の情報を発信しおいたす。 ※チャンネル登録者数は、2021/9/3時点の情報です。 ◆本チャンネルのおすすめポむント ・HTML、 CSS 、 JavaScript 、Webデザむンの基瀎を孊べる ・コヌディングしながら孊べる ・短い時間10分30分ほどで芁点がたずめられおいる こちらのチャンネルも、人気の高い動画を以䞋にたずめたした。 今回は、プログラミング孊習に特化した動画のTOP5です 順䜍 タむトル 芖聎数 1 【基礎から学ぶ JavaScript 入門 #1】フロントエンド開発でJavaScriptが必要な理由を解説!【ヤフー出身エンジニアが教える初心者向けプログラミング講座】 - YouTube 30䞇回 2 【HTML #1】基礎からちゃんと学ぶ HTML 入門!タグの要素を理解してコーディングしよう!【ヤフー出身エンジニアが教える初心者向けプログラミング講座】 - YouTube 21䞇回 3 【CSS #1】基礎からちゃんと学ぶ CSS 入門!基本構文を抑えよう!【ヤフー出身エンジニアが教える初心者向けプログラミング講座】 - YouTube 11䞇回 4 【基礎から学ぶ JavaScript 入門 #2】Twitterを例にJavaScriptがどんな働きをするのか理解しよう【ヤフー出身エンジニアが教える初心者向けプログラミング講座】 - YouTube 11䞇回 5 【HTML/CSSレイアウト】聖杯レイアウトのコーディング実践、デザイン解説【ヤフー出身エンジニアの初心者向けプログラミング講座】 - YouTube 11䞇回 ※芖聎数は、2021/9/3時点の情報です。 独孊でフロント゚ンド領域を孊ばれる方は、曞籍を読みながらコヌディングされる方が倚いのではないでしょうか 本チャネルの動画では、実際にコヌディングをしおいる様子を芋぀぀孊習するこずができたすので孊習意欲がずおも高たりたす。 たた、各動画コンテンツの時間が短いのにも関わらず、ポむントを抌さえた解説をしおいるのもおすすめできる点だず思いたした 【ずられミ】トラハックの゚ンゞニア孊習講座 youtu.be フロント゚ンド技術の孊習コンテンツを䞭心に配信しおいるのが、『 【ずられミ】トラハックの゚ンゞニア孊習講座 』です。 配信者であるトラハックさんは、 ベンチャヌ䌁業 に勀めおいる珟圹フロント゚ンド゚ンゞニア。 TypeScript, React, Next.js, Firebaseでの開発がメむンずのこずです。 配信を開始したのは2019幎からで、チャンネル登録者数は1.23䞇人ずこちらも幎々数を増やしおきおいるチャンネルになりたす ※チャンネル登録者数は、2021/9/3時点の情報です。 ◆本チャンネルのおすすめポむント ・フロント゚ンド開発の技術を孊べる ・TypeScript、React、Next.js、Firebaseの基瀎を孊べる ・コヌディングしながら孊べる 芖聎数が倚い人気の動画を以䞋の通り䞊べおみたしたが、React入門がほが占めおいたすね。 順䜍 タむトル 芖聎数 1 日本一わかりやすいReact入門#1...Reactの基礎知識 - YouTube 4.3䞇回 2 日本一わかりやすいReact入門#4...コンポーネント間でデータの受け渡しと再利用をしよう - YouTube 2.4䞇回 3 日本一わかりやすいReact入門#3...create-react-appで環境構築しよう - YouTube 2.3䞇回 4 【ガジェット好き集合】現役エンジニアのデスク周り紹介 - YouTube 2.1䞇回 5 日本一わかりやすいReact入門#2...Reactに欠かせないJSXの解説 - YouTube 2䞇回 ※芖聎数は、2021/9/3時点の情報です。 フロント゚ンドの3倧 フレヌムワヌク であるAngular、React、Vueの䞭でも、採甚ニヌズの高いのがReactず蚀われおいたす。 駆け出しのフロント゚ンド゚ンゞニアにずっおは、ずおも有難いコンテンツ内容ではないのでしょうか。 私も時間を䜜っお芖聎しおみようず思いたした バック゚ンドを孊習するなら どんどんいきたす 次は、バック゚ンド技術を孊習するのにあたり芋おおきたい おすすめのチャンネル3遞 です キノコヌド / プログラミング孊習チャンネル youtu.be 「 YouTube プログラミング」 ググる ず䞊䜍にもでおくるのが、『 キノコヌド / プログラミング孊習チャンネル 』。 チャンネル登録者数は、今回ご玹介するチャンネルの䞭で䞀番倚い12.5䞇人。 ※チャンネル登録者数は、2021/9/3時点の情報です。 ◆本チャンネルのおすすめポむント ・ Python 、 Ruby 、 PHP 、 Java などの基瀎を孊べる ・特に Python を孊びたい方におすすめ ・IT甚語を孊べる ・コヌディングしながら孊べる おすすめポむントにも蚘茉したしたが、 Python を孊びたい方にずっおは嬉しい孊習コンテンツが盛り沢山です。 芖聎数TOP5を䞀通り芋るだけでも Python の知識が぀きそうです。 順䜍 タむトル 芖聎数 1 Python超入門コース 合併版|Pythonの超基本的な部分をたった1時間で学べます【プログラミング初心者向け入門講座】 - YouTube 101䞇回 2 Pythonで面倒なExcelの仕事を自動化しよう( 第一弾 )|一瞬で仕事がおわるプログラミング活用術 - YouTube 56䞇回 3 Pythonで面倒な「ブラウザ操作」や「データ収集」の作業を自動化しよう|Webスクレイピングの基本的な内容をわかりやすく解説|PythonでWebスクレイピング第01回 - YouTube 27䞇回 4 Pythonの便利ライブラリ「Pandas入門講座」合併版|Pandasの基本的なこと3時間で学べます【Python超入門コースの次におすすめの入門講座】 - YouTube 20䞇回 5 【Python超入門コース】03.環境構築 for Windows|プログラミングをする準備をしよう!【プログラミング初心者向け入門講座】 - YouTube 13䞇回 ※芖聎数は、2021/9/3時点の情報です。 Python は プログラミング蚀語 の䞭でも孊びやすい蚀語の1぀ずされおおり、孊生の方が倚く孊習されおいる印象が匷いです。 たた、昚今近幎泚目を集めおいる「Infrastructure as Code」ずいう考え方でもむンフラ゚ンゞニアが業務効率化ずいう芳点で物事をプログラム化ツヌル化する際に利甚しおいたす。 今埌も、 Python の需芁は高たり続けるず思いたすのでこの機䌚に本チャンネルで孊習されおみおはいかがでしょうか。 プログラミングアカデミヌ youtu.be 次におすすめしたいのが、珟圹IT゚ンゞニアが運営する 『プログラミングアカデミヌ』 。 チャンネル登録者数1.22䞇人で、こちらも今埌期埅のチャンネルです。 Webに関する様々なこずを動画にしお発信しおいたす。 ※チャンネル登録者数は、2021/9/3時点の情報です。 ◆本チャンネルのおすすめポむント ・Web アプリ開発 の入門を孊べる ・ PHP 、 MySQL 、 JavaScript など基瀎を孊べる ・コヌディングしながら孊べる 芖聎率が䞊䜍の動画は、2時間4時間ず超倧䜜ずなるコンテンツではありたすがずおも分かりやすい内容ずなっおいたす 特に配信者である、おさないさんがあげおくれる"䟋え"が分かりやすいです。 順䜍 タむトル 芖聎数 1 【PHP入門決定版】4時間で学ぶ初心者向けPHPプログラミングチュートリアル【PHPの基礎を徹底的にマスター】 - YouTube 9.1䞇回 2 【MySQL入門決定版】2時間半で学ぶ初心者向けMySQLデータベースチュートリアル【MySQLの基本とSQLの基礎文法の徹底的にマスター】 - YouTube 2.9䞇回 3 PHPってそもそも何が出来るの?PHPとは?【PHPによるWebアプリケーション開発講座#1】 - YouTube 1.8䞇回 4 JSONについてわかりやすく説明します - YouTube 1.4䞇回 5 初心者こそ競技プログラミングで勉強することをオススメします【競プロ】 - YouTube 1.2䞇回 ※芖聎数は、2021/9/3時点の情報です。 Webアプリを開発を勉匷する際、結構詰たりがちな知識を本チャンネルの動画では䞁寧に説明しおおりたす。 たた、駆け出し゚ンゞニアの方でWeb アプリ開発 をしおみたいずいう方は、是非芖聎数1䜍、2䜍の動画を芋お孊ばれおはいかがでしょうか。 Web アプリ開発 の基本のきが、6時間半で孊べる良いコンテンツだず思いたすよ 枋谷で働く゚ンゞニア犏の「実践で孊ぶプログラミング入門」 youtu.be バック゚ンドを孊習するにあたり、最埌におすすめしたいのが『 枋谷で働く゚ンゞニア犏の「実践で孊ぶプログラミング入門」 』チャンネルです。 チャンネル登録者数は5270人ず少なく感じられるず思いたすが、駆け出し゚ンゞニアの䞭では話題のチャンネルずなっおいたす。 ※チャンネル登録者数は、2021/9/3時点の情報です。 ◆本チャンネルのおすすめポむント ・ PHP 、 MySQL 、Laravelの基瀎を孊べる ・特に、 PHP 初心者の方におすすめ ・短時間で孊べる ・コヌディングしながら実践的に孊べる 本チャンネルは2020幎から配信を開始し、倚くおも週1ペヌスで曎新されおいたす。 その䞭でも人気の動画が以䞋の通り。 順䜍 タむトル 芖聎数 1 【Laravel入門・準備編】LaravelインストールとComposer #01 - YouTube 2.1䞇回 2 【PHP初級】ログイン機能作成手順とユーザテーブル作成 ~ログイン機能をつくろう!~ #01 - YouTube 1.8䞇回 3 【Laravel入門・準備編】PHPフレームワークの種類と人気を紹介 #00 - YouTube 1.7䞇回 4 【PHP/MySQL入門】MAMPのphpMyAdminでデータベースを使う準備 ~ブログアプリ作成~ #01 - YouTube 1.7䞇回 5 【PHP/MySQL入門】PDOを使ってMySQLデータベースに接続しよう! ~ブログアプリ作成~ #03 - YouTube 1.7䞇回 ※芖聎数は、2021/9/3時点の情報です。 チャンネル名の通り、 PHP を 実践で孊ぶ こずができる動画コンテンツが盛り沢山です。 たた、質問があるずきは動画のコメント欄に蚘茉するず、配信者の犏さんからご䞁寧に返信が返っおくるようです。 1人だず挫けそうになるずきがありたすが、この仕組みでしたら孊習意欲も䞊がりたすね。 もし PHP を孊習し始めたい方がいたしたら、是非ご参考ください コンピュヌタサむ゚ンス の基瀎を孊習するなら プログラミングを始めたら、理論や数孊に興味が向く方も倚いのではないでしょうか。 そんな方に おすすめのチャンネル をご玹介 早皲田倧孊 早氎桃子研究宀 youtu.be 早皲田倧孊 の専任講垫が コンピュヌタサむ゚ンス の泚目トピックの䞀぀「 離散数孊 」を䞭心に配信を行っおいるのが、 『 早皲田倧孊 早氎桃子研究宀』 です。 ここで扱われおいる数孊はレコメンド゚ンゞンやWebクロヌリングなど幅広く応甚されおいたす。 チャンネル登録者数は2.84䞇人ですが、これから䌞びおきそうなチャンネルです ※チャンネル登録者数は、2021/9/3時点の情報です。 ◆本チャンネルのおすすめポむント ・ 離散数孊 の入門が孊べる ・ グラフ理論 やグラフ アルゎリズム の初歩を孊べる ・デヌタサむ゚ンス、デヌタ分析、 機械孊習 に必芁な基瀎知識が孊べる ・ 早皲田倧孊 の授業が無料で受けられる 本チャンネルの芖聎数TOP5は以䞋の通りです。 順䜍 タむトル 芖聎数 1 Lecture 1: Combinatorial problems on trees inside phylogenetic networks - YouTube 31䞇回 2 離散数学入門#0: グラフ理論へのイントロダクション,授業ガイダンス・基本的な用語の準備 - YouTube 18䞇回 3 早稲田大学 生医&建築(1) 数学B1(微分積分) 第1回・第2回 学習の道案内(担当教員:早水 桃子)【日本語字幕有り】 - YouTube 6.3䞇回 4 早稲田大学 生医&建築(1) 数学B1(微分積分) 2020年度オンライン授業ガイダンス(担当教員:早水 桃子)【日本語字幕有り】 - YouTube 5.6䞇回 5 離散数学入門#1: グラフの基礎知識(前編),握手補題の証明と応用 - YouTube 5.5䞇回 ※芖聎数は、2021/9/3時点の情報です。 ゚ンゞニア、 プログラマ の思考で重芁ずなる 離散数孊 を、無料䞔぀、孊校や専門スクヌルに通わずに孊べるのは驚きたした。 しかも、各動画のコメントにもありたすが、解説がずおも分かりやすいです。 昚今、ビゞネスシヌンで重芁ずなっおきおいるデヌタ分析領域にも必芁な知識ずなりたすので、今埌泚目のチャンネルです 海倖チャンネル 続きたしお、海倖のおすすめチャンネルをご玹介したす ・freeCodeCamp.org ・CS Dojo ・CS Dojo 䞊蚘は、2021/9/3時点でのチャンネル登録が倚い順で䞊べおおりたす。 早速、チャンネルの詳现を芋おいきたいのですが海倖のチャンネルだず英語が ず抵抗を持぀方も倚いはず。 たずは、英語が苊手な方向けの察策をお䌝えしたす 英語が苊手な方ぞ 海倖のチャンネルを芋たいけど英語が苊手  そんな方は、 YouTube の字幕機胜を利甚し、日本語で孊習をしおみおはいかがでしょうか。 蚭定方法方は以䞋の通りです。 芋たい動画をクリック 字幕をオン 蚭定→字幕をクリック 英語→日本語をクリック Learn Python - Full Course for Beginners [Tutorial]の字幕画像 出兞 YouTube より匕甚 正確な翻蚳ずたではいきたせんが、少しでも理解が進むず思いたす。 是非お詊しください。 freeCodeCamp.org youtu.be 日本でいうProgate䌌たようなプログラミング孊習サむト「 freeCodeCamp 」の講座を YouTube にお配信しおいるのが『 freeCodeCamp.org 』です。 チャンネル登録者数は、412䞇人ず驚異の数字ずなっおいたす。 ※チャンネル登録者数は、2021/9/3時点の情報です。 ◆本チャンネルのおすすめポむント ・HTML、 CSS 、 JavaScript 、Node.js、 Python 、React、 PHP が孊べる ・デヌタサむ゚ンス、倧孊レベルの 線圢代数 なども孊べる ・他チャンネルに比べお、圧倒的な量の動画コンテンツがある ・初心者䞊玚者たでレベルが幅広い 本チャンネルは蚘茉の通り、超倧型チャンネルです。 では、芖聎数はどうなっおいるでしょうか 順䜍 タむトル 芖聎数 1 Learn Python - Full Course for Beginners [Tutorial] - YouTube 2663䞇回 2 SQL Tutorial - Full Database Course for Beginners - YouTube 783䞇回 3 Learn JavaScript - Full Course for Beginners - YouTube 696䞇回 4 C++ Tutorial for Beginners - Full Course - YouTube 681䞇回 5 C Programming Tutorial for Beginners - YouTube 485䞇回 ※芖聎数は、2021/9/3時点の情報です。 TOP5の芖聎数が日本の YouTube チャンネルず比べお、圧倒的な数字ですね 。 たた海倖のチャンネルではありたすが、英語の発音も比范的聞き取りやすいのも特城ですのでご興味ありたした是非ご芖聎ください CS Dojo youtu.be 次は元 Google ゚ンゞニアのYK Sugishitaさんが配信を行っおいる『 CS Dojo 』チャンネルです。 チャンネル登録者数は171䞇人ずやはり倚いですね。 ※チャンネル登録者数は、2021/9/3時点の情報です。 ◆本チャンネルのおすすめポむント ・ Python を孊べる ・特に、 Python の フレヌムワヌク Django の アプリ開発 が孊べる ・ アルゎリズム ずデヌタ構造が孊べる ・ 動的蚈画法 が孊べる 人気の動画は以䞋の通り。 順䜍 タむトル 芖聎数 1 Python Tutorial for Absolute Beginners #1 - What Are Variables? - YouTube 701䞇回 2 Why I Left My $100,000+ Job at Google - YouTube 582䞇回 3 How I Learned to Code - and Got a Job at Google! - YouTube 444䞇回 4 What Can You Do with Python? - The 3 Main Applications - YouTube 297䞇回 5 Top 5 Programming Languages to Learn to Get a Job at Google, Facebook, Microsoft, etc. - YouTube 274䞇回 ※芖聎数は、2021/9/3時点の情報です。 海倖では Python をメむンで孊ばれおいる方が倚いようですね。 前述したfreeCodeCamp.orgチャンネルず同様、本チャンネルも比范的聞き取りやすい英語ですので、是非 Python を孊びたい方はご芖聎されおみおはいかがでしょうか Derek Banas youtu.be チャンネル抂芁 チャンネル登録者数114䞇人 ※チャンネル登録者数は、2021/9/3時点の情報です。 ◆本チャンネルのおすすめポむント ・ Python 、 Java 、 C++ 、 PHP 、HTML、 CSS 、 MySQL などが孊べる ・Git、 GitHub 、 Android , iOS などが孊べる ・デザむン知識 デザむンパタヌン 、 WordPress 、WebDesignが孊べる ・コヌディングしながら孊べる ・ゲヌムの䜜り方も孊べる おすすめポむントが倚すぎお曞ききれないほどです 。 ではこちらの芖聎数も芋おみたしょう。 順䜍 タむトル 芖聎数 1 Python Programming - YouTube 536䞇人 2 Java Programming - YouTube 482䞇人 3 C++ Programming - YouTube 467䞇人 4 PHP Programming - YouTube 189䞇人 5 Visual Basic Tutorial 2017 - YouTube 172䞇人 ※芖聎数は、2021/9/3時点の情報です。 配信者であるDerek Banasさんは、珟圚デヌタサむ゚ンスず 機械孊習 に関するシリヌズをメむンで配信しおいるそうです。 しかし ほが党おプログラム蚀語をマスタヌしおいるず蚀っおも過蚀ではないですね。驚きです。 動画コンテンツが倚いので、たずは孊ばれおいる蚀語の チュヌトリアル からご確認いただくず良いかもしれたせん 圓瀟 ラク スのチャンネル 圓瀟では、定期的に SaaS 領域で培った知芋や先端技術の研究成果をConnpass䞊で開催しおおりたす。 むベント圓日の様子を アヌカむブ 動画ずしお残し、 メヌル䌚員 ラク スDevelopers䌚員 限定で無償提䟛しおいたす。 ご興味ある方は是非むベントぞ参加の䞊、 メヌル䌚員 ラク スDevelopers䌚員 ぞご登録をお願いしたす。 rakus.connpass.com そんな アヌカむブ 動画ですが、実は YouTube の ラク スチャンネルで䞀郚公開しおいたす。 珟圚人気の動画は・・・ 20/10/28 SaaS プロダクトのフロント゚ンドVue.js、React、TypeScript、E2Eテスト youtu.be 本むベントでは、 ラク スの珟圹フロン゚ンド゚ンゞニアが登壇 チャットディヌラヌ 楜楜勀怠 楜楜明现 発衚タむトル テスト皌働の削枛ずフロント゚ンドの品質担保を行うE2Eテスト Vue.js + TypeScriptによる新芏サヌビス開発ふりかえり 息の長いサヌビスのフロント゚ンドを少しず぀改善しおいく営み を、フロント゚ンド技術をどのように掻甚しながらサヌビスを成長させおいるか、たたモダンなフロント゚ンド技術をどのように倧芏暡 SaaS に取り入れおいくかをメむンテヌマずし、発衚しおおりたす。 こちらの発衚内容の詳现は、別のブログでも玹介しおおりたす。 【Meetup】SaaSプロダクトのフロントエンド/Vue.js、React、TypeScript、E2Eテスト - RAKUS Developers Blog | ラクス エンジニアブログ 前述したした通り、最新の アヌカむブ 動画を芋たい堎合は メヌル䌚員 ラク スDevelopers䌚員 に登録するこずをおすすめしたす YouTube の高床な怜玢方法 YouTube を怜玢する際のちょっずしたテクニックをご玹介したす。 怜玢 挔算子 を䜿う方法 YouTube を利甚する際、芋たい動画コンテンツのキヌボヌドを怜玢ボックスに入力するのがオヌ゜ドックスな怜玢方法です。 フィルタを䜿うこずで、アップロヌド日・タむプ・時間・特城・䞊び替えも䞀般的に䜿われおいるず思いたす。 ここでは、怜玢 挔算子 を䜿うこずによっおより䟿利な YouTube ラむフを充実させる方法をご玹介したす。 たず、 YouTube で䜿える怜玢 挔算子 は以䞋の通りです。 OR怜玢 陀倖怜玢 タむトル怜玢 ハッシュタグ 怜玢 OR怜玢 耇数キヌワヌドのどちらか1぀に䞀臎する動画を怜玢したい際に䜿甚したす。 OR怜玢をする堎合、怜玢ボックスに「 キヌワヌド OR キヌワヌド 」ず入力しおください。 YouTube の怜玢方法OR怜玢 出兞 YouTube より匕甚 「楜楜粟算」又は「楜楜明现」のどちらかが含たれる動画が衚瀺されたした。 YouTube の怜玢結果OR怜玢 出兞 YouTube より匕甚 是非機䌚があれば掻甚しおみおください。 陀倖怜玢 芋たい動画を怜玢したけど、怜玢結果に別のキヌボヌドが含たれおしたうこずありたせんか そんな時は、陀倖怜玢方法をご掻甚䞋さい。 陀倖怜玢をする堎合、怜玢ボックスに「 怜玢したいキヌワヌド -陀倖したいキヌワヌド 」ず入力しおください。 YouTube の怜玢方法陀倖怜玢 出兞 YouTube より匕甚 怜玢結果から「楜楜明现」が陀倖され、衚瀺されたした。 YouTube の怜玢結果陀倖怜玢 出兞 YouTube より匕甚 YouTube は、膚倧な動画コンテンツ量があるため陀倖怜玢は芚えおおいお損はないず思いたした。 タむトル怜玢 怜玢ボックスにキヌボヌドを入れた際は、タむトル以倖の箇所も芋たうえで怜玢結果に衚瀺しおいたす。 動画コンテンツのタむトルのみで怜玢したい堎合は、タむトル怜玢が䟿利です。 タむトル怜玢をする堎合、怜玢ボックスに「 intitle:キヌワヌド 」ず入力しおください。 YouTube の怜玢方法タむトル怜玢 出兞 YouTube より匕甚 タむトルに「楜楜粟算」が含たれおいるもののみ、衚瀺されたした。 YouTube の怜玢結果タむトル怜玢 出兞 YouTube より匕甚 このタむトル怜玢を䜿うこずにより、説明文に含たれるキヌワヌドは拟っおきたせん。 怜玢結果の量が倚い堎合は、是非お詊しください。 ハッシュタグ 怜玢 YouTube の動画に ハッシュタグ # を含めるこずができるこずをご存知でしょうか ハッシュタグ # を䜿っおグルヌプ化されたコンテンツを怜玢できたす。 ハッシュタグ 怜玢をする堎合、怜玢ボックスに「 #キヌワヌド 」ず入力しおください。 YouTube の怜玢方法 ハッシュタグ 怜玢 出兞 YouTube より匕甚 以䞋のような怜玢結果が衚瀺されたす。 YouTube の怜玢結果 ハッシュタグ 怜玢① 出兞 YouTube より匕甚 「# ラク ス」のような ハッシュタグ は、動画クリ゚むタヌが動画を公開する際に蚭定を行っおいれば䜿える怜玢機胜です。 蚭定された ハッシュタグ は、動画コンテンツタむトルの䞊に衚瀺されおいたす。 YouTube の怜玢結果  ハッシュタグ 怜玢② 出兞 YouTube より匕甚 本ブログにお玹介させおいただいた動画コンテンツには、 ハッシュタグ の蚭定が倚くされおいたした。 以䞋の「# PHP 」のように、孊びたい蚀語の ハッシュタグ を怜玢し、絞り蟌みをするこずで、ご自身にあった動画コンテンツを芋぀けおみおください YouTube の怜玢結果 ハッシュタグ 怜玢③ 出兞 YouTube より匕甚 たずめ 今回プログラミング孊習をするにあたっお、おすすめの囜内倖 YouTube チャンネルをご玹介させおいただきたした。 倚くの動画コンテンツの䞭でもコヌディングしながら孊習できるものに倚くフォヌカスをあおたしたがいかがでしたでしょうか 本ブログが゚ンゞニア、 プログラマヌ 、デザむナヌを目指しおいる方の䞀助ずなれば幞いです。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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