20210403のPHPに関する記事は7件です。

PHPで不特定の行数の標準入力の内容を、そのまま出力する際のコード

<?php
while($input=fgets(STDIN))
{
echo $input;

?>

標準入力の内容
1
2
3
4
5

出力される内容
1
2
3
4
5

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

性格分析APIの「Personality Insights」が提供終了になるので代替APIを探してみました。

こんばんは。
去年の末くらいに性格診断APIでおなじみのIBM Watson Personality Insights の非推奨化/サービス提供終了の発表がされました。
スケジュールは以下の通りです。

サ終について

  • 2020 年11 月1 日: サービスのすべての有料ユーザーにサービス提供終了メールを通知
  • 2020 年12 月1 日: Personality Insights のサービス提供終了。新規のインスタンス作成ができなくなります。既存のインスタンスをお使いのお客様は、1 年間は引き続きサービスを使用可能です。
  • 2021 年12 月1 日: Personality Insights サービス終了

なお移行サービスの提供はありません。
出典:https://www.ibm.com/blogs/solutions/jp-ja/ibm-watson-personality-insights-sunset/
もう新規インスタンスも作れないのでご注意ください。
(IBMはIT企業なのにグロース株どころかここ10年間株価下がり続けているんで事業拡大とかがキツイんでしょうか?)

代替API

代替となるAPIを何個か見つけて試してみたのでご紹介します。

Watson Natural Language Understanding

画像_2021-04-03_191720.png

「Watson Natural Language Understanding」はIBMが正式に移行を推奨しているAPIです。一番期待できるやつですね。
IBMが以下のようにアナウンスしています。

Q: Personality Insights を置き換えるオファリングはありますか。
A: Personality Insights と同様のサービスオファリングはありませんが、Personality Insights で現在サポートされているユースケースを継続希望のお客様は、IBM Watson Natural Language Understanding、またはお客様固有のカスタムモデルを活用して独自のテキスト分類モデルを構築する必要があります。

文章だけでなくURLでのリクエストもOKだそうです。
以下引用↓

IBM はPersonality Insights の移行サービスは提供いたしません。
Personality Insights に類似したIBM のWatson オファリングであるIBM Watson Natural Language Understanding、またはお客様固有のカスタムモデルを開発して、独自のテキスト分類モデルを構築する必要があります。

なお、WNLUを使うにはIBM Cloudへの登録が必要です。クレジットカード等の登録も不要で試せますので簡単です。
チュートリアルやデモなどは以下の公式リファレンスガイドを見てみてください。

APIの概要と制限

このAPIでは以下のような情報及び指標を取得してくれます。

  • 感情
  • キーワード
  • エンティティ
  • カテゴリ
  • 概念
  • 構文

感情では文章のネガポジ判定や感情分析を行ってくれます。
画像_2021-04-03_211732.png
画像_2021-04-03_211804.png
文章全体を解析してカテゴリー分けをしてくれます。
画像_2021-04-03_211855.png

※但し、感情分析は日本語は非対応ですので適宜翻訳APIをかませる必要がありますのでそこらへんの正確さはなくなりそうですね。
ネガポジ判定は日本語でもしてくれます。
性格分析じゃなくね?と言われるとそうでもないような気がしますが。。。

使い方

APIガイドによると文章やurlをcURLで送りつけるだけでです。簡単ですね。
ターミナルで以下のテンプレートの沿ってcURLで送るだけで結果が帰ってきます。

terminal
curl -X POST -u "apikey:{apikey}" "{url}/v1/analyze?version=2018-11-16" --header "Content-Type: application/json" --data '{
  "url": "http://newsroom.ibm.com/Guerbet-and-IBM-Watson-Health-Announce-Strategic-Partnership-for-Artificial-Intelligence-in-Medical-Imaging-Liver",
  "features": {
    "sentiment": {},
    "categories": {},
    "concepts": {},
    "entities": {},
    "keywords": {}
  }
}'

PHPで実装してみた

cURLのコマンドをNodeやR・PHP・Python・Javaに自動で変換してくれる神サービスがあるので変換して貼り付けるだけです。

※予めRequestをComposerからInstallしましょう。

