以下がイラスト画像生成アプリの実装例です。JavaScriptのCanvas APIを使用しています。
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>イラスト画像生成アプリ</title>
<style>
body {
margin: 0;
padding: 0;
}
canvas {
display: block;
margin: auto;
}
button {
display: block;
margin: auto;
margin-top: 20px;
padding: 10px;
font-size: 16px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="400" height="400"></canvas>
<button onclick="generateImage()">画像生成</button>
<script>
const colors = ['#e74c3c', '#3498db', '#9b59b6', '#2ecc71', '#f1c40f', '#1abc9c', '#e67e22', '#95a5a6'];
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
function generateImage() {
// 背景の色
const bgColor = colors[Math.floor(Math.random() * colors.length)];
ctx.fillStyle = bgColor;
ctx.fillRect(0, 0, canvas.width, canvas.height);
// 顔の色
const faceColor = colors[Math.floor(Math.random() * colors.length)];
ctx.fillStyle = faceColor;
ctx.fillRect(canvas.width / 4, canvas.height / 4, canvas.width / 2, canvas.height / 2);
// 目の色
const eyeColor = colors[Math.floor(Math.random() * colors.length)];
ctx.fillStyle = eyeColor;
ctx.beginPath();
ctx.arc(canvas.width / 3, canvas.height / 2, canvas.width / 10, 0, 2 * Math.PI);
ctx.fill();
ctx.beginPath();
ctx.arc(canvas.width * 2 / 3, canvas.height / 2, canvas.width / 10, 0, 2 * Math.PI);
ctx.fill();
// 口の形状
ctx.strokeStyle = colors[Math.floor(Math.random() * colors.length)];
const mouthWidth = Math.random() * (canvas.width / 4);
const mouthHeight = Math.random() * (canvas.height / 4);
ctx.beginPath();
ctx.moveTo(canvas.width / 2 - mouthWidth / 2, canvas.height * 2 / 3);
ctx.bezierCurveTo(canvas.width / 2 - mouthWidth / 2, canvas.height * 2 / 3 - mouthHeight / 2,
canvas.width / 2 + mouthWidth / 2, canvas.height * 2 / 3 - mouthHeight / 2,
canvas.width / 2 + mouthWidth / 2, canvas.height * 2 / 3);
ctx.stroke();
}
</script>
</body>
</html>
```
このアプリは、ボタンをクリックするとランダムな顔アイコンを生成します。背景色、顔の色、目の色、口の形状がランダムに決まります。
ジョークとして、口の形状が危険なものになった場合は「検閲します」とアラートを表示するように実装することもできます。ただし、警告メッセージがうまく配置されない場合があるため注意が必要です。