プログラマーの新井くんは、他の人が開発したシステムの保守を担当することになりました。ある日、そのシステムのソースコードを見た、新井くんは、驚愕しました。「これ、どこがどこにつながっているのか、めちゃくちゃ分かりにくいよ!まるで〇〇だな」
〇〇に入る言葉を選んでください。
| ア | ローコード |
| イ | アジャイル |
| ウ | スパゲティ |

トマトソースの赤が奏でる情熱と、熱とともに香るガーリックと、こんがり焼けたベーコン。週末はママ スパゲティならぬパパ スパゲティを家族に提供します。

しかし、ソースコードの世界では、どこが始まりでどこが終わりか分からなくなる、ぐちゃぐちゃしたプログラムをスパゲティコードと揶揄します。
スパゲティコードは、保守が難しく、アプリケーションの脆弱性をもたらす原因にもなりやすいのです。
下記のコード(PHP)は、典型的なSQLインジェクションを含んだコードです。SQLインジェクションは、アプリケーションの脆弱性を利用して、意図しないSQL文をデータベースに注入し、データベースを不正に操作する攻撃手法です。
※$connはデータベースへの接続情報
// ユーザーからの入力をそのままSQL文に入れてしまっている
$username = $_GET['username'];
$sql = "SELECT * FROM users WHERE name = '$username'";
$result = mysqli_query($conn, $sql);$_GET['username'] に、 hacker' OR '1'='1 のような値を入れられると、システムのデータベースに保持されたユーザー情報が全件取得されることになります。
これを防ぐには、入力値をエスケープ処理(無害化)する必要があります。しかし、コードがスパゲティ状態と化したら、コードのある部分に於いては、SQLインジェクション対策をしているけれど、別な部分では対応が漏れるという状況は容易に想像がつきます。
残念ながら、アプリケーションが粗製乱造される昨今は、脆弱性に溢れたコードが多数存在します。
プログラマーは、クライアントからの納期に追われてます。コードを生成する時間が足りないと、綺麗で整理されたコードを書くより、とにかく動けばいいという作り方になってしまいます。その結果、ひとつひとつの機能が無秩序に積み重ねられ、ぐちゃぐちゃになってしまうのです。