terminal
composer require rmccue/requests
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$txt = file_get_contents('a.txt');
$headers = array(
    'Content-Type' => 'application/json'
);
$t = '""';
$data = '{ "text": ' . $t . ', "features": { "sentiment": {}, "categories": {}, "concepts": {}, "entities": {}, "keywords": {} } }';
$options = array('auth' => array('apikey', '************************************'));
$response = Requests::post('https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/instances/ad1e8e83-7ca2-495f-ae01-dd42ef082963/v1/analyze?version=2018-11-16', $headers, $data, $options);
print_r($response);

jsonで返してくれるのであとは連想配列にしてもいいですし煮るなり焼くなりなんでもできます。

結果

まずはじめに以下のツイートを読み込ませた結果です。

[Sentiment]

  • Positive 0.73

[Categories]

  • technology and computing / operating systems : 0.93
  • technology and computing / hardware / computer : 0.87
  • technology and computing / hardware / computer peripherals : 0.83

まぁそこそこちゃんとした判定を返してくれますね。

Watson Tone Analyzer

Tone Analyzerでは言語分析機能を使用して、テキストから感情と文体のトーンを検出してくれます。
さっきのNatural UnderestandingのOverall Emotionと似たようなやつなので具体的な実装方法は書きません。こちらのデモで試します。

結果

ツイートサンプルが最初から用意されてたのでそれを使います。一応以下がサンプル内容です。

I hate these new features On #ThisPhone after the update.
I hate #ThisPhoneCompany products, you'd have to torture me to get me to use #ThisPhone.
The emojis in #ThisPhone are stupid.
#ThisPhone is a useless, stupid waste of money.
#ThisPhone is the worst phone I've ever had - ever ?.
#ThisPhone another ripoff, lost all respect SHAME.
I'm worried my #ThisPhone is going to overheat like my brother's did.
#ThisPhoneCompany really let me down... my new phone won't even turn on.

なにやら製品が不満かなんかで怒ってますね。
結果は以下のようになりました。
画像_2021-04-03_214444.png
どの文のどこら辺がどれくらい怒りを表してるのかといった度合いを色つけてオーバーレイ表示してくれます。
画像_2021-04-03_214511.png
各ステートメントごとの数値も出してくれます。
画像_2021-04-03_214727.png

まとめ

IBMの移行推奨APIとか感情分析とか試してみましたが性格分析!ってな感じではなかったですしNLUの一分機能はまだ日本語非対応だったりとまだまだ見軸な気がします。
他にもおすすめのAPIが知ってるよって方は是非コメントお願いします!Azureとかにあるかもしれんん。

WatsonのNLUに関するおすすめ記事→Watson Natural Language Understandingの感情分析触ってみた
翻訳に関する超おすすめ記事→Google翻訳APIを無料で作る方法


My Website&Blog
GitHub
Twitter:@tomox0115

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

フロントエンド、バックエンド、モバイルアプリのボイラープレートを公開します。

弊社で作成中のWebアプリ、モバイルアプリ用のボイラープレートを公開します。

公開した経緯

作ったは良いものの、実プロジェクトで使うかは微妙です。
まだまだ完成度は低いですが、完成せずに放置する可能性も出てきました。
個人の時間も使って作ったので、少しでも役立てたいと思い公開の許可を頂きました。

使用している主な技術

使用している主な技術はこんな感じです。

環境 言語 フレームワーク
Backend PHP Laravel
Frontend Typescript React, Redux
Native Dart Flutter, Provider

注意点

  • LaravelやFlutterは初めて使ってます。
    • 未熟な部分も多々ありますので、優しく教えていただければ幸いです。
  • 実プロジェクトでまだ利用してませんので、有用かは分かりません。
  • ボイラープレートを良いことに雑な箇所もあります。。

主な特徴

  • テスト、静的解析自動化 (Github Actions)
    • Backend -> PHPStan, PHP_CodeSniffer, PHPUnit
    • Frontend -> ESLint, Typescriptのビルド
    • Native -> Flutter format, Flutter test
  • ステージング環境へのデプロイ自動化 (Github Actions)
    • Backend -> Heroku
    • Frontend -> Firebase Hosting
    • Native -> Firebase App Distribution
  • ステージング環境は激安運用可能 (Freenom, CloudFlare)
  • 多言語、タイムゾーンを考慮 (検証不十分です。特にタイムゾーン。)
  • フロントエンドやモバイルとバックエンドの繋ぎ込みを極力共通化
    • API呼び出しのローディングやサーバーサイドのエラー反映も共通化

