- 1. [Best Award 受賞] 初めてのチーム開発で誰かのためになるものを作った話
- 2. WordPressってなに?どうして使うの?
- 3. Laravel(API)で認証機能を作成してみた。
- 4. コーディングテスト頻出の内部関数 まとめ(その3 – 配列処理関数)[PHP]
- 5. 配列関数
- 6. 要注意!フリーランスエンジニアが知っておくべきリスクとその対策Top6
- 7. 回避不可能!落ち度がなくても、フリーランスエンジニアがクビになる理由Top5
- 8. コーディングテスト頻出の内部関数 まとめ(その2 – 数値処理関数)[PHP]
- 9. コーディングテスト頻出の内部関数 まとめ(その1 – 文字列処理関数)[PHP]
- 10. さくらスタンダード+EC-CUBE4.2.3でプラグインインストールできない時はPHPダウン
- 11. 【Laravel】自動テストとかのまとめ
- 12. Drupalでカスタムモジュールを作ってみよう
- 13. ローカル環境にDrupalをインストールしよう 〜Windows編〜
- 14. array_spliceとarray_slice
- 15. ローカル環境にDrupalをインストールしよう 〜Mac編〜
- 16. 【Laravel】upsertにはunique indexが必要
- 17. laravelのassetヘルパ関数
- 18. ループの制御
- 19. 可変変数のおさらい
- 20. FuelPHP における ORDER BY での条件指定
[Best Award 受賞] 初めてのチーム開発で誰かのためになるものを作った話
# 1. はじめに
本記事では、私が初めてチーム開発をした中で経験したこと、学んだことを書いていきます!チーム開発ってどんなものなんだろう?と思われている方は特に参考になるかと思いますので、まだまだ未熟な私が書いた記事ですが、最後まで読んでいただけると幸いです🙇♂️
また、本記事では、私が開発途中に大事だなと感じた部分を
:::note info
ポイント
:::
としてまとめてあります。# 2. 解決したい課題は?
今回のチーム開発では、テーマが決まっていました。
それは、**「自分たちの役に立つものを開発せよ」**
というものです。
ですから、ターゲット,作るものは
– **ターゲット: 自分たち**
– **作るもの: 何かしらの課題を解決するもの**です。
これらを踏まえた上で、様々なアイデアを出していく中、現在のチーム開発で
**チームのみんなが今何をしているかが不透明**
という課題がありました。
その原因が、現在私たちが毎日行っている日報の投稿にありました。
日報はDiscordに毎晩投稿す
WordPressってなに?どうして使うの?
#### WordPressをインターンで触ったので、備忘録として概要や触ったイメージ、メリットデメリットを記します。
この記事は、
+ WordPressの概要を知りたい人
+ WordPressを始めるか迷ってる人
+ どんな人が使ってるのか知りたい人
+ なんでもいいから早くウェブサイトを作りたい人向けです
:::note warn
(数十年触っている人からすれば検討外れの内容かもしれません)
:::# 概要
#### WordPressは、Webサイトを作るためのものです。決まった型の記事や内容を投稿する際に力を発揮します。言語はPHPで書かれていて、バックエンドの処理を担当してます。例えばあなたが何かの運営者や広報担当者、何かの情報をまとめている人であったとします。あなたは外部にもっと知ってもらうためにウェブサイトを作りたい。
「どんなウェブサイトにしようか、基本的な情報を載せるだけじゃなく、長く使えるサイトにしたいなあ。」
そう考えたとき、定期的に新しい情報を提供したいこともあるでしょう。そこで候補に上がってくるかもしれないのがWo
Laravel(API)で認証機能を作成してみた。
## はじめに
普段はRailsで実装をしている私が、Laravelで認証機能を作成しました。
「LaravelでAPIモードの実装ってどうやるんだ??」と気になったこともあり、こちらの記事を作成しました。
(ログインのみの実装です)Laravel初学者の方々への一助になれば幸いです。
**開発環境**
PHP 8.1.27
Laravel 10.46.0## 実装
### マイグレーション
説明の関係上、ログインに必要なカラムのみ以下に記載しています。
“`database/migrations/2014_10_12_000000_create_users_table.php
コーディングテスト頻出の内部関数 まとめ(その3 – 配列処理関数)[PHP]
## この記事の目的
未経験エンジニアが転職活動をする際、最初の難関となるのがコーディングテストです。ここを突破しないと面接にすら進めません。
極度のプレッシャーの中、素早く正確に問題を解くためには、**「自分が使っている言語にどのような内部関数があるのか」「どうやって使うのか」など**を事前に把握しておくことが必須と言えます。そこで、コーディングテスト頻出の内部関数の使い方を、使用例を交えてわかりやすく正確にまとめることにしました。
本記事では、**配列処理のための内部関数**のみを取り上げます。その他の内部関数については、現在に別記事として執筆中です。
(※言語は全てPHPになります)## はじめに
早速ですが、本記事に登場する関数の一覧です。全部で17個の関数を取り上げます。
“`
1. implode 配列要素を任意の文字列で連結する2. array_push & 配列の末尾に要素を追加する
3. array_pop & 配列の末尾から要素を1つ取り除く
4. array_unshift & 配列の先頭
配列関数
## はじめに
配列に対する操作を担う関数を整理する。
## count
要素の数を取得する
“`php:count.php
$data = [‘山田’, ‘掛谷’, ‘日尾’, ‘本多’, ‘矢吹’];
print count($data); // 5
“`## array_merge
指定された配列要素を連結する
“`php:array_merge.php
$arry1 = [1, 3, 5];
$arry2 = [2, 4, 6];
$result = array_merge($arry1, $arry2);
print_r($result); // [1, 3, 5, 2, 4, 6]print count($data); // 5
“`## implode
要素を結合した結果文字列を返す
“`php:implode.php
$data = [‘PHP’, ‘Perl’, ‘Ruby’, ‘Python’, ‘Javascript’];print implode(‘,’, $data); // PHP,Perl,Ruby,Python,
要注意!フリーランスエンジニアが知っておくべきリスクとその対策Top6
### 要注意!フリーランスエンジニアが知っておくべきリスクとその対策Top6
1位:収入が不安定
2位:キャリアの停滞
3位:人脈を深めにくい
4位:もらえる年金が少ない
5位:退職金がない
6位:雇用保険がないhttps://magicgifted.com/free-risk/
回避不可能!落ち度がなくても、フリーランスエンジニアがクビになる理由Top5
### 落ち度がなくても、フリーランスエンジニアがクビになる理由
1位:予算の縮小
2位:タスクの不足
3位:リーダーの人手不足
4位:新規開発フェーズの終了
5位:会社の成長https://magicgifted.com/career-1/
コーディングテスト頻出の内部関数 まとめ(その2 – 数値処理関数)[PHP]
## この記事の目的
未経験エンジニアが転職活動をする際、最初の難関となるのがコーディングテストです。ここを突破しないと面接にすら進めません。
極度のプレッシャーの中、素早く正確に問題を解くためには、**「自分が使っている言語にどのような内部関数があるのか」「どうやって使うのか」など**を事前に把握しておくことが必須と言えます。そこで、コーディングテスト頻出の内部関数の使い方を、使用例を交えてわかりやすく正確にまとめることにしました。
本記事では、**数値処理のための内部関数**のみを取り上げます。その他の内部関数については、現在に別記事として執筆中です。
(※言語は全てPHPになります)## はじめに
早速ですが、本記事に登場する関数の一覧です。全部で5個の関数を取り上げます。
“`
1. min 最小の値を返す
2. max 最大の値を返す
3. round 浮動小数点数を丸める
4. ceil 端数を切り上げる
5. floor 端数を切り捨てる
“`## 本題
それでは、1つずつ順に解説していきます。
コーディングテスト頻出の内部関数 まとめ(その1 – 文字列処理関数)[PHP]
## この記事の目的
未経験エンジニアが転職活動をする際、最初の難関となるのがコーディングテストです。ここを突破しないと面接にすら進めません。
極度のプレッシャーの中、素早く正確に問題を解くためには、**「自分が使っている言語にどのような内部関数があるのか」「どうやって使うのか」など**を事前に把握しておくことが必須と言えます。そこで、コーディングテスト頻出の内部関数の使い方を、使用例を交えてわかりやすく正確にまとめることにしました。
本記事では、**文字列処理のための内部関数**のみを取り上げます。その他の内部関数については、現在に別記事として執筆中です。
(※言語は全てPHPになります)## はじめに
早速ですが、本記事に登場する関数の一覧です。全部で18個の関数を取り上げます。
“`
1. strlen 文字列の長さ(バイト数)を取得する
2. str_repeat 文字列を繰り返す
3. str_split 文字列を分割し、配列に変換する
4. explode 文字列を任意の文字列により
さくらスタンダード+EC-CUBE4.2.3でプラグインインストールできない時はPHPダウン
# 基本環境
さくらレンタルサーバー スタンダード
EC-CUBE 4.2.3
PHP 8.2.15# 一部のプラグインがインストールエラー
管理画面インストールでエラー
Terminalコマンドインストールでエラー
キャッシュ削除してもダメ
EC-CUBE再インストールしてもダメさくらレンタルサーバー、EC-CUBE4.2.2では問題なくインストールできた
お名前RSサーバー、EC-CUBE4.2.3でも問題なくインストールできたなぜ?
# エラーコードを眺める
こんなお怒りの言葉が。。。
“`
Problem 1
– laminas/laminas-code 4.7.1 requires php >=7.4, <8.2 -> your php version (8.2.15; overridden via config.platform, same as actual) does not satisfy that requirement.
“`
# PHPバージョンダウン
PHPをバージョンダウン
8.2.15 → 7.4プラグインインストールに成
【Laravel】自動テストとかのまとめ
# はじめに
こんにちは、エンジニアのkeitaMaxです。
Laravelの自動テストとかをいろいろやったのでまとめです。
今までLaravelの記事を書いてきたので、それをまとめました。
これから紹介するものが全て入っているリポジトリは以下です。
https://github.com/NiheiKeita/docker-laravel-app
# Docker環境を作成
Dockerを使用してLaravelの環境を作成しました。
https://qiita.com/keitaMax/items/7bc51212a32a6418aa1c
# PHPstanを使った自動テスト
PHPstanを使って静的解析をしました。
https://qiita.com/keitaMax/items/a63e3a93f1d2f2d10473
また、以下記事ではPHPstanをGitHubにPushしたときにテストできるようにGitHubActionsを使用しました。
https://qiita.com/keitaMax/items/46102fd5a07e7c86168c
Drupalでカスタムモジュールを作ってみよう
この記事ではDrupalでカスタムモジュールを作成するやり方をご紹介します。
# Drupalを使ってWEBサイトを作る流れ
***1. コアモジュールで機能を実現する***
Drupalインストール時に用意されているモジュールで実現できないか検討します。***2. コアモジュールでできないことをコントリビュートモジュールで実現する***
Drupal.orgで公開されているコントリビュートモジュールで実現できないか検討します。***3. コントリビュートモジュールで実現できない機能をカスタムモジュールで実現する***
ここまで検討して実現できていない場合は独自の機能である可能性が高いです。
そのためルーティングやテンプレートを活用してカスタムモジュールで機能を実現します。まずはコアモジュールやコントリビュートモジュールで実現できないか?という観点で検討します。
なぜならばコアモジュールやコントリビュートモジュールで実現できれば、
インストールと設定で作業が済むため圧倒的にコストを抑えることができるからです。ですがそのサイト独自の機能であれば出回っている可
ローカル環境にDrupalをインストールしよう 〜Windows編〜
# はじめに
この記事ではDrupalをローカル環境(お手元のPC)にインストールする手順をご紹介します。:::note info
ローカル環境は本番環境(=WEBに公開されていて誰でもアクセスできる環境)と違い、動作検証や開発を自由に行える環境です。
そのため万が一トラブルが発生してもほかの方へ影響しないため、機能開発や検証の際には必ず利用されるものです。
:::なお今回はWindowsを使用している前提で手順をご紹介します。
Mac OSでの環境構築は以下の記事をご覧ください。https://qiita.com/kmmch/items/5ee5b665e9256f205287
# Drupalの動作要件
| 構成要素 | 要件 |
|:-|:-|
| WEBサーバー | Apache 2.4.7以上
Nginx 1.1以上 |
| データベース | MySQL 5.7.8以上
MariaDB 10.3.7以上
Percona Server 5.7.8 以上
PostgreSQL 12以上
SQLite 3.26以上 |
| メモリ
array_spliceとarray_slice
## はじめに
名前が似ていて混乱するので整理用に
## array_splice
配列に対し要素を追加/置換/削除する“`
array_splice(array &$array, int $offset [, ?int $length[, mixed $replacement]]) :array
“`
&$array : 操作対象の配列
$offset : 要素の抽出開始位置
$length : 取り出す要素数
$replacement : 削除箇所に挿入する配列(単一の場合は文字列でも可)“`php:array_splice.php
$data = [‘高江’, ‘青木’, ‘片渕’, ‘和田’, ‘花田’, ‘佐藤’];print_r(array_splice($data, 2, 3, [‘日尾’, ‘掛谷’, ‘薄井’])); //[‘片渕’, ‘和田’, ‘花田’]
print_r($data); //[‘高江’, ‘青木’, ‘日尾’, ‘掛谷’, ‘薄井’, ‘佐藤’]print_r(array_splice($data, -3, -2, [
ローカル環境にDrupalをインストールしよう 〜Mac編〜
# はじめに
この記事ではDrupalをローカル環境(お手元のPC)にインストールする手順をご紹介します。:::note info
ローカル環境は本番環境(=WEBに公開されていて誰でもアクセスできる環境)と違い、動作検証や開発を自由に行える環境です。
そのため万が一トラブルが発生してもほかの方へ影響しないため、機能開発や検証の際には必ず利用されるものです。
:::# Drupalの動作要件
| 構成要素 | 要件 |
|:-|:-|
| WEBサーバー | Apache 2.4.7以上
Nginx 1.1以上 |
| データベース | MySQL 5.7.8以上
MariaDB 10.3.7以上
Percona Server 5.7.8 以上
PostgreSQL 12以上
SQLite 3.26以上 |
| メモリ | 最小1GB
※ライブラリを管理するためのComposerを使用するために必要です。 |
| PHP | 8.1以上
8.1.6を推奨
最小64MBのメモリが必要 |# ローカル環境の活用方法
【Laravel】upsertにはunique indexが必要
## 背景
複数のレコードの更新をかける際に、`キーとなるカラムに値が重複している場合は更新、なければ挿入`という処理をしたかったが、うまくいかずにハマってもた。どんどんレコードが増えていくのでなんでやん!って叫びながら作業をしていた。
そんな自分が悲しくて、備忘録として残す。
## upsertにはunique indexが必要
単純に第2引数に重複チェックしたいカラム名を渡すだけではアカンのです。
とある記事には
>第2引数にはユニークキーやプライマリキーを指定すると良い
という旨の記載があったが、語弊があるんやん?
* ❌ すると良い (should)
* ⭕️ せなあかん (must)つまり、**ユニークキーあるいはプライマリキーを指定しなければ重複チェックは行われない**が正しい。
ちゃんとドキュメントにも記載がある。
> SQL Server以外のすべてのデータベースでは、upsertメソッドの第2引数のカラムへ”primary”、または”unique”インデックスを指定する必要があります。さらに、MySQLデータベースドライバは、upsertメソ
laravelのassetヘルパ関数
## laraveのassetヘルパ関数について
参考URL:https://readouble.com/laravel/9.x/ja/helpers.html#method-asset### 概要
– asset()関数はlaravelのヘルパ関数
– asset()は、publicフォルダのディレクトリパスを返す### 使い方
“`
asset(‘storage/’ . $post->image)
“`
これでpublicディレクトリ内のstorageという
ディレクトリの中のファイルにアクセスする。
つまりassetの中にpublicの中のファイルパスを書けばOK
ループの制御
## はじめに
ループの制御について整理する。
### break
現在のループを強制的に中断する。
breakはifと合わせて使うのが一般的。“`php:break.php
1000) { break; }
}
print “合計が1000を超えるのは、1~{$i}を加算したときです。”;
//合計が1000を超えるのは、1~45を加算したときです。
“`### continue
現在の周回だけをスキップし、ループそのものは継続して実行する。
“`php:continue.php
可変変数のおさらい
業務でとあるシステムの改修作業をしていたら$$がついた関数を見つけて頭の中が?になったので自分の中で整理してみる。
## $$は可変変数と言うらしい
恥ずかしながら今まで実務で可変変数を定義しているコードを見たことがなかったのでシステムを作った人が打ち間違えたのかと思っていました(ほんとに恥ずかしい)## 可変変数ってなに?
変数の名前を他の値で作ることができる### 簡単な使い方
まず変数を一つ用意
“`
$hoge = “qiita”
“`
次に$hogeの値を使って新しい変数名を作る
**(これが可変変数)**
“`
$$hoge = “PHP”
“`既にhogeという変数には”qiita”という値が入っています。
つまり
“`
$$hoge = $qiita
“`と言うことになります。
$qiitaという変数が作られ、その中に”PHP”という値が格納されていることになります。### 出力
“`
echo $qiita; // 出力: PHP
“`## メリットとデメリットは
**コードが簡潔になる**
似たような変数を定義しなくてよい
FuelPHP における ORDER BY での条件指定
# 概要
FuelPHP では基本的に FuelPHP が提供している Query Builder を用いて SQL を作成する
その SQL を作成する中で ORDER BY 句の設定でハマったのでメモを残すやりたいこととしては一部の ID のみを検索上位に表示、それ以外を異なる Column で並べたいといったもの
e.g.
“`
SELECT *
FROM `target_table`
WHERE `condition` = true
ORDER BY `target_table`.`id` = 1 DESC, `target_table`.`other_column` ASC;
“`# 環境
PHP: 8.0.30
FuelPHP: 1.8.2
MySQL: 5.7.41# 結論
Query Builder の `order_by()` の第一引数に条件を含めた形で `DB::expr()` 経由で値を渡す
“`
$rows = DB::select()
->from(‘target_column’)
->where(‘condition’