詳細

今後、各アプリの詳細や得られた知見を記事にできたらなと思います。

画面イメージ

ボイラープレートですので、あえて(?)シンプルです。

Webアプリ

Apr-03-2021 16-55-33.gif

モバイルアプリ

Apr-03-2021 17-30-40.gif

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

デプロイしたAWS(EC2)に外部から攻撃を受けているらしく AWSからメールがきて怖すぎた話

勉強のためにWebアプリをEC2にデプロイしてAPIを叩いたりしてたら、突然EC2に入れなくなった。

とりあえずまあいっかと放置していたら・・・・・・

ある日こんなメールがAWSから届いた

Hello,
We've received a report(s) that your AWS resource(s)
has been implicated in activity which resembles scanning remote hosts on the internet for security vulnerabilities. Activity of this nature is forbidden in the AWS Acceptable Use Policy (https://aws.amazon.com/aup/). We've included the original report below for your review.
Please take action to stop the reported activity and reply directly to this email with details of the corrective actions you have taken. If you do not consider the activity described in these reports to be abusive, please reply to this email with ?details of your use case.
If you're unaware of this activity, it's possible that your environment has been compromised by an external attacker, or a vulnerability is allowing your machine to be used in a way that it was not intended.

上記訳

こんにちは、
AWSリソースに関するレポートを受け取りました
インターネット上のリモートホストのセキュリティの脆弱性のスキャンに似たアクティビティに関係しています。 この種のアクティビティは、AWSの利用規定(https://aws.amazon.com/aup/)で禁止されています。 レビュー用に、以下の元のレポートを含めました。
報告された活動を停止するための措置を講じ、講じた是正措置の詳細をこの電子メールに直接返信してください。 これらのレポートに記載されている活動が悪用されていると思わない場合は、このメールにユースケースの詳細を添えて返信してください。
このアクティビティに気付いていない場合は、外部の攻撃者によって環境が侵害されているか、脆弱性により、意図しない方法でマシンが使用されている可能性があります。

つまり
「このEC2に報告が入ったで。なんかこのEC2で悪用しているんちゃうか?攻撃されているかもしれんがな。
とりあえずなにしたか急いで返信してくれや」

とのこと。

訳もわからずとりあえずEC2を一旦停止

そして、AWSに急ぎ以下の内容を返信
(日本語と英語を書いた。しかしたら日本語で対応してくれる可能性があるため)

こちら身に覚えがないため、一度インスタンスを停止いたしました。

報告されたアクティビティ:ポートスキャン
とのことですが、具体的な情報が欲しいです。

I'm sorry. The reply was delayed.
I don't remember this, so I stopped the instance once.

Reported activity: Port scan
However, I would like specific information.

そしたら以下の返信が帰ってきた

※(英語でめちゃくちゃ長文がきたので日本語に簡易的に訳したのを載せます)

このインスタンスは起動したら暴れる(目的は知らんがポートスキャンしてるので違反している)から終了しろってこと。
暴れる原因に心当たりがないなら誰かに悪用されている事が考えられ、それはあなたの責任なのでしっかりしてください。
こういった事象を防ぐために色々用意してるからちゃんと調べて使ってね。
で、このインスタンスを復活したいなら
このインスタンスはおそらく完全にクリーンには出来ないので同じものを別に0から作ってね。
よろしく

EC2に入って中のログをしらべたところ、、

知らないIPからの接続を大量に確認!!
中国からアクセスがあった模様
kthreaddiというアプリがめちゃくそCPUを食ってて一瞬で使用率が100%に
(ビットコインをマイニングするツールらしい)

結論+対応策

勉強用のEC2だったのでまあまた立てれば良いと思い、インスタンスを終了しました。

対応策
セキュリティグループを絞る
ファイアウォールを入れて守る

ウイルスが入ってしまうともうEc2のCPUが暴れ続けるらしい

みなさんもお気をつけて!!では!!!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

スクールでは教えてくれない!27歳未経験エンジニアが1年勤めてみた結果!(実話)

未経験27歳1年間のエンジニア生活を振り返る

みなさんどうもこんにちわ。山田です。
27歳、未経験から某スクールで学びWEB業界に転職し、1年が経とうとしているところです。

この1年間、本番環境への反映を失敗し、30サイトのメール文を手打ちで修正したり、クライアント様からテストが不十分だと暖かい(?)ご指摘をいただいたりしてきました。

早い話、たくさんやらかしてきました。←

とまぁ、大変な1年だった訳ですが、営業からweb系の企業に転職し、もっとこれを勉強しておけばよかったなぁと思うこともある訳です。

私にとっては時すでに遅しですが、これからエンジニアになる方の参考に、また私としても備忘録としてこの1年をまとめていこうと思います。

※間違った情報、質問などがあれば、コメントいただけますと幸いです。

未経験エンジニアの1日のスケジュールを公開

新人エンジニアの1日(受託,ベンチャー社員数25人半数リモート)

9:15~メール、業務の確認

9:30~業務開始

13:00~14:00 昼休み

14:00~18:30 業務

残業は30分ぐらいかな。でも全然しなくてもいいみんな帰る。

業務中はほぼ無言です。

  • 業務内容
    • クライアントから依頼のあったシステムの作成をする。新人なので比較的簡単なパーツの実装を任されることが多い。
    • 1人日~5人日ぐらいの実装
    • 予約システムのログイン機能、検索や、情報のスクレイピングなど(動作テストも任されますが、これは企業によると思う)
    • 自社開発サイトの改修
    • 外部の方との連携

▼当然知っている的な雰囲気のこと

  • Gitのターミナル操作
  • ディレクトリやファイルの移動や構成(Linuxコマンド)
  • 他の会社はftpソフトとか使うか分からないけどCyberduckやfileziilaなどを知っておけばOK
  • ssh接続についてなど

▼入社して驚いたこと

  • 全く知らない(実装方法もわからない)ことを普通にサッと頼まれたりするので、都度ググったりどうしてもわからない場合は質問をする(質問方法も調べた方がいい)
  • オフィスは静かで、ひたすらにコードを書くもしくはググって調べるだけで会話はほぼない
  • リモート可なのであったことない人が数人いる(チャットではやり取りする)
  • 中途採用だからか、ベンチャーだからか分からないが、手取り足取り研修はない。(自分で勉強する)
  • エンジニアの人は人としては優しい人が多い(質問もすれば答えてくれるけど、〇〇でググってみてとかそんな感じなことも汗)
  • 分からなさすぎて不安になることがある
  • 分からなさすぎてとても不安になることがある
  • 分からなさすぎてとても不安になることがあるので、とても不安になる

毎月の仕事内容の変化と、失敗談など

入社1ヶ月目

  • 担当業務

    • テスター
    • コードの勉強
  • 困ったこと

    • サーバーに関する知識のなさによる開発環境構築の手間取り
    • 生のコードに関する知識や自分の実力のなさを遺憾なく発揮

感想

まず、入社してから環境の構築を行います。

Apatchのバーチャルホストの設定を行う訳ですが、webサーバ?バーチャルホスと?何ですかそれは?状態で何も全くわからない。

スクールではとにかくrailsで何かを作ることに注力しており、サーバー周りの知識がほぼ皆無でした。学んできたことはなんだったのかと、少し絶望しました。(この時はまだもっと絶望することを知らなかった)

  • やっておけば良かったこと
    • サーバに関する知識は勉強し始めると終わりが見えませんが、基礎的な部分は学んでおく。自分が入社する企業がどんな環境で開発しているかなどを調べて、少しでも勉強していけば良いと思います。(例:dockerとかバーチャルホストとか)

入社2ヶ月目

  • 担当業務

    • テスター
    • 社内で使っている日報ツールなどの改修
  • 困ったこと

    • 案件に入ったが、ディレクトリの複雑さに驚愕。
    • Gitの操作に慣れておらず、訳も分からず git pull(※絶対にやめましょう)

感想

Gitの操作ミスで検証環境が全く見れなくなり、冷や汗ダラダラで先輩エンジニアに相談しました。Gitの操作もスクールで習ったはずですが、あまり理解ができていなかったようです。。。(そもそもgithubデスクトップ使っていたからターミナルからの操作は訳わかめ状態だった)

仕事内容としては、テスターの仕事が多く、あまりコードに触れることがない1ヶ月でした。(コード触りたかった!!)

  • やっておけばよかったこと
    • Gitについての知識、ターミナルでのgit操作に慣れておくこと(超重要)

入社3ヶ月目

  • 担当業務

    • テスター
    • 受託開発<-new
  • 困ったこと

    • 初めての受託案件、他人(先輩様)が書いているコード半分が理解できず

初めてクライアントの案件を任せていただく(嬉)スクールではRailsに慣れていたが、laravelを実務レベルで初めて触る。そんなに大きな違和感はない。MVCモデルだし、根幹はやっぱり似ているように思う。

納期も長めに取ってもらって、結構ゆとりを持って機能の実装をしていた。あれ?俺ってできてるんじゃね?と思った。(後にgit操作をミスり、本番が見れないようになることを当時は知らなかった)

入社4ヶ月目

  • 担当業務

    • テスター
    • 受託案件
  • 困ったこと

    • まだまだlaravel(php)の知識が足りない

少し大きめの機能の改修を任された(10人日ほど)要件のみ渡され、DB設計から実装、テストまでを担当したが納期から少し遅れて納品。。。悔しかった。

ちなみに、gitで何回かやらかして時間ロスしたのもある。。。(先輩の時間も奪ってしまい反省)

入社5ヶ月目

  • 担当業務

    • テスター
    • 受託開発
    • 自社サービスの開発<-new
  • 困ったこと

    • DRYなど、基本的なことをできていなかった

もう受託開発にも慣れてきた。この月も別のクライアントの大きな改修を任せてもらった(12人日ほど)その改修と、先月の実装のチェックバックが溢れ、めためたに忙しい月だった。。

チェックバックを多くもらってしまいました。作って終わりではないことをこの月に学びましたとさ(まじで動作確認は大事だから、動作確認を絶対に怠ってはダメ。絶対にね。)

あと、自社開発のサービスにも少しだけ関わらせていただきました。

入社6ヶ月目

  • 担当業務

    • テスター
    • 受託開発
    • 自社サービスの開発
  • 困ったこと

    • 仕様に関してのコミュニケーションの難しさを痛感した

自分が担当しているクライアント様の機能追加などをメインに行なっておりました。大きな機能から小さな機能まで、一貫して一人で行うので、正直大変でした。機能が7割ほどできてから、私と上長に仕様の認識ズレがあり、大きく時間をロス。。。

エンジニアにもコミュニケーション力が必要だと言われる理由がわかりました。。。継続してサービスの開発に携われていた1ヶ月でした。

入社7ヶ月目

  • 担当業務
    • テスター
    • 受託開発
    • 自社サービス改修

自分が担当しているクライアントの、今までで1番大きな改修を任されました。実装は工夫して先輩エンジニアの力も借り、納期より早めに本番に反映完了。

開発のスピードの上がってきました。(まだまだ遅いですが...)慣れもあって余裕も出てきたので、自宅でvueなどを勉強するゆとりが生まれました。

入社8ヶ月目

  • 担当業務

    • テスター
    • 受託開発
    • 自社サービスの開発
  • 困ったこと

    • git操作がまだまだ慣れない

大きい改修はなく、自社サービスや受託のこまごまとした修正をこなしていました。Gitにて再度やらかし、それほど大きなミスではなかったのですが、今までの自分の8ヶ月はなんだったんだと自己嫌悪に陥りました。

「なぜ俺はあんな無駄な時間を...」と少し思いました(ミッチー)

入社9ヶ月目

  • 担当業務
    • テスター
    • 受託開発
    • 受託開発のgit管理 <-new
    • 自社サービスの開発
    • 自社サービスのサーバー構築(LAMP環境) <-new

受託開発、自社サービスのいろいろな機能に顔を出して、学びながら実装してきました。先輩エンジニアが産休に入ったので、担当していた受託企業を引き継ぐことに(汗

ちなみにまだまだgitでやらかしているので、不安しかなかった汗。Git管理といっても、ほぼ自分しか触らない案件だったので、それほどの作業はありませんでした。

また新しくサービスを立ち上げるという話になりまして、私がそのサービスのサーバー構築から、ローンチまでの開発を任せていただきました。とはいっても、コードはほぼ出来上がったパッケージを流用しているので、作業自体は10人日ほどでした。

しかし、自分しか関わっていない自社サービスなので、任せていただいた時は嬉しかったです。

入社10ヶ月目

  • 担当業務

    • テスター
    • 受託開発
    • 受託開発のgit管理
    • 自社サービスの開発
  • 困ったこと

    • サーバー関係のエラーが全く解決できない(サーバー負荷なども解決できるようになりたい)

大きな変化はなく、だいぶ仕事にも慣れてきました。先輩は非常に頼りになるし、聞いたらなんでも教えてくれました。

だいたいlaravelで実装したいことはそれほど悩むことはなくなりましたが、サーバーのエラーなど深い部分でのエラーはまだまだ解決するのに時間がかかりました。ここが課題だと思いました。

というか、先輩エンジニアに聞いたら「これはまだわからんわw」と言われましたが、その領域までいきたいと思いました。

入社11ヶ月目

  • 担当業務

    • テスター
    • 受託開発
    • 受託開発のgit管理
    • 自社サービスの開発 & ローンチ
    • 新人のメンター<-new
  • 困ったこと

    • 先輩が退職し、払拭できない不安の渦に取り込まれる

私の1年先輩の方が会社を退社されました。その先輩になんでも聞いていたので、非常に寂しいです。その先輩の業務を引き継ぐことになったので、自社サービスのgit管理が増えました。外部の方のコードを本番に反映したり、開発環境を整えたりする仕事です。

コードを書く以外の部分(外部との連携やサーバー関係やgit関係など)での業務も増え、さらに先輩が行なってい業務も降ってくるので忙しい1ヶ月でした。。。

先輩の業務を引き継ぎ、少し忙しくなり変わったことは「絶対に自分ではわからないと思ったらすぐに聞く」ようになりました。それがいいのか悪いのかはわかりませんが笑

この月から「新入社員のメンター」も担当するようになりました。とはいっても質問に答えるのみですが、、未経験の方のコードを見ることは自分にとっても勉強になるので、これから楽しみです。

まとめ

とまぁ、こんな感じで、忙しい1年がようやく終わりそうです。正直、先輩が辞めたことで、これからが非常に怖いです。恐怖です。自分も成長して、担当するサービスも使いやすくなるように頑張ります。

この記事を書いていて思うのが、やってきたことの棚卸しは必要だということ。自分が何をやってきて、何を学んで、何ができるようになったか。目標はどこか。など、定期的に振り返ることが大事かなと思いました。

去年1年で困ったこと

  • Gitの操作で検証環境などをぶち壊す
  • サーバーの知識のなさでエラー解決できない
  • 本番に反映した後にミスが発覚し、残業しながら改修(これが一番きつかった)
  • 仕様の確認コミュニケーションスキルの不足により、実装の二度手間が発生
  • こんなん絶対実装できへんやん...と思ってしまいモチベ低下(だいたい先輩に聞いたら実装できる)

今年1年でやりたいこと

  • Vue.jsを使った実装
  • Dockerを使って開発環境を作成する
  • circleCIで自動テストツール作成
  • AWS ASS取得 AWSに自分のサービスをデプロイ
  • 自分が関わっている会社のサービスをより使いやすいように意見も言う
  • 自分より年次が若いメンバーを育成、チームで働く

などなど、まだまだやりたいことは尽きません、、、

正直dockerやcircleCIなどは、自分で勉強するしかありません。実務では使ってないから。実務レベルで使ってみたいものです。また、チームでの開発にも非常に興味を持ちました。今はただ単に言われた機能を実装するだけなので、何人かで議論しながら新しい技術もキャッチアップして開発していくような環境への憧れを抱いています。

では今日はこの辺で、さようなら〜

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[書籍レビュー]プログラミング独学者が実際に使用した書籍(PHP)

はじめに

こんにちは、22卒のエンジニアを目指している者です。
今回は実際に使用した書籍がどのような中身でどのような事を学ぶことができるのか自分自身の復習も兼ねてアウトプットしたいと思います。
自分のような初学者の方でこの本を買おうか迷っている方に対して判断の材料となることができれば幸いです。

◯今回紹介する書籍
タイトル:初心者からちゃんとしたプロになる PHP基礎入門〈PHP8対応〉
作者:柏岡 秀男
発売日:2021/3/2

こちらのPHPの書籍を読みながら実際に動かしながら勉強していました。この本を選んだ理由は、最新のPHP8に対応しており、新しいものの方が良いと判断したからです。

内容

これはアマゾンの商品欄の説明欄から抜粋したものです。
■Lesson1 PHPとは
■Lesson2 PHPの基本
■Lesson3 簡単なWebアプリケーションを作成する
■Lesson4 データベースを操作する
■Lesson5 データベースと連携したWebアプリケーション
■Lesson6 ログイン処理とセッション

主にPHPの基本構文を学び、その後にAPIを使ったアプリケーションやMySQLを用いたデータベースを利用したサービスを実際に作ります。
環境構築はXAMPPを用いてローカル環境で動かすことになります。

この本で学べること

PHPの環境構築(XAMPP)

 この本に従って環境構築を行えばローカル環境でPHPを動かす事ができる様になると思います。実際に自分もローカルで動かすことは初めてでしたがこの本の通りに行い環境構築することが出来ました。

PHPの基本的な構文

 この本で勉強すれば、王道の構文は一通り使える用になると思います。if文や配列、foreachとかも丁寧に教えてくれます。勿論変数や代入演算子も1から行うため、全くプログラミング言語に触れたことのない人目線で書かれています。難しそうで不安に感じている方もまずは手にとって見ることをおすすめします。
 ただ基本的な構文の学習を行う章はLESSON2までです。Progateの講座で出てきたSwitch文はこの本では出てきません。一つ一つの関数の使い方を知りたいと思っている方には合わないかも知れません。
 ですがこの本のスタンスは分からなくなったら公式のドキュメントを読むということです。使い方が急に変わる恐れがある関数を一つ一つ覚えることよりも、その変化した関数をすぐ利用する事ができるかどうかが重要であり、その力は公式のドキュメントを読むことで鍛えられるという考え方です。
 実際自分自身もわからない箇所は公式を読むという事を繰り返してきたため、そういった自分で考える力がついてきていると思っています。

簡単なWebアプリケーションの作り方

LESSON4で主に行うことです。この章で以下の2つのアプリを作ります。
・適正体重の計算アプリ
・APIを利用したアプリ(郵便番号)
この2つのアプリの制作を通して、CSVファイルの読み込み方法、XSS対策、バリデーションの方法、正規表現、API利用方法、といったより本格的なPHPの利用方法を学びます。もしこの中で知らない単語があれば読む価値はあると思います。ネットだけでできそうだったら大丈夫だと思いますがね。

DB関連

 データベースも勉強できます。てか半分くらいDBかもしれないです。自分もデータベースがこんなに沢山勉強できることを買ったあとに知りました。データベースに関して私はITパスポートの取得時に軽く勉強しましたが実際の運用は全く分かっていませんでした。そんなDBのデの字しか知らない自分でも理解できたのでこれも十分初学者向けにしっかりと作られていると思いました。
 まずデータベース単体で動かしてみて、ある程度やり方がつかめたあとにPHPを使ってデータベースを利用するという手順です。一度単体で動かしたコマンドをPHPで記述するので非常に分かりやすいと思います。

ログイン処理

 最後に少しだけですが、ログイン処理やセッションの動きやそれに伴うセキュリティの勉強も出来ます。ログインだけなので、ユーザーの新規登録は載っていないですがログイン機能さえわかればなんとかできると思います。
 自分もログイン機能を応用してゴチャゴチャしてたら出来ました。

この本に合っている人

・Progateの入門を終えて何をやればいいか迷っている人
・はじめてPHPに挑戦する人
・プログラミング独学者
・HTML&CSSの勉強はしたけど裏側の動きをやってみたいと思う人
・DBがよく分かっていない人

 全体的にプログラミング初心者にやはり合っている書籍かと思います。ただ、PHPの特徴であるHTMLの共存があるため、基本的なHTMLのタグを理解していた方が理解が進むかと思います。もちろんウェブサイトを何も見ずに作れるほどのHTMLのスキルを求めているわけではなくProgateの無料部分をやるだけでもだいぶ変わると思います。
 似たような理由でPHPも無料部分のProgateはやっておいて損はないなと思います。自分もこの本の前にProgateで学んでいたためより理解しやすい部分は多かったです。もちろんこの本だけでも十分理解することはできると思います。

この本に合わない人

・Laravel等のフレームワークを勉強したい人
・DBをガッツリ勉強したい人
・PHPの関数をガッツリ勉強したい人
・HTMLやPHPについて全くわからない人

 前者3つに関しては完全にお門違いというか、今までも勉強してきた方だったりすると思うので、他の書籍により向いているものがあるのかなと思います。
 4つ目に関しては全く向いていないというわけではないと思います。ただ躓く可能性が高くなると思うので私としてはまずネットでできる無料のコンテンツでちょっと勉強しとくのがいいのかなと。とりあえず買ってみて、分からなくなったらそういったコンテンツを利用するのはありだとは思いますけどね。

まとめ

 わたし自身この本で学んだことを活かして1からウェブサービスを作ることができたのでそういった事をやりたい方でしたら非常におすすめします。
 ただやはり技術というものは移り変わりが早いので、2021年4月現在では有効なものでも変化する可能性はあると思うので、その点はご容赦ください。
 あくまでもプログラミング初心者の一意見として受け入れてくだされば幸いです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel MySQL接続 学習メモ

MySQLへログイン

ターミナルで以下を入力します。
mysql -u 'ユーザー名' -p

mysql -u root -p

その後、パスワードを聞かれるので、入力します。

パスワード入力後、ターミナル内がmysql>へ変わればログイン完了です。

スクリーンショット 2021-04-03 6.12.00.png

データベースの作成

データベースの作成を行います。

以下のコマンドを入力します。

mysql> CREATE DATABASE tests CHARACTER SET utf8mb4;

上記のコマンドでtestsというデータベースが作成されます。

文字コードutf8mb4(マルチバイト日本語対応)

データベースが作成されているか、

以下のコマンドを入力し、確認をしてください。

mysql> show databases;

以下のようにtestsデータベースがあれば作成できています。

スクリーンショット 2021-04-03 6.24.17.png

MySQLへの接続設定

プロジェクトディレクトリ内にある.envファイルを修正します。

.envファイル内の9行目辺りにデータベース設定項目がありますので、

以下のように修正してください。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tests //接続したいデータベース名
DB_USERNAME=root  //ご自身のユーザーネーム
DB_PASSWORD=root  //ご自身のパスワード

マイグレーションを実行する

最初からLaravel標準のテーブルファイルがdatabase/migrationsディレクトリに用意されています。

認証機能を作成する為のファイルです。

スクリーンショット 2021-04-03 6.47.39.png

今回は、接続確認の為、このまま使用します。

ターミナルでプロジェクトのディレクトリに移動し、以下のコマンドを実行してください。

php artisan migrate

接続がうまくいきマイグレーションが成功すると以下のように表示されます。

スクリーンショット 2021-04-03 6.51.01.png

これで、3つのファイルが作成されました。

最後に作成したテーブルを確認をしましょう

再度、MySQLへ接続してください。

mysql -u root -p

パスワードを入力します。

ログイン後、使用するデータベースを指定してください。

mysql> use tests;

その後、以下のコマンドで作成したテーブルを確認してください。

mysql> show tables;

以下のようにテーブル一覧が表示すれば、無事接続成功しています。

スクリーンショット 2021-04-03 7.01.20.png

参考にした記事

Techpit Evernote風メモアプリ作成
Techpit Laravelブックレビューサイト作成

